diff --git a/source/RobotAPI/components/units/KinematicUnitSimulation.cpp b/source/RobotAPI/components/units/KinematicUnitSimulation.cpp index 0e309977a4f026e1d3bd2cb0c3530069063da5da..b81e735542abce076bbac03a5641e54419eee40c 100644 --- a/source/RobotAPI/components/units/KinematicUnitSimulation.cpp +++ b/source/RobotAPI/components/units/KinematicUnitSimulation.cpp @@ -270,6 +270,16 @@ void KinematicUnitSimulation::setJointTorques(const NameValueMap& targetJointTor listenerPrx->reportJointTorques(actualJointTorques, aValueChanged); } +NameControlModeMap KinematicUnitSimulation::getControlModes(const Ice::Current& c) +{ + NameControlModeMap result; + for ( KinematicUnitSimulationJointStates::iterator it = jointStates.begin(); it!=jointStates.end(); it++ ) + { + result[it->first] = it->second.controlMode; + } + return result; +} + void KinematicUnitSimulation::setJointAccelerations(const NameValueMap& targetJointAccelerations, const Ice::Current& c) { } diff --git a/source/RobotAPI/components/units/KinematicUnitSimulation.h b/source/RobotAPI/components/units/KinematicUnitSimulation.h index 4b15853425deae3cff664c3875fa3ae3d3b6f702..a0464e610c5bd6550bfb7b73704298855136b53b 100644 --- a/source/RobotAPI/components/units/KinematicUnitSimulation.h +++ b/source/RobotAPI/components/units/KinematicUnitSimulation.h @@ -140,6 +140,8 @@ namespace armarx virtual void setJointVelocities(const NameValueMap& targetJointVelocities, const Ice::Current& c = ::Ice::Current()); virtual void setJointTorques(const NameValueMap& targetJointTorques, const Ice::Current& c = ::Ice::Current()); + virtual NameControlModeMap getControlModes(const Ice::Current& c = ::Ice::Current()); + /** * \warning Not implemented yet! */ diff --git a/source/RobotAPI/gui-plugins/KinematicUnitPlugin/KinematicUnitGuiPlugin.cpp b/source/RobotAPI/gui-plugins/KinematicUnitPlugin/KinematicUnitGuiPlugin.cpp index 0ffc02e4e25da5aeaf0d79ba54e6245f7b1a0836..344046a2c48fb10236b06351cef3582e584bc57e 100644 --- a/source/RobotAPI/gui-plugins/KinematicUnitPlugin/KinematicUnitGuiPlugin.cpp +++ b/source/RobotAPI/gui-plugins/KinematicUnitPlugin/KinematicUnitGuiPlugin.cpp @@ -146,6 +146,10 @@ void KinematicUnitWidgetController::onConnectComponent() std::string kinematicUnitInstructionChannel = kinematicUnitName; // NOW: kinematicUnitInstructionChannel -> HeadKinematicUnit kinematicUnitInterfacePrx = getProxy<KinematicUnitInterfacePrx>(kinematicUnitInstructionChannel); + + // init control mode map + reportedJointControlModes = kinematicUnitInterfacePrx->getControlModes(); + initializeUi(); enableMainWidgetAsync(true); } diff --git a/source/RobotAPI/interface/units/KinematicUnitInterface.ice b/source/RobotAPI/interface/units/KinematicUnitInterface.ice index 5d0011a86373663433eb474534a5b51bea07692e..c1700c113728826bea9d7ae1be259528b0673cde 100644 --- a/source/RobotAPI/interface/units/KinematicUnitInterface.ice +++ b/source/RobotAPI/interface/units/KinematicUnitInterface.ice @@ -171,6 +171,12 @@ module armarx void setJointAccelerations(NameValueMap targetJointAccelerations) throws OutOfRangeException; void setJointDecelerations(NameValueMap targetJointDecelerations) throws OutOfRangeException; + /*! + * Returns the current control mode setup of all joints. + * @return List with current control modes + */ + NameControlModeMap getControlModes(); + /* * NYI */