From 6aae39bb1881e847058b4010ccff238b7ecf0202 Mon Sep 17 00:00:00 2001 From: Mirko Waechter <mirko.waechter@kit.edu> Date: Fri, 17 Aug 2018 21:20:19 +0200 Subject: [PATCH] added a publish hook for the JointController to publish custom data in robotunitobserver, debug drawer or debug observer --- .../units/RobotUnit/JointControllers/JointController.cpp | 5 +++++ .../units/RobotUnit/JointControllers/JointController.h | 4 ++++ .../RobotUnitModules/RobotUnitModulePublisher.cpp | 8 ++++++++ 3 files changed, 17 insertions(+) diff --git a/source/RobotAPI/components/units/RobotUnit/JointControllers/JointController.cpp b/source/RobotAPI/components/units/RobotUnit/JointControllers/JointController.cpp index 9638c020a..a28251058 100644 --- a/source/RobotAPI/components/units/RobotUnit/JointControllers/JointController.cpp +++ b/source/RobotAPI/components/units/RobotUnit/JointControllers/JointController.cpp @@ -31,3 +31,8 @@ ControlDevice& JointController::getParent() const ARMARX_CHECK_EXPRESSION_W_HINT(parent, "This JointController is not owned by a ControlDevice"); return *parent; } + +StringVariantBaseMap JointController::publish(const DebugDrawerInterfacePrx& draw, const DebugObserverInterfacePrx& observer) const +{ + return StringVariantBaseMap {}; +} diff --git a/source/RobotAPI/components/units/RobotUnit/JointControllers/JointController.h b/source/RobotAPI/components/units/RobotUnit/JointControllers/JointController.h index 4d12be87a..9390bc488 100644 --- a/source/RobotAPI/components/units/RobotUnit/JointControllers/JointController.h +++ b/source/RobotAPI/components/units/RobotUnit/JointControllers/JointController.h @@ -28,6 +28,8 @@ #include <memory> #include <atomic> +#include <RobotAPI/interface/visualization/DebugDrawerInterface.h> + namespace armarx { class ControlDevice; @@ -68,6 +70,8 @@ namespace armarx ControlDevice& getParent() const; + virtual StringVariantBaseMap publish(const DebugDrawerInterfacePrx& draw, const DebugObserverInterfacePrx& observer) const; + protected: ControlDevice& rtGetParent() const; //called by the owning ControlDevice diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModulePublisher.cpp b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModulePublisher.cpp index 7a8044b85..a89501904 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModulePublisher.cpp +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModulePublisher.cpp @@ -238,6 +238,14 @@ namespace armarx const auto activeJointCtrl = activatedControllers.jointControllers.at(ctrlidx); status.activeControlMode = activeJointCtrl ? activeJointCtrl->getControlMode() : std::string {"!!JointController is nullptr!!"}; status.deviceName = ctrlDev.getDeviceName(); + if (activeJointCtrl) + { + auto additionalDatafields = activeJointCtrl->publish(debugDrawerPrx, debugObserverPrx); + for (auto& pair : additionalDatafields) + { + ctrlDevMap[ctrlDev.getDeviceName() + "_" + activeJointCtrl->getControlMode() + "_" + pair.first] = pair.second; + } + } for (const auto& ctrlVal : controlThreadOutputBuffer.control.at(ctrlidx)) { -- GitLab