robotology / gz-sim-yarp-plugins

YARP plugins for Modern Gazebo (gz-sim).
BSD 3-Clause "New" or "Revised" License
8 stars 0 forks source link

Diary: make ergoCub walk in Gazebo #122

Closed xela-95 closed 3 months ago

xela-95 commented 3 months ago

This issue will track all the technical details concerning #94.

Using walking-controllers release v0.8.0 (latest): https://github.com/robotology/walking-controllers/releases/tag/v0.8.0

xela-95 commented 3 months ago

Conda environment for development

mamba create -n walking  -c robotology -c conda-forge \
bipedal-locomotion-framework \
idyntree \
yarp \
icub-contrib-common \
icub-main \
osqp-eigen \
qpoases \
libunicycle-footstep-planner \
libgz-sim8 \
whole-body-estimators \
icub-models \
ycm-cmake-modules \
ninja pkg-config cmake compilers clang clang-tools clang-format include-what-you-use catch2 
xela-95 commented 3 months ago

Since in the walking controller tutorial I should launch gazebo classic with:

export YARP_CLOCK=/clock
gazebo -slibgazebo_yarp_clock.so

I think this is no more possible on Gazebo. Should I update the world SDF used in #103 adding the clock plugin?

CC @traversaro

xela-95 commented 3 months ago

Since in the walking controller tutorial I should launch gazebo classic with:

export YARP_CLOCK=/clock
gazebo -slibgazebo_yarp_clock.so

I think this is no more possible on Gazebo. Should I update the world SDF used in #103 adding the clock plugin?

By doing this, the port that gets registered is registration name /IITICUBLAP218/gz/377448/clock instead of simply /clock 🤔

xela-95 commented 3 months ago

By doing this, the port that gets registered is registration name /IITICUBLAP218/gz/377448/clock instead of simply /clock 🤔

The issue was caused by the YARP_CLOCK environment variable. If I do not set it the /clock port is opened and can be read.

xela-95 commented 3 months ago

I'm at step 4/7 of the walking-controllers tutorial.

The command:

yarprobotinterface --config conf/launch_wholebodydynamics_ecub.xml  

referring to https://github.com/icub-tech-iit/ergocub-software/blob/335ed25cab5ff24ccdc4647b4ea318e0f5f9f305/urdf/ergoCub/conf/launch_wholebodydynamics_ecub.xml#L4.

The output logs are the following:

Details ``` [ERROR] |yarp.os.Property| cannot read from yarprobotinterface.ini [DEBUG] Reading file /home/acroci/ergocub_ws/install/share/ergoCub/conf/launch_wholebodydynamics_ecub.xml [WARNING] Invalid syntax while loading /home/acroci/ergocub_ws/install/share/ergoCub/conf/launch_wholebodydynamics_ecub.xml at line 1 . Expected document of type robot . Found devices [DEBUG] yarprobotinterface: using xml parser for DTD v3.x [DEBUG] Reading file /home/acroci/ergocub_ws/install/share/ergoCub/conf/launch_wholebodydynamics_ecub.xml [INFO] Yarprobotinterface was started using the following enable_tags: [INFO] Yarprobotinterface was started using the following disable_tags: [DEBUG] List of all enable attributes found in the include tags: [DEBUG] List of all disable attributes found in the include tags: [DEBUG] Preprocessor complete in: 0.000169277 s [WARNING] Invalid syntax while loading at line 4 . "robot" element should contain the "portprefix" attribute. Using "name" attribute [WARNING] ************************************************************************************* * yarprobotinterface 'portprefix' parameter does not follow convention, * * it MUST start with a leading '/' since it is used as the full prefix port name * * name: full port prefix name with leading '/', e.g. /robotName * * A temporary automatic fix will be done for you, but please fix your config file * ************************************************************************************* [INFO] |yarp.os.Port|/ergoCubGazeboV1/yarprobotinterface| Port /ergoCubGazeboV1/yarprobotinterface active at tcp://10.240.2.19:10046/ [INFO] startup phase starting... [INFO] Opening device torso_mc with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/torso"), ("local" = "/wholeBodyDynamics/torso")] [DEBUG] |yarp.dev.PolyDriver|torso_mc| Parameters are (device remote_controlboard) (id torso_mc) (local "/wholeBodyDynamics/torso") (remote "/ergocubSim/torso") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/torso/rpc:o| Port /wholeBodyDynamics/torso/rpc:o active at tcp://10.240.2.19:10047/ [INFO] |yarp.os.Port|/wholeBodyDynamics/torso/command:o| Port /wholeBodyDynamics/torso/command:o active at tcp://10.240.2.19:10048/ [INFO] |yarp.os.Port|/wholeBodyDynamics/torso/stateExt:i| Port /wholeBodyDynamics/torso/stateExt:i active at tcp://10.240.2.19:10049/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/torso/rpc:o| Sending output from /wholeBodyDynamics/torso/rpc:o to /ergocubSim/torso/rpc:i using tcp [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/torso/command:o| Sending output from /wholeBodyDynamics/torso/command:o to /ergocubSim/torso/command:i using udp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/torso/stateExt:i| Receiving input from /ergocubSim/torso/stateExt:o to /wholeBodyDynamics/torso/stateExt:i using udp [INFO] |yarp.dev.PolyDriver|torso_mc| Created device . See C++ class RemoteControlBoard for documentation. [INFO] Opening device left_arm_mc with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/left_arm"), ("local" = "/wholeBodyDynamics/left_arm")] [DEBUG] |yarp.dev.PolyDriver|left_arm_mc| Parameters are (device remote_controlboard) (id left_arm_mc) (local "/wholeBodyDynamics/left_arm") (remote "/ergocubSim/left_arm") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/left_arm/rpc:o| Port /wholeBodyDynamics/left_arm/rpc:o active at tcp://10.240.2.19:10050/ [INFO] |yarp.os.Port|/wholeBodyDynamics/left_arm/command:o| Port /wholeBodyDynamics/left_arm/command:o active at tcp://10.240.2.19:10051/ [INFO] |yarp.os.Port|/wholeBodyDynamics/left_arm/stateExt:i| Port /wholeBodyDynamics/left_arm/stateExt:i active at tcp://10.240.2.19:10052/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_arm/rpc:o| Sending output from /wholeBodyDynamics/left_arm/rpc:o to /ergocubSim/left_arm/rpc:i using tcp [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_arm/command:o| Sending output from /wholeBodyDynamics/left_arm/command:o to /ergocubSim/left_arm/command:i using udp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/left_arm/stateExt:i| Receiving input from /ergocubSim/left_arm/stateExt:o to /wholeBodyDynamics/left_arm/stateExt:i using udp [INFO] |yarp.dev.PolyDriver|left_arm_mc| Created device . See C++ class RemoteControlBoard for documentation. [INFO] Opening device right_arm_mc with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/right_arm"), ("local" = "/wholeBodyDynamics/right_arm")] [DEBUG] |yarp.dev.PolyDriver|right_arm_mc| Parameters are (device remote_controlboard) (id right_arm_mc) (local "/wholeBodyDynamics/right_arm") (remote "/ergocubSim/right_arm") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/right_arm/rpc:o| Port /wholeBodyDynamics/right_arm/rpc:o active at tcp://10.240.2.19:10053/ [INFO] |yarp.os.Port|/wholeBodyDynamics/right_arm/command:o| Port /wholeBodyDynamics/right_arm/command:o active at tcp://10.240.2.19:10054/ [INFO] |yarp.os.Port|/wholeBodyDynamics/right_arm/stateExt:i| Port /wholeBodyDynamics/right_arm/stateExt:i active at tcp://10.240.2.19:10055/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_arm/rpc:o| Sending output from /wholeBodyDynamics/right_arm/rpc:o to /ergocubSim/right_arm/rpc:i using tcp [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_arm/command:o| Sending output from /wholeBodyDynamics/right_arm/command:o to /ergocubSim/right_arm/command:i using udp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/right_arm/stateExt:i| Receiving input from /ergocubSim/right_arm/stateExt:o to /wholeBodyDynamics/right_arm/stateExt:i using udp [INFO] |yarp.dev.PolyDriver|right_arm_mc| Created device . See C++ class RemoteControlBoard for documentation. [INFO] Opening device left_leg_mc with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/left_leg"), ("local" = "/wholeBodyDynamics/left_leg")] [DEBUG] |yarp.dev.PolyDriver|left_leg_mc| Parameters are (device remote_controlboard) (id left_leg_mc) (local "/wholeBodyDynamics/left_leg") (remote "/ergocubSim/left_leg") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/left_leg/rpc:o| Port /wholeBodyDynamics/left_leg/rpc:o active at tcp://10.240.2.19:10056/ [INFO] |yarp.os.Port|/wholeBodyDynamics/left_leg/command:o| Port /wholeBodyDynamics/left_leg/command:o active at tcp://10.240.2.19:10057/ [INFO] |yarp.os.Port|/wholeBodyDynamics/left_leg/stateExt:i| Port /wholeBodyDynamics/left_leg/stateExt:i active at tcp://10.240.2.19:10058/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_leg/rpc:o| Sending output from /wholeBodyDynamics/left_leg/rpc:o to /ergocubSim/left_leg/rpc:i using tcp [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_leg/command:o| Sending output from /wholeBodyDynamics/left_leg/command:o to /ergocubSim/left_leg/command:i using udp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/left_leg/stateExt:i| Receiving input from /ergocubSim/left_leg/stateExt:o to /wholeBodyDynamics/left_leg/stateExt:i using udp [INFO] |yarp.dev.PolyDriver|left_leg_mc| Created device . See C++ class RemoteControlBoard for documentation. [INFO] Opening device right_leg_mc with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/right_leg"), ("local" = "/wholeBodyDynamics/right_leg")] [DEBUG] |yarp.dev.PolyDriver|right_leg_mc| Parameters are (device remote_controlboard) (id right_leg_mc) (local "/wholeBodyDynamics/right_leg") (remote "/ergocubSim/right_leg") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/right_leg/rpc:o| Port /wholeBodyDynamics/right_leg/rpc:o active at tcp://10.240.2.19:10059/ [INFO] |yarp.os.Port|/wholeBodyDynamics/right_leg/command:o| Port /wholeBodyDynamics/right_leg/command:o active at tcp://10.240.2.19:10060/ [INFO] |yarp.os.Port|/wholeBodyDynamics/right_leg/stateExt:i| Port /wholeBodyDynamics/right_leg/stateExt:i active at tcp://10.240.2.19:10061/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_leg/rpc:o| Sending output from /wholeBodyDynamics/right_leg/rpc:o to /ergocubSim/right_leg/rpc:i using tcp [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_leg/command:o| Sending output from /wholeBodyDynamics/right_leg/command:o to /ergocubSim/right_leg/command:i using udp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/right_leg/stateExt:i| Receiving input from /ergocubSim/right_leg/stateExt:o to /wholeBodyDynamics/right_leg/stateExt:i using udp [INFO] |yarp.dev.PolyDriver|right_leg_mc| Created device . See C++ class RemoteControlBoard for documentation. [INFO] Opening device head_mc with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/head"), ("local" = "/wholeBodyDynamics/head")] [DEBUG] |yarp.dev.PolyDriver|head_mc| Parameters are (device remote_controlboard) (id head_mc) (local "/wholeBodyDynamics/head") (remote "/ergocubSim/head") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/head/rpc:o| Port /wholeBodyDynamics/head/rpc:o active at tcp://10.240.2.19:10062/ [INFO] |yarp.os.Port|/wholeBodyDynamics/head/command:o| Port /wholeBodyDynamics/head/command:o active at tcp://10.240.2.19:10063/ [INFO] |yarp.os.Port|/wholeBodyDynamics/head/stateExt:i| Port /wholeBodyDynamics/head/stateExt:i active at tcp://10.240.2.19:10064/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/head/rpc:o| Sending output from /wholeBodyDynamics/head/rpc:o to /ergocubSim/head/rpc:i using tcp [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/head/command:o| Sending output from /wholeBodyDynamics/head/command:o to /ergocubSim/head/command:i using udp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/head/stateExt:i| Receiving input from /ergocubSim/head/stateExt:o to /wholeBodyDynamics/head/stateExt:i using udp [INFO] |yarp.dev.PolyDriver|head_mc| Created device . See C++ class RemoteControlBoard for documentation. [INFO] Opening device head_inertial_hardware_device with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/head/inertials"), ("local" = "/wholeBodyDynamics/imu")] [DEBUG] |yarp.dev.PolyDriver|head_inertial_hardware_device| Parameters are (device multipleanalogsensorsclient) (id head_inertial_hardware_device) (local "/wholeBodyDynamics/imu") (remote "/ergocubSim/head/inertials") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/imu/rpc:i| Port /wholeBodyDynamics/imu/rpc:i active at tcp://10.240.2.19:10065/ [INFO] |yarp.os.Port|/wholeBodyDynamics/imu/measures:i| Port /wholeBodyDynamics/imu/measures:i active at tcp://10.240.2.19:10066/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/imu/rpc:i| Sending output from /wholeBodyDynamics/imu/rpc:i to /ergocubSim/head/inertials/rpc:o using tcp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/imu/measures:i| Receiving input from /ergocubSim/head/inertials/measures:o to /wholeBodyDynamics/imu/measures:i using tcp [DEBUG] |yarp.device.multipleanalogsensorsclient| Open complete [INFO] |yarp.dev.PolyDriver|head_inertial_hardware_device| Created device . See C++ class MultipleAnalogSensorsClient for documentation. [INFO] Opening device waist_inertial_hardware_device with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/waist/inertials"), ("local" = "/wholeBodyDynamics/waist_imu")] [DEBUG] |yarp.dev.PolyDriver|waist_inertial_hardware_device| Parameters are (device multipleanalogsensorsclient) (id waist_inertial_hardware_device) (local "/wholeBodyDynamics/waist_imu") (remote "/ergocubSim/waist/inertials") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/waist_imu/rpc:i| Port /wholeBodyDynamics/waist_imu/rpc:i active at tcp://10.240.2.19:10067/ [INFO] |yarp.os.Port|/wholeBodyDynamics/waist_imu/measures:i| Port /wholeBodyDynamics/waist_imu/measures:i active at tcp://10.240.2.19:10068/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/waist_imu/rpc:i| Sending output from /wholeBodyDynamics/waist_imu/rpc:i to /ergocubSim/waist/inertials/rpc:o using tcp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/waist_imu/measures:i| Receiving input from /ergocubSim/waist/inertials/measures:o to /wholeBodyDynamics/waist_imu/measures:i using tcp [DEBUG] |yarp.device.multipleanalogsensorsclient| Open complete [INFO] |yarp.dev.PolyDriver|waist_inertial_hardware_device| Created device . See C++ class MultipleAnalogSensorsClient for documentation. [INFO] Opening device ergocub_left_arm_ft with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/left_arm/FT"), ("local" = "/wholeBodyDynamics/left_arm_ft_sensor")] [DEBUG] |yarp.dev.PolyDriver|ergocub_left_arm_ft| Parameters are (device multipleanalogsensorsclient) (id ergocub_left_arm_ft) (local "/wholeBodyDynamics/left_arm_ft_sensor") (remote "/ergocubSim/left_arm/FT") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/left_arm_ft_sensor/rpc:i| Port /wholeBodyDynamics/left_arm_ft_sensor/rpc:i active at tcp://10.240.2.19:10069/ [INFO] |yarp.os.Port|/wholeBodyDynamics/left_arm_ft_sensor/measures:i| Port /wholeBodyDynamics/left_arm_ft_sensor/measures:i active at tcp://10.240.2.19:10070/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_arm_ft_sensor/rpc:i| Sending output from /wholeBodyDynamics/left_arm_ft_sensor/rpc:i to /ergocubSim/left_arm/FT/rpc:o using tcp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/left_arm_ft_sensor/measures:i| Receiving input from /ergocubSim/left_arm/FT/measures:o to /wholeBodyDynamics/left_arm_ft_sensor/measures:i using tcp [DEBUG] |yarp.device.multipleanalogsensorsclient| Open complete [INFO] |yarp.dev.PolyDriver|ergocub_left_arm_ft| Created device . See C++ class MultipleAnalogSensorsClient for documentation. [INFO] Opening device ergocub_right_arm_ft with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/right_arm/FT"), ("local" = "/wholeBodyDynamics/right_arm_ft_sensor")] [DEBUG] |yarp.dev.PolyDriver|ergocub_right_arm_ft| Parameters are (device multipleanalogsensorsclient) (id ergocub_right_arm_ft) (local "/wholeBodyDynamics/right_arm_ft_sensor") (remote "/ergocubSim/right_arm/FT") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/right_arm_ft_sensor/rpc:i| Port /wholeBodyDynamics/right_arm_ft_sensor/rpc:i active at tcp://10.240.2.19:10071/ [INFO] |yarp.os.Port|/wholeBodyDynamics/right_arm_ft_sensor/measures:i| Port /wholeBodyDynamics/right_arm_ft_sensor/measures:i active at tcp://10.240.2.19:10072/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_arm_ft_sensor/rpc:i| Sending output from /wholeBodyDynamics/right_arm_ft_sensor/rpc:i to /ergocubSim/right_arm/FT/rpc:o using tcp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/right_arm_ft_sensor/measures:i| Receiving input from /ergocubSim/right_arm/FT/measures:o to /wholeBodyDynamics/right_arm_ft_sensor/measures:i using tcp [DEBUG] |yarp.device.multipleanalogsensorsclient| Open complete [INFO] |yarp.dev.PolyDriver|ergocub_right_arm_ft| Created device . See C++ class MultipleAnalogSensorsClient for documentation. [INFO] Opening device ergocub_left_leg_ft with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/left_leg/FT"), ("local" = "/wholeBodyDynamics/left_leg_ft_sensor")] [DEBUG] |yarp.dev.PolyDriver|ergocub_left_leg_ft| Parameters are (device multipleanalogsensorsclient) (id ergocub_left_leg_ft) (local "/wholeBodyDynamics/left_leg_ft_sensor") (remote "/ergocubSim/left_leg/FT") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/left_leg_ft_sensor/rpc:i| Port /wholeBodyDynamics/left_leg_ft_sensor/rpc:i active at tcp://10.240.2.19:10073/ [INFO] |yarp.os.Port|/wholeBodyDynamics/left_leg_ft_sensor/measures:i| Port /wholeBodyDynamics/left_leg_ft_sensor/measures:i active at tcp://10.240.2.19:10074/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_leg_ft_sensor/rpc:i| Sending output from /wholeBodyDynamics/left_leg_ft_sensor/rpc:i to /ergocubSim/left_leg/FT/rpc:o using tcp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/left_leg_ft_sensor/measures:i| Receiving input from /ergocubSim/left_leg/FT/measures:o to /wholeBodyDynamics/left_leg_ft_sensor/measures:i using tcp [DEBUG] |yarp.device.multipleanalogsensorsclient| Open complete [INFO] |yarp.dev.PolyDriver|ergocub_left_leg_ft| Created device . See C++ class MultipleAnalogSensorsClient for documentation. [INFO] Opening device ergocub_right_leg_ft with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/right_leg/FT"), ("local" = "/wholeBodyDynamics/right_leg_ft_sensor")] [DEBUG] |yarp.dev.PolyDriver|ergocub_right_leg_ft| Parameters are (device multipleanalogsensorsclient) (id ergocub_right_leg_ft) (local "/wholeBodyDynamics/right_leg_ft_sensor") (remote "/ergocubSim/right_leg/FT") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/right_leg_ft_sensor/rpc:i| Port /wholeBodyDynamics/right_leg_ft_sensor/rpc:i active at tcp://10.240.2.19:10075/ [INFO] |yarp.os.Port|/wholeBodyDynamics/right_leg_ft_sensor/measures:i| Port /wholeBodyDynamics/right_leg_ft_sensor/measures:i active at tcp://10.240.2.19:10076/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_leg_ft_sensor/rpc:i| Sending output from /wholeBodyDynamics/right_leg_ft_sensor/rpc:i to /ergocubSim/right_leg/FT/rpc:o using tcp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/right_leg_ft_sensor/measures:i| Receiving input from /ergocubSim/right_leg/FT/measures:o to /wholeBodyDynamics/right_leg_ft_sensor/measures:i using tcp [DEBUG] |yarp.device.multipleanalogsensorsclient| Open complete [INFO] |yarp.dev.PolyDriver|ergocub_right_leg_ft| Created device . See C++ class MultipleAnalogSensorsClient for documentation. [INFO] Opening device wholebodydynamics with parameters [("robotName" = "ergoCubGazeboV1"), ("axesNames" = "(torso_roll,torso_pitch,torso_yaw,l_shoulder_pitch,l_shoulder_roll,l_shoulder_yaw,l_elbow,l_wrist_pitch,l_wrist_yaw,r_shoulder_pitch,r_shoulder_roll,r_shoulder_yaw,r_elbow,r_wrist_pitch,r_wrist_yaw,l_hip_pitch,l_hip_roll,l_hip_yaw,l_knee,l_ankle_pitch,l_ankle_roll,r_hip_pitch,r_hip_roll,r_hip_yaw,r_knee,r_ankle_pitch,r_ankle_roll)"), ("modelFile" = "model.urdf"), ("fixedFrameGravity" = "(0,0,-9.81)"), ("defaultContactFrames" = "(l_hand_palm,r_hand_palm,root_link,l_foot_front,l_foot_rear,r_foot_front,r_foot_rear,l_upper_leg,r_upper_leg)"), ("imuFrameName" = "head_imu_0"), ("useJointVelocity" = "true"), ("useJointAcceleration" = "true"), ("imuFilterCutoffInHz" = "3.0"), ("forceTorqueFilterCutoffInHz" = "3.0"), ("jointVelFilterCutoffInHz" = "3.0"), ("jointAccFilterCutoffInHz" = "3.0"), ("startWithZeroFTSensorOffsets" = "true"), ("useSkinForContacts" = "false"), ("publishNetExternalWrenches" = "true"), ("disableSensorReadCheckAtStartup" = "true"), ("GRAVITY_COMPENSATION" [group] = "(enableGravityCompensation true) (gravityCompensationBaseLink root_link) (gravityCompensationAxesNames (torso_roll,torso_pitch,torso_yaw,l_shoulder_pitch,l_shoulder_roll,l_shoulder_yaw,l_elbow,r_shoulder_pitch,r_shoulder_roll,r_shoulder_yaw,r_elbow))"), ("HW_USE_MAS_IMU" [group] = "(accelerometer head_imu_0) (gyroscope head_imu_0)"), ("WBD_OUTPUT_EXTERNAL_WRENCH_PORTS" [group] = "(/wholeBodyDynamics/left_foot_front/cartesianEndEffectorWrench:o (l_foot_front,l_sole,l_sole)) (/wholeBodyDynamics/left_foot_rear/cartesianEndEffectorWrench:o (l_foot_rear,l_sole,l_sole)) (/wholeBodyDynamics/right_foot_front/cartesianEndEffectorWrench:o (r_foot_front,r_sole,r_sole)) (/wholeBodyDynamics/right_foot_rear/cartesianEndEffectorWrench:o (r_foot_rear,r_sole,r_sole)) (/wholeBodyDynamics/left_arm/cartesianEndEffectorWrench:o (l_hand_palm,l_hand_palm,root_link)) (/wholeBodyDynamics/right_arm/cartesianEndEffectorWrench:o (r_hand_palm,r_hand_palm,root_link))"), ("multipleAnalogSensorsNames" [group] = "(SixAxisForceTorqueSensorsNames ("l_arm_ft", "r_arm_ft", "l_leg_ft", "r_leg_ft", "l_foot_front_ft", "r_foot_front_ft", "l_foot_rear_ft", "r_foot_rear_ft"))")] [DEBUG] |yarp.dev.PolyDriver|wholebodydynamics| Parameters are (GRAVITY_COMPENSATION (enableGravityCompensation true) (gravityCompensationBaseLink root_link) (gravityCompensationAxesNames (torso_roll torso_pitch torso_yaw l_shoulder_pitch l_shoulder_roll l_shoulder_yaw l_elbow r_shoulder_pitch r_shoulder_roll r_shoulder_yaw r_elbow))) (HW_USE_MAS_IMU (accelerometer head_imu_0) (gyroscope head_imu_0)) (WBD_OUTPUT_EXTERNAL_WRENCH_PORTS ("/wholeBodyDynamics/left_foot_front/cartesianEndEffectorWrench:o" (l_foot_front l_sole l_sole)) ("/wholeBodyDynamics/left_foot_rear/cartesianEndEffectorWrench:o" (l_foot_rear l_sole l_sole)) ("/wholeBodyDynamics/right_foot_front/cartesianEndEffectorWrench:o" (r_foot_front r_sole r_sole)) ("/wholeBodyDynamics/right_foot_rear/cartesianEndEffectorWrench:o" (r_foot_rear r_sole r_sole)) ("/wholeBodyDynamics/left_arm/cartesianEndEffectorWrench:o" (l_hand_palm l_hand_palm root_link)) ("/wholeBodyDynamics/right_arm/cartesianEndEffectorWrench:o" (r_hand_palm r_hand_palm root_link))) (axesNames (torso_roll torso_pitch torso_yaw l_shoulder_pitch l_shoulder_roll l_shoulder_yaw l_elbow l_wrist_pitch l_wrist_yaw r_shoulder_pitch r_shoulder_roll r_shoulder_yaw r_elbow r_wrist_pitch r_wrist_yaw l_hip_pitch l_hip_roll l_hip_yaw l_knee l_ankle_pitch l_ankle_roll r_hip_pitch r_hip_roll r_hip_yaw r_knee r_ankle_pitch r_ankle_roll)) (defaultContactFrames (l_hand_palm r_hand_palm root_link l_foot_front l_foot_rear r_foot_front r_foot_rear l_upper_leg r_upper_leg)) (device wholebodydynamics) (disableSensorReadCheckAtStartup true) (fixedFrameGravity (0 0 -9.81000000000000049738)) (forceTorqueFilterCutoffInHz 3.0) (id wholebodydynamics) (imuFilterCutoffInHz 3.0) (imuFrameName head_imu_0) (jointAccFilterCutoffInHz 3.0) (jointVelFilterCutoffInHz 3.0) (modelFile model.urdf) (multipleAnalogSensorsNames (SixAxisForceTorqueSensorsNames (l_arm_ft r_arm_ft l_leg_ft r_leg_ft l_foot_front_ft r_foot_front_ft l_foot_rear_ft r_foot_rear_ft))) (publishNetExternalWrenches true) (robotName ergoCubGazeboV1) (startWithZeroFTSensorOffsets true) (useJointAcceleration true) (useJointVelocity true) (useSkinForContacts false) [DEBUG] wholeBodyDynamics Statistics: Opening estimator. [INFO] wholeBodyDynamics : Loading model from I/O warning : failed to load external entity "" [ERROR] ModelLoader :: loadModelFromFile : Error in parsing model from URDF. [ERROR] ExtWrenchesAndJointTorquesEstimator :: loadModelAndSensorsFromFileWithSpecifiedDOFs : Error in parsing from URDF. [INFO] wholeBodyDynamics : impossible to create ExtWrenchesAndJointTorquesEstimator from file model.urdf ( full path: ) [ERROR] wholeBodyDynamics: Problem in opening estimator object. [ERROR] |yarp.dev.PolyDriver|wholebodydynamics| Driver was found but could not open [WARNING] Cannot open device wholebodydynamics [WARNING] Cannot open device wholebodydynamics [WARNING] There was some problem opening one or more devices. Please check the log and your configuration [ERROR] One or more devices failed opening... see previous log messages for more info [INFO] Closing device wholebodydynamics [INFO] Closing device ergocub_right_leg_ft [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/right_leg_ft_sensor/measures:i| Removing input from /ergocubSim/right_leg/FT/measures:o to /wholeBodyDynamics/right_leg_ft_sensor/measures:i [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_leg_ft_sensor/rpc:i| Removing output from /wholeBodyDynamics/right_leg_ft_sensor/rpc:i to /ergocubSim/right_leg/FT/rpc:o [DEBUG] |yarp.device.multipleanalogsensorsclient| Close complete [INFO] Closing device ergocub_left_leg_ft [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/left_leg_ft_sensor/measures:i| Removing input from /ergocubSim/left_leg/FT/measures:o to /wholeBodyDynamics/left_leg_ft_sensor/measures:i [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_leg_ft_sensor/rpc:i| Removing output from /wholeBodyDynamics/left_leg_ft_sensor/rpc:i to /ergocubSim/left_leg/FT/rpc:o [DEBUG] |yarp.device.multipleanalogsensorsclient| Close complete [INFO] Closing device ergocub_right_arm_ft [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/right_arm_ft_sensor/measures:i| Removing input from /ergocubSim/right_arm/FT/measures:o to /wholeBodyDynamics/right_arm_ft_sensor/measures:i [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_arm_ft_sensor/rpc:i| Removing output from /wholeBodyDynamics/right_arm_ft_sensor/rpc:i to /ergocubSim/right_arm/FT/rpc:o [DEBUG] |yarp.device.multipleanalogsensorsclient| Close complete [INFO] Closing device ergocub_left_arm_ft [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/left_arm_ft_sensor/measures:i| Removing input from /ergocubSim/left_arm/FT/measures:o to /wholeBodyDynamics/left_arm_ft_sensor/measures:i [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_arm_ft_sensor/rpc:i| Removing output from /wholeBodyDynamics/left_arm_ft_sensor/rpc:i to /ergocubSim/left_arm/FT/rpc:o [DEBUG] |yarp.device.multipleanalogsensorsclient| Close complete [INFO] Closing device waist_inertial_hardware_device [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/waist_imu/measures:i| Removing input from /ergocubSim/waist/inertials/measures:o to /wholeBodyDynamics/waist_imu/measures:i [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/waist_imu/rpc:i| Removing output from /wholeBodyDynamics/waist_imu/rpc:i to /ergocubSim/waist/inertials/rpc:o [DEBUG] |yarp.device.multipleanalogsensorsclient| Close complete [INFO] Closing device head_inertial_hardware_device [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/imu/measures:i| Removing input from /ergocubSim/head/inertials/measures:o to /wholeBodyDynamics/imu/measures:i [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/imu/rpc:i| Removing output from /wholeBodyDynamics/imu/rpc:i to /ergocubSim/head/inertials/rpc:o [DEBUG] |yarp.device.multipleanalogsensorsclient| Close complete [INFO] Closing device head_mc [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/head/rpc:o| Removing output from /wholeBodyDynamics/head/rpc:o to /ergocubSim/head/rpc:i [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/head/command:o| output for route /wholeBodyDynamics/head/command:o->udp->/ergocubSim/head/command:i asking other side to close by out-of-band means [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/head/command:o| Removing output from /wholeBodyDynamics/head/command:o to /ergocubSim/head/command:i [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/head/stateExt:i| Removing input from /ergocubSim/head/stateExt:o to /wholeBodyDynamics/head/stateExt:i [INFO] Closing device right_leg_mc [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_leg/rpc:o| Removing output from /wholeBodyDynamics/right_leg/rpc:o to /ergocubSim/right_leg/rpc:i [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_leg/command:o| output for route /wholeBodyDynamics/right_leg/command:o->udp->/ergocubSim/right_leg/command:i asking other side to close by out-of-band means [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_leg/command:o| Removing output from /wholeBodyDynamics/right_leg/command:o to /ergocubSim/right_leg/command:i [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/right_leg/stateExt:i| Removing input from /ergocubSim/right_leg/stateExt:o to /wholeBodyDynamics/right_leg/stateExt:i [INFO] Closing device left_leg_mc [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_leg/rpc:o| Removing output from /wholeBodyDynamics/left_leg/rpc:o to /ergocubSim/left_leg/rpc:i [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_leg/command:o| output for route /wholeBodyDynamics/left_leg/command:o->udp->/ergocubSim/left_leg/command:i asking other side to close by out-of-band means [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_leg/command:o| Removing output from /wholeBodyDynamics/left_leg/command:o to /ergocubSim/left_leg/command:i [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/left_leg/stateExt:i| Removing input from /ergocubSim/left_leg/stateExt:o to /wholeBodyDynamics/left_leg/stateExt:i [INFO] Closing device right_arm_mc [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_arm/rpc:o| Removing output from /wholeBodyDynamics/right_arm/rpc:o to /ergocubSim/right_arm/rpc:i [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_arm/command:o| output for route /wholeBodyDynamics/right_arm/command:o->udp->/ergocubSim/right_arm/command:i asking other side to close by out-of-band means [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_arm/command:o| Removing output from /wholeBodyDynamics/right_arm/command:o to /ergocubSim/right_arm/command:i [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/right_arm/stateExt:i| Removing input from /ergocubSim/right_arm/stateExt:o to /wholeBodyDynamics/right_arm/stateExt:i [INFO] Closing device left_arm_mc [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_arm/rpc:o| Removing output from /wholeBodyDynamics/left_arm/rpc:o to /ergocubSim/left_arm/rpc:i [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_arm/command:o| output for route /wholeBodyDynamics/left_arm/command:o->udp->/ergocubSim/left_arm/command:i asking other side to close by out-of-band means [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_arm/command:o| Removing output from /wholeBodyDynamics/left_arm/command:o to /ergocubSim/left_arm/command:i [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/left_arm/stateExt:i| Removing input from /ergocubSim/left_arm/stateExt:o to /wholeBodyDynamics/left_arm/stateExt:i [INFO] Closing device torso_mc [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/torso/rpc:o| Removing output from /wholeBodyDynamics/torso/rpc:o to /ergocubSim/torso/rpc:i [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/torso/command:o| output for route /wholeBodyDynamics/torso/command:o->udp->/ergocubSim/torso/command:i asking other side to close by out-of-band means [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/torso/command:o| Removing output from /wholeBodyDynamics/torso/command:o to /ergocubSim/torso/command:i [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/torso/stateExt:i| Removing input from /ergocubSim/torso/stateExt:o to /wholeBodyDynamics/torso/stateExt:i [ERROR] Error in startup phase... see previous messages for more info [WARNING] Interrupt # 1 # received. [INFO] Interrupt received. Stopping all running threads. [INFO] interrupt1 phase starting... [INFO] interrupt1 phase finished. [INFO] shutdown phase starting... [INFO] Entering action level 2 of phase shutdown [INFO] Executing detach action, level 2 on device wholebodydynamics with parameters [] [ERROR] wholebodydynamics is neither a wrapper nor a multiplewrapper, therefore it cannot have detach actions [ERROR] Cannot run detach action on device wholebodydynamics [INFO] All actions for action level 2 of shutdown phase started. Waiting for unfinished actions. [INFO] All actions for action level 2 of shutdown phase finished. [WARNING] There was some problem running actions for shutdown phase . Please check the log and your configuration [INFO] Closing device wholebodydynamics [INFO] Closing device ergocub_right_leg_ft [INFO] Closing device ergocub_left_leg_ft [INFO] Closing device ergocub_right_arm_ft [INFO] Closing device ergocub_left_arm_ft [INFO] Closing device waist_inertial_hardware_device [INFO] Closing device head_inertial_hardware_device [INFO] Closing device head_mc [INFO] Closing device right_leg_mc [INFO] Closing device left_leg_mc [INFO] Closing device right_arm_mc [INFO] Closing device left_arm_mc [INFO] Closing device torso_mc [INFO] shutdown phase finished. [ERROR] Error in shutdown phase... see previous messages for more info [INFO] |yarp.os.RFModule| RFModule failed to open. ```
xela-95 commented 3 months ago

CC @S-Dafarra

traversaro commented 3 months ago

It seems that wholebodydynamics is not able to start, in particular this line:

[INFO] wholeBodyDynamics : impossible to create ExtWrenchesAndJointTorquesEstimator from file  model.urdf  ( full path:    ) 

suggest that it was not able to find the model. Did you set YARP_ROBOT_NAME ?

traversaro commented 3 months ago

This feature may be relevant:

xela-95 commented 3 months ago

It seems that wholebodydynamics is not able to start, in particular this line:

[INFO] wholeBodyDynamics : impossible to create ExtWrenchesAndJointTorquesEstimator from file  model.urdf  ( full path:    ) 

suggest that it was not able to find the model. Did you set YARP_ROBOT_NAME ?

In Step 1, I've done export YARP_ROBOT_NAME="ergoCubGazeboV1". We are using the model in the folder named ergoCubGazeboV1_1. But also trying to update the YARP_ROBOT_NAME variable to this name produces the same error

The value of YARP_DATA_DIRS is the following:

:<CONDA_PREFIX>/share/ICUBcontrib:<CONDA_PREFIX>/share/iCub:<CONDA_PREFIX>/share/iCub:<CONDA_PREFIX>/share/yarp
traversaro commented 3 months ago

To debug more easily that logic, can you run the yarp resource find model.urdf command and check its output? By the way, it seems that somehow <CONDA_PREFIX>/share/ergoCub is missing from YARP_DATA_DIRS, not sure why.

traversaro commented 3 months ago

Ahh, probably you did not installed ergocub-software as you are using your local model?

xela-95 commented 3 months ago

Ahh, probably you did not installed ergocub-software as you are using your local model?

Yep exactly! Do I have to install it and update some of the variables?

xela-95 commented 3 months ago

This is the output of yarp resource find model.urdf (having set YARP_ROBOT_NAME="ergoCubGazeboV1_1"):

[DEBUG] |yarp.os.ResourceFinder| configuring
[DEBUG] |yarp.os.ResourceFinder| finding file [from]
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/ergocub_ws/install/share/ergoCub/conf/from] (pwd)
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/.config/yarp/robots/ergoCubGazeboV1_1] (robot YARP_CONFIG_HOME)
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/.local/share/yarp/robots/ergoCubGazeboV1_1] (robot YARP_DATA_HOME)
[DEBUG] |yarp.os.ResourceFinder| checking [/etc/xdg/xdg-ubuntu/yarp/robots/ergoCubGazeboV1_1] (robot YARP_CONFIG_DIRS)
[DEBUG] |yarp.os.ResourceFinder| checking [/etc/xdg/yarp/robots/ergoCubGazeboV1_1] (robot YARP_CONFIG_DIRS)
[DEBUG] |yarp.os.ResourceFinder| checking [robots/ergoCubGazeboV1_1] (robot YARP_DATA_DIRS)
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/mambaforge/envs/walking/share/ICUBcontrib/robots/ergoCubGazeboV1_1] (robot YARP_DATA_DIRS)
[DEBUG] |yarp.os.ResourceFinder| found /home/acroci/mambaforge/envs/walking/share/ICUBcontrib/robots/ergoCubGazeboV1_1
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/mambaforge/envs/walking/share/iCub/robots/ergoCubGazeboV1_1] (robot YARP_DATA_DIRS)
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/mambaforge/envs/walking/share/yarp/robots/ergoCubGazeboV1_1] (robot YARP_DATA_DIRS)
[DEBUG] |yarp.os.ResourceFinder| checking [config/path.d] (robot path.d YARP_DATA_DIRS)
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/mambaforge/envs/walking/share/ICUBcontrib/config/path.d] (robot path.d YARP_DATA_DIRS)
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/mambaforge/envs/walking/share/iCub/config/path.d] (robot path.d YARP_DATA_DIRS)
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/mambaforge/envs/walking/share/yarp/config/path.d] (robot path.d YARP_DATA_DIRS)
[DEBUG] |yarp.os.ResourceFinder| found /home/acroci/mambaforge/envs/walking/share/yarp/config/path.d
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/mambaforge/envs/walking/share/BipedalLocomotionFramework/robots/ergoCubGazeboV1_1] (robot yarp.d)
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/mambaforge/envs/walking/share/ICUBcontrib/robots/ergoCubGazeboV1_1/from] (robot)
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/.config/yarp/from] (YARP_CONFIG_HOME)
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/.local/share/yarp/from] (YARP_DATA_HOME)
[DEBUG] |yarp.os.ResourceFinder| checking [/etc/xdg/xdg-ubuntu/yarp/from] (YARP_CONFIG_DIRS)
[DEBUG] |yarp.os.ResourceFinder| checking [/etc/xdg/yarp/from] (YARP_CONFIG_DIRS)
[DEBUG] |yarp.os.ResourceFinder| checking [from] (YARP_DATA_DIRS)
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/mambaforge/envs/walking/share/ICUBcontrib/from] (YARP_DATA_DIRS)
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/mambaforge/envs/walking/share/iCub/from] (YARP_DATA_DIRS)
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/mambaforge/envs/walking/share/yarp/from] (YARP_DATA_DIRS)
[DEBUG] |yarp.os.ResourceFinder| checking [/home/acroci/mambaforge/envs/walking/share/BipedalLocomotionFramework/from] (yarp.d)
[DEBUG] |yarp.os.ResourceFinder| did not find from
""
traversaro commented 3 months ago

Probably you can just add the install/share/ergoCub folder from the ergocub_ws to YARP_DATA_DIRS, so the YARP facilities to find files can find the model.urdf of the model. If necessary you can add it there by copying it from ergocub-software .

xela-95 commented 3 months ago

Probably you can just add the install/share/ergoCub folder from the ergocub_ws to YARP_DATA_DIRS, so the YARP facilities to find files can find the model.urdf of the model. If necessary you can add it there by copying it from ergocub-software .

By adding that to YARP_DATA_DIRS made yarprobotinterface find the URDF file. Since all the modifications I've done for gz-sim-yarp-plugins are in the SDF file version of model, is there a way to load that file or should I convert it back to a URDF?

Details ``` yarprobotinterface --config launch_wholebodydynamics_ecub.xml  ✔  walking   10:14:44  [ERROR] |yarp.os.Property| cannot read from yarprobotinterface.ini [DEBUG] Reading file /home/acroci/ergocub_ws/install/share/ergoCub/conf/launch_wholebodydynamics_ecub.xml [WARNING] Invalid syntax while loading /home/acroci/ergocub_ws/install/share/ergoCub/conf/launch_wholebodydynamics_ecub.xml at line 1 . Expected document of type robot . Found devices [DEBUG] yarprobotinterface: using xml parser for DTD v3.x [DEBUG] Reading file /home/acroci/ergocub_ws/install/share/ergoCub/conf/launch_wholebodydynamics_ecub.xml [INFO] Yarprobotinterface was started using the following enable_tags: [INFO] Yarprobotinterface was started using the following disable_tags: [DEBUG] List of all enable attributes found in the include tags: [DEBUG] List of all disable attributes found in the include tags: [DEBUG] Preprocessor complete in: 0.00037384 s [WARNING] Invalid syntax while loading at line 4 . "robot" element should contain the "portprefix" attribute. Using "name" attribute [WARNING] ************************************************************************************* * yarprobotinterface 'portprefix' parameter does not follow convention, * * it MUST start with a leading '/' since it is used as the full prefix port name * * name: full port prefix name with leading '/', e.g. /robotName * * A temporary automatic fix will be done for you, but please fix your config file * ************************************************************************************* [INFO] |yarp.os.Port|/ergoCubGazeboV1/yarprobotinterface| Port /ergoCubGazeboV1/yarprobotinterface active at tcp://192.168.220.201:10002/ [INFO] startup phase starting... [INFO] Opening device torso_mc with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/torso"), ("local" = "/wholeBodyDynamics/torso")] [DEBUG] |yarp.dev.PolyDriver|torso_mc| Parameters are (device remote_controlboard) (id torso_mc) (local "/wholeBodyDynamics/torso") (remote "/ergocubSim/torso") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/torso/rpc:o| Port /wholeBodyDynamics/torso/rpc:o active at tcp://192.168.220.201:10003/ [INFO] |yarp.os.Port|/wholeBodyDynamics/torso/command:o| Port /wholeBodyDynamics/torso/command:o active at tcp://192.168.220.201:10004/ [INFO] |yarp.os.Port|/wholeBodyDynamics/torso/stateExt:i| Port /wholeBodyDynamics/torso/stateExt:i active at tcp://192.168.220.201:10005/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/torso/rpc:o| Sending output from /wholeBodyDynamics/torso/rpc:o to /ergocubSim/torso/rpc:i using tcp [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/torso/command:o| Sending output from /wholeBodyDynamics/torso/command:o to /ergocubSim/torso/command:i using udp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/torso/stateExt:i| Receiving input from /ergocubSim/torso/stateExt:o to /wholeBodyDynamics/torso/stateExt:i using udp [INFO] |yarp.dev.PolyDriver|torso_mc| Created device . See C++ class RemoteControlBoard for documentation. [INFO] Opening device left_arm_mc with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/left_arm"), ("local" = "/wholeBodyDynamics/left_arm")] [DEBUG] |yarp.dev.PolyDriver|left_arm_mc| Parameters are (device remote_controlboard) (id left_arm_mc) (local "/wholeBodyDynamics/left_arm") (remote "/ergocubSim/left_arm") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/left_arm/rpc:o| Port /wholeBodyDynamics/left_arm/rpc:o active at tcp://192.168.220.201:10006/ [INFO] |yarp.os.Port|/wholeBodyDynamics/left_arm/command:o| Port /wholeBodyDynamics/left_arm/command:o active at tcp://192.168.220.201:10007/ [INFO] |yarp.os.Port|/wholeBodyDynamics/left_arm/stateExt:i| Port /wholeBodyDynamics/left_arm/stateExt:i active at tcp://192.168.220.201:10008/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_arm/rpc:o| Sending output from /wholeBodyDynamics/left_arm/rpc:o to /ergocubSim/left_arm/rpc:i using tcp [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_arm/command:o| Sending output from /wholeBodyDynamics/left_arm/command:o to /ergocubSim/left_arm/command:i using udp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/left_arm/stateExt:i| Receiving input from /ergocubSim/left_arm/stateExt:o to /wholeBodyDynamics/left_arm/stateExt:i using udp [INFO] |yarp.dev.PolyDriver|left_arm_mc| Created device . See C++ class RemoteControlBoard for documentation. [INFO] Opening device right_arm_mc with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/right_arm"), ("local" = "/wholeBodyDynamics/right_arm")] [DEBUG] |yarp.dev.PolyDriver|right_arm_mc| Parameters are (device remote_controlboard) (id right_arm_mc) (local "/wholeBodyDynamics/right_arm") (remote "/ergocubSim/right_arm") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/right_arm/rpc:o| Port /wholeBodyDynamics/right_arm/rpc:o active at tcp://192.168.220.201:10009/ [INFO] |yarp.os.Port|/wholeBodyDynamics/right_arm/command:o| Port /wholeBodyDynamics/right_arm/command:o active at tcp://192.168.220.201:10010/ [INFO] |yarp.os.Port|/wholeBodyDynamics/right_arm/stateExt:i| Port /wholeBodyDynamics/right_arm/stateExt:i active at tcp://192.168.220.201:10011/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_arm/rpc:o| Sending output from /wholeBodyDynamics/right_arm/rpc:o to /ergocubSim/right_arm/rpc:i using tcp [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_arm/command:o| Sending output from /wholeBodyDynamics/right_arm/command:o to /ergocubSim/right_arm/command:i using udp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/right_arm/stateExt:i| Receiving input from /ergocubSim/right_arm/stateExt:o to /wholeBodyDynamics/right_arm/stateExt:i using udp [INFO] |yarp.dev.PolyDriver|right_arm_mc| Created device . See C++ class RemoteControlBoard for documentation. [INFO] Opening device left_leg_mc with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/left_leg"), ("local" = "/wholeBodyDynamics/left_leg")] [DEBUG] |yarp.dev.PolyDriver|left_leg_mc| Parameters are (device remote_controlboard) (id left_leg_mc) (local "/wholeBodyDynamics/left_leg") (remote "/ergocubSim/left_leg") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/left_leg/rpc:o| Port /wholeBodyDynamics/left_leg/rpc:o active at tcp://192.168.220.201:10012/ [INFO] |yarp.os.Port|/wholeBodyDynamics/left_leg/command:o| Port /wholeBodyDynamics/left_leg/command:o active at tcp://192.168.220.201:10013/ [INFO] |yarp.os.Port|/wholeBodyDynamics/left_leg/stateExt:i| Port /wholeBodyDynamics/left_leg/stateExt:i active at tcp://192.168.220.201:10014/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_leg/rpc:o| Sending output from /wholeBodyDynamics/left_leg/rpc:o to /ergocubSim/left_leg/rpc:i using tcp [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_leg/command:o| Sending output from /wholeBodyDynamics/left_leg/command:o to /ergocubSim/left_leg/command:i using udp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/left_leg/stateExt:i| Receiving input from /ergocubSim/left_leg/stateExt:o to /wholeBodyDynamics/left_leg/stateExt:i using udp [INFO] |yarp.dev.PolyDriver|left_leg_mc| Created device . See C++ class RemoteControlBoard for documentation. [INFO] Opening device right_leg_mc with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/right_leg"), ("local" = "/wholeBodyDynamics/right_leg")] [DEBUG] |yarp.dev.PolyDriver|right_leg_mc| Parameters are (device remote_controlboard) (id right_leg_mc) (local "/wholeBodyDynamics/right_leg") (remote "/ergocubSim/right_leg") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/right_leg/rpc:o| Port /wholeBodyDynamics/right_leg/rpc:o active at tcp://192.168.220.201:10015/ [INFO] |yarp.os.Port|/wholeBodyDynamics/right_leg/command:o| Port /wholeBodyDynamics/right_leg/command:o active at tcp://192.168.220.201:10016/ [INFO] |yarp.os.Port|/wholeBodyDynamics/right_leg/stateExt:i| Port /wholeBodyDynamics/right_leg/stateExt:i active at tcp://192.168.220.201:10017/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_leg/rpc:o| Sending output from /wholeBodyDynamics/right_leg/rpc:o to /ergocubSim/right_leg/rpc:i using tcp [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_leg/command:o| Sending output from /wholeBodyDynamics/right_leg/command:o to /ergocubSim/right_leg/command:i using udp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/right_leg/stateExt:i| Receiving input from /ergocubSim/right_leg/stateExt:o to /wholeBodyDynamics/right_leg/stateExt:i using udp [INFO] |yarp.dev.PolyDriver|right_leg_mc| Created device . See C++ class RemoteControlBoard for documentation. [INFO] Opening device head_mc with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/head"), ("local" = "/wholeBodyDynamics/head")] [DEBUG] |yarp.dev.PolyDriver|head_mc| Parameters are (device remote_controlboard) (id head_mc) (local "/wholeBodyDynamics/head") (remote "/ergocubSim/head") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/head/rpc:o| Port /wholeBodyDynamics/head/rpc:o active at tcp://192.168.220.201:10018/ [INFO] |yarp.os.Port|/wholeBodyDynamics/head/command:o| Port /wholeBodyDynamics/head/command:o active at tcp://192.168.220.201:10019/ [INFO] |yarp.os.Port|/wholeBodyDynamics/head/stateExt:i| Port /wholeBodyDynamics/head/stateExt:i active at tcp://192.168.220.201:10020/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/head/rpc:o| Sending output from /wholeBodyDynamics/head/rpc:o to /ergocubSim/head/rpc:i using tcp [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/head/command:o| Sending output from /wholeBodyDynamics/head/command:o to /ergocubSim/head/command:i using udp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/head/stateExt:i| Receiving input from /ergocubSim/head/stateExt:o to /wholeBodyDynamics/head/stateExt:i using udp [INFO] |yarp.dev.PolyDriver|head_mc| Created device . See C++ class RemoteControlBoard for documentation. [INFO] Opening device head_inertial_hardware_device with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/head/inertials"), ("local" = "/wholeBodyDynamics/imu")] [DEBUG] |yarp.dev.PolyDriver|head_inertial_hardware_device| Parameters are (device multipleanalogsensorsclient) (id head_inertial_hardware_device) (local "/wholeBodyDynamics/imu") (remote "/ergocubSim/head/inertials") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/imu/rpc:i| Port /wholeBodyDynamics/imu/rpc:i active at tcp://192.168.220.201:10021/ [INFO] |yarp.os.Port|/wholeBodyDynamics/imu/measures:i| Port /wholeBodyDynamics/imu/measures:i active at tcp://192.168.220.201:10022/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/imu/rpc:i| Sending output from /wholeBodyDynamics/imu/rpc:i to /ergocubSim/head/inertials/rpc:o using tcp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/imu/measures:i| Receiving input from /ergocubSim/head/inertials/measures:o to /wholeBodyDynamics/imu/measures:i using tcp [DEBUG] |yarp.device.multipleanalogsensorsclient| Open complete [INFO] |yarp.dev.PolyDriver|head_inertial_hardware_device| Created device . See C++ class MultipleAnalogSensorsClient for documentation. [INFO] Opening device waist_inertial_hardware_device with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/waist/inertials"), ("local" = "/wholeBodyDynamics/waist_imu")] [DEBUG] |yarp.dev.PolyDriver|waist_inertial_hardware_device| Parameters are (device multipleanalogsensorsclient) (id waist_inertial_hardware_device) (local "/wholeBodyDynamics/waist_imu") (remote "/ergocubSim/waist/inertials") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/waist_imu/rpc:i| Port /wholeBodyDynamics/waist_imu/rpc:i active at tcp://192.168.220.201:10023/ [INFO] |yarp.os.Port|/wholeBodyDynamics/waist_imu/measures:i| Port /wholeBodyDynamics/waist_imu/measures:i active at tcp://192.168.220.201:10024/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/waist_imu/rpc:i| Sending output from /wholeBodyDynamics/waist_imu/rpc:i to /ergocubSim/waist/inertials/rpc:o using tcp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/waist_imu/measures:i| Receiving input from /ergocubSim/waist/inertials/measures:o to /wholeBodyDynamics/waist_imu/measures:i using tcp [DEBUG] |yarp.device.multipleanalogsensorsclient| Open complete [INFO] |yarp.dev.PolyDriver|waist_inertial_hardware_device| Created device . See C++ class MultipleAnalogSensorsClient for documentation. [INFO] Opening device ergocub_left_arm_ft with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/left_arm/FT"), ("local" = "/wholeBodyDynamics/left_arm_ft_sensor")] [DEBUG] |yarp.dev.PolyDriver|ergocub_left_arm_ft| Parameters are (device multipleanalogsensorsclient) (id ergocub_left_arm_ft) (local "/wholeBodyDynamics/left_arm_ft_sensor") (remote "/ergocubSim/left_arm/FT") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/left_arm_ft_sensor/rpc:i| Port /wholeBodyDynamics/left_arm_ft_sensor/rpc:i active at tcp://192.168.220.201:10025/ [INFO] |yarp.os.Port|/wholeBodyDynamics/left_arm_ft_sensor/measures:i| Port /wholeBodyDynamics/left_arm_ft_sensor/measures:i active at tcp://192.168.220.201:10026/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_arm_ft_sensor/rpc:i| Sending output from /wholeBodyDynamics/left_arm_ft_sensor/rpc:i to /ergocubSim/left_arm/FT/rpc:o using tcp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/left_arm_ft_sensor/measures:i| Receiving input from /ergocubSim/left_arm/FT/measures:o to /wholeBodyDynamics/left_arm_ft_sensor/measures:i using tcp [DEBUG] |yarp.device.multipleanalogsensorsclient| Open complete [INFO] |yarp.dev.PolyDriver|ergocub_left_arm_ft| Created device . See C++ class MultipleAnalogSensorsClient for documentation. [INFO] Opening device ergocub_right_arm_ft with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/right_arm/FT"), ("local" = "/wholeBodyDynamics/right_arm_ft_sensor")] [DEBUG] |yarp.dev.PolyDriver|ergocub_right_arm_ft| Parameters are (device multipleanalogsensorsclient) (id ergocub_right_arm_ft) (local "/wholeBodyDynamics/right_arm_ft_sensor") (remote "/ergocubSim/right_arm/FT") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/right_arm_ft_sensor/rpc:i| Port /wholeBodyDynamics/right_arm_ft_sensor/rpc:i active at tcp://192.168.220.201:10027/ [INFO] |yarp.os.Port|/wholeBodyDynamics/right_arm_ft_sensor/measures:i| Port /wholeBodyDynamics/right_arm_ft_sensor/measures:i active at tcp://192.168.220.201:10028/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_arm_ft_sensor/rpc:i| Sending output from /wholeBodyDynamics/right_arm_ft_sensor/rpc:i to /ergocubSim/right_arm/FT/rpc:o using tcp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/right_arm_ft_sensor/measures:i| Receiving input from /ergocubSim/right_arm/FT/measures:o to /wholeBodyDynamics/right_arm_ft_sensor/measures:i using tcp [DEBUG] |yarp.device.multipleanalogsensorsclient| Open complete [INFO] |yarp.dev.PolyDriver|ergocub_right_arm_ft| Created device . See C++ class MultipleAnalogSensorsClient for documentation. [INFO] Opening device ergocub_left_leg_ft with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/left_leg/FT"), ("local" = "/wholeBodyDynamics/left_leg_ft_sensor")] [DEBUG] |yarp.dev.PolyDriver|ergocub_left_leg_ft| Parameters are (device multipleanalogsensorsclient) (id ergocub_left_leg_ft) (local "/wholeBodyDynamics/left_leg_ft_sensor") (remote "/ergocubSim/left_leg/FT") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/left_leg_ft_sensor/rpc:i| Port /wholeBodyDynamics/left_leg_ft_sensor/rpc:i active at tcp://192.168.220.201:10029/ [INFO] |yarp.os.Port|/wholeBodyDynamics/left_leg_ft_sensor/measures:i| Port /wholeBodyDynamics/left_leg_ft_sensor/measures:i active at tcp://192.168.220.201:10030/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/left_leg_ft_sensor/rpc:i| Sending output from /wholeBodyDynamics/left_leg_ft_sensor/rpc:i to /ergocubSim/left_leg/FT/rpc:o using tcp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/left_leg_ft_sensor/measures:i| Receiving input from /ergocubSim/left_leg/FT/measures:o to /wholeBodyDynamics/left_leg_ft_sensor/measures:i using tcp [DEBUG] |yarp.device.multipleanalogsensorsclient| Open complete [INFO] |yarp.dev.PolyDriver|ergocub_left_leg_ft| Created device . See C++ class MultipleAnalogSensorsClient for documentation. [INFO] Opening device ergocub_right_leg_ft with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/right_leg/FT"), ("local" = "/wholeBodyDynamics/right_leg_ft_sensor")] [DEBUG] |yarp.dev.PolyDriver|ergocub_right_leg_ft| Parameters are (device multipleanalogsensorsclient) (id ergocub_right_leg_ft) (local "/wholeBodyDynamics/right_leg_ft_sensor") (remote "/ergocubSim/right_leg/FT") (robotName ergoCubGazeboV1) [INFO] |yarp.os.Port|/wholeBodyDynamics/right_leg_ft_sensor/rpc:i| Port /wholeBodyDynamics/right_leg_ft_sensor/rpc:i active at tcp://192.168.220.201:10031/ [INFO] |yarp.os.Port|/wholeBodyDynamics/right_leg_ft_sensor/measures:i| Port /wholeBodyDynamics/right_leg_ft_sensor/measures:i active at tcp://192.168.220.201:10032/ [INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/right_leg_ft_sensor/rpc:i| Sending output from /wholeBodyDynamics/right_leg_ft_sensor/rpc:i to /ergocubSim/right_leg/FT/rpc:o using tcp [INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/right_leg_ft_sensor/measures:i| Receiving input from /ergocubSim/right_leg/FT/measures:o to /wholeBodyDynamics/right_leg_ft_sensor/measures:i using tcp [DEBUG] |yarp.device.multipleanalogsensorsclient| Open complete [INFO] |yarp.dev.PolyDriver|ergocub_right_leg_ft| Created device . See C++ class MultipleAnalogSensorsClient for documentation. [INFO] Opening device wholebodydynamics with parameters [("robotName" = "ergoCubGazeboV1"), ("axesNames" = "(torso_roll,torso_pitch,torso_yaw,l_shoulder_pitch,l_shoulder_roll,l_shoulder_yaw,l_elbow,l_wrist_pitch,l_wrist_yaw,r_shoulder_pitch,r_shoulder_roll,r_shoulder_yaw,r_elbow,r_wrist_pitch,r_wrist_yaw,l_hip_pitch,l_hip_roll,l_hip_yaw,l_knee,l_ankle_pitch,l_ankle_roll,r_hip_pitch,r_hip_roll,r_hip_yaw,r_knee,r_ankle_pitch,r_ankle_roll)"), ("modelFile" = "model.urdf"), ("fixedFrameGravity" = "(0,0,-9.81)"), ("defaultContactFrames" = "(l_hand_palm,r_hand_palm,root_link,l_foot_front,l_foot_rear,r_foot_front,r_foot_rear,l_upper_leg,r_upper_leg)"), ("imuFrameName" = "head_imu_0"), ("useJointVelocity" = "true"), ("useJointAcceleration" = "true"), ("imuFilterCutoffInHz" = "3.0"), ("forceTorqueFilterCutoffInHz" = "3.0"), ("jointVelFilterCutoffInHz" = "3.0"), ("jointAccFilterCutoffInHz" = "3.0"), ("startWithZeroFTSensorOffsets" = "true"), ("useSkinForContacts" = "false"), ("publishNetExternalWrenches" = "true"), ("disableSensorReadCheckAtStartup" = "true"), ("GRAVITY_COMPENSATION" [group] = "(enableGravityCompensation true) (gravityCompensationBaseLink root_link) (gravityCompensationAxesNames (torso_roll,torso_pitch,torso_yaw,l_shoulder_pitch,l_shoulder_roll,l_shoulder_yaw,l_elbow,r_shoulder_pitch,r_shoulder_roll,r_shoulder_yaw,r_elbow))"), ("HW_USE_MAS_IMU" [group] = "(accelerometer head_imu_0) (gyroscope head_imu_0)"), ("WBD_OUTPUT_EXTERNAL_WRENCH_PORTS" [group] = "(/wholeBodyDynamics/left_foot_front/cartesianEndEffectorWrench:o (l_foot_front,l_sole,l_sole)) (/wholeBodyDynamics/left_foot_rear/cartesianEndEffectorWrench:o (l_foot_rear,l_sole,l_sole)) (/wholeBodyDynamics/right_foot_front/cartesianEndEffectorWrench:o (r_foot_front,r_sole,r_sole)) (/wholeBodyDynamics/right_foot_rear/cartesianEndEffectorWrench:o (r_foot_rear,r_sole,r_sole)) (/wholeBodyDynamics/left_arm/cartesianEndEffectorWrench:o (l_hand_palm,l_hand_palm,root_link)) (/wholeBodyDynamics/right_arm/cartesianEndEffectorWrench:o (r_hand_palm,r_hand_palm,root_link))"), ("multipleAnalogSensorsNames" [group] = "(SixAxisForceTorqueSensorsNames ("l_arm_ft", "r_arm_ft", "l_leg_ft", "r_leg_ft", "l_foot_front_ft", "r_foot_front_ft", "l_foot_rear_ft", "r_foot_rear_ft"))")] [DEBUG] |yarp.dev.PolyDriver|wholebodydynamics| Parameters are (GRAVITY_COMPENSATION (enableGravityCompensation true) (gravityCompensationBaseLink root_link) (gravityCompensationAxesNames (torso_roll torso_pitch torso_yaw l_shoulder_pitch l_shoulder_roll l_shoulder_yaw l_elbow r_shoulder_pitch r_shoulder_roll r_shoulder_yaw r_elbow))) (HW_USE_MAS_IMU (accelerometer head_imu_0) (gyroscope head_imu_0)) (WBD_OUTPUT_EXTERNAL_WRENCH_PORTS ("/wholeBodyDynamics/left_foot_front/cartesianEndEffectorWrench:o" (l_foot_front l_sole l_sole)) ("/wholeBodyDynamics/left_foot_rear/cartesianEndEffectorWrench:o" (l_foot_rear l_sole l_sole)) ("/wholeBodyDynamics/right_foot_front/cartesianEndEffectorWrench:o" (r_foot_front r_sole r_sole)) ("/wholeBodyDynamics/right_foot_rear/cartesianEndEffectorWrench:o" (r_foot_rear r_sole r_sole)) ("/wholeBodyDynamics/left_arm/cartesianEndEffectorWrench:o" (l_hand_palm l_hand_palm root_link)) ("/wholeBodyDynamics/right_arm/cartesianEndEffectorWrench:o" (r_hand_palm r_hand_palm root_link))) (axesNames (torso_roll torso_pitch torso_yaw l_shoulder_pitch l_shoulder_roll l_shoulder_yaw l_elbow l_wrist_pitch l_wrist_yaw r_shoulder_pitch r_shoulder_roll r_shoulder_yaw r_elbow r_wrist_pitch r_wrist_yaw l_hip_pitch l_hip_roll l_hip_yaw l_knee l_ankle_pitch l_ankle_roll r_hip_pitch r_hip_roll r_hip_yaw r_knee r_ankle_pitch r_ankle_roll)) (defaultContactFrames (l_hand_palm r_hand_palm root_link l_foot_front l_foot_rear r_foot_front r_foot_rear l_upper_leg r_upper_leg)) (device wholebodydynamics) (disableSensorReadCheckAtStartup true) (fixedFrameGravity (0 0 -9.81000000000000049738)) (forceTorqueFilterCutoffInHz 3.0) (id wholebodydynamics) (imuFilterCutoffInHz 3.0) (imuFrameName head_imu_0) (jointAccFilterCutoffInHz 3.0) (jointVelFilterCutoffInHz 3.0) (modelFile model.urdf) (multipleAnalogSensorsNames (SixAxisForceTorqueSensorsNames (l_arm_ft r_arm_ft l_leg_ft r_leg_ft l_foot_front_ft r_foot_front_ft l_foot_rear_ft r_foot_rear_ft))) (publishNetExternalWrenches true) (robotName ergoCubGazeboV1) (startWithZeroFTSensorOffsets true) (useJointAcceleration true) (useJointVelocity true) (useSkinForContacts false) [DEBUG] wholeBodyDynamics Statistics: Opening estimator. [INFO] wholeBodyDynamics : Loading model from /home/acroci/ergocub_ws/install/share/ergoCub/robots/ergoCubGazeboV1_1/model.urdf [DEBUG] wholeBodyDynamics Statistics: Estimator opened in 0.0436089 s. [DEBUG] wholeBodyDynamics Statistics: Loading settings from configuration files. [WARNING] wholeBodyDynamics : The devicePeriodInSeconds parameter is not found. The default one is used. Period: 0.01 seconds. [WARNING] wholeBodyDynamics: estimateVelocityAccelerationOptionName bool parameter missing, please specify it. [WARNING] wholeBodyDynamics: setting estimateVelocityAccelerationOptionName to the default value of true, but this is a deprecated behaviour that will be removed in the future. [INFO] wholeBodyDynamics : Using the following filter cutoff frequencies, [INFO] wholeBodyDynamics: imuFilterCutoffInHz: 3 Hz. [INFO] wholeBodyDynamics: forceTorqueFilterCutoffInHz: 3 Hz. [INFO] wholeBodyDynamics: jointVelFilterCutoffInHz: 3 Hz. [INFO] wholeBodyDynamics: jointAccFilterCutoffInHz: 3 Hz. [INFO] wholeBodyDynamics: setting startWithZeroFTSensorOffsets was set to true , FT sensor offsets will be automatically reset to zero. [DEBUG] wholeBodyDynamics Statistics: Settings loaded in 0.00482774 s. [DEBUG] wholeBodyDynamics Statistics: Opening RPC port. [INFO] |yarp.os.Port|/wholeBodyDynamics/rpc| Port /wholeBodyDynamics/rpc active at tcp://192.168.220.201:10076/ [DEBUG] wholeBodyDynamics Statistics: RPC port opened in 0.0118909 s. [DEBUG] wholeBodyDynamics Statistics: Opening settings port. [INFO] |yarp.os.Port|/wholeBodyDynamics/settings| Port /wholeBodyDynamics/settings active at tcp://192.168.220.201:10077/ [DEBUG] wholeBodyDynamics Statistics: Settings port opened in 0.0105045 s. [DEBUG] wholeBodyDynamics Statistics: Opening remapper control board. [DEBUG] |yarp.dev.PolyDriver|controlboardremapper| Parameters are (axesNames (torso_roll torso_pitch torso_yaw l_shoulder_pitch l_shoulder_roll l_shoulder_yaw l_elbow l_wrist_pitch l_wrist_yaw r_shoulder_pitch r_shoulder_roll r_shoulder_yaw r_elbow r_wrist_pitch r_wrist_yaw l_hip_pitch l_hip_roll l_hip_yaw l_knee l_ankle_pitch l_ankle_roll r_hip_pitch r_hip_roll r_hip_yaw r_knee r_ankle_pitch r_ankle_roll)) (device controlboardremapper) [INFO] |yarp.dev.PolyDriver|controlboardremapper| Created device . See C++ class ControlBoardRemapper for documentation. [DEBUG] wholeBodyDynamics Statistics: Remapper control board opened in 0.0315394 s. [DEBUG] wholeBodyDynamics Statistics: Opening remapper virtual sensors. [DEBUG] |yarp.dev.PolyDriver|virtualAnalogRemapper| Parameters are (axesNames (torso_roll torso_pitch torso_yaw l_shoulder_pitch l_shoulder_roll l_shoulder_yaw l_elbow l_wrist_pitch l_wrist_yaw r_shoulder_pitch r_shoulder_roll r_shoulder_yaw r_elbow r_wrist_pitch r_wrist_yaw l_hip_pitch l_hip_roll l_hip_yaw l_knee l_ankle_pitch l_ankle_roll r_hip_pitch r_hip_roll r_hip_yaw r_knee r_ankle_pitch r_ankle_roll)) (device virtualAnalogRemapper) [INFO] |yarp.dev.PolyDriver|virtualAnalogRemapper| Created device . See C++ class yarp::dev::VirtualAnalogRemapper for documentation. [DEBUG] wholeBodyDynamics Statistics: Remapper virtual sensors opened in 0.0356421 s. [DEBUG] wholeBodyDynamics Statistics: Opening contact frames. [DEBUG] wholeBodyDynamics Statistics: Contact frames opened in 0.00120759 s. [DEBUG] wholeBodyDynamics Statistics: Opening external wrenches ports. [INFO] |yarp.os.Port|/wholeBodyDynamics/left_foot_front/cartesianEndEffectorWrench:o| Port /wholeBodyDynamics/left_foot_front/cartesianEndEffectorWrench:o active at tcp://192.168.220.201:10078/ [INFO] |yarp.os.Port|/wholeBodyDynamics/left_foot_rear/cartesianEndEffectorWrench:o| Port /wholeBodyDynamics/left_foot_rear/cartesianEndEffectorWrench:o active at tcp://192.168.220.201:10079/ [INFO] |yarp.os.Port|/wholeBodyDynamics/right_foot_front/cartesianEndEffectorWrench:o| Port /wholeBodyDynamics/right_foot_front/cartesianEndEffectorWrench:o active at tcp://192.168.220.201:10080/ [INFO] |yarp.os.Port|/wholeBodyDynamics/right_foot_rear/cartesianEndEffectorWrench:o| Port /wholeBodyDynamics/right_foot_rear/cartesianEndEffectorWrench:o active at tcp://192.168.220.201:10081/ [INFO] |yarp.os.Port|/wholeBodyDynamics/left_arm/cartesianEndEffectorWrench:o| Port /wholeBodyDynamics/left_arm/cartesianEndEffectorWrench:o active at tcp://192.168.220.201:10082/ [INFO] |yarp.os.Port|/wholeBodyDynamics/right_arm/cartesianEndEffectorWrench:o| Port /wholeBodyDynamics/right_arm/cartesianEndEffectorWrench:o active at tcp://192.168.220.201:10083/ [INFO] |yarp.os.Port|/wholeBodyDynamics/netExternalWrenches:o| Port /wholeBodyDynamics/netExternalWrenches:o active at tcp://192.168.220.201:10084/ [DEBUG] wholeBodyDynamics Statistics: External port wrenches opened in 0.0822914 s. [DEBUG] wholeBodyDynamics Statistics: Opening multiple analog sensors remapper. [DEBUG] |yarp.dev.PolyDriver|multipleanalogsensorsremapper| Parameters are (SixAxisForceTorqueSensorsNames (l_arm_ft r_arm_ft l_leg_ft r_leg_ft l_foot_front_ft r_foot_front_ft l_foot_rear_ft r_foot_rear_ft)) (device multipleanalogsensorsremapper) [INFO] |yarp.dev.PolyDriver|multipleanalogsensorsremapper| Created device . See C++ class MultipleAnalogSensorsRemapper for documentation. [DEBUG] wholeBodyDynamics Statistics: Multiple analog sensors remapper opened in 0.031405 s. [DEBUG] wholeBodyDynamics Statistics: Configuration finished. Waiting attachAll to be called. [INFO] |yarp.dev.PolyDriver|wholebodydynamics| Created device . See C++ class yarp::dev::WholeBodyDynamicsDevice for documentation. [INFO] Entering action level 15 of phase startup [INFO] Executing attach action, level 15 on device wholebodydynamics with parameters [("networks" = "(left_leg right_leg torso right_arm left_arm imu waist_imu left_arm_ft_sensor right_arm_ft_sensor left_leg_ft_sensor right_leg_ft_sensor)"), ("left_leg" = "left_leg_mc"), ("right_leg" = "right_leg_mc"), ("torso" = "torso_mc"), ("right_arm" = "right_arm_mc"), ("left_arm" = "left_arm_mc"), ("imu" = "head_inertial_hardware_device"), ("waist_imu" = "waist_inertial_hardware_device"), ("left_arm_ft_sensor" = "ergocub_left_arm_ft"), ("right_arm_ft_sensor" = "ergocub_right_arm_ft"), ("left_leg_ft_sensor" = "ergocub_left_leg_ft"), ("right_leg_ft_sensor" = "ergocub_right_leg_ft")] [DEBUG] wholeBodyDynamics Statistics: attachAll started. Attaching all control board. [DEBUG] wholeBodyDynamics Statistics: Attaching all control board took 0.0112236 s. [DEBUG] wholeBodyDynamics Statistics: Attaching all virtual analog sensors. [DEBUG] wholeBodyDynamics Statistics: Attaching all virtual analog sensors took 2.88486e-05 s. [DEBUG] wholeBodyDynamics Statistics: Attaching all FTs. [INFO] Starting attach MAS and analog ft [DEBUG] wholeBodyDynamicsDevice :: number of devices that could contain FT sensors found 4 where analog are 0 and MAS are 4 [DEBUG] wholeBodyDynamics Statistics: Attaching all Fts took 0.000238895 s. [DEBUG] wholeBodyDynamics Statistics: Attaching all IMUs. [INFO] wholeBodyDynamics : Found one IMU multipleAnalogSensor device with accelerometer head_imu_0 and gyroscope head_imu_0 [DEBUG] wholeBodyDynamics Statistics: Attaching all IMUs took 4.41074e-05 s. [DEBUG] wholeBodyDynamics Statistics: Calibrating offsets. [DEBUG] wholeBodyDynamics Statistics: Calibrating took 3.09944e-06 s. [DEBUG] wholeBodyDynamics Statistics: Starting [INFO] All actions for action level 15 of startup phase started. Waiting for unfinished actions. [INFO] All actions for action level 15 of startup phase finished. [INFO] startup phase finished. [INFO] run phase starting... [DEBUG] yarprobotinterface running happily [WARNING] wholeBodyDynamics warning : joint velocities was not readed correctly [WARNING] wholeBodyDynamics warning : joint accelerations was not readed correctly [WARNING] wholeBodyDynamics warning : joint velocities was not readed correctly [WARNING] wholeBodyDynamics warning : joint accelerations was not readed correctly [WARNING] wholeBodyDynamics warning : joint velocities was not readed correctly [WARNING] wholeBodyDynamics warning : joint accelerations was not readed correctly [WARNING] wholeBodyDynamics warning : joint velocities was not readed correctly [WARNING] wholeBodyDynamics warning : joint accelerations was not readed correctly [WARNING] wholeBodyDynamics warning : joint velocities was not readed correctly [WARNING] wholeBodyDynamics warning : joint accelerations was not readed correctly ```
traversaro commented 3 months ago

Since all the modifications I've done for gz-sim-yarp-plugins are in the SDF file version of model, is there a way to load that file or should I convert it back to a URDF?

iDynTree (the underlying library used by the wholebodydynamics module used to estimate external forces and by the walking controller) does not support loading SDF, see https://github.com/robotology/idyntree/issues/481 . However, as your modifications did not changed the kinematic and dynamics parameters of the models, I think it is sufficient to use the corresponding URDF used to create the SDF.

xela-95 commented 3 months ago

✅ Step 5/7

I could run:

yarp rpc /wholeBodyDynamics/rpc
>> resetOffset all

receiving the Response: [ok] answer.

xela-95 commented 3 months ago

Step 6/7

When I launched the walking module with:

YARP_CLOCK=/clock WalkingModule

I got the following response:

[INFO] |yarp.os.Port|/IITICUBLAP218/WalkingModule/91069/clock:i| Port /IITICUBLAP218/WalkingModule/91069/clock:i active at tcp://192.168.220.201:10085/
[INFO] |yarp.os.Network| Success: port-to-port persistent connection added.
[INFO] |yarp.os.Time| Waiting for clock server to start broadcasting data ...
[INFO] |yarp.os.impl.PortCoreInputUnit|/IITICUBLAP218/WalkingModule/91069/clock:i| Receiving input from /clock to /IITICUBLAP218/WalkingModule/91069/clock:i using tcp
[ERROR] |yarp.os.Property| cannot read from dcm_walking_with_joypad.ini
[ERROR] [getiDynTreeVectorFixSizeFromSearchable] Missing field  goal_port_scaling
[ERROR] [WalkingModule::configure] Failed while reading goal_port_scaling.
[INFO] |yarp.os.RFModule| RFModule failed to open.
[WARNING] |yarp.os.NetworkClock| Destroying network clock
[INFO] |yarp.os.Network| Success: port-to-port persistent connection added.
[INFO] |yarp.os.impl.PortCoreInputUnit|/IITICUBLAP218/WalkingModule/91069/clock:i| Removing input from /clock to /IITICUBLAP218/WalkingModule/91069/clock:i

from https://github.com/robotology/walking-controllers/blob/39fb59969e0219f50e63b39664839f7ed02559af/src/WalkingModule/src/Module.cpp#L151

xela-95 commented 3 months ago

Step 6/7

When I launched the walking module with:

YARP_CLOCK=/clock WalkingModule

I got the following response:

[INFO] |yarp.os.Port|/IITICUBLAP218/WalkingModule/91069/clock:i| Port /IITICUBLAP218/WalkingModule/91069/clock:i active at tcp://192.168.220.201:10085/
[INFO] |yarp.os.Network| Success: port-to-port persistent connection added.
[INFO] |yarp.os.Time| Waiting for clock server to start broadcasting data ...
[INFO] |yarp.os.impl.PortCoreInputUnit|/IITICUBLAP218/WalkingModule/91069/clock:i| Receiving input from /clock to /IITICUBLAP218/WalkingModule/91069/clock:i using tcp
[ERROR] |yarp.os.Property| cannot read from dcm_walking_with_joypad.ini
[ERROR] [getiDynTreeVectorFixSizeFromSearchable] Missing field  goal_port_scaling
[ERROR] [WalkingModule::configure] Failed while reading goal_port_scaling.
[INFO] |yarp.os.RFModule| RFModule failed to open.
[WARNING] |yarp.os.NetworkClock| Destroying network clock
[INFO] |yarp.os.Network| Success: port-to-port persistent connection added.
[INFO] |yarp.os.impl.PortCoreInputUnit|/IITICUBLAP218/WalkingModule/91069/clock:i| Removing input from /clock to /IITICUBLAP218/WalkingModule/91069/clock:i

from https://github.com/robotology/walking-controllers/blob/39fb59969e0219f50e63b39664839f7ed02559af/src/WalkingModule/src/Module.cpp#L151

Solved, just missed to source a setup file I use to configure needed environment variables. Now I get:

[INFO] |yarp.os.Port|/IITICUBLAP218/WalkingModule/101245/clock:i| Port /IITICUBLAP218/WalkingModule/101245/clock:i active at tcp://192.168.220.201:10087/
[INFO] |yarp.os.Network| Success: port-to-port persistent connection added.
[INFO] |yarp.os.Time| Waiting for clock server to start broadcasting data ...
[INFO] |yarp.os.impl.PortCoreInputUnit|/IITICUBLAP218/WalkingModule/101245/clock:i| Receiving input from /clock to /IITICUBLAP218/WalkingModule/101245/clock:i using tcp
[DEBUG] |yarp.dev.PolyDriver|remotecontrolboardremapper| Parameters are (REMOTE_CONTROLBOARD_OPTIONS (writeStrict on)) (axesNames (torso_pitch torso_roll torso_yaw l_shoulder_pitch l_shoulder_roll l_shoulder_yaw l_elbow r_shoulder_pitch r_shoulder_roll r_shoulder_yaw r_elbow l_hip_pitch l_hip_roll l_hip_yaw l_knee l_ankle_pitch l_ankle_roll r_hip_pitch r_hip_roll r_hip_yaw r_knee r_ankle_pitch r_ankle_roll)) (device remotecontrolboardremapper) (localPortPrefix "/walking-coordinator/remoteControlBoard") (remoteControlBoards ("/ergocubSim/torso" "/ergocubSim/left_arm" "/ergocubSim/right_arm" "/ergocubSim/left_leg" "/ergocubSim/right_leg"))
[DEBUG] |yarp.dev.PolyDriver|remote_controlboard| Parameters are (device remote_controlboard) (local "/walking-coordinator/remoteControlBoard/ergocubSim/torso") (remote "/ergocubSim/torso") (writeStrict on)
[INFO] |yarp.device.remote_controlboard| RemoteControlBoard is ENABLING the writeStrict option for all commands
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/torso/rpc:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/torso/rpc:o active at tcp://192.168.220.201:10088/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/torso/command:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/torso/command:o active at tcp://192.168.220.201:10089/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/torso/stateExt:i| Port /walking-coordinator/remoteControlBoard/ergocubSim/torso/stateExt:i active at tcp://192.168.220.201:10090/
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/torso/rpc:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/torso/rpc:o to /ergocubSim/torso/rpc:i using tcp
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/torso/command:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/torso/command:o to /ergocubSim/torso/command:i using udp
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/torso/stateExt:i| Receiving input from /ergocubSim/torso/stateExt:o to /walking-coordinator/remoteControlBoard/ergocubSim/torso/stateExt:i using udp
[INFO] |yarp.dev.PolyDriver|remote_controlboard| Created device <remote_controlboard>. See C++ class RemoteControlBoard for documentation.
[DEBUG] |yarp.dev.PolyDriver|remote_controlboard| Parameters are (device remote_controlboard) (local "/walking-coordinator/remoteControlBoard/ergocubSim/left_arm") (remote "/ergocubSim/left_arm") (writeStrict on)
[INFO] |yarp.device.remote_controlboard| RemoteControlBoard is ENABLING the writeStrict option for all commands
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/left_arm/rpc:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/left_arm/rpc:o active at tcp://192.168.220.201:10091/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/left_arm/command:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/left_arm/command:o active at tcp://192.168.220.201:10092/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/left_arm/stateExt:i| Port /walking-coordinator/remoteControlBoard/ergocubSim/left_arm/stateExt:i active at tcp://192.168.220.201:10093/
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_arm/rpc:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/left_arm/rpc:o to /ergocubSim/left_arm/rpc:i using tcp
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_arm/command:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/left_arm/command:o to /ergocubSim/left_arm/command:i using udp
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_arm/stateExt:i| Receiving input from /ergocubSim/left_arm/stateExt:o to /walking-coordinator/remoteControlBoard/ergocubSim/left_arm/stateExt:i using udp
[INFO] |yarp.dev.PolyDriver|remote_controlboard| Created device <remote_controlboard>. See C++ class RemoteControlBoard for documentation.
[DEBUG] |yarp.dev.PolyDriver|remote_controlboard| Parameters are (device remote_controlboard) (local "/walking-coordinator/remoteControlBoard/ergocubSim/right_arm") (remote "/ergocubSim/right_arm") (writeStrict on)
[INFO] |yarp.device.remote_controlboard| RemoteControlBoard is ENABLING the writeStrict option for all commands
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/right_arm/rpc:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/right_arm/rpc:o active at tcp://192.168.220.201:10094/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/right_arm/command:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/right_arm/command:o active at tcp://192.168.220.201:10095/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/right_arm/stateExt:i| Port /walking-coordinator/remoteControlBoard/ergocubSim/right_arm/stateExt:i active at tcp://192.168.220.201:10096/
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_arm/rpc:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/right_arm/rpc:o to /ergocubSim/right_arm/rpc:i using tcp
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_arm/command:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/right_arm/command:o to /ergocubSim/right_arm/command:i using udp
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_arm/stateExt:i| Receiving input from /ergocubSim/right_arm/stateExt:o to /walking-coordinator/remoteControlBoard/ergocubSim/right_arm/stateExt:i using udp
[INFO] |yarp.dev.PolyDriver|remote_controlboard| Created device <remote_controlboard>. See C++ class RemoteControlBoard for documentation.
[DEBUG] |yarp.dev.PolyDriver|remote_controlboard| Parameters are (device remote_controlboard) (local "/walking-coordinator/remoteControlBoard/ergocubSim/left_leg") (remote "/ergocubSim/left_leg") (writeStrict on)
[INFO] |yarp.device.remote_controlboard| RemoteControlBoard is ENABLING the writeStrict option for all commands
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/left_leg/rpc:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/left_leg/rpc:o active at tcp://192.168.220.201:10097/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/left_leg/command:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/left_leg/command:o active at tcp://192.168.220.201:10098/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/left_leg/stateExt:i| Port /walking-coordinator/remoteControlBoard/ergocubSim/left_leg/stateExt:i active at tcp://192.168.220.201:10099/
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_leg/rpc:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/left_leg/rpc:o to /ergocubSim/left_leg/rpc:i using tcp
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_leg/command:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/left_leg/command:o to /ergocubSim/left_leg/command:i using udp
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_leg/stateExt:i| Receiving input from /ergocubSim/left_leg/stateExt:o to /walking-coordinator/remoteControlBoard/ergocubSim/left_leg/stateExt:i using udp
[INFO] |yarp.dev.PolyDriver|remote_controlboard| Created device <remote_controlboard>. See C++ class RemoteControlBoard for documentation.
[DEBUG] |yarp.dev.PolyDriver|remote_controlboard| Parameters are (device remote_controlboard) (local "/walking-coordinator/remoteControlBoard/ergocubSim/right_leg") (remote "/ergocubSim/right_leg") (writeStrict on)
[INFO] |yarp.device.remote_controlboard| RemoteControlBoard is ENABLING the writeStrict option for all commands
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/right_leg/rpc:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/right_leg/rpc:o active at tcp://192.168.220.201:10100/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/right_leg/command:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/right_leg/command:o active at tcp://192.168.220.201:10101/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/right_leg/stateExt:i| Port /walking-coordinator/remoteControlBoard/ergocubSim/right_leg/stateExt:i active at tcp://192.168.220.201:10102/
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_leg/rpc:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/right_leg/rpc:o to /ergocubSim/right_leg/rpc:i using tcp
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_leg/command:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/right_leg/command:o to /ergocubSim/right_leg/command:i using udp
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_leg/stateExt:i| Receiving input from /ergocubSim/right_leg/stateExt:o to /walking-coordinator/remoteControlBoard/ergocubSim/right_leg/stateExt:i using udp
[INFO] |yarp.dev.PolyDriver|remote_controlboard| Created device <remote_controlboard>. See C++ class RemoteControlBoard for documentation.
[INFO] |yarp.dev.PolyDriver|remotecontrolboardremapper| Created device <remotecontrolboardremapper>. See C++ class RemoteControlBoardRemapper for documentation.
[ERROR] [configure] Unable to read encoders.
[ERROR] [WalkingModule::configure] Unable to configure the robot.
[INFO] |yarp.os.RFModule| RFModule failed to open.
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/torso/rpc:o| Removing output from /walking-coordinator/remoteControlBoard/ergocubSim/torso/rpc:o to /ergocubSim/torso/rpc:i
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/torso/command:o| output for route /walking-coordinator/remoteControlBoard/ergocubSim/torso/command:o->udp->/ergocubSim/torso/command:i asking other side to close by out-of-band means
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/torso/command:o| Removing output from /walking-coordinator/remoteControlBoard/ergocubSim/torso/command:o to /ergocubSim/torso/command:i
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/torso/stateExt:i| Removing input from /ergocubSim/torso/stateExt:o to /walking-coordinator/remoteControlBoard/ergocubSim/torso/stateExt:i
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_arm/rpc:o| Removing output from /walking-coordinator/remoteControlBoard/ergocubSim/left_arm/rpc:o to /ergocubSim/left_arm/rpc:i
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_arm/command:o| output for route /walking-coordinator/remoteControlBoard/ergocubSim/left_arm/command:o->udp->/ergocubSim/left_arm/command:i asking other side to close by out-of-band means
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_arm/command:o| Removing output from /walking-coordinator/remoteControlBoard/ergocubSim/left_arm/command:o to /ergocubSim/left_arm/command:i
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_arm/stateExt:i| Removing input from /ergocubSim/left_arm/stateExt:o to /walking-coordinator/remoteControlBoard/ergocubSim/left_arm/stateExt:i
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_arm/rpc:o| Removing output from /walking-coordinator/remoteControlBoard/ergocubSim/right_arm/rpc:o to /ergocubSim/right_arm/rpc:i
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_arm/command:o| output for route /walking-coordinator/remoteControlBoard/ergocubSim/right_arm/command:o->udp->/ergocubSim/right_arm/command:i asking other side to close by out-of-band means
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_arm/command:o| Removing output from /walking-coordinator/remoteControlBoard/ergocubSim/right_arm/command:o to /ergocubSim/right_arm/command:i
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_arm/stateExt:i| Removing input from /ergocubSim/right_arm/stateExt:o to /walking-coordinator/remoteControlBoard/ergocubSim/right_arm/stateExt:i
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_leg/rpc:o| Removing output from /walking-coordinator/remoteControlBoard/ergocubSim/left_leg/rpc:o to /ergocubSim/left_leg/rpc:i
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_leg/command:o| output for route /walking-coordinator/remoteControlBoard/ergocubSim/left_leg/command:o->udp->/ergocubSim/left_leg/command:i asking other side to close by out-of-band means
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_leg/command:o| Removing output from /walking-coordinator/remoteControlBoard/ergocubSim/left_leg/command:o to /ergocubSim/left_leg/command:i
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_leg/stateExt:i| Removing input from /ergocubSim/left_leg/stateExt:o to /walking-coordinator/remoteControlBoard/ergocubSim/left_leg/stateExt:i
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_leg/rpc:o| Removing output from /walking-coordinator/remoteControlBoard/ergocubSim/right_leg/rpc:o to /ergocubSim/right_leg/rpc:i
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_leg/command:o| output for route /walking-coordinator/remoteControlBoard/ergocubSim/right_leg/command:o->udp->/ergocubSim/right_leg/command:i asking other side to close by out-of-band means
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_leg/command:o| Removing output from /walking-coordinator/remoteControlBoard/ergocubSim/right_leg/command:o to /ergocubSim/right_leg/command:i
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_leg/stateExt:i| Removing input from /ergocubSim/right_leg/stateExt:o to /walking-coordinator/remoteControlBoard/ergocubSim/right_leg/stateExt:i
[WARNING] |yarp.os.NetworkClock| Destroying network clock
[INFO] |yarp.os.Network| Success: port-to-port persistent connection added.
[INFO] |yarp.os.impl.PortCoreInputUnit|/IITICUBLAP218/WalkingModule/101245/clock:i| Removing input from /clock to /IITICUBLAP218/WalkingModule/101245/clock:i
xela-95 commented 3 months ago

The error is raised from https://github.com/robotology/walking-controllers/blob/v0.8.0/src/RobotInterface/src/Helper.cpp#L391-L401 and it is due to the fact that the getEncoderSpeeds method is not yet implemented in the controlboard plugin.

xela-95 commented 3 months ago

✅ Step 6/7

After #123 was merged the WalkingModule started by invoking it just by launching WalkingModule in a terminal.

It produced the following logs:

WalkingModule
[DEBUG] |yarp.dev.PolyDriver|remotecontrolboardremapper| Parameters are (REMOTE_CONTROLBOARD_OPTIONS (writeStrict on)) (axesNames (torso_pitch torso_roll torso_yaw l_shoulder_pitch l_shoulder_roll l_shoulder_yaw l_elbow r_shoulder_pitch r_shoulder_roll r_shoulder_yaw r_elbow l_hip_pitch l_hip_roll l_hip_yaw l_knee l_ankle_pitch l_ankle_roll r_hip_pitch r_hip_roll r_hip_yaw r_knee r_ankle_pitch r_ankle_roll)) (device remotecontrolboardremapper) (localPortPrefix "/walking-coordinator/remoteControlBoard") (remoteControlBoards ("/ergocubSim/torso" "/ergocubSim/left_arm" "/ergocubSim/right_arm" "/ergocubSim/left_leg" "/ergocubSim/right_leg"))
[DEBUG] |yarp.dev.PolyDriver|remote_controlboard| Parameters are (device remote_controlboard) (local "/walking-coordinator/remoteControlBoard/ergocubSim/torso") (remote "/ergocubSim/torso") (writeStrict on)
[INFO] |yarp.device.remote_controlboard| RemoteControlBoard is ENABLING the writeStrict option for all commands
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/torso/rpc:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/torso/rpc:o active at tcp://192.168.220.201:10088/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/torso/command:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/torso/command:o active at tcp://192.168.220.201:10089/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/torso/stateExt:i| Port /walking-coordinator/remoteControlBoard/ergocubSim/torso/stateExt:i active at tcp://192.168.220.201:10090/
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/torso/rpc:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/torso/rpc:o to /ergocubSim/torso/rpc:i using tcp
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/torso/command:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/torso/command:o to /ergocubSim/torso/command:i using udp
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/torso/stateExt:i| Receiving input from /ergocubSim/torso/stateExt:o to /walking-coordinator/remoteControlBoard/ergocubSim/torso/stateExt:i using udp
[INFO] |yarp.dev.PolyDriver|remote_controlboard| Created device <remote_controlboard>. See C++ class RemoteControlBoard for documentation.
[DEBUG] |yarp.dev.PolyDriver|remote_controlboard| Parameters are (device remote_controlboard) (local "/walking-coordinator/remoteControlBoard/ergocubSim/left_arm") (remote "/ergocubSim/left_arm") (writeStrict on)
[INFO] |yarp.device.remote_controlboard| RemoteControlBoard is ENABLING the writeStrict option for all commands
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/left_arm/rpc:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/left_arm/rpc:o active at tcp://192.168.220.201:10091/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/left_arm/command:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/left_arm/command:o active at tcp://192.168.220.201:10092/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/left_arm/stateExt:i| Port /walking-coordinator/remoteControlBoard/ergocubSim/left_arm/stateExt:i active at tcp://192.168.220.201:10093/
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_arm/rpc:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/left_arm/rpc:o to /ergocubSim/left_arm/rpc:i using tcp
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_arm/command:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/left_arm/command:o to /ergocubSim/left_arm/command:i using udp
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_arm/stateExt:i| Receiving input from /ergocubSim/left_arm/stateExt:o to /walking-coordinator/remoteControlBoard/ergocubSim/left_arm/stateExt:i using udp
[INFO] |yarp.dev.PolyDriver|remote_controlboard| Created device <remote_controlboard>. See C++ class RemoteControlBoard for documentation.
[DEBUG] |yarp.dev.PolyDriver|remote_controlboard| Parameters are (device remote_controlboard) (local "/walking-coordinator/remoteControlBoard/ergocubSim/right_arm") (remote "/ergocubSim/right_arm") (writeStrict on)
[INFO] |yarp.device.remote_controlboard| RemoteControlBoard is ENABLING the writeStrict option for all commands
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/right_arm/rpc:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/right_arm/rpc:o active at tcp://192.168.220.201:10094/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/right_arm/command:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/right_arm/command:o active at tcp://192.168.220.201:10095/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/right_arm/stateExt:i| Port /walking-coordinator/remoteControlBoard/ergocubSim/right_arm/stateExt:i active at tcp://192.168.220.201:10096/
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_arm/rpc:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/right_arm/rpc:o to /ergocubSim/right_arm/rpc:i using tcp
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_arm/command:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/right_arm/command:o to /ergocubSim/right_arm/command:i using udp
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_arm/stateExt:i| Receiving input from /ergocubSim/right_arm/stateExt:o to /walking-coordinator/remoteControlBoard/ergocubSim/right_arm/stateExt:i using udp
[INFO] |yarp.dev.PolyDriver|remote_controlboard| Created device <remote_controlboard>. See C++ class RemoteControlBoard for documentation.
[DEBUG] |yarp.dev.PolyDriver|remote_controlboard| Parameters are (device remote_controlboard) (local "/walking-coordinator/remoteControlBoard/ergocubSim/left_leg") (remote "/ergocubSim/left_leg") (writeStrict on)
[INFO] |yarp.device.remote_controlboard| RemoteControlBoard is ENABLING the writeStrict option for all commands
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/left_leg/rpc:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/left_leg/rpc:o active at tcp://192.168.220.201:10097/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/left_leg/command:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/left_leg/command:o active at tcp://192.168.220.201:10098/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/left_leg/stateExt:i| Port /walking-coordinator/remoteControlBoard/ergocubSim/left_leg/stateExt:i active at tcp://192.168.220.201:10099/
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_leg/rpc:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/left_leg/rpc:o to /ergocubSim/left_leg/rpc:i using tcp
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_leg/command:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/left_leg/command:o to /ergocubSim/left_leg/command:i using udp
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/left_leg/stateExt:i| Receiving input from /ergocubSim/left_leg/stateExt:o to /walking-coordinator/remoteControlBoard/ergocubSim/left_leg/stateExt:i using udp
[INFO] |yarp.dev.PolyDriver|remote_controlboard| Created device <remote_controlboard>. See C++ class RemoteControlBoard for documentation.
[DEBUG] |yarp.dev.PolyDriver|remote_controlboard| Parameters are (device remote_controlboard) (local "/walking-coordinator/remoteControlBoard/ergocubSim/right_leg") (remote "/ergocubSim/right_leg") (writeStrict on)
[INFO] |yarp.device.remote_controlboard| RemoteControlBoard is ENABLING the writeStrict option for all commands
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/right_leg/rpc:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/right_leg/rpc:o active at tcp://192.168.220.201:10100/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/right_leg/command:o| Port /walking-coordinator/remoteControlBoard/ergocubSim/right_leg/command:o active at tcp://192.168.220.201:10101/
[INFO] |yarp.os.Port|/walking-coordinator/remoteControlBoard/ergocubSim/right_leg/stateExt:i| Port /walking-coordinator/remoteControlBoard/ergocubSim/right_leg/stateExt:i active at tcp://192.168.220.201:10102/
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_leg/rpc:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/right_leg/rpc:o to /ergocubSim/right_leg/rpc:i using tcp
[INFO] |yarp.os.impl.PortCoreOutputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_leg/command:o| Sending output from /walking-coordinator/remoteControlBoard/ergocubSim/right_leg/command:o to /ergocubSim/right_leg/command:i using udp
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/remoteControlBoard/ergocubSim/right_leg/stateExt:i| Receiving input from /ergocubSim/right_leg/stateExt:o to /walking-coordinator/remoteControlBoard/ergocubSim/right_leg/stateExt:i using udp
[INFO] |yarp.dev.PolyDriver|remote_controlboard| Created device <remote_controlboard>. See C++ class RemoteControlBoard for documentation.
[INFO] |yarp.dev.PolyDriver|remotecontrolboardremapper| Created device <remotecontrolboardremapper>. See C++ class RemoteControlBoardRemapper for documentation.
[INFO] |yarp.os.Port|/walking-coordinator/left_foot_front/cartesianEndEffectorWrench:i| Port /walking-coordinator/left_foot_front/cartesianEndEffectorWrench:i active at tcp://192.168.220.201:10109/
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/left_foot_front/cartesianEndEffectorWrench:i| Receiving input from /wholeBodyDynamics/left_foot_front/cartesianEndEffectorWrench:o to /walking-coordinator/left_foot_front/cartesianEndEffectorWrench:i using tcp
[INFO] |yarp.os.Port|/walking-coordinator/left_foot_rear/cartesianEndEffectorWrench:i| Port /walking-coordinator/left_foot_rear/cartesianEndEffectorWrench:i active at tcp://192.168.220.201:10110/
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/left_foot_rear/cartesianEndEffectorWrench:i| Receiving input from /wholeBodyDynamics/left_foot_rear/cartesianEndEffectorWrench:o to /walking-coordinator/left_foot_rear/cartesianEndEffectorWrench:i using tcp
[INFO] |yarp.os.Port|/walking-coordinator/right_foot_front/cartesianEndEffectorWrench:i| Port /walking-coordinator/right_foot_front/cartesianEndEffectorWrench:i active at tcp://192.168.220.201:10111/
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/right_foot_front/cartesianEndEffectorWrench:i| Receiving input from /wholeBodyDynamics/right_foot_front/cartesianEndEffectorWrench:o to /walking-coordinator/right_foot_front/cartesianEndEffectorWrench:i using tcp
[INFO] |yarp.os.Port|/walking-coordinator/right_foot_rear/cartesianEndEffectorWrench:i| Port /walking-coordinator/right_foot_rear/cartesianEndEffectorWrench:i active at tcp://192.168.220.201:10112/
[INFO] |yarp.os.impl.PortCoreInputUnit|/walking-coordinator/right_foot_rear/cartesianEndEffectorWrench:i| Receiving input from /wholeBodyDynamics/right_foot_rear/cartesianEndEffectorWrench:o to /walking-coordinator/right_foot_rear/cartesianEndEffectorWrench:i using tcp
[INFO] [WalkingModule::setRobotModel] The model is found in:  /home/acroci/ergocub_ws/install/share/ergoCub/robots/ergoCubGazeboV1_1/model.urdf
[INFO] |yarp.os.Port|/walking-coordinator/rpc| Port /walking-coordinator/rpc active at tcp://192.168.220.201:10113/
[INFO] |yarp.os.Port|/walking-coordinator/goal:i| Port /walking-coordinator/goal:i active at tcp://192.168.220.201:10114/
[INFO] |yarp.os.Port|/walking-coordinator/freeSpaceEllipse:in| Port /walking-coordinator/freeSpaceEllipse:in active at tcp://192.168.220.201:10115/
[2024-03-18 13:10:25.435] [thread: 227422] [blf] [info] [QPInverseKinematics::initialize] 'verbosity' not found. The following parameter will be used 'false'.
[2024-03-18 13:10:25.435] [thread: 227422] [blf] [info] [SE3Task::initialize]  [IK-SE3Task - Frame name:  r_sole] Unable to find the mask parameter. The default value is used: true true true.
[2024-03-18 13:10:25.435] [thread: 227422] [blf] [info] [SE3Task::initialize]  [IK-SE3Task - Frame name:  r_sole] Unable to find the use_orientation_exogenous_feedback parameter. The default value is used: false.
[2024-03-18 13:10:25.435] [thread: 227422] [blf] [info] [SE3Task::initialize]  [IK-SE3Task - Frame name:  r_sole] Unable to find the use_position_exogenous_feedback parameter. The default value is used: false.
[2024-03-18 13:10:25.435] [thread: 227422] [blf] [info] [SE3Task::initialize]  [IK-SE3Task - Frame name:  l_sole] Unable to find the mask parameter. The default value is used: true true true.
[2024-03-18 13:10:25.435] [thread: 227422] [blf] [info] [SE3Task::initialize]  [IK-SE3Task - Frame name:  l_sole] Unable to find the use_orientation_exogenous_feedback parameter. The default value is used: false.
[2024-03-18 13:10:25.435] [thread: 227422] [blf] [info] [SE3Task::initialize]  [IK-SE3Task - Frame name:  l_sole] Unable to find the use_position_exogenous_feedback parameter. The default value is used: false.
[2024-03-18 13:10:25.435] [thread: 227422] [blf] [info] [BLFIK::initialize] ====== QPInverseKinematics class ======
The optimization problem is composed by the following tasks:
     - root_task: IK-R3Task - Frame name: root_link Mask: false false true. Priority: 0.
     - joint_regularization_task: Joint tracking task Priority: 1.
     - torso_task: SO3Task Optimal Control Element - Frame name: chest. Priority: 1.
     - left_foot_task: IK-SE3Task - Frame name: l_sole Mask: true true true. Use exogenous feedback position: false. Use exogenous feedback orientation: false. Priority: 0.
     - right_foot_task: IK-SE3Task - Frame name: r_sole Mask: true true true. Use exogenous feedback position: false. Use exogenous feedback orientation: false. Priority: 0.
     - com_task: CoMTask Mask: true true false Priority: 0.
Note: The lower is the integer associated to the priority, the higher is the priority.
==========================

[INFO] Loading custom PIDs
[INFO] Parsing DEFAULT PID group.
[INFO] DEFAULT PID successfully loaded
[INFO] |yarp.os.Port|/walking-coordinator/logger/data:o| Port /walking-coordinator/logger/data:o active at tcp://192.168.220.201:10116/
[INFO] [WalkingModule::configure] Ready to play! Please prepare the robot.
xela-95 commented 3 months ago

Step 7/7

I then tried the last step, giving commands to the walking module with yarp rpc /walking-coordinator/rpc.

The result to the first command, prepareRobot was the following:

q desired IK     7.90808   0.0515361 -0.00774795    -3.39176     19.4153    -12.9109     40.5797    -3.39175     19.4128    -12.9106     40.5803     5.43723    0.871996    -0.20733    -34.1722    -20.7114   -0.913073     5.45065    0.902982   -0.217773    -34.2003    -20.7262   -0.912138
[ERROR] [RobotInterface::checkMotionDone] The timer is expired but the joint  r_knee  has an error of  0.260427  radians
[ERROR] [WalkingModule::updateModule] Unable to check if the motion is done

Then by asking again to prepareRobot the result was:

[INFO] [WalkingModule::updateModule] Try to prepare again
q desired IK     7.90808   0.0515361 -0.00774795    -3.39176     19.4153    -12.9109     40.5797    -3.39175     19.4128    -12.9106     40.5803     5.43723    0.871996    -0.20733    -34.1722    -20.7114   -0.913073     5.45065    0.902982   -0.217773    -34.2003    -20.7262   -0.912138
[INFO] [WalkingModule::updateModule] rootlink offset  0.0457547 .
[INFO] [WalkingModule::updateModule] The robot is prepared.

Then when I asked for startWalking I got an error:

[2024-03-18 14:35:52.899] [thread: 242499] [blf] [error] [GlobalCoPEvaluator::advance] Zero contacts are active, the CoP is not valid.
[ERROR] [WalkingModule::computeGlobalCoP] Unable to compute the global CoP.
[ERROR] [WalkingModule::updateModule] Unable to compute the global CoP.

I don't know why the prepareRobot is not always working, maybe there are some control gains to be adjusted.

While for the startWalking error I think this is due to https://github.com/robotology/gz-sim-yarp-plugins/issues/122#issuecomment-2002004899

xela-95 commented 3 months ago

Here's a video of the prepareRobot action:

https://github.com/robotology/gz-sim-yarp-plugins/assets/57228872/c495563d-c78e-45bb-9dc5-27a517b6c36e

S-Dafarra commented 3 months ago

I don't know why the prepareRobot is not always working, maybe there are some control gains to be adjusted.

It is possible, yes. It checks that the robot is in the desired position considering the settling time we set. See https://github.com/robotology/walking-controllers/blob/edc8984998043c98182f726e17822deb2a7b1915/src/RobotInterface/src/Helper.cpp#L980

xela-95 commented 3 months ago

I don't know why the prepareRobot is not always working, maybe there are some control gains to be adjusted.

It is possible, yes. It checks that the robot is in the desired position considering the settling time we set. See https://github.com/robotology/walking-controllers/blob/edc8984998043c98182f726e17822deb2a7b1915/src/RobotInterface/src/Helper.cpp#L980

Clear, thanks!

BTW the method that is failing during the startWalking phase comes from the blf method advance of class GlobalCoPEvaluator : https://github.com/ami-iit/bipedal-locomotion-framework/blob/1e9cb3f78b122952a5d4af7b020110911d65ab90/src/Contacts/src/GlobalCoPEvaluator.cpp#L86-L178

S-Dafarra commented 3 months ago

BTW the method that is failing during the startWalking phase comes from the blf method advance of class GlobalCoPEvaluator : https://github.com/ami-iit/bipedal-locomotion-framework/blob/1e9cb3f78b122952a5d4af7b020110911d65ab90/src/Contacts/src/GlobalCoPEvaluator.cpp#L86-L178

Yes it means that neither of the two local cop is acceptable, either because the normal component is too small, or because the cop is too far from the foot boundaries

S-Dafarra commented 3 months ago

BTW the method that is failing during the startWalking phase comes from the blf method advance of class GlobalCoPEvaluator : https://github.com/ami-iit/bipedal-locomotion-framework/blob/1e9cb3f78b122952a5d4af7b020110911d65ab90/src/Contacts/src/GlobalCoPEvaluator.cpp#L86-L178

Yes it means that neither of the two local cop is acceptable, either because the normal component is too small, or because the cop is too far from the foot boundaries

xela-95 commented 3 months ago

I'm getting a curios behavior in my last tests: when preparing the robot it is always returning a Response: [ok] but it logs the error that [ERROR] [RobotInterface::checkMotionDone] The timer is expired but the joint r_elbow has an error of 0.355696 radians. and it writes this sometimes for r_elbow and sometimes for l_elbow.

By connecting to the robot the yarpmotorgui, I saw that the range of the elbow joints is somehow restricted to the position reached with the prepareRobot, so maybe the prepare fails because even if it is asking for a certain joint position, the controlboard see the joint having reached its limit.

P.S. is it correct that the return message from the rpc command prepareRobot is OK even if the action did not succeed?

Screenshot from 2024-03-18 16-19-38

Screenshot from 2024-03-18 16-21-13

S-Dafarra commented 3 months ago

P.S. is it correct that the return message from the rpc command prepareRobot is OK even if the action did not succeed?

The [ok] you are seeing is simply an acknowledgment of the fact that the walking has received the command, not that it completed successfully.

By connecting to the robot the yarpmotorgui, I saw that the range of the elbow joints is somehow restricted to the position reached with the prepareRobot, so maybe the prepare fails because even if it is asking for a certain joint position, the controlboard see the joint having reached its limit.

This is weird. Is the range bigger before opening the walking?

xela-95 commented 3 months ago

The [ok] you are seeing is simply an acknowledgment of the fact that the walking has received the command, not that it completed successfully.

ah ok got it!

This is weird. Is the range bigger before opening the walking?

No, actually it is the same. I'll try to take a look for bugs in the joint limits given by the control board, maybe some wrong conversion or things like that.

xela-95 commented 3 months ago

No, actually it is the same. I'll try to take a look for bugs in the joint limits given by the control board, maybe some wrong conversion or things like that.

Bug found 🕵🏻! In practice the controlboard was not handling correctly the joint position limits. #126 Since all the developments of the controlboard plugins have currently been developed and tested on a single pendulum (i.e. single joint) I have to review the code in order to guarantee it works correctly for multiple joint models.

xela-95 commented 3 months ago

@S-Dafarra could you tell me if there's a way to get more info about the cop error arising from blf?

Like getting the result of the cop computation to understand what is the reason behind the [blf] [error] [GlobalCoPEvaluator::advance] Zero contacts are active, the CoP is not valid. error

xela-95 commented 3 months ago

With

yarp read ... /wholeBodyDynamics/right_foot_front/cartesianEndEffectorWrench:o

it is possible to get the 6D wrench of the foot. Now I got a 6D vector of zeros (values under $10^{-10}$):

-2.71864789138483145661e-12 4.49089338582689669406e-15 1.84872575288608347244e-11 8.1555891253485101889e-17 -1.12476848873726913157e-12 -5.38235428355966719317e-16

With

yarp read "..." /ergocubSim/right_leg/FT/measures:o 

it is possible to read the measures from the leg FT (leg, foot rear, foot front). I'm getting all zeros:

() () () () () (((0.0 0.0 0.0 0.0 0.0 0.0) 71.3400000000000034106) ((0.0 0.0 0.0 0.0 0.0 0.0) 71.3400000000000034106) ((0.0 0.0 0.0 0.0 0.0 0.0) 71.3400000000000034106)) () () () ()

(the scalar different from zero is the timestamp of the measurement).

xela-95 commented 3 months ago

Side note: to visualize contacts in Gazebo there's a dedicated plugin called "Visualize contact" that can be added from the search bar on the top right corner of the GUI:

image

xela-95 commented 3 months ago

@traversaro @S-Dafarra do you know where I can find the configuration of the physics engine used in Gazebo classic with the walking controllers? Or the defaults provided by Gazebo are used? For example, in Gazebo sim there's the <physics> element (property of the world element), where all the properties related to physics engine, contacts, etc can be configured.

traversaro commented 3 months ago

@traversaro @S-Dafarra do you know where I can find the configuration of the physics engine used in Gazebo classic with the walking controllers? Or the defaults provided by Gazebo are used? For example, in Gazebo sim there's the <physics> element (property of the world element), where all the properties related to physics engine, contacts, etc can be configured.

I think the walking is typically tested with default Gazebo Classic configuration. However I think @GiulioRomualdi is working on a paper repo with a specific world, I Can share it to you.

traversaro commented 3 months ago

With

yarp read ... /wholeBodyDynamics/right_foot_front/cartesianEndEffectorWrench:o

it is possible to get the 6D wrench of the foot. Now I got a 6D vector of zeros (values under 10−10):

-2.71864789138483145661e-12 4.49089338582689669406e-15 1.84872575288608347244e-11 8.1555891253485101889e-17 -1.12476848873726913157e-12 -5.38235428355966719317e-16

With

yarp read "..." /ergocubSim/right_leg/FT/measures:o 

it is possible to read the measures from the leg FT (leg, foot rear, foot front). I'm getting all zeros:

() () () () () (((0.0 0.0 0.0 0.0 0.0 0.0) 71.3400000000000034106) ((0.0 0.0 0.0 0.0 0.0 0.0) 71.3400000000000034106) ((0.0 0.0 0.0 0.0 0.0 0.0) 71.3400000000000034106)) () () () ()

(the scalar different from zero is the timestamp of the measurement).

That seems to indicate a problem in the FT sensor plugin. Also all other FT sensors report zero?

traversaro commented 3 months ago

Are you sure that you are not using a _fixed model where there is a joint between the world and the model?

xela-95 commented 3 months ago

Are you sure that you are not using a _fixed model where there is a joint between the world and the model?

In principle there was such fixed joint, but now to try the walking tutorial I commented it out.

xela-95 commented 3 months ago

That seems to indicate a problem in the FT sensor plugin. Also all other FT sensors report zero?

Yep, all the FTs read zero. I've verified that I didn't introduced regression bugs since the controlboard tutorial on the FT sensor works.

I don't know if it's ok but also listing the gazebo topics I get:

$ gz topic -l
/clock
/gazebo/resource_paths
/gui/camera/pose
/sensors/marker
/stats
/world/turorial_controlboard/clock
/world/turorial_controlboard/dynamic_pose/info
/world/turorial_controlboard/model/ergocub_fixed/model/ergoCub/link/realsense/sensor/realsense_head_rgb/camera_info
/world/turorial_controlboard/model/ergocub_fixed/model/ergoCub/link/realsense/sensor/realsense_head_rgb/image
/world/turorial_controlboard/pose/info
/world/turorial_controlboard/scene/deletion
/world/turorial_controlboard/scene/info
/world/turorial_controlboard/state
/world/turorial_controlboard/stats
/world/turorial_controlboard/light_config
/world/turorial_controlboard/material_color
traversaro commented 3 months ago

Yep, all the FTs read zero. I've verified that I didn't introduced regression bugs since the controlboard tutorial on the FT sensor works.

In the tutorial the plugin is placed in the xml before the sensor, in the ergocub SDF after, did you tried to change the order?

xela-95 commented 3 months ago

In the tutorial the plugin is placed in the xml before the sensor, in the ergocub SDF after, did you tried to change the order?

Just tried, same result. I'll try to see if the wrappers and remappers are responsible

xela-95 commented 3 months ago

Thank to @traversaro the issue of FTs and IMUs not communicating was solved. This was due to the fact there were some gazebo plugins missing:

<plugin
  filename="gz-sim-forcetorque-system"
  name="gz::sim::systems::ForceTorque">
</plugin>
<plugin
  filename="gz-sim-imu-system"
  name="gz::sim::systems::Imu">
</plugin>

Now I can read measurements via yarp read.

The /wholeBodyDynamics/right_foot_front/cartesianEndEffectorWrench:o reports:

1.06954221966386464615 47.879756222723536041 131.967328336028657532 -6.80291645844825865197 -4.59942486510437120728 2.04004190919274908111

When trying to do setGoal to make the robot walk I'm still getting the blf error [blf] [error] [GlobalCoPEvaluator::advance] Zero contacts are active, the CoP is not valid. and then the WalkingModule stops.

traversaro commented 3 months ago

Thank to @traversaro the issue of FTs and IMUs not communicating was solved. This was due to the fact there were some gazebo plugins missing:

We should at least print an error if that is the case.

xela-95 commented 3 months ago

Physics engine configurations

http://sdformat.org/spec?ver=1.11&elem=physics

Despite the SDF specifications has the type attribute for the <physics> element, Gazebo only supports DART and preliminary support for Bullet.

https://gazebosim.org/docs/harmonic/comparison#physics https://gazebosim.org/api/sim/8/physics.html

Moreover for DART it is possible to choose what collision detector to use among (fcl, dart, ode and bullet): http://sdformat.org/spec?ver=1.11&elem=physics#dart_collision_detector

Engine: DART (default)

For these simulations the element <max_contacts>, regulating the max number of contact points between two bodies, has been set to 4. collision_detector Result
fcl (default) Some steps performed and then fell down.
ode Some steps performed and then fell down. Simulation slower than tcl case.
dart Cannot be used with collision meshes, only with simple shapes. It gives the error: Error [DARTCollide.cpp:1649] [DARTCollisionDetector] Attempting to check for an unsupported shape pair: [MeshShape] - [BoxShape]. Returning false.
bullet Unstable behavior. It wasn't able to do any steps before getting the blf error for the CoP

Videos:

FCL

https://github.com/robotology/gz-sim-yarp-plugins/assets/57228872/d44f6bd6-75ad-427b-8c8c-6d430aa127ba

ODE

https://github.com/robotology/gz-sim-yarp-plugins/assets/57228872/b6517ed2-e3c3-4fc1-a223-1326598bfbe9

Bullet

https://github.com/robotology/gz-sim-yarp-plugins/assets/57228872/15018717-c252-4dc1-9843-8ebaa1187b1e

xela-95 commented 3 months ago

As @S-Dafarra pointed out, the weird behavior for which the prepareRobot does not work the first time can be due to the clock not being appropriately synchronized. I'm looking into it.

xela-95 commented 3 months ago

We should at least print an error if that is the case.

Agree, I have to understand how to check if that plugins are available in the world.

traversaro commented 3 months ago

You may want to update your libode package version, during the weekend we fixed some critical bugs (see https://github.com/conda-forge/libode-feedstock/pull/22 and https://github.com/conda-forge/libode-feedstock/pull/23).

traversaro commented 3 months ago

fcl (default)

I am not sure this is true. If you see https://github.com/gazebosim/gz-sim/blob/gz-sim8/tutorials/physics.md?plain=1#L100, there they report that ode is the default collision detector, and I was expecting that as that is what is tested in gz-physics tests (https://github.com/gazebosim/gz-physics/blob/7d30e47fb61fe4db9cba460717a3910df9deabee/dartsim/src/WorldFeatures_TEST.cc#L87). Probably sdformat reports the default in Gazebo Classic, while the default in gz-sim/gz-physics is different.

Can you open an issue in https://github.com/gazebosim/gz-sim to report the issue? Thanks!

traversaro commented 3 months ago

(By the way, can you enable visualization of contacts in this videos?) Thanks!