diff --git a/etc/doxygen/layout/Doxygen.css b/etc/doxygen/layout/Doxygen.css old mode 100755 new mode 100644 diff --git a/scenarios/MotionControlTest/configs/Armar4KinematicUnit.cfg b/scenarios/MotionControlTest/configs/Armar4KinematicUnit.cfg index 01ce93aebd0aa3e06568b2edba6e24dbaa9d218c..a4d3306ff1c5426a71180d7e9d23b9d09c25346b 100644 --- a/scenarios/MotionControlTest/configs/Armar4KinematicUnit.cfg +++ b/scenarios/MotionControlTest/configs/Armar4KinematicUnit.cfg @@ -1,5 +1,5 @@ # test config file for KinematicUnit configured to be a Head -ArmarX.KinematicUnitSimulation.RobotFileName=ArmarIV/RobotModel/ArmarIV.xml +ArmarX.KinematicUnitSimulation.RobotFileName=/Armar4/data/robotmodel/ArmarIV.xml ArmarX.KinematicUnitSimulation.RobotNodeSetName=Robot # node set name ArmarX.KinematicUnitSimulation.ObjectName=Armar4KinematicUnit # name of the Ice adapter diff --git a/scenarios/MotionControlTest/configs/Armar4Observer.cfg b/scenarios/MotionControlTest/configs/Armar4Observer.cfg index 5e85df860ba2ceccc75acda2b4cc0135e8cc8c86..645b897d74b7928f26c7b0b78a62be378b543288 100644 --- a/scenarios/MotionControlTest/configs/Armar4Observer.cfg +++ b/scenarios/MotionControlTest/configs/Armar4Observer.cfg @@ -1,6 +1,6 @@ # test config file for KinematicUnit configured to be a Head -ArmarX.KinematicUnitObserver.RobotFileName=ArmarIV/RobotModel/ArmarIV.xml # model XML file path containing a VirtualRobot RobotNodeSet that defines the joints +ArmarX.KinematicUnitObserver.RobotFileName=/Armar4/data/robotmodel/ArmarIV.xml # model XML file path containing a VirtualRobot RobotNodeSet that defines the joints ArmarX.KinematicUnitObserver.RobotNodeSetName=Robot # node set name ArmarX.KinematicUnitObserver.ObjectName=Armar4Observer # name of the ICE adapter diff --git a/scenarios/MotionControlTest/configs/ConditionHandler.cfg b/scenarios/MotionControlTest/configs/ConditionHandler.cfg index a6137040c7cc1d04419d49bdbfffdbdd31e86450..af98c6f8d36ffafbd164f9d5f685c5d46def8582 100644 --- a/scenarios/MotionControlTest/configs/ConditionHandler.cfg +++ b/scenarios/MotionControlTest/configs/ConditionHandler.cfg @@ -1,3 +1,3 @@ -ArmarX.ConditionHandler.Observers=Armar4Observer,SystemObserver,ObjectMemoryObserver +ArmarX.ConditionHandler.Observers=Armar4Observer,SystemObserver diff --git a/scenarios/MotionControlTest/configs/MotionControlTest.cfg b/scenarios/MotionControlTest/configs/MotionControlTest.cfg index 22e5b3092c407380ae98840a14968e9e11d466f8..66d8e812b0609e73358a3c3cd39aa771e8eb2c8c 100644 --- a/scenarios/MotionControlTest/configs/MotionControlTest.cfg +++ b/scenarios/MotionControlTest/configs/MotionControlTest.cfg @@ -1,5 +1,5 @@ # test config file for KinematicUnit configured to be a Head -ArmarX.MotionControl.KinematicUnitName=Armar4KinematicUnit -ArmarX.MotionControl.KinematicUnitObserverName=Armar4Observer +ArmarX.MotionControlStateHandler.KinematicUnitName=Armar4KinematicUnit +ArmarX.MotionControlStateHandler.KinematicUnitObserverName=Armar4Observer diff --git a/scenarios/MotionControlTest/configs/RobotStateComponent.cfg b/scenarios/MotionControlTest/configs/RobotStateComponent.cfg index 0165df097bcb1f09b10f87029c17cabe322da173..ab75dab24fe5f81bf8fc3698de37537c7c75009c 100644 --- a/scenarios/MotionControlTest/configs/RobotStateComponent.cfg +++ b/scenarios/MotionControlTest/configs/RobotStateComponent.cfg @@ -1,4 +1,4 @@ -ArmarX.RobotStateComponent.RobotFileName=ArmarIV/RobotModel/ArmarIV.xml # model XML file path containing a VirtualRobot RobotNodeSet that defines the joints +ArmarX.RobotStateComponent.RobotFileName=/Armar4/data/robotmodel/ArmarIV.xml # model XML file path containing a VirtualRobot RobotNodeSet that defines the joints ArmarX.RobotStateComponent.RobotNodeSetName=Robot # node set name ArmarX.RobotStateComponent.ObjectName=RobotStateComponent # name of the ICE adapter diff --git a/scenarios/MotionControlTest/motioncontrol.armarxgui b/scenarios/MotionControlTest/motioncontrol.armarxgui new file mode 100644 index 0000000000000000000000000000000000000000..0cc6030d3ea0389215c5c2927fe4d8b6dd7cddbf --- /dev/null +++ b/scenarios/MotionControlTest/motioncontrol.armarxgui @@ -0,0 +1,64 @@ +[General] +MainWindowGeometry=@ByteArray(\x1\xd9\xd0\xcb\0\x1\0\0\0\0\x6\xef\0\0\0\xb8\0\0\r\v\0\0\x3\xdb\0\0\x6\xf2\0\0\0\xd0\0\0\r\b\0\0\x3\xd8\0\0\0\0\0\0) +DockWidgetsState="@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x1\0\0\0\0\0\0\x6\x17\0\0\x2\xdc\xfc\x2\0\0\0\x1\xfc\0\0\0\x17\0\0\x2\xdc\0\0\x1\xb5\0\xff\xff\xff\xfc\x1\0\0\0\x2\xfc\0\0\0\0\0\0\x3\xdc\0\0\x1\xff\0\xff\xff\xff\xfa\0\0\0\0\x2\0\0\0\x2\xfb\0\0\0\x1a\0\x44\0o\0\x63\0k\0L\0o\0g\0V\0i\0\x65\0w\0\x65\0r\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\xe1\0\xff\xff\xff\xfb\0\0\0(\0\x44\0o\0\x63\0k\0K\0i\0n\0\x65\0m\0\x61\0t\0i\0\x63\0U\0n\0i\0t\0G\0U\0I\x1\0\0\0\x17\0\0\x2\a\0\0\x1\x45\0\xff\xff\xff\xfc\0\0\x3\xe2\0\0\x2\x35\0\0\0\xc8\0\xff\xff\xff\xfc\x2\0\0\0\x2\xfb\0\0\0\x1a\0\x44\0o\0\x63\0k\0\x33\0\x44\0 \0V\0i\0\x65\0w\0\x65\0r\x1\0\0\0\x17\0\0\x1\xd5\0\0\0\xb0\0\xff\xff\xff\xfc\0\0\x1\xf2\0\0\x1\x1\0\0\0\xff\x1\0\0\x1d\xfa\0\0\0\x1\x1\0\0\0\x2\xfb\0\0\0,\0\x44\0o\0\x63\0k\0S\0y\0s\0t\0\x65\0m\0S\0t\0\x61\0t\0\x65\0M\0o\0n\0i\0t\0o\0r\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\xc8\0\xff\xff\xff\xfb\0\0\0\x1e\0\x44\0o\0\x63\0k\0\x45\0v\0\x65\0n\0t\0S\0\x65\0n\0\x64\0\x65\0r\x1\0\0\x3\xe2\0\0\x2\x35\0\0\0\xc8\0\xff\xff\xff\0\0\0\0\0\0\x2\xdc\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\0)" +WidgetCustomNames=3D Viewer, EventSender, KinematicUnitGUI, LogViewer, SystemStateMonitor + +[3D%20Viewer] +WidgetBaseName=3D Viewer +widgetWidth=565 +widgetHeight=444 + +[EventSender] +WidgetBaseName=EventSender +widgetWidth=565 +widgetHeight=202 +EventSender\size=3 +EventSender\1\eventSenderName=LoadScenario +EventSender\1\description= +EventSender\1\componentName=RobotControlStateHandler +EventSender\1\globalStateIdentifier=RobotStatechart->RobotControl->Functional +EventSender\1\eventName=EvLoadScenario +EventSender\1\eventReceiverName=toAll +EventSender\1\parameters\size=2 +EventSender\1\parameters\1\key=proxyName +EventSender\1\parameters\1\VariantTypeId=-2125418521 +EventSender\1\parameters\1\value=MotionControlStateHandler +EventSender\1\parameters\2\key=stateName +EventSender\1\parameters\2\VariantTypeId=-2125418521 +EventSender\1\parameters\2\value=MotionControlTestStateIK +EventSender\2\eventSenderName=StartRobot +EventSender\2\description= +EventSender\2\componentName=RobotControlStateHandler +EventSender\2\globalStateIdentifier=RobotStatechart->RobotControl +EventSender\2\eventName=EvStartRobot +EventSender\2\eventReceiverName=toAll +EventSender\2\parameters\size=0 +EventSender\3\eventSenderName=StopRobot +EventSender\3\description= +EventSender\3\componentName=RobotControlStateHandler +EventSender\3\globalStateIdentifier=RobotStatechart->RobotControl +EventSender\3\eventName=EvStopRobot +EventSender\3\eventReceiverName=toAll +EventSender\3\parameters\size=0 + +[KinematicUnitGUI] +WidgetBaseName=KinematicUnitGUI +widgetWidth=988 +widgetHeight=627 +kinematicUnitName=Armar4KinematicUnit +robotNodeSetName=Robot +kinematicUnitFile=Armar4/data/robotmodel/ArmarIV.xml + +[LogViewer] +WidgetBaseName=LogViewer +widgetWidth=988 +widgetHeight=677 +verbosityLevel=1 +autoFilterAdding=true + +[SystemStateMonitor] +WidgetBaseName=SystemStateMonitor +widgetWidth=565 +widgetHeight=202 +ManagerRepository=@Invalid() +MonitoredManagers=ArmarXGuiManager, ConditionHandlerManager, KinematicUnitObserverManager, KinematicUnitSimulationManager, MotionControlTestManager, RobotControlManager, RobotStateComponentManager, SystemObserverManager diff --git a/scenarios/MotionControlTest/startGui.sh b/scenarios/MotionControlTest/startGui.sh index 7bce78ab872d1be2c72d40c99022558a0f29b6a7..6e03a3372a90b5dd5d327b0e258c61521e99ed26 100755 --- a/scenarios/MotionControlTest/startGui.sh +++ b/scenarios/MotionControlTest/startGui.sh @@ -1,8 +1,8 @@ -export CORE_PATH=../../Core -export GUI_PATH=../../Gui -export VISIONX_PATH=../../VisionX -export ARMAR4_PATH=../../Armar4/api/visualservo +export CORE_PATH=../../../Core +export GUI_PATH=../../../Gui +export VISIONX_PATH=../../../VisionX +export ARMAR4_PATH=../../../Armar4/api/visualservo export SCRIPT_PATH=$CORE_PATH/build/bin export CORE_BIN_PATH=$CORE_PATH/build/bin diff --git a/scenarios/MotionControlTest/startScenario.sh b/scenarios/MotionControlTest/startScenario.sh index 3d19637c5db99532d2eced5b06cbd7f3a5849a43..047e7c4bd9620608d494313a7d7501f746380d82 100755 --- a/scenarios/MotionControlTest/startScenario.sh +++ b/scenarios/MotionControlTest/startScenario.sh @@ -1,9 +1,9 @@ -export CORE_PATH=../../Core -export GUI_PATH=../../Gui -export VISIONX_PATH=../../VisionX -export ARMAR4_PATH=../../Armar4 -export HUMANOIDROBOTAPI_PATH=../../HumanoidRobotAPI +export CORE_PATH=../../../Core +export GUI_PATH=../../../Gui +export VISIONX_PATH=../..././VisionX +export ARMAR4_PATH=../../../Armar4 +export HUMANOIDROBOTAPI_PATH=../../../RobotAPI export SCRIPT_PATH=$CORE_PATH/build/bin export CORE_BIN_PATH=$CORE_PATH/build/bin @@ -30,10 +30,10 @@ $SCRIPT_PATH/startApplication.sh $CORE_BIN_PATH/RobotControlRun --Ice.Config=$GL #$SCRIPT_PATH/startApplication.sh $ARMAR4_BIN_PATH/diffkintestRun --Ice.Config=$GLOBAL_CONFIG & # vision x components -$SCRIPT_PATH/startApplication.sh $VISIONX_BIN_PATH/DummyObjectRecognitionRun --Ice.Config=$GLOBAL_CONFIG,./configs/DummyObjectRecognitionConfig.txt & -$SCRIPT_PATH/startApplication.sh $VISIONX_BIN_PATH/RobotHandLocalizationRun --Ice.Config=$GLOBAL_CONFIG,./configs/RobotHandLocalization.cfg & -$SCRIPT_PATH/startApplication.sh $VISIONX_BIN_PATH/ObjectMemoryRun --Ice.Config=$GLOBAL_CONFIG,./configs/ObjectMemory.cfg & -$SCRIPT_PATH/startApplication.sh $VISIONX_BIN_PATH/ObjectMemoryObserverRun --Ice.Config=$GLOBAL_CONFIG,./configs/ObjectMemoryObserver.cfg & +#$SCRIPT_PATH/startApplication.sh $VISIONX_BIN_PATH/DummyObjectRecognitionRun --Ice.Config=$GLOBAL_CONFIG,./configs/DummyObjectRecognitionConfig.txt & +#$SCRIPT_PATH/startApplication.sh $VISIONX_BIN_PATH/RobotHandLocalizationRun --Ice.Config=$GLOBAL_CONFIG,./configs/RobotHandLocalization.cfg & +#$SCRIPT_PATH/startApplication.sh $VISIONX_BIN_PATH/ObjectMemoryRun --Ice.Config=$GLOBAL_CONFIG,./configs/ObjectMemory.cfg & +#$SCRIPT_PATH/startApplication.sh $VISIONX_BIN_PATH/ObjectMemoryObserverRun --Ice.Config=$GLOBAL_CONFIG,./configs/ObjectMemoryObserver.cfg & $SCRIPT_PATH/startApplication.sh $CORE_BIN_PATH/ConditionHandlerRun --Ice.Config=$GLOBAL_CONFIG,./configs/ConditionHandler.cfg & diff --git a/source/RobotAPI/motioncontrol/MotionControl.cpp b/source/RobotAPI/motioncontrol/MotionControl.cpp index 478cec5deeaf44af9fbd959c8072545406ae6329..5230f245dfb24fed779deb32c07835df68731b63 100644 --- a/source/RobotAPI/motioncontrol/MotionControl.cpp +++ b/source/RobotAPI/motioncontrol/MotionControl.cpp @@ -40,20 +40,20 @@ void MoveJoints::defineParameters() { context = getContext<RobotStatechartContext>(); - setConfigFile("RobotAPIConfigs/stateconfigs/MotionControl.xml"); + setConfigFile("RobotAPI/data/stateconfigs/MotionControl.xml"); - addToInputAsList("jointNames", VariantType::String, false); - addToInputAsList("targetJointValues", VariantType::Float, false); + addToInput("jointNames", VariantType::List(VariantType::String), false); + addToInput("targetJointValues", VariantType::Float, false); // TODO: add when we have decided how to do it - addToInputAsList("jointMaxSpeeds", VariantType::Float, true); - addToInput("jointMaxSpeed", VariantType::Float, true); + addToInput("jointMaxSpeeds", VariantType::List(VariantType::Float), true); + addToInput("jointMaxSpeed", VariantType::List(VariantType::Float), true); addToInput("targetTolerance", VariantType::Float, false); addToInput("timeoutInMs", VariantType::Int, false); - addToOutputAsList("jointDistancesToTargets", VariantType::Float, true); + addToOutput("jointDistancesToTargets", VariantType::List(VariantType::Float), true); } @@ -61,8 +61,8 @@ void MoveJoints::defineParameters() void MoveJoints::onEnter() { NameValueMap targetJointAngles; - SingleTypeVariantListPtr jointNames = getInputList("jointNames"); - SingleTypeVariantListPtr targetJointValues = getInputList("targetJointValues"); + SingleTypeVariantListPtr jointNames = getInput<SingleTypeVariantList>("jointNames"); + SingleTypeVariantListPtr targetJointValues = getInput<SingleTypeVariantList>("targetJointValues"); if (jointNames->getSize()!=targetJointValues->getSize()) { @@ -71,8 +71,8 @@ void MoveJoints::onEnter() for(int i=0; i<jointNames->getSize(); i++ ) { - targetJointAngles[jointNames->getElement(i)->getString()] = targetJointValues->getElement(i)->getFloat(); - ARMARX_VERBOSE << "setting joint angle for joint '" << jointNames->getElement(i)->getString() << "' to " << targetJointValues->getElement(i)->getFloat() << std::endl; + targetJointAngles[jointNames->getVariant(i)->getString()] = targetJointValues->getVariant(i)->getFloat(); + ARMARX_VERBOSE << "setting joint angle for joint '" << jointNames->getVariant(i)->getString() << "' to " << targetJointValues->getVariant(i)->getFloat() << std::endl; } // TODO: Set Max Velocities @@ -84,10 +84,10 @@ void MoveJoints::onEnter() for(int i=0; i<jointNames->getSize(); i++ ) { ParameterList inrangeCheck; - inrangeCheck.push_back(new Variant(targetJointValues->getElement(i)->getFloat()-tolerance)); - inrangeCheck.push_back(new Variant(targetJointValues->getElement(i)->getFloat()+tolerance)); + inrangeCheck.push_back(new Variant(targetJointValues->getVariant(i)->getFloat()-tolerance)); + inrangeCheck.push_back(new Variant(targetJointValues->getVariant(i)->getFloat()+tolerance)); - Literal inrangeLiteral(DataFieldIdentifier(context->getKinematicUnitObserverName(),"jointangles", jointNames->getElement(i)->getString()), "inrange", inrangeCheck); + Literal inrangeLiteral(DataFieldIdentifier(context->getKinematicUnitObserverName(),"jointangles", jointNames->getVariant(i)->getString()), "inrange", inrangeCheck); cond = cond && inrangeLiteral; } @@ -110,16 +110,16 @@ void MoveJoints::onBreak() void MoveJoints::onExit() { - SingleTypeVariantListPtr jointNames = getInputList("jointNames"); - SingleTypeVariantListPtr targetJointValues = getInputList("targetJointValues"); + SingleTypeVariantListPtr jointNames = getInput<SingleTypeVariantList>("jointNames"); + SingleTypeVariantListPtr targetJointValues = getInput<SingleTypeVariantList>("targetJointValues"); SingleTypeVariantList resultList(VariantType::Float); for(int i=0; i<jointNames->getSize(); i++ ) { - DataFieldIdentifierPtr datafield = new DataFieldIdentifier(context->getKinematicUnitObserverName(),"jointangles", jointNames->getElement(i)->getString()); + DataFieldIdentifierPtr datafield = new DataFieldIdentifier(context->getKinematicUnitObserverName(),"jointangles", jointNames->getVariant(i)->getString()); float jointAngleActual = context->kinematicUnitObserverPrx->getDataField(datafield)->getFloat(); - float jointTargetValue = targetJointValues->getElement(i)->getFloat(); - resultList.addElement(new Variant(jointAngleActual - jointTargetValue)); + float jointTargetValue = targetJointValues->getVariant(i)->getFloat(); + resultList.addVariant(Variant(jointAngleActual - jointTargetValue)); } setOutput("jointDistancesToTargets", resultList); @@ -135,13 +135,13 @@ void MoveJointsVelocityControl::defineParameters() { context = getContext<RobotStatechartContext>(); - setConfigFile("RobotAPIConfigs/stateconfigs/MotionControl.xml"); + setConfigFile("RobotAPI/data/stateconfigs/MotionControl.xml"); - addToInputAsList("jointNames", VariantType::String, false); - addToInputAsList("targetJointVelocities", VariantType::Float, false); + addToInput("jointNames", VariantType::List(VariantType::String), false); + addToInput("targetJointVelocities", VariantType::List(VariantType::Float), false); // TODO: add when we have decided how to do it - addToInputAsList("jointMaxSpeeds", VariantType::Float, true); + addToInput("jointMaxSpeeds", VariantType::List(VariantType::Float), true); addToInput("jointMaxSpeed", VariantType::Float, true); addToInput("accelerationTime", VariantType::Float, false); @@ -150,7 +150,7 @@ void MoveJointsVelocityControl::defineParameters() addToInput("timeoutInMs", VariantType::Int, false); - addToOutputAsList("jointVelocitiesDistancesToTargets", VariantType::Float, true); + addToOutput("jointVelocitiesDistancesToTargets", VariantType::Float, true); } @@ -159,8 +159,8 @@ void MoveJointsVelocityControl::onEnter() { //float accelerationTime = getInput<float>("accelerationTime"); NameValueMap targetJointVelocities; - SingleTypeVariantListPtr jointNames = getInputList("jointNames"); - SingleTypeVariantListPtr targetVelocitiesValues = getInputList("targetJointVelocities"); + SingleTypeVariantListPtr jointNames = getInput<SingleTypeVariantList>("jointNames"); + SingleTypeVariantListPtr targetVelocitiesValues = getInput<SingleTypeVariantList>("targetJointVelocities"); if (jointNames->getSize()!=targetVelocitiesValues->getSize()) { @@ -169,8 +169,8 @@ void MoveJointsVelocityControl::onEnter() for(int i=0; i<jointNames->getSize(); i++) { - targetJointVelocities[jointNames->getElement(i)->getString()] = targetVelocitiesValues->getElement(i)->getFloat(); - ARMARX_VERBOSE << "setting joint angle for joint '" << jointNames->getElement(i)->getString() << "' to " << targetVelocitiesValues->getElement(i)->getFloat() << std::endl; + targetJointVelocities[jointNames->getVariant(i)->getString()] = targetVelocitiesValues->getVariant(i)->getFloat(); + ARMARX_VERBOSE << "setting joint angle for joint '" << jointNames->getVariant(i)->getString() << "' to " << targetVelocitiesValues->getVariant(i)->getFloat() << std::endl; } // TODO: Set Max Velocities @@ -181,10 +181,10 @@ void MoveJointsVelocityControl::onEnter() for(int i=0; i<jointNames->getSize(); i++) { ParameterList inrangeCheck; - inrangeCheck.push_back(new Variant(targetVelocitiesValues->getElement(i)->getFloat()-tolerance)); - inrangeCheck.push_back(new Variant(targetVelocitiesValues->getElement(i)->getFloat()+tolerance)); + inrangeCheck.push_back(new Variant(targetVelocitiesValues->getVariant(i)->getFloat()-tolerance)); + inrangeCheck.push_back(new Variant(targetVelocitiesValues->getVariant(i)->getFloat()+tolerance)); - Literal inrangeLiteral(DataFieldIdentifier(context->getKinematicUnitObserverName(),"jointvelocities", jointNames->getElement(i)->getString()), "inrange", inrangeCheck); + Literal inrangeLiteral(DataFieldIdentifier(context->getKinematicUnitObserverName(),"jointvelocities", jointNames->getVariant(i)->getString()), "inrange", inrangeCheck); cond = cond && inrangeLiteral; } @@ -200,16 +200,16 @@ void MoveJointsVelocityControl::onEnter() void MoveJointsVelocityControl::onExit() { - SingleTypeVariantListPtr jointNames = getInputList("jointNames"); - SingleTypeVariantListPtr targetJointVelocities = getInputList("targetJointVelocities"); + SingleTypeVariantListPtr jointNames = getInput<SingleTypeVariantList>("jointNames"); + SingleTypeVariantListPtr targetJointVelocities = getInput<SingleTypeVariantList>("targetJointVelocities"); SingleTypeVariantList resultList(VariantType::Float); for(int i=0; i<jointNames->getSize(); i++) { - DataFieldIdentifierPtr datafield = new DataFieldIdentifier(context->getKinematicUnitObserverName(),"jointvelocities", jointNames->getElement(i)->getString()); + DataFieldIdentifierPtr datafield = new DataFieldIdentifier(context->getKinematicUnitObserverName(),"jointvelocities", jointNames->getVariant(i)->getString()); float jointVelocityActual = context->kinematicUnitObserverPrx->getDataField(datafield)->getFloat(); - float jointVelocityTarget = targetJointVelocities->getElement(i)->getFloat(); - resultList.addElement(new Variant(jointVelocityActual - jointVelocityTarget)); + float jointVelocityTarget = targetJointVelocities->getVariant(i)->getFloat(); + resultList.addVariant(Variant(jointVelocityActual - jointVelocityTarget)); } setOutput("jointVelocitiesDistancesToTargets", resultList); @@ -225,7 +225,7 @@ void MoveTCPPoseIK::defineParameters() { context = getContext<RobotStatechartContext>(); - setConfigFile("RobotAPIConfigs/stateconfigs/MotionControl.xml"); + setConfigFile("RobotAPI/data/stateconfigs/MotionControl.xml"); addToInput("kinematicChainName", VariantType::String, false); addToInput("targetTCPPosition", VariantType::LinkedPosition, false); @@ -279,11 +279,11 @@ void MoveTCPTrajectory::defineParameters() { context = getContext<RobotStatechartContext>(); - setConfigFile("RobotAPIConfigs/stateconfigs/MotionControl.xml"); + setConfigFile("RobotAPI/data/stateconfigs/MotionControl.xml"); addToInput("kinematicChainName", VariantType::String, false); - addToInputAsList("targetTCPPositions", VariantType::LinkedPosition, false); - addToInputAsList("targetTCPOrientations", VariantType::LinkedOrientation, false); + addToInput("targetTCPPositions", VariantType::List(VariantType::LinkedPosition), false); + addToInput("targetTCPOrientations", VariantType::List(VariantType::LinkedOrientation), false); addToInput("tcpMaxSpeed", VariantType::Float, true); @@ -303,14 +303,14 @@ void MoveTCPTrajectory::defineParameters() void MoveTCPTrajectory::onEnter() { timeoutEvent = setTimeoutEvent(getInput<int>("timeoutInMs"), createEvent<EvTimeout>()); - int numberOfPoints = getInputList("targetTCPPositions")->getSize(); + int numberOfPoints = getInput<SingleTypeVariantList>("targetTCPPositions")->getSize(); if (numberOfPoints == 0) { sendEvent<EvSuccess>(); } - else if (numberOfPoints != getInputList("targetTCPOrientations")->getSize()) + else if (numberOfPoints != getInput<SingleTypeVariantList>("targetTCPOrientations")->getSize()) { - throw armarx::exceptions::local::eLogicError("the number of targetTCPPositions does not equal the number of targetTCPOrientations"); + throw armarx::exceptions::local::eStatechartLogicError("the number of targetTCPPositions does not equal the number of targetTCPOrientations"); sendEvent<EvFailure>(); } } @@ -348,7 +348,7 @@ void MoveTCPTrajectory::defineSubstates() void MoveTCPTrajectoryInit::defineParameters() { - addToInputAsList("targetTCPPositions", VariantType::LinkedPosition, false); + addToInput("targetTCPPositions", VariantType::List(VariantType::LinkedPosition), false); addToOutput("trajectoryPointCounterID", VariantType::ChannelRef, false); } @@ -358,7 +358,7 @@ void MoveTCPTrajectoryInit::defineParameters() void MoveTCPTrajectoryInit::onEnter() { // create a counter to keep track of the poses that were already reached. As we dont use the event, set the max to n+1 so it will never be sent - int numberOfPoints = getInputList("targetTCPPositions")->getSize(); + int numberOfPoints = getInput<SingleTypeVariantList>("targetTCPPositions")->getSize(); ARMARX_INFO << "number of points on trajectory: " << numberOfPoints; ActionEventIdentifier trajectoryPointCounterID = setCounterEvent(numberOfPoints, createEvent<EvLastPointReached>()); setOutput("trajectoryPointCounterID", trajectoryPointCounterID.actionId.get()); @@ -371,7 +371,7 @@ void MoveTCPTrajectoryInit::onEnter() void MoveTCPTrajectoryCheckCounter::defineParameters() { - addToInputAsList("targetTCPPositions", VariantType::LinkedPosition, false); + addToInput("targetTCPPositions", VariantType::List(VariantType::LinkedPosition), false); addToInput("trajectoryPointCounterID", VariantType::ChannelRef, false); addToOutput("trajectoryPointCounterID", VariantType::ChannelRef, false); } @@ -389,7 +389,7 @@ void MoveTCPTrajectoryCheckCounter::onEnter() ARMARX_INFO << "counter: " << counterValue; - if (counterValue < getInputList("targetTCPPositions")->getSize()) + if (counterValue < getInput<SingleTypeVariantList>("targetTCPPositions")->getSize()) { sendEvent<EvLastPointNotYetReached>(); } @@ -406,8 +406,8 @@ void MoveTCPTrajectoryCheckCounter::onEnter() void MoveTCPTrajectoryNextPoint::defineParameters() { addToInput("kinematicChainName", VariantType::String, false); - addToInputAsList("targetTCPPositions", VariantType::LinkedPosition, false); - addToInputAsList("targetTCPOrientations", VariantType::LinkedOrientation, false); + addToInput("targetTCPPositions", VariantType::List(VariantType::LinkedPosition), false); + addToInput("targetTCPOrientations", VariantType::List(VariantType::LinkedOrientation), false); addToInput("tcpMaxSpeed", VariantType::Float, true); @@ -437,8 +437,8 @@ void MoveTCPTrajectoryNextPoint::onEnter() int counterValue = trajectoryPointCounterID->getDataField("value")->getInt(); - setLocal("targetTCPPosition", *VariantPtr::dynamicCast(getInputList("targetTCPPositions")->getElement(counterValue))); - setLocal("targetTCPOrientation", *VariantPtr::dynamicCast(getInputList("targetTCPOrientations")->getElement(counterValue))); + setLocal("targetTCPPosition", *VariantPtr::dynamicCast(getInput<SingleTypeVariantList>("targetTCPPositions")->getVariant(counterValue))); + setLocal("targetTCPOrientation", *VariantPtr::dynamicCast(getInput<SingleTypeVariantList>("targetTCPOrientations")->getVariant(counterValue))); context->systemObserverPrx->incrementCounter(trajectoryPointCounterID); } @@ -465,8 +465,8 @@ void CalculateJointAngleConfiguration::defineParameters() addToInput("targetTCPPosition", VariantType::LinkedPosition, false); addToInput("targetTCPOrientation", VariantType::LinkedOrientation, false); - addToOutputAsList("jointNames", VariantType::String, true); - addToOutputAsList("targetJointValues", VariantType::Float, true); + addToOutput("jointNames", VariantType::String, true); + addToOutput("targetJointValues", VariantType::Float, true); } @@ -476,7 +476,7 @@ void CalculateJointAngleConfiguration::run() RobotStatechartContext* context = getContext<RobotStatechartContext>(); VirtualRobot::RobotPtr robotPtr(new RemoteRobot(context->robotStateComponent->getRobotSnapshot("CalculateTCPPoseTime"))); std::string robotModelFile; - ArmarXDataPath::getAbsolutePath("ArmarIV/RobotModel/ArmarIV.xml", robotModelFile); + ArmarXDataPath::getAbsolutePath("Armar4/data/Armar4/ArmarIV.xml", robotModelFile); VirtualRobot::RobotPtr robot = VirtualRobot::RobotIO::loadRobot(robotModelFile.c_str()); //VirtualRobot::RobotConfigPtr configPtr(new VirtualRobot::RobotConfig(robotPtr, "blub")); //robotPtr->getRobotNodeSet("Root")->getJointValues(configPtr); @@ -510,8 +510,8 @@ void CalculateJointAngleConfiguration::run() VirtualRobot::RobotNodeSetPtr kinematicChain = robot->getRobotNodeSet(getInput<std::string>("KinematicChainName") ); for (int i = 0; i < (signed int)kinematicChain->getSize(); i++) { - jointNames.addElement(new Variant(kinematicChain->getNode(i)->getName())); - targetJointValues.addElement(new Variant(kinematicChain->getNode(i)->getJointValue())); + jointNames.addVariant(Variant(kinematicChain->getNode(i)->getName())); + targetJointValues.addVariant(Variant(kinematicChain->getNode(i)->getJointValue())); } setOutput("targetJointValues",targetJointValues); setOutput("jointNames",jointNames); @@ -577,8 +577,8 @@ void MotionControlTestState::defineParameters() { setConfigFile("RobotAPIConfigs/stateconfigs/MotionControl.xml"); - addToInputAsList("jointNames", VariantType::String, false); - addToInputAsList("targetJointValues", VariantType::Float, false); + addToInput("jointNames", VariantType::List(VariantType::String), false); + addToInput("targetJointValues", VariantType::List(VariantType::Float), false); addToInput("jointMaxSpeed", VariantType::Float, true); @@ -586,7 +586,7 @@ void MotionControlTestState::defineParameters() addToInput("timeoutInMs", VariantType::Int, false); - addToOutputAsList("jointDistancesToTargets", VariantType::Float, true); + addToOutput("jointDistancesToTargets", VariantType::Float, true); } @@ -612,8 +612,8 @@ void MotionControlTestStateIK::defineParameters() addToInput("kinematicChainName", VariantType::String, false); //addToInput("targetTCPPosition", VariantType::LinkedPosition, false); //addToInput("targetTCPOrientation", VariantType::LinkedOrientation, false); - addToInputAsList("targetTCPPositions", VariantType::LinkedPosition, false); - addToInputAsList("targetTCPOrientations", VariantType::LinkedOrientation, false); + addToInput("targetTCPPositions", VariantType::List(VariantType::LinkedPosition), false); + addToInput("targetTCPOrientations", VariantType::List(VariantType::LinkedOrientation), false); addToInput("tcpMaxSpeed", VariantType::Float, true); diff --git a/source/RobotAPI/motioncontrol/MotionControl.h b/source/RobotAPI/motioncontrol/MotionControl.h index fb63e94d8bce3765e891790e75891c782ea98b2a..03ba78265ab14751bf3e6fd1d843a9cbe1963255 100644 --- a/source/RobotAPI/motioncontrol/MotionControl.h +++ b/source/RobotAPI/motioncontrol/MotionControl.h @@ -96,7 +96,7 @@ namespace MotionControl MotionControlHandler(); void onInitRemoteStateHandler(); void onConnectRemoteStateHandler(); - std::string getDefaultName() const { return "MotionControl"; } + std::string getHandlerName() const { return "MotionControl"; } };