Code Monkey home page Code Monkey logo

ergocub-software's People

Contributors

actions-user avatar github-actions[bot] avatar giulioromualdi avatar icub-tech-iit-bot avatar isorrentino avatar lrapetti avatar martinaxgloria avatar mebbaid avatar mfussi66 avatar nicogene avatar pattacini avatar s-dafarra avatar simonemic avatar traversaro avatar xela-95 avatar xenvre avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ergocub-software's Issues

The orientation of the waist_imu_0 frame in the urdf of ergoCubSN000 does not match the frame on the real sensor

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.

Click here to see the code.
%% 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

cc @GiulioRomualdi

Check joints orientations

When generating the urdf the orientation is assigned arbitrary, then probably we will need to put the joints inverted under this list:

reverseRotationAxis:
...

[ergoCubGazeboV1] WholeBodyDynamics not starting

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

ergoCubSN000: block the torso pitch to 10 deg

Task description

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)

Definition of done

The robot model is aligned to the real robot

Test better-centered expressions

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.

Missing SCSYS in the fingertip

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_*

immagine

cc @Lawproto

Having a ROS2 pkg for RViz meshes

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

Screenshot from 2023-02-22 17-49-45

TFs frames: displayed correctly
Screenshot from 2023-02-22 16-53-30

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!

Where is the ergoCub startup application stored?

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.

FK/IK with ergoCub

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

Inconsistency in head IMU sensor name between simulated and real robot

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.

Simulated Robot ergoCubGazeboV1

In the simulated robot, the name of the head IMU is head_imu_acc_1x1 :

. In particular, there are four sensors of different kind as part of this IMU according to the related 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

Real Robot 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

Discussion

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.

WBD segfaults in simulation

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)

Populate `ergocub-software` repo

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.

Missing "kinematic" links of the fingers skin in the URDF

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

Gazebo RFT dropping when any model is close to tall walls

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:
Screenshot from 2023-02-28 12-49-23

All the following situations have RFT smaller than 0.1

Spawning iCub next to wall:
Screenshot from 2023-02-28 12-34-27

Spawning R1 next to wall:
Screenshot from 2023-02-28 12-33-23

Spawning ergoCubGazeboV1 next to wall:
Screenshot from 2023-02-28 12-14-02

When spawning the robot in the middle of the scene instead, we have an higher RTF

R1 in center of map RTF=0.99
Screenshot from 2023-02-28 12-38-32

ergoCubGazeboV1 in center of map RTF=0.6
Screenshot from 2023-02-28 12-39-27

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

cc @traversaro @randaz81

Develop proper facial expressions handler – Stint 3

Task description

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

  • Fix/extend the possibility of displaying videos/gifs
  • Add documentation (for now I would say a section in the README is fine)
  • Add yarpmanager xml application
  • Test it in a setup with the Xavier and OLED that are mounted on ergoCub
  • Investigate how to build a "packet" to give to the designer for testing
  • Add service get available emotions

Definition of done

The list above has been completed

Face expression stopped to work

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:
photo1675931605
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:
photo1675931605

cc @GiulioRomualdi @mebbaid

Develop proper facial expressions handler – Stint 4

Task description

This is the follow-up of #88

We would like to:

  • Integrate the new face expression received from rezzonico
  • Use transitions
  • Deal with mistakes in the conf file
  • Check the impact of ergocubEmotions on the cpu while for example the realsense is streaming the data
  • Get rid of the face-expression service on ergocub-head (cc @davidelasagna)
    • See how it looks when starting the robot, we have to keep it just black or change the desktop image
  • Official delivery to RL
    • Add in the README an example of face expression transition
    • Add the yarpmanager application on ergocub laptop (after successful test)

Definition of done

The above list is completed

cc @pattacini

Check orientations of ft sensors in the arms

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

Wrong order of torso joints in Gazebo models

Similarly to robotology/icub-models#191, the order of the torso joints within the Gazebo models is yaw, pitch, roll:

jointNames torso_yaw torso_pitch torso_roll

while on the real robot it is roll, pitch, yaw:

image

The screen was taken from https://github.com/robotology/robots-configuration/blob/master/ergoCubSN000/hardware/motorControl/torso-eb5-j0_2-mc.xml#L11-L14

Left shoulder yaw and camera tilt not coherent between robot and model

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:

video5990106985545076316.mp4

All the other joints have been checked and are coherent.

cc @pattacini @Nicogene @sgiraz

Write configuration file for launching wholebodydynamics for ergoCubGazeboV1 (simulated robot) as part of the gazebo simulation process via the gazebo_yarp_robotinterface

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:

This issue tracks the wbd-int option.

New expressions

Hi @martinaxgloria

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 angry1. Thus, you'd need to update the config.ini file too.

cc @Nicogene @maggia80

Footnotes

  1. The attached archive already contains the correct tags.

PID values are not correctly assigned for the fingers in simulation

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.

pid_problems-2023-03-22_18.53.19.mp4

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

ergoCubGazeboV1 - joints l_shoulder_yaw and l_wrist_yaw joints go in hardware fault

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

Workarounds, limitations/missing features in ergocub 1.0 urdf

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.

SW Workarounds

  • #103 (The torso_pitch burnt)
  • #99 (The pipeline creo v7 is broken, and we didn't regenerate the shrinkwraps)
  • #116 (removed torso_pitch pt2)
  • #112 (removed torso_pitch pt3)
  • #134 (Wrong laser csys, creo v7-9 issue)
  • #158 (Ft sensor frames not centered)
  • #249 (The head mass properties were wrong)

Limitations

cc @pattacini @traversaro

Fix up the order of the fingers joints in YARP

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.

Write configuration file for launching wholebodydynamics for ergoCubGazeboV1 (simulated robot) with an external yarprobotinterface process

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:

This issue tracks the wbd-ext workflow, and @HosameldinMohamed and @mebbaid are already working on this. The option wbd-int is tracked in #35 .

Add white diffuse color to the robot links for proper visualization in Modern Gazebo simulator

When trying to visualize the ergoCub model in Ignition Gazebo, the robot is visualized all in white:

no_diffuse

This is instead the result if a white diffuse color is applied to all the robot links:

diffuse

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.

cc @traversaro @S-Dafarra @GiulioRomualdi

Gazebo cannot find the robot meshes

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

Develop proper facial expressions handler – Stint 2

Task description

This is the follow-up of #50.

We ought to address these points:

  • Refactor the module in order to use thrift
  • Investigate and overcome the waitkey issue
  • investigate and overcome the fullscreen issue
  • When the module starts a default emotion or a black image has to be shown
  • Manage the images using the context/ResourceFinder machinery
  • Add ergoCubEmotions to CI
  • Add it to the root CMakeLists.txt with an option (e.g. COMPILE_ergocubEmotions)

Definition of done

All those points are addressed by a PR and it has been merged

cc @pattacini

Upload yarpmotorgui configurations

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.

cc @pattacini @traversaro @gabrielenava

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.