From 6d9c4d75844ce86b59180a2a346ead4f5b755d43 Mon Sep 17 00:00:00 2001 From: Nikolaus Vahrenkamp <vahrenkamp@kit.edu> Date: Tue, 19 Aug 2014 10:59:26 +0200 Subject: [PATCH] Switched to single sensor forceTorqueUnit (needs to be discussed) Fixed place object state --- .../ForceTorqueObserver/CMakeLists.txt | 1 + .../ForceTorqueUnitSimulation/CMakeLists.txt | 2 +- .../interface/units/ForceTorqueUnit.ice | 18 ++-- .../MovePlatformToLandmark.cpp | 8 +- .../statecharts/PlaceObject/PlaceObject.cpp | 85 +++++++++++++------ source/RobotAPI/units/ForceTorqueObserver.cpp | 17 ++-- source/RobotAPI/units/ForceTorqueObserver.h | 11 ++- .../units/ForceTorqueUnitSimulation.cpp | 26 +++--- .../units/ForceTorqueUnitSimulation.h | 12 +-- 9 files changed, 115 insertions(+), 65 deletions(-) diff --git a/source/RobotAPI/applications/ForceTorqueObserver/CMakeLists.txt b/source/RobotAPI/applications/ForceTorqueObserver/CMakeLists.txt index fe1e3025a..3ce378f78 100644 --- a/source/RobotAPI/applications/ForceTorqueObserver/CMakeLists.txt +++ b/source/RobotAPI/applications/ForceTorqueObserver/CMakeLists.txt @@ -7,6 +7,7 @@ armarx_build_if(Eigen3_FOUND "Eigen3 not available") find_package(Simox QUIET) armarx_build_if(Simox_FOUND "Simox-VirtualRobot not available") +include_directories(${Eigen3_INCLUDE_DIR}) set(COMPONENT_LIBS RobotAPIUnits RobotAPICore RobotAPIInterfaces ArmarXInterfaces ArmarXCore ArmarXCoreObservers RobotAPIRemoteRobot) diff --git a/source/RobotAPI/applications/ForceTorqueUnitSimulation/CMakeLists.txt b/source/RobotAPI/applications/ForceTorqueUnitSimulation/CMakeLists.txt index 173374347..0411fa089 100644 --- a/source/RobotAPI/applications/ForceTorqueUnitSimulation/CMakeLists.txt +++ b/source/RobotAPI/applications/ForceTorqueUnitSimulation/CMakeLists.txt @@ -1,8 +1,8 @@ armarx_component_set_name(ForceTorqueUnitSimulation) +include_directories(${Eigen3_INCLUDE_DIR}) set(COMPONENT_LIBS ArmarXInterfaces ArmarXCore RobotAPIUnits) - set(SOURCES main.cpp ForceTorqueUnitSimulationApp.h) armarx_add_component_executable("${SOURCES}") diff --git a/source/RobotAPI/interface/units/ForceTorqueUnit.ice b/source/RobotAPI/interface/units/ForceTorqueUnit.ice index cc09be4eb..de9cdf6ed 100644 --- a/source/RobotAPI/interface/units/ForceTorqueUnit.ice +++ b/source/RobotAPI/interface/units/ForceTorqueUnit.ice @@ -26,6 +26,7 @@ #include <RobotAPI/interface/units/UnitInterface.ice> #include <RobotAPI/interface/robotstate/RobotState.ice> +#include <RobotAPI/interface/robotstate/PoseBase.ice> #include <Core/interface/core/UserException.ice> #include <Core/interface/core/BasicTypes.ice> @@ -36,21 +37,26 @@ module armarx { - sequence<string> StringMap; + //sequence<string> StringMap; interface ForceTorqueUnitInterface extends armarx::SensorActorUnitInterface { - void setOffset(FramedVector3Map forceTorqueOffsets); - void setToNull(StringMap sensorNames); + //void setOffset(FramedVector3Map forceTorqueOffsets); + //void setToNull(StringMap sensorNames); + void setOffset(FramedVector3Base forceOffsets, FramedVector3Base torqueOffsets); + void setToNull(); }; interface ForceTorqueUnitListener { - void reportSensorValues(string type, FramedVector3Map forces); + //void reportSensorValues(string type, FramedVector3Map forces); - void reportSensorForceValues(FramedVector3Map forces); - void reportSensorTorqueValues(FramedVector3Map torques); + //void reportSensorForceValues(FramedVector3Map forces); + //void reportSensorTorqueValues(FramedVector3Map torques); + void reportSensorValues(FramedVector3Base forces,FramedVector3Base torques); + void reportSensorForceValues(FramedVector3Base forces); + void reportSensorTorqueValues(FramedVector3Base torques); }; interface ForceTorqueUnitObserverInterface extends ObserverInterface, ForceTorqueUnitListener diff --git a/source/RobotAPI/statecharts/MovePlatformToLandmark/MovePlatformToLandmark.cpp b/source/RobotAPI/statecharts/MovePlatformToLandmark/MovePlatformToLandmark.cpp index 7b6fcac5f..072d1177a 100644 --- a/source/RobotAPI/statecharts/MovePlatformToLandmark/MovePlatformToLandmark.cpp +++ b/source/RobotAPI/statecharts/MovePlatformToLandmark/MovePlatformToLandmark.cpp @@ -47,7 +47,10 @@ namespace armarx void MovePlatformToLandmarkStateChart::onConnectRemoteStateOfferer() { - + if(!getArmarXManager()->getIceManager()->getCommunicator()->findObjectFactory(armarx::FramedVector3Base::ice_staticId())) + { + ARMARX_INFO << "could not find factory"; + } } // **************************************************************** @@ -55,7 +58,7 @@ namespace armarx // **************************************************************** void StatechartMovePlatformToLandmark::defineParameters() { - setConfigFile("RobotAPI/scenarios/MovePlatformToLandmarkTest/configs/MovePlatformToLandmarkExampleGraph.xml"); + //setConfigFile("RobotAPI/scenarios/MovePlatformToLandmarkTest/configs/MovePlatformToLandmarkExampleGraph.xml"); addToInput("targetLandmark", VariantType::String, false); addToInput("landmarkNodes", VariantType::List(VariantType::FramedVector3), false); @@ -114,6 +117,7 @@ namespace armarx SingleTypeVariantListPtr landmarkNodes = getInput<SingleTypeVariantList>("landmarkNodes"); std::map<std::string, NodePtr> nameToNodeMap; for (int i = 0; i < landmarkNodes->getSize(); i++) { + ARMARX_LOG << landmarkNodes->getVariant(i)->getTypeName() << std::endl; FramedVector3Ptr fv = landmarkNodes->getVariant(i)->get<FramedVector3>(); NodePtr n = NodePtr(new Node()); n->name = fv->frame; diff --git a/source/RobotAPI/statecharts/PlaceObject/PlaceObject.cpp b/source/RobotAPI/statecharts/PlaceObject/PlaceObject.cpp index b0c5867a9..76b8018ca 100644 --- a/source/RobotAPI/statecharts/PlaceObject/PlaceObject.cpp +++ b/source/RobotAPI/statecharts/PlaceObject/PlaceObject.cpp @@ -41,16 +41,16 @@ namespace armarx // **************************************************************** void StatechartPlaceObject::defineParameters() { - addToInput("maxHeightToMoveDown", VariantType::List(VariantType::Float), false); - addToInput("minForceForSuccess", VariantType::List(VariantType::Float), false); - addToInput("timeoutPlaceObject", VariantType::Float, false); + addToInput("maxHeightToMoveDown", VariantType::Float, false); + addToInput("minForceForSuccess", VariantType::Float, false); + addToInput("timeoutPlaceObject", VariantType::Int, false); addToInput("robotNodeSetName", VariantType::String, false); addToInput("robotBaseFrame", VariantType::String, false); - addToLocal("startPose", VariantType::List(VariantType::FramedPose)); - addToLocal("goalPose", VariantType::List(VariantType::FramedPose)); + addToLocal("startPose", VariantType::FramedPose); + addToLocal("goalPose", VariantType::FramedPose); //addToLocal("jointNames", VariantType::List(VariantType::String)); //addToLocal("jointVelocitiesDatafields", VariantType::List(VariantType::DatafieldRef)); @@ -71,12 +71,17 @@ namespace armarx setInitState(stateMoveDown, mapMoveDown); //transitions - addTransition<EvSuccess>(stateMoveDown, stateMoveDown); + addTransition<EvSuccess>(stateMoveDown, stateMoveDown,mapMoveDown); addTransition<EvFailure>(stateMoveDown, stateFailure); //addTransition<EvSuccess>(stateCheckForces, stateSuccess); //addTransition<EvFailure>(stateCheckForces, stateMoveDown); - addTransition<EvPlaceObjectCollision>(stateMoveDown, stateSuccess); + // has to be defined in parent states + //addTransition<EvPlaceObjectCollision>(stateMoveDown, stateSuccess); + // for now: success + //addTransition<EvPlaceObjectTimeout>(stateMoveDown, stateSuccess); + + //addTransition<EvPlaceObjectTimeout>(stateCheckForces, stateSuccess); //addTransition<EvPlaceObjectTimeout>(stateCheckForces, stateFailure); } @@ -91,6 +96,8 @@ namespace armarx std::string rnsName = getInput<std::string>("robotNodeSetName"); std::string rnBaseName = getInput<std::string>("robotBaseFrame"); + ARMARX_LOG << "RNS:" << rnsName << ", rnBaseName:" << rnBaseName << flush; + VirtualRobot::RobotNodeSetPtr nodeSet = context->remoteRobot->getRobotNodeSet(rnsName); if (!nodeSet) { @@ -111,23 +118,27 @@ namespace armarx FramedPosePtr fp(new FramedPose(tcpPose,rnBaseName)); setLocal("startPose", fp); + ARMARX_LOG << "startPose:" << tcpPose << ", rnBaseName:" << rnBaseName << flush; + Eigen::Matrix4f tcpGoalPose = nodeSet->getTCP()->getGlobalPose(); float maxHeight = getInput<float>("maxHeightToMoveDown"); - tcpGoalPose(0,3) -= maxHeight; + tcpGoalPose(2,3) -= maxHeight; tcpGoalPose = nodeBase->toLocalCoordinateSystem(tcpGoalPose); FramedPosePtr fpGoal(new FramedPose(tcpGoalPose,rnBaseName)); setLocal("goalPose", fpGoal); + ARMARX_LOG << "goalPose:" << tcpGoalPose << ", rnBaseName:" << rnBaseName << flush; ARMARX_LOG << eINFO << "Installing place object timeout condition"; - float timeoutPlaceObject = getInput<float>("timeoutPlaceObject"); + float timeoutPlaceObject = float(getInput<int>("timeoutPlaceObject")); condPlaceObjectTimeout = setTimeoutEvent(timeoutPlaceObject, createEvent<EvPlaceObjectTimeout>()); // install the force condition + float force = getInput<float>("minForceForSuccess"); Term cond; for(unsigned int i=0; i<nodeSet->getSize(); i++) @@ -139,7 +150,7 @@ namespace armarx Literal inrangeLiteral(DataFieldIdentifier(context->getKinematicUnitObserverName(),"jointtorques", nodeSet->getNode(i)->getName()), "inrange", inrangeCheck); cond = cond && !inrangeLiteral; } - + ARMARX_LOG << "Installed force consition, minForce:" << force << flush; condPlaceObjectCollision = installCondition<EvPlaceObjectCollision>(cond); } @@ -148,6 +159,17 @@ namespace armarx removeTimeoutEvent(condPlaceObjectTimeout); removeCondition(condPlaceObjectCollision); + RobotStatechartContext *context = getContext<RobotStatechartContext>(); + HandUnitInterfacePrx handUnitPrx = context->getHandUnit("RightHandUnit"); + if (handUnitPrx) + { + ARMARX_INFO << "Sending open hand command" << flush; + handUnitPrx->open(); + ARMARX_INFO << "TEST: set object released: Vitalis" << flush; + handUnitPrx->setObjectReleased("Vitalis"); + } else + ARMARX_LOG << eINFO << "No hand unit found..."; + ARMARX_LOG << eINFO << "Exiting StatechartPlaceObject..."; } @@ -157,17 +179,18 @@ namespace armarx void StateMoveDown::defineParameters() { - addToInput("maxHeightToMoveDown", VariantType::List(VariantType::Float), false); - addToInput("minForceForSuccess", VariantType::List(VariantType::Float), false); - addToInput("timeoutPlaceObject", VariantType::Float, false); + addToInput("maxHeightToMoveDown", VariantType::Float, false); + addToInput("minForceForSuccess", VariantType::Float, false); + addToInput("timeoutPlaceObject", VariantType::Int, false); addToInput("robotNodeSetName", VariantType::String, false); addToInput("robotBaseFrame", VariantType::String, false); - addToInput("startPose", VariantType::List(VariantType::FramedPose), false); + addToInput("startPose", VariantType::FramedPose, false); + addToInput("goalPose", VariantType::FramedPose, false); } void StateMoveDown::onEnter() { - ARMARX_DEBUG << "Entering StateMoveDown" << flush; + ARMARX_INFO << "Entering StateMoveDown" << flush; RobotStatechartContext* rsContext = getContext<RobotStatechartContext>(); std::string rnsName = getInput<std::string>("robotNodeSetName"); @@ -184,16 +207,22 @@ namespace armarx Eigen::Matrix4f currentPose = nodeSet->getTCP()->getGlobalPose(); currentPose = nodeBase->toLocalCoordinateSystem(currentPose); - ARMARX_DEBUG << "startPose (coordsystem " << rnBaseName << ") : " << startPose << flush; - ARMARX_DEBUG << "goalPose (coordsystem " << rnBaseName << ") : " << goalPose << flush; - ARMARX_DEBUG << "currentPose (coordsystem " << rnBaseName << ") : " << currentPose << flush; + ARMARX_INFO << "startPose (coordsystem " << rnBaseName << ") : " << startPose << flush; + ARMARX_INFO << "goalPose (coordsystem " << rnBaseName << ") : " << goalPose << flush; + ARMARX_INFO << "currentPose (coordsystem " << rnBaseName << ") : " << currentPose << flush; - float dist = (goalPose.block(0,3,3,1) - currentPose.block(0,3,3,1)).norm(); - if (dist<10.0f) + Eigen::Vector3f goalVect = goalPose.block(0,3,3,1) - currentPose.block(0,3,3,1); + float maxDist = 10.0f; + float dist = goalVect.norm(); + if (dist<maxDist) { ARMARX_ERROR << "Did not hit any surface, sending failure event..." << flush; sendEvent<EvFailure>(); } + goalVect = goalVect.normalized() * maxDist; + + goalPose.block(0,3,3,1) = currentPose.block(0,3,3,1) + goalVect; + ARMARX_INFO << "goalPose cut (coordsystem " << rnBaseName << ") : " << goalPose << flush; VirtualRobot::DifferentialIKPtr ikSolver(new VirtualRobot::DifferentialIK(nodeSet,nodeBase)); @@ -210,21 +239,23 @@ namespace armarx std::vector<float> jointValues = nodeSet->getJointValues(); NameValueMap jointNamesAndValues; - + NameControlModeMap controlModes; for (unsigned int j=0; j<jointValues.size(); j++) { - jointNamesAndValues[nodeSet->getNode(j)->getName()]=jointValues[j]; - ARMARX_DEBUG << "target for joint :" << nodeSet->getNode(j)->getName() << " -> " << jointValues[j] << flush; + std::string nName = nodeSet->getNode(j)->getName(); + jointNamesAndValues[nName]=jointValues[j]; + controlModes[nName] = ePositionControl; + ARMARX_INFO << "target for joint :" << nodeSet->getNode(j)->getName() << " -> " << jointValues[j] << flush; } - + rsContext->kinematicUnitPrx->switchControlMode(controlModes); rsContext->kinematicUnitPrx->setJointAngles(jointNamesAndValues); - - ARMARX_DEBUG << "StateMoveDown: Done onEnter()"; + sendEvent<EvSuccess>(); + ARMARX_INFO << "StateMoveDown: Done onEnter()"; } void StateMoveDown::onExit() { - ARMARX_DEBUG << "StatePlaceObject: Done onExit()"; + ARMARX_INFO << "StatePlaceObject: Done onExit()"; } diff --git a/source/RobotAPI/units/ForceTorqueObserver.cpp b/source/RobotAPI/units/ForceTorqueObserver.cpp index d469ac113..b4a40e79f 100644 --- a/source/RobotAPI/units/ForceTorqueObserver.cpp +++ b/source/RobotAPI/units/ForceTorqueObserver.cpp @@ -98,9 +98,10 @@ void ForceTorqueObserver::onConnectObserver() -void ForceTorqueObserver::reportSensorValues(const std::string &type, const FramedVector3Map &newValues, const Ice::Current &) +void ForceTorqueObserver::reportSensorValues(const ::armarx::FramedVector3BasePtr &forces, const ::armarx::FramedVector3BasePtr &torques, const Ice::Current &) { ScopedLock lock(dataMutex); + /* FramedVector3Map::const_iterator it = newValues.begin(); if(!existsChannel(type)) offerChannel(type, "Force and Torque vectors on specific parts of the robot."); @@ -131,13 +132,13 @@ void ForceTorqueObserver::reportSensorValues(const std::string &type, const Fram } updateChannel(identifier); - } + }*/ } -void ForceTorqueObserver::reportSensorForceValues(const ::armarx::FramedVector3Map &newForces, const ::Ice::Current &) +void ForceTorqueObserver::reportSensorForceValues(const ::armarx::FramedVector3BasePtr &newForces, const ::Ice::Current &) { ScopedLock lock(dataMutex); - FramedVector3Map::const_iterator it = newForces.begin(); + /*FramedVector3Map::const_iterator it = newForces.begin(); std::string type = "force"; if(!existsChannel(type)) @@ -177,13 +178,13 @@ void ForceTorqueObserver::reportSensorForceValues(const ::armarx::FramedVector3M } updateChannel(identifier); - } + }*/ } -void ForceTorqueObserver::reportSensorTorqueValues(const ::armarx::FramedVector3Map &newTorques, const ::Ice::Current &) +void ForceTorqueObserver::reportSensorTorqueValues(const ::armarx::FramedVector3BasePtr &newTorques, const ::Ice::Current &) { ScopedLock lock(dataMutex); - FramedVector3Map::const_iterator it = newTorques.begin(); + /*FramedVector3Map::const_iterator it = newTorques.begin(); std::string type = "torque"; if(!existsChannel(type)) @@ -223,7 +224,7 @@ void ForceTorqueObserver::reportSensorTorqueValues(const ::armarx::FramedVector3 } updateChannel(identifier); - } + }*/ } diff --git a/source/RobotAPI/units/ForceTorqueObserver.h b/source/RobotAPI/units/ForceTorqueObserver.h index fbaa7edde..2680f4eec 100644 --- a/source/RobotAPI/units/ForceTorqueObserver.h +++ b/source/RobotAPI/units/ForceTorqueObserver.h @@ -2,6 +2,7 @@ #define _ARMARX_ROBOTAPI_FORCETORQUEOBSERVER_H #include <RobotAPI/interface/units/ForceTorqueUnit.h> +#include <RobotAPI/robotstate/remote/ArmarPose.h> #include <Core/observers/Observer.h> namespace armarx @@ -36,9 +37,13 @@ namespace armarx void onInitObserver(); void onConnectObserver(); - void reportSensorValues(const std::string & type, const ::armarx::FramedVector3Map& newForces, const ::Ice::Current& = ::Ice::Current()); - void reportSensorForceValues(const ::armarx::FramedVector3Map& newForces, const ::Ice::Current& = ::Ice::Current()); - void reportSensorTorqueValues(const ::armarx::FramedVector3Map& newTorques, const ::Ice::Current& = ::Ice::Current()); + //void reportSensorValues(const std::string & type, const ::armarx::FramedVector3Map& newForces, const ::Ice::Current& = ::Ice::Current()); + //void reportSensorForceValues(const ::armarx::FramedVector3Map& newForces, const ::Ice::Current& = ::Ice::Current()); + //void reportSensorTorqueValues(const ::armarx::FramedVector3Map& newTorques, const ::Ice::Current& = ::Ice::Current()); + void reportSensorValues(const ::armarx::FramedVector3BasePtr &forces, const ::armarx::FramedVector3BasePtr &torques, const ::Ice::Current& = ::Ice::Current()); + void reportSensorForceValues(const ::armarx::FramedVector3BasePtr &forces, const ::Ice::Current& = ::Ice::Current()); + void reportSensorTorqueValues(const ::armarx::FramedVector3BasePtr &torques, const ::Ice::Current& = ::Ice::Current()); + // void reportForceWithOffset(const ::armarx::FramedVector3Map& newForces, const ::Ice::Current& = ::Ice::Current()); // void reportTorqueRaw(const ::armarx::FramedVector3Map& newTorques, const ::Ice::Current& = ::Ice::Current()); diff --git a/source/RobotAPI/units/ForceTorqueUnitSimulation.cpp b/source/RobotAPI/units/ForceTorqueUnitSimulation.cpp index d4e0061bc..575dc3f25 100644 --- a/source/RobotAPI/units/ForceTorqueUnitSimulation.cpp +++ b/source/RobotAPI/units/ForceTorqueUnitSimulation.cpp @@ -33,16 +33,18 @@ using namespace armarx; void ForceTorqueUnitSimulation::onInitForceTorqueUnit() { int intervalMs = getProperty<int>("IntervalMs").getValue(); - std::string sensorNames = getProperty<std::string>("SensorNames").getValue(); + std::string sensorName = getProperty<std::string>("SensorName").getValue(); - std::vector<std::string> sensorNamesList; - boost::split(sensorNamesList, sensorNames, boost::is_any_of(",")); + //std::vector<std::string> sensorNamesList; + //boost::split(sensorNamesList, sensorNames, boost::is_any_of(",")); - for(std::vector<std::string>::iterator s = sensorNamesList.begin(); s != sensorNamesList.end(); s++) - { - forces[*s] = new armarx::FramedVector3(Eigen::Vector3f(0, 0, 0), *s); - torques[*s] = new armarx::FramedVector3(Eigen::Vector3f(0, 0, 0), *s); - } + //for(std::vector<std::string>::iterator s = sensorNamesList.begin(); s != sensorNamesList.end(); s++) + //{ + // forces[*s] = new armarx::FramedVector3(Eigen::Vector3f(0, 0, 0), *s); + // torques[*s] = new armarx::FramedVector3(Eigen::Vector3f(0, 0, 0), *s); + // } + forces = new armarx::FramedVector3(Eigen::Vector3f(0, 0, 0), sensorName); + torques = new armarx::FramedVector3(Eigen::Vector3f(0, 0, 0), sensorName); ARMARX_VERBOSE << "Starting ForceTorqueUnitSimulation with " << intervalMs << " ms interval"; simulationTask = new PeriodicTask<ForceTorqueUnitSimulation>(this, &ForceTorqueUnitSimulation::simulationFunction, intervalMs, false, "ForceTorqueUnitSimulation"); @@ -65,16 +67,16 @@ void ForceTorqueUnitSimulation::simulationFunction() listenerPrx->reportSensorForceValues(forces); listenerPrx->reportSensorTorqueValues(torques); - listenerPrx->reportSensorValues("force", forces); - listenerPrx->reportSensorValues("torque", torques); + //listenerPrx->reportSensorValues(forces); + //listenerPrx->reportSensorValues(torques); } -void ForceTorqueUnitSimulation::setOffset(const FramedVector3Map &forceTorqueOffsets, const Ice::Current &c) +void ForceTorqueUnitSimulation::setOffset(const FramedVector3BasePtr &forceOffsets, const FramedVector3BasePtr &torqueOffsets, const Ice::Current &c) { // Ignore } -void ForceTorqueUnitSimulation::setToNull(const StringMap &sensorNames, const Ice::Current &c) +void ForceTorqueUnitSimulation::setToNull(const Ice::Current &c) { // Ignore } diff --git a/source/RobotAPI/units/ForceTorqueUnitSimulation.h b/source/RobotAPI/units/ForceTorqueUnitSimulation.h index b62fb0a07..b4ec73b38 100644 --- a/source/RobotAPI/units/ForceTorqueUnitSimulation.h +++ b/source/RobotAPI/units/ForceTorqueUnitSimulation.h @@ -28,6 +28,7 @@ #include <Core/core/services/tasks/PeriodicTask.h> #include <Core/core/system/ImportExportComponent.h> +#include <RobotAPI/robotstate/remote/ArmarPose.h> #include <IceUtil/Time.h> @@ -47,7 +48,7 @@ namespace armarx ForceTorqueUnitSimulationPropertyDefinitions(std::string prefix) : ForceTorqueUnitPropertyDefinitions(prefix) { - defineRequiredProperty<std::string>("SensorNames", "Comma-separated list of simulated sensor names"); + defineRequiredProperty<std::string>("SensorName", "simulated sensor name"); defineOptionalProperty<int>("IntervalMs", 10, "The time in milliseconds between two calls to the simulation method."); } }; @@ -76,9 +77,8 @@ namespace armarx virtual void onExitForceTorqueUnit(); void simulationFunction(); - - virtual void setOffset(const armarx::FramedVector3Map &forceTorqueOffsets, const Ice::Current& c = ::Ice::Current()); - virtual void setToNull(const armarx::StringMap &sensorNames, const Ice::Current& c = ::Ice::Current()); + virtual void setOffset(const FramedVector3BasePtr &forceOffsets, const FramedVector3BasePtr &torqueOffsets, const Ice::Current& c = ::Ice::Current()); + virtual void setToNull(const Ice::Current& c = ::Ice::Current()); /** * @see PropertyUser::createPropertyDefinitions() @@ -86,8 +86,8 @@ namespace armarx virtual PropertyDefinitionsPtr createPropertyDefinitions(); protected: - armarx::FramedVector3Map forces; - armarx::FramedVector3Map torques; + armarx::FramedVector3Ptr forces; + armarx::FramedVector3Ptr torques; PeriodicTask<ForceTorqueUnitSimulation>::pointer_type simulationTask; -- GitLab