icub-tech-iit / ergocub-software Goto Github PK
View Code? Open in Web Editor NEWMain collector of ergoCub specific SW
Home Page: https://icub-tech-iit.github.io/ergocub-software/
License: BSD 3-Clause "New" or "Revised" License
Main collector of ergoCub specific SW
Home Page: https://icub-tech-iit.github.io/ergocub-software/
License: BSD 3-Clause "New" or "Revised" License
We need to enable the unit tests for checking the consistency of the urdf after each generation, like: https://github.com/robotology/icub-models-generator/tree/master/tests
Moreover we should add a CI job when opening a PR that runs those tests.
Hi all first of all thank you for the model!
I tried to import the model into gazebo and move some of the joints with the motorgui. I noticed that the Wrist yaw goes in HF when as soon as I move it.
Here a video
See discussion in #81.
Reported issue in https://www.mathworks.com/matlabcentral/answers/1879607-incompatibility-between-ptc-creo-9-and-simscape-multibody-link and filed a bug report with case number 05918242.
cc @icub-tech-iit/silo-mech @icub-tech-iit/fix @maggia80
Using data from the waist_imu_0
I noticed that the orientation of the frame waist_imu_0
in the urdf of ergoCubSN000
does not match the frame attached to the sensor.
Here, starting from the frame shown in the documentation, I drew the rotated frame on the sensor mounted on ergoCub
.
Here, starting from the frame shown in the documentation, I drew the frame rotated on the photo of the image mounted on the root_link.
Here instead, I visualized the frame waist_imu_0
using the ergoCub
urdf.
Here is the matlab
script I used.
%% Settings
robotName='ergoCubSN000'; %% Name of the robot
testFrames = {'waist_imu_0'}; %% The frames to display
modelPath = '';
fileName='model.urdf'; %% Name of the urdf file
jointOrder={ %% The list and the order of the joints
'r_hip_pitch';
'r_hip_roll';
'r_hip_yaw';
'r_knee';
'r_ankle_pitch';
'r_ankle_roll';
'l_hip_pitch';
'l_hip_roll';
'l_hip_yaw';
'l_knee';
'l_ankle_pitch';
'l_ankle_roll';
'torso_pitch';
'torso_roll';
'torso_yaw';
'r_shoulder_pitch';
'r_shoulder_roll';
'r_shoulder_yaw';
'r_elbow';
'r_wrist_prosup';
'r_wrist_pitch';
'r_wrist_yaw';
'l_shoulder_pitch';
'l_shoulder_roll';
'l_shoulder_yaw';
'l_elbow';
'l_wrist_prosup';
'l_wrist_pitch';
'l_wrist_yaw';
'neck_pitch';
'neck_roll';
'neck_yaw'
};
groundFrame = 'l_sole'; %% The frame where to place the ground
rootLink = 'root_link'; %% The base link
joints_positions=zeros(length(jointOrder),1); %% The joints'position
printModel = true; %% Define if the model has to be printed on the command window
%% No need to edit from here
% Main variable of iDyntreeWrappers used for many things including updating
% robot position and getting world to frame transforms
KinDynModel = iDynTreeWrappers.loadReducedModel(jointOrder, rootLink, modelPath,fileName,false);
if printModel
KinDynModel.kinDynComp.model().toString() %%Print model
end
% Set initial position of the robot
iDynTreeWrappers.setRobotState(KinDynModel,eye(4),joints_positions,zeros(6,1),zeros(size(joints_positions)),[0,0,-9.81]);
groundFrameTransform = iDynTreeWrappers.getWorldTransform(KinDynModel, groundFrame);
world_H_base = groundFrameTransform^-1;
iDynTreeWrappers.setRobotState(KinDynModel,world_H_base,joints_positions,zeros(6,1),zeros(size(joints_positions)),[0,0,-9.81]);
% Prepare figure, handles and variables required for the update, some extra
% options are commented.
[visualizer,objects]=iDynTreeWrappers.prepareVisualization(KinDynModel,meshFilePrefix,...
'color',[1,1,1],'transparency',1, 'name', ['Plot frame ', robotName], 'reuseFigure', 'name');
xlim([-0.5, 0.5])
ylim([-0.5, 0.5])
zlim([-0.05, 1.4])
for t = 1 : length(testFrames)
frameTransform = iDynTreeWrappers.getWorldTransform(KinDynModel, testFrames{t});
testFramesObjects{t} = iDynTreeWrappers.plotFrame(frameTransform, 0.2, 5);
end
When generating the urdf the orientation is assigned arbitrary, then probably we will need to put the joints inverted under this list:
reverseRotationAxis:
...
After fixing the torso pitch, WholeBodyDynamics
crashes if launched for ergoCubGazeboV1.
Here is the error
[ERROR] wholeBodyDynamics: joint torso_pitch passed as a gravityCompensationAxesNames is not a 1 dof joint.
[ERROR] wholeBodyDynamics: Problem in opening gravity compensator settings.
[ERROR] |yarp.dev.PolyDriver|wholebodydynamics| Driver <wholebodydynamics> was found but could not open
We need to align the model ergoCubSN000
to the real robot, that right now has the torso pitch locked to 10 degrees in order to prevent the burning of the motor (see ref)
The robot model is aligned to the real robot
Following up on #104, we're required to test the latest expressions that are better centered wrt the OLED screen.
Finally, we'll report feedback to the designer.
The scsys of the fingertip seems not being exported in the urdf, they have to be added in the yml for being exported
They are called SCSYS_*_SKIN_TAXEL_*
cc @Lawproto
Hello,
I was wondering if it would be possible to have an automatic process that outputs a ROS2 pakage for the ergocub URDF and meshes. To be used in the robot_state_publisher
and RViz
pkgs in ROS2.
The actual model fails to load the meshes on RViz, while it's fine for the robot_state_publisher
and the TF2
pakage.
The error message on Rviz:
Errors loading geometries:
• for link 'chest':
Could not load mesh resource 'package://ergoCub/meshes/simmechanics/sim_ecub_chest_prt.stl
TFs frames: displayed correctly
I was wondering if there's something already existing for R1, or if anyone has already incurred in this issue and has some tips on how to solve this.
It's mostly a visual thing, so it's not of the maximum importance, but just to point out for discussion.
Thanks!
Hi all, yesterday I was looking for the source file of the ergoCub startup application ergoCubStartupV0.xml
that is installed in the ergoCub robot laptop in /home/ergocub/.local/share/yarp/applications
but I was not able to find it.
The only file I have found is the one stored in ergocub-software
(i.e. ergoCubStartupV0.xml) but it seems not to match the file installed in the PC which has the following content (and it is not installed by ergocub-software
):
<application>
<name>1-ergoCubStartup</name>
<dependencies>
</dependencies>
<module>
<name>yarplogger</name>
<parameters>--start</parameters>
<node>ergocub000-lap</node>
</module>
<module>
<name>yarprobotinterface</name>
<parameters>--config ergocub_all.xml</parameters>
<node>ergocub-torso</node>
</module>
<module>
<name>yarpmotorgui</name>
<parameters>--robot ergocub --parts "(head torso left_arm right_arm left_leg right_leg)"</parameters>
<node>ergocub000-lap</node>
<dependencies>
<port timeout="60.0" request="is_ready" reply="[ok]">/ergoCubSN000/yarprobotinterface</port>
</dependencies>
</module>
</application>
Indeed, I was wondering were the startup application is stored (e.g. for other robots it can be found in robots-configuration), and if we should update/delete the one stored in this repo.
This is more a sort of discussion about how to implement forward and inverse kinematics on ergoCub.
With @traversaro we thought that this time we can start off with using idyntree
from the ground up, by initializing the kinematic chains straight from the urdf.
In this respect, what kinds of IK algorithms are available from idyntree
, considering also the important aspects of joint limits avoidance, tasks prioritization, and the like?
Also, ikin
-based components could be still employed by feeding the DH parameters from files (once yielded via idyntree
). In fact, we are not going to publish hand-made kinematic chains based on DH convention in this repo.
CC'ing people in the know: @xEnVrE @mfussi66 @Nicogene @traversaro @lrapetti
While investigating with @HosameldinMohamed on #34, we noticed a difference between the simulated robot with YARP_ROBOT_NAME
ergoCubGazeboV1
and the real robot with YARP_ROBOT_NAME
ergoCubSN000
.
ergoCubGazeboV1
In the simulated robot, the name of the head IMU is head_imu_acc_1x1
:
multipleanalogsensorsserver
, called:
Sensor Type | Name |
---|---|
OrientationSensors |
head_imu_acc_1x1 |
ThreeAxisGyroscopes |
head_imu_acc_1x1 |
ThreeAxisLinearAccelerometers |
head_imu_acc_1x1 |
ThreeAxisMagnetometers |
head_imu_acc_1x1 |
ergoCubSN000
On the real robot, instead the different sensors that are part of the head IMU all have different names, see https://github.com/robotology/robots-configuration/blob/18cfd97db62da019092cfa11133aa8667c1271ca/ergoCubSN000/hardware/inertials/head-inertial.xml#L33 :
Sensor Type | Name |
---|---|
OrientationSensors |
rfeimu_eul |
ThreeAxisGyroscopes |
rfeimu_gyro |
ThreeAxisLinearAccelerometers |
rfeimu_acc |
ThreeAxisMagnetometers |
rfeimu_acc |
Ideally the name of the simulated/model and real robot sensors should coincide, to permit to simplify writing that works both on the real robot and on the simulated robot, and permit to exploit the knoledge of positions of a robot coming from the model when writing software that runs on the real robot.
This is required for aligning the simulated robots with the real one after: robotology/robots-configuration#485
cc @pattacini
Hi all, when I try to run WBD in a clean 2023.02 distro with ergocub-software v0.2.0 I got the following error.
YARP_CLOCK=/clock yarprobotinterface --config conf/launch_wholebodydynamics_ecub.xml
[INFO] |yarp.os.Port|/IITICUBLAP264/yarprobotinterface/150602/clock:i| Port /IITICUBLAP264/yarprobotinterface/150602/clock:i active at tcp://10.240.2.10:10098/
[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|/IITICUBLAP264/yarprobotinterface/150602/clock:i| Receiving input from /clock to /IITICUBLAP264/yarprobotinterface/150602/clock:i using tcp
[ERROR] |yarp.os.Property| cannot read from yarprobotinterface.ini
DEBUG] Reading file /home/guglielmo/robotology-superbuild/build/install/share/ergoCub/conf/launch_wholebodydynamics_ecub.xml
[WARNING] Invalid syntax while loading /home/guglielmo/robotology-superbuild/build/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/guglielmo/robotology-superbuild/build/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 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.10:10051/
[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.10:10052/
[INFO] |yarp.os.Port|/wholeBodyDynamics/torso/command:o| Port /wholeBodyDynamics/torso/command:o active at tcp://10.240.2.10:10053/
[INFO] |yarp.os.Port|/wholeBodyDynamics/torso/stateExt:i| Port /wholeBodyDynamics/torso/stateExt:i active at tcp://10.240.2.10:10054/
[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 <remote_controlboard>. 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.10:10055/
[INFO] |yarp.os.Port|/wholeBodyDynamics/left_arm/command:o| Port /wholeBodyDynamics/left_arm/command:o active at tcp://10.240.2.10:10056/
[INFO] |yarp.os.Port|/wholeBodyDynamics/left_arm/stateExt:i| Port /wholeBodyDynamics/left_arm/stateExt:i active at tcp://10.240.2.10:10057/
[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 <remote_controlboard>. 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.10:10058/
[INFO] |yarp.os.Port|/wholeBodyDynamics/right_arm/command:o| Port /wholeBodyDynamics/right_arm/command:o active at tcp://10.240.2.10:10059/
[INFO] |yarp.os.Port|/wholeBodyDynamics/right_arm/stateExt:i| Port /wholeBodyDynamics/right_arm/stateExt:i active at tcp://10.240.2.10:10060/
[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 <remote_controlboard>. 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.10:10061/
[INFO] |yarp.os.Port|/wholeBodyDynamics/left_leg/command:o| Port /wholeBodyDynamics/left_leg/command:o active at tcp://10.240.2.10:10062/
[INFO] |yarp.os.Port|/wholeBodyDynamics/left_leg/stateExt:i| Port /wholeBodyDynamics/left_leg/stateExt:i active at tcp://10.240.2.10:10063/
[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 <remote_controlboard>. 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.10:10064/
[INFO] |yarp.os.Port|/wholeBodyDynamics/right_leg/command:o| Port /wholeBodyDynamics/right_leg/command:o active at tcp://10.240.2.10:10065/
[INFO] |yarp.os.Port|/wholeBodyDynamics/right_leg/stateExt:i| Port /wholeBodyDynamics/right_leg/stateExt:i active at tcp://10.240.2.10:10066/
[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 <remote_controlboard>. 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.10:10067/
[INFO] |yarp.os.Port|/wholeBodyDynamics/head/command:o| Port /wholeBodyDynamics/head/command:o active at tcp://10.240.2.10:10068/
[INFO] |yarp.os.Port|/wholeBodyDynamics/head/stateExt:i| Port /wholeBodyDynamics/head/stateExt:i active at tcp://10.240.2.10:10069/
[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 <remote_controlboard>. 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.10:10070/
[INFO] |yarp.os.Port|/wholeBodyDynamics/imu/measures:i| Port /wholeBodyDynamics/imu/measures:i active at tcp://10.240.2.10:10071/
[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
[INFO] |yarp.dev.PolyDriver|head_inertial_hardware_device| Created device <multipleanalogsensorsclient>. See C++ class MultipleAnalogSensorsClient for documentation.
[INFO] Opening device ergocub_left_arm_ft with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/left_arm"), ("local" = "/wholeBodyDynamics/l_arm_ft_sensor")]
[DEBUG] |yarp.dev.PolyDriver|ergocub_left_arm_ft| Parameters are (device multipleanalogsensorsclient) (id ergocub_left_arm_ft) (local "/wholeBodyDynamics/l_arm_ft_sensor") (remote "/ergocubSim/left_arm") (robotName ergoCubGazeboV1)
[INFO] |yarp.os.Port|/wholeBodyDynamics/l_arm_ft_sensor/rpc:i| Port /wholeBodyDynamics/l_arm_ft_sensor/rpc:i active at tcp://10.240.2.10:10072/
[INFO] |yarp.os.Port|/wholeBodyDynamics/l_arm_ft_sensor/measures:i| Port /wholeBodyDynamics/l_arm_ft_sensor/measures:i active at tcp://10.240.2.10:10073/
[INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/l_arm_ft_sensor/rpc:i| Sending output from /wholeBodyDynamics/l_arm_ft_sensor/rpc:i to /ergocubSim/left_arm/rpc:o using tcp
[INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/l_arm_ft_sensor/measures:i| Receiving input from /ergocubSim/left_arm/measures:o to /wholeBodyDynamics/l_arm_ft_sensor/measures:i using tcp
[INFO] |yarp.dev.PolyDriver|ergocub_left_arm_ft| Created device <multipleanalogsensorsclient>. See C++ class MultipleAnalogSensorsClient for documentation.
[INFO] Opening device ergocub_right_arm_ft with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/right_arm"), ("local" = "/wholeBodyDynamics/r_arm_ft_sensor")]
[DEBUG] |yarp.dev.PolyDriver|ergocub_right_arm_ft| Parameters are (device multipleanalogsensorsclient) (id ergocub_right_arm_ft) (local "/wholeBodyDynamics/r_arm_ft_sensor") (remote "/ergocubSim/right_arm") (robotName ergoCubGazeboV1)
[INFO] |yarp.os.Port|/wholeBodyDynamics/r_arm_ft_sensor/rpc:i| Port /wholeBodyDynamics/r_arm_ft_sensor/rpc:i active at tcp://10.240.2.10:10074/
[INFO] |yarp.os.Port|/wholeBodyDynamics/r_arm_ft_sensor/measures:i| Port /wholeBodyDynamics/r_arm_ft_sensor/measures:i active at tcp://10.240.2.10:10075/
[INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/r_arm_ft_sensor/rpc:i| Sending output from /wholeBodyDynamics/r_arm_ft_sensor/rpc:i to /ergocubSim/right_arm/rpc:o using tcp
[INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/r_arm_ft_sensor/measures:i| Receiving input from /ergocubSim/right_arm/measures:o to /wholeBodyDynamics/r_arm_ft_sensor/measures:i using tcp
[INFO] |yarp.dev.PolyDriver|ergocub_right_arm_ft| Created device <multipleanalogsensorsclient>. See C++ class MultipleAnalogSensorsClient for documentation.
[INFO] Opening device ergocub_left_leg_ft with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/left_leg_hip"), ("local" = "/wholeBodyDynamics/l_leg_ft_sensor")]
[DEBUG] |yarp.dev.PolyDriver|ergocub_left_leg_ft| Parameters are (device multipleanalogsensorsclient) (id ergocub_left_leg_ft) (local "/wholeBodyDynamics/l_leg_ft_sensor") (remote "/ergocubSim/left_leg_hip") (robotName ergoCubGazeboV1)
[INFO] |yarp.os.Port|/wholeBodyDynamics/l_leg_ft_sensor/rpc:i| Port /wholeBodyDynamics/l_leg_ft_sensor/rpc:i active at tcp://10.240.2.10:10076/
[INFO] |yarp.os.Port|/wholeBodyDynamics/l_leg_ft_sensor/measures:i| Port /wholeBodyDynamics/l_leg_ft_sensor/measures:i active at tcp://10.240.2.10:10077/
[INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/l_leg_ft_sensor/rpc:i| Sending output from /wholeBodyDynamics/l_leg_ft_sensor/rpc:i to /ergocubSim/left_leg_hip/rpc:o using tcp
[INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/l_leg_ft_sensor/measures:i| Receiving input from /ergocubSim/left_leg_hip/measures:o to /wholeBodyDynamics/l_leg_ft_sensor/measures:i using tcp
[INFO] |yarp.dev.PolyDriver|ergocub_left_leg_ft| Created device <multipleanalogsensorsclient>. See C++ class MultipleAnalogSensorsClient for documentation.
[INFO] Opening device ergocub_right_leg_ft with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/right_leg_hip"), ("local" = "/wholeBodyDynamics/r_leg_ft_sensor")]
[DEBUG] |yarp.dev.PolyDriver|ergocub_right_leg_ft| Parameters are (device multipleanalogsensorsclient) (id ergocub_right_leg_ft) (local "/wholeBodyDynamics/r_leg_ft_sensor") (remote "/ergocubSim/right_leg_hip") (robotName ergoCubGazeboV1)
[INFO] |yarp.os.Port|/wholeBodyDynamics/r_leg_ft_sensor/rpc:i| Port /wholeBodyDynamics/r_leg_ft_sensor/rpc:i active at tcp://10.240.2.10:10078/
[INFO] |yarp.os.Port|/wholeBodyDynamics/r_leg_ft_sensor/measures:i| Port /wholeBodyDynamics/r_leg_ft_sensor/measures:i active at tcp://10.240.2.10:10079/
[INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/r_leg_ft_sensor/rpc:i| Sending output from /wholeBodyDynamics/r_leg_ft_sensor/rpc:i to /ergocubSim/right_leg_hip/rpc:o using tcp
[INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/r_leg_ft_sensor/measures:i| Receiving input from /ergocubSim/right_leg_hip/measures:o to /wholeBodyDynamics/r_leg_ft_sensor/measures:i using tcp
[INFO] |yarp.dev.PolyDriver|ergocub_right_leg_ft| Created device <multipleanalogsensorsclient>. See C++ class MultipleAnalogSensorsClient for documentation.
[INFO] Opening device ergocub_left_foot_front_rear_ft with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/left_foot_heel_tiptoe"), ("local" = "/wholeBodyDynamics/l_foot_front_rear_ft_sensor")]
[DEBUG] |yarp.dev.PolyDriver|ergocub_left_foot_front_rear_ft| Parameters are (device multipleanalogsensorsclient) (id ergocub_left_foot_front_rear_ft) (local "/wholeBodyDynamics/l_foot_front_rear_ft_sensor") (remote "/ergocubSim/left_foot_heel_tiptoe") (robotName ergoCubGazeboV1)
[INFO] |yarp.os.Port|/wholeBodyDynamics/l_foot_front_rear_ft_sensor/rpc:i| Port /wholeBodyDynamics/l_foot_front_rear_ft_sensor/rpc:i active at tcp://10.240.2.10:10080/
[INFO] |yarp.os.Port|/wholeBodyDynamics/l_foot_front_rear_ft_sensor/measures:i| Port /wholeBodyDynamics/l_foot_front_rear_ft_sensor/measures:i active at tcp://10.240.2.10:10081/
[INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/l_foot_front_rear_ft_sensor/rpc:i| Sending output from /wholeBodyDynamics/l_foot_front_rear_ft_sensor/rpc:i to /ergocubSim/left_foot_heel_tiptoe/rpc:o using tcp
[INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/l_foot_front_rear_ft_sensor/measures:i| Receiving input from /ergocubSim/left_foot_heel_tiptoe/measures:o to /wholeBodyDynamics/l_foot_front_rear_ft_sensor/measures:i using tcp
[INFO] |yarp.dev.PolyDriver|ergocub_left_foot_front_rear_ft| Created device <multipleanalogsensorsclient>. See C++ class MultipleAnalogSensorsClient for documentation.
[INFO] Opening device ergocub_right_foot_front_rear_ft with parameters [("robotName" = "ergoCubGazeboV1"), ("remote" = "/ergocubSim/right_foot_heel_tiptoe"), ("local" = "/wholeBodyDynamics/r_foot_front_rear_ft_sensor")]
[DEBUG] |yarp.dev.PolyDriver|ergocub_right_foot_front_rear_ft| Parameters are (device multipleanalogsensorsclient) (id ergocub_right_foot_front_rear_ft) (local "/wholeBodyDynamics/r_foot_front_rear_ft_sensor") (remote "/ergocubSim/right_foot_heel_tiptoe") (robotName ergoCubGazeboV1)
[INFO] |yarp.os.Port|/wholeBodyDynamics/r_foot_front_rear_ft_sensor/rpc:i| Port /wholeBodyDynamics/r_foot_front_rear_ft_sensor/rpc:i active at tcp://10.240.2.10:10082/
[INFO] |yarp.os.Port|/wholeBodyDynamics/r_foot_front_rear_ft_sensor/measures:i| Port /wholeBodyDynamics/r_foot_front_rear_ft_sensor/measures:i active at tcp://10.240.2.10:10083/
[INFO] |yarp.os.impl.PortCoreOutputUnit|/wholeBodyDynamics/r_foot_front_rear_ft_sensor/rpc:i| Sending output from /wholeBodyDynamics/r_foot_front_rear_ft_sensor/rpc:i to /ergocubSim/right_foot_heel_tiptoe/rpc:o using tcp
[INFO] |yarp.os.impl.PortCoreInputUnit|/wholeBodyDynamics/r_foot_front_rear_ft_sensor/measures:i| Receiving input from /ergocubSim/right_foot_heel_tiptoe/measures:o to /wholeBodyDynamics/r_foot_front_rear_ft_sensor/measures:i using tcp
[INFO] |yarp.dev.PolyDriver|ergocub_right_foot_front_rear_ft| Created device <multipleanalogsensorsclient>. See C++ class MultipleAnalogSensorsClient for documentation.
[INFO] Opening device wholebodydynamics with parameters [("robotName" = "ergoCubGazeboV1"), ("axesNames" = "(torso_pitch,torso_roll,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_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))"), ("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))"), ("multipleAnalogSensorsNames" [group] = "(SixAxisForceTorqueSensorsNames ("l_arm_ft_sensor", "r_arm_ft_sensor", "l_leg_ft_sensor", "r_leg_ft_sensor", "l_foot_front_ft_sensor", "r_foot_front_ft_sensor", "l_foot_rear_ft_sensor", "r_foot_rear_ft_sensor"))")]
[DEBUG] |yarp.dev.PolyDriver|wholebodydynamics| Parameters are (GRAVITY_COMPENSATION (enableGravityCompensation true) (gravityCompensationBaseLink root_link) (gravityCompensationAxesNames (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))) (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))) (axesNames (torso_pitch torso_roll 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_sensor r_arm_ft_sensor l_leg_ft_sensor r_leg_ft_sensor l_foot_front_ft_sensor r_foot_front_ft_sensor l_foot_rear_ft_sensor r_foot_rear_ft_sensor))) (publishNetExternalWrenches true) (robotName ergoCubGazeboV1) (startWithZeroFTSensorOffsets true) (useJointAcceleration true) (useJointVelocity true) (useSkinForContacts false)
[DEBUG] wholeBodyDynamics Statistics: Opening estimator.
[INFO] wholeBodyDynamics : Loading model from /home/guglielmo/robotology-superbuild/build/install/share/ergoCub/robots/ergoCubGazeboV1/model.urdf
[DEBUG] wholeBodyDynamics Statistics: Estimator opened in 0.011 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.001 s.
[DEBUG] wholeBodyDynamics Statistics: Opening RPC port.
[INFO] |yarp.os.Port|/wholeBodyDynamics/rpc| Port /wholeBodyDynamics/rpc active at tcp://10.240.2.10:10084/
[DEBUG] wholeBodyDynamics Statistics: RPC port opened in 0.004 s.
[DEBUG] wholeBodyDynamics Statistics: Opening settings port.
[INFO] |yarp.os.Port|/wholeBodyDynamics/settings| Port /wholeBodyDynamics/settings active at tcp://10.240.2.10:10085/
[DEBUG] wholeBodyDynamics Statistics: Settings port opened in 0.004 s.
[DEBUG] wholeBodyDynamics Statistics: Opening remapper control board.
[DEBUG] |yarp.dev.PolyDriver|controlboardremapper| Parameters are (axesNames (torso_pitch torso_roll 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 <controlboardremapper>. See C++ class ControlBoardRemapper for documentation.
[DEBUG] wholeBodyDynamics Statistics: Remapper control board opened in 0.014 s.
[DEBUG] wholeBodyDynamics Statistics: Opening remapper virtual sensors.
[DEBUG] |yarp.dev.PolyDriver|virtualAnalogRemapper| Parameters are (axesNames (torso_pitch torso_roll 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 <virtualAnalogRemapper>. See C++ class yarp::dev::VirtualAnalogRemapper for documentation.
[DEBUG] wholeBodyDynamics Statistics: Remapper virtual sensors opened in 0.012 s.
[DEBUG] wholeBodyDynamics Statistics: Opening contact frames.
[DEBUG] wholeBodyDynamics Statistics: Contact frames opened in 0 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://10.240.2.10:10086/
[INFO] |yarp.os.Port|/wholeBodyDynamics/left_foot_rear/cartesianEndEffectorWrench:o| Port /wholeBodyDynamics/left_foot_rear/cartesianEndEffectorWrench:o active at tcp://10.240.2.10:10087/
[INFO] |yarp.os.Port|/wholeBodyDynamics/right_foot_front/cartesianEndEffectorWrench:o| Port /wholeBodyDynamics/right_foot_front/cartesianEndEffectorWrench:o active at tcp://10.240.2.10:10088/
[INFO] |yarp.os.Port|/wholeBodyDynamics/right_foot_rear/cartesianEndEffectorWrench:o| Port /wholeBodyDynamics/right_foot_rear/cartesianEndEffectorWrench:o active at tcp://10.240.2.10:10089/
[INFO] |yarp.os.Port|/wholeBodyDynamics/netExternalWrenches:o| Port /wholeBodyDynamics/netExternalWrenches:o active at tcp://10.240.2.10:10090/
[DEBUG] wholeBodyDynamics Statistics: External port wrenches opened in 0.021 s.
[DEBUG] wholeBodyDynamics Statistics: Opening multiple analog sensors remapper.
[DEBUG] |yarp.dev.PolyDriver|multipleanalogsensorsremapper| Parameters are (SixAxisForceTorqueSensorsNames (l_arm_ft_sensor r_arm_ft_sensor l_leg_ft_sensor r_leg_ft_sensor l_foot_front_ft_sensor r_foot_front_ft_sensor l_foot_rear_ft_sensor r_foot_rear_ft_sensor)) (device multipleanalogsensorsremapper)
[INFO] |yarp.dev.PolyDriver|multipleanalogsensorsremapper| Created device <multipleanalogsensorsremapper>. See C++ class MultipleAnalogSensorsRemapper for documentation.
[DEBUG] wholeBodyDynamics Statistics: Multiple analog sensors remapper opened in 0.009 s.
[DEBUG] wholeBodyDynamics Statistics: Configuration finished. Waiting attachAll to be called.
[INFO] |yarp.dev.PolyDriver|wholebodydynamics| Created device <wholebodydynamics>. 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 l_arm_ft_sensor r_arm_ft_sensor l_leg_ft_sensor r_leg_ft_sensor l_foot_front_rear_ft_sensor r_foot_front_rear_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"), ("l_arm_ft_sensor" = "ergocub_left_arm_ft"), ("r_arm_ft_sensor" = "ergocub_right_arm_ft"), ("l_leg_ft_sensor" = "ergocub_left_leg_ft"), ("r_leg_ft_sensor" = "ergocub_right_leg_ft"), ("l_foot_front_rear_ft_sensor" = "ergocub_left_foot_front_rear_ft"), ("r_foot_front_rear_ft_sensor" = "ergocub_right_foot_front_rear_ft")]
[DEBUG] wholeBodyDynamics Statistics: attachAll started. Attaching all control board.
[DEBUG] wholeBodyDynamics Statistics: Attaching all control board took 0.002 s.
[DEBUG] wholeBodyDynamics Statistics: Attaching all virtual analog sensors.
[DEBUG] wholeBodyDynamics Statistics: Attaching all virtual analog sensors took 0 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 6 where analog are 0 and MAS are 6
[DEBUG] wholeBodyDynamics Statistics: Attaching all Fts took 0.001 s.
[DEBUG] wholeBodyDynamics Statistics: Attaching all IMUs.
[ERROR] wholeBodyDynamics : Did not find one IMU multipleAnalogSensor devices attached, you need to attach one and only one IMU.
[ERROR] wholeBodyDynamics : In case you are trying to attach an IMU device of the type IGenericSensor, remove the group "HW_USE_MAS_IMU" from your config file.
[DEBUG] wholeBodyDynamics Statistics: Attaching all IMUs took 0 s.
[DEBUG] wholeBodyDynamics Statistics: Calibrating offsets.
[DEBUG] wholeBodyDynamics Statistics: Calibrating took 0 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
Segmentation fault (core dumped)
Hi @Nicogene
As said during the planning meeting, we're required to populate the brand new repo ergocub-software
(the name can be adapted later, but I've added -software
to differentiate it from the other studies) with the machinery for handling the URDF.
Later, we could host here also any ergoCub-specific device drivers, for example.
At the moment, the following links representing the fingertip skin are available within the erboCubSN000
URDF:
r_hand_thumb_skin_0
, ..., r_hand_thumb_skin_11
r_hand_index_skin_0
, ..., r_hand_index_skin_11
r_hand_middle_skin_0
, ..., r_hand_middle_skin_11
r_hand_ring_skin_0
, ..., r_hand_ring_skin_11
l_hand_thumb_skin_0
, ..., l_hand_thumb_skin_11
l_hand_index_skin_0
, ..., l_hand_index_skin_11
l_hand_middle_skin_0
, ..., l_hand_middle_skin_11
l_hand_ring_skin_0
, ..., l_hand_ring_skin_11
Should not we have also additional links for the left/right little - or pinkie - fingers?
cc @Nicogene
Hello
I am having an issue when spawning any robot close to a wall (or moving there after navigation) the RTF drops drastically (lower than 0.1).
The contacts are present on the whole world.
I have tried to remove the textures, but the effect is the same as in the following pictures:
Warehouse example:
All the following situations have RFT smaller than 0.1
Spawning ergoCubGazeboV1 next to wall:
When spawning the robot in the middle of the scene instead, we have an higher RTF
ergoCubGazeboV1 in center of map RTF=0.6
Does anybody have any suggestion on what could be the problem?
To me seems like a collision check threshold, that when the robot moves closer to the wall it starts checking for contacts.
I am also sharing my world file:
worlds.zip
Thanks
This is the follow-up of #87.
We would like to finalize the work on ergoCubEmotions
module, here is the list that we would address
ergoCub
The list above has been completed
In order to enable wbd on ergocub-torso
, we have installed the robotology-superbuild dependencies using the install_apt_dependencies.sh
script. While doing this, however, the following message was raised:
we continued, but after a while we realized the face expressions stopped to work (I guess it was the service that was supposed to be restarted). After restarting the robot motors and CPU, the face expression seems to be still off:
This is the follow-up of #88
We would like to:
ergocubEmotions
on the cpu while for example the realsense is streaming the dataergocub-head
(cc @davidelasagna)
The above list is completed
cc @pattacini
Right now I had to manually fix the simmechanics XML for the r_knee
exported as weld, and the missing stl for l_wrist_1
link
Shall we keep track in a separate issue of these glitches in the exportation from creo?
@Lawproto @mfussi66 @Mick3Lozzo @pattacini @salvi-mattia @fiorisi
Originally posted by @Nicogene in #27 (comment)
With #22 we added the unit test that checks the ft sensors orientation.
Using the root-ftSensor transformation used for icub3 makes the test fail:
ergocub-model-test : transform between root_link and l_arm_ft_sensor is not the expected one, test failed.
ergocub-model-test : Expected transform : -0.267012 -0.961047 0.0713662
-0.960459 0.271447 0.0619303
-0.0788901 -0.0520081 -0.995526
ergocub-model-test : Actual transform : -0.250563 -0.961047 0.116648
-0.935113 0.271447 0.227771
-0.250563 -0.0520081 -0.966702
ergocub-model-test : base_link test performed correctly
ergocub-model-test : transform between root_link and r_arm_ft_sensor is not the expected one, test failed.
ergocub-model-test : Expected transform : -0.267012 0.961047 0.0713662
0.960459 0.271447 -0.0619303
-0.0788901 0.0520081 -0.995526
ergocub-model-test : Actual transform : -0.250563 0.961047 0.116648
0.935113 0.271447 -0.227771
-0.250563 0.0520081 -0.966702
If this discrepancy with icub3 is correct, we can ignore this issue and change the expected transformations in the unit tests reading them from the creo
cc @pattacini @traversaro @Mick3Lozzo @salvi-mattia @mfussi66
Similarly to robotology/icub-models#191, the order of the torso joints within the Gazebo models is yaw, pitch, roll
:
while on the real robot it is roll, pitch, yaw
:
The screen was taken from https://github.com/robotology/robots-configuration/blob/master/ergoCubSN000/hardware/motorControl/torso-eb5-j0_2-mc.xml#L11-L14
Today @GiulioRomualdi and @mebbaid spotted that there is a mismatch in the direction of the shoulder yaw joint and the camera tilt between the model and the robot.
This was spotted comparing the motion in Gazebo and the real robot when increasing the value of the joint from yarpmotorgui
.
Here for example is the comparison for the shoulder:
All the other joints have been checked and are coherent.
#22 added the unit tests that checks if l_sole
and r_sole
are parallel.
It gives the following error:
l_sole_y is 0.07435, while r_sole_y is -0.07445 while they should be simmetric (diff : 0.0001 )
sole_height
and sole_x
seems fine instead
cc @salvi-mattia @traversaro @mfussi66 @pattacini @Mick3Lozzo
For running walking and other demos, it is necessary to estimate external forces acting on the robot, and this can be done via the wholebodydynamics
YARP device. This YARP device can run:
wbd-int
. Inside the gazebo simulator, via the gazebo_yarp_robotinterface
plugin, a bit like on the real robot wholebodydynamics is running in the main yarprobotinterface of the real robot ergoCubSN000
(see https://github.com/robotology/robots-configuration/blob/v2.1.0/ergoCubSN000/estimators/wholebodydynamics.xml)wbd-ext
Outside of the gazebo simulator, by accessing the relevant sensor via the multipleanalogsensorclient
deviceThis issue tracks the wbd-int
option.
Could you please update the expressions we have with the latest ones we received from the designers, which are better centered with respect to the whole face?
Here's the latest delivery: expressions.zip
.
Be careful, the correct tag for one expression is alert
and not angry
1. Thus, you'd need to update the config.ini file too.
The attached archive already contains the correct tags. ↩
I have noticed that when I try to assign the PID values for the l_middle_oc
joint in simulation, it seems that they do not produce any effect.
In the following video you will see that If I set the proportional term of l_middle_oc
to zero, the joint can be commanded as before. At the same time, I noticed that the proximal joint of the index stopped moving - as if there were an indexing problem while assigning the values of the PID.
This seems to be another problem due to the coupling of the joint within gazebo-yarp-plugins.
I can open a related issue there if you think it is the case.
Thanks
As per the title.
By visualizing the ergoCub link frames in Gazebo I noticed that the ergoCub link frames are all oriented as iCubV3 but the lower leg ones, which are instead rotated of 180 degs around the x axis (z pointing downwards rather than upwards):
If this is not intended for specific purposes, maybe it is worth to have them oriented as all the other links in the chain.
See #49 (comment).
Start developing a module like emotioninterface
, that give a rpc
command displays an emotion.
While testing the simulation using the ergoCubGazeboV1
model, I noticed that often the joints l_shoulder_yaw
and l_wrist_yaw
go in hardware fault, especially when the l_elbow
joint is moved.
By playing a bit with the tuning of the PID in simulation, I noticed that the problem seems to disappear by removing the derivative action for joints l_shoulder_yaw
and l_wrist_yaw
- not saying this is the cause, maybe the derivative action is just emphasizing the effect caused by the real problem, e.g. wrongly scaled inertias, etc..
Is it ok to open a PR in order to change them in the file used by the urdf generator, i.e. https://github.com/icub-tech-iit/ergocub-software/blob/master/urdf/simmechanics/data/ergocub/conf/gazebo_ergocub_left_arm.ini? Otherwise, at the moment, the left arm is quite not usable.
Have the current values of the PID been inherited from iCub2.x simulated models or have they been tuned somehow?
Thanks
Warning
The urdf of ergoCubGazeboV1/SN000
has never been generated with creo2urdf
, it has been created in the transition period when for using simmechanics_to_urdf
was needed to port the CAD from CREO9 to CREO7 thus we minimized the fixes on the CAD, patching it via software(#106)
The simulation model CAD has not been updated for a while, we are keeping the yaml up-to-date but if changes are needed in the robot model it is better to apply them directly to the urdf instead of generating with creo2urdf
.
This issue is for keeping track of the workaround we had to implement + the features we didn't integrate in ergocub 1.0 models, which hopefully we will remove/implement better in the future.
We spotted that the thumb and index abductions (handled by a dedicate board) come at the end of the joint set. This goes a bit against the order we have on iCub and, at least, segregates the two joints of the thumb apart.
We need to harmonize the sequence both in the real robot and in the simulated one, most likely using the remapper.
For running walking and other demos, it is necessary to estimate external forces acting on the robot, and this can be done via the wholebodydynamics
YARP device. This YARP device can run:
wbd-int
. Inside the gazebo simulator, via the gazebo_yarp_robotinterface
plugin, a bit like on the real robot wholebodydynamics is running in the main yarprobotinterface of the real robot ergoCubSN000
(see https://github.com/robotology/robots-configuration/blob/v2.1.0/ergoCubSN000/estimators/wholebodydynamics.xml)wbd-ext
Outside of the gazebo simulator, by accessing the relevant sensor via the multipleanalogsensorclient
deviceThis issue tracks the wbd-ext
workflow, and @HosameldinMohamed and @mebbaid are already working on this. The option wbd-int
is tracked in #35 .
When trying to visualize the ergoCub model in Ignition Gazebo, the robot is visualized all in white:
This is instead the result if a white diffuse color is applied to all the robot links:
The lines added to the urdf model to get the above can be found here.
This issue is to track the possibility of including these changes in the ergoCub urdf, since they can be of interest for future development in Ignition Gazebo.
For doing this we have to take account of the coupling of the joints, and check the limits set in the csv files
When moving the fingers in simulation I noticed that there are some part of the mechanism - probably even not required for the scope of the simulation - that move strangely:
I though it was useful to notify that in case it reveals any kind of issue within the urdf generation process.
With the help of @icub-tech-iit/dev we would like to check if the recent changes in the mech of wrist mk2, which is now symmetrical, require updates on urdf side.
We checked it, and eventually updated it.
cc @pattacini
We're required to make ergoCub talk ROS2 as we did for iCubGenova11.
We will contribute to this task together w/ @randaz81 and colleagues.
I've put this task on our first PI14 sprint, which is Feb 6 – Feb 17.
We're required to create the modules documentation hosted via GH Pages relying on doxygen
.
In particular, ergoCubEmotions
API will be available therein.
Useful resources:
Following up on #39, we're required to mount ROS2 on the head and test the ROS2 functionalities on the whole robot.
For the robotology-superbuild obviously the generation of the model will not enabled acting like icub-models
This is a reminder for us to clean up the FW level as well, following up on #42 (comment).
Due to an issue in material assignment in the CAD, we have this:
➡️ the covers and the head are 254 g lighter than expected.
As soon as we fix on CAD side we have to update the urdf accordingly.
In the meanwhile we can fix it with assignedMasses
and assignedInertias
parameters in the yml
We are missing both SCSYS_R_SOLE
and SCSYS_L_SOLE
in the simmechanics xml
See https://github.com/search?q=repo%3Aicub-tech-iit%2Fergocub-software%20SCSYS_R_SOLE&type=code
cc @fiorisi @traversaro @pattacini @Lawproto @Mick3Lozzo @salvi-mattia
Hi everybody, I am trying to use ergoCub on simulation. I firstly installed the repo in a local directory that I created but when I try to insert the model on Gazebo, the log gives me this output:
[Msg] Waiting for model database update to complete... [Wrn] [SystemPaths.cc:459] File or path does not exist [""] [model://ergoCub/meshes/simmechanics/sim_ecub_root_link_prt.stl] [Err] [Visual.cc:3030] No mesh specified [Wrn] [SystemPaths.cc:459] File or path does not exist [""] [model://ergoCub/meshes/simmechanics/sim_ecub_l_hip_1_prt.stl]
The environment variables are set correctly.
It seems like it can find the urdf but it cannot find the associated stl files (the same error is repeated for every stl in the urdf). However, if I select as install prefix the install folder of the robotology-superbuild
, I can insert ergoCub without any problem. Is this normal? Thanks
This is the follow-up of #50.
We ought to address these points:
waitkey
issueergoCubEmotions
to CICOMPILE_ergocubEmotions
)All those points are addressed by a PR and it has been merged
cc @pattacini
Hi, in order to use the robots we generally rely on some yarpmotorgui
home configurations.
In the past we had some discussions on where to store those files, but we ended up storing them in https://github.com/robotology/whole-body-controllers/tree/master/utilities/homePositions even if they might not be related to the controllers stored in that repo.
Since we (me @GiulioRomualdi and @mebbaid) are now preparing some new files for the ergoCub robot (actually we have prepared a configuration for the robot standing on two feet homePositions.ini.txt), we were wondering if it would be the case to find a better location for those files (e.g. inside ergocub-software
).
I don't know if this topic was already discussed internally by icub-tech, and if you already have alternative solutions.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.