Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot compile icub-main on pc104 with latest releases #583

Closed
EliseiFrederic opened this issue Dec 7, 2017 · 32 comments
Closed

Cannot compile icub-main on pc104 with latest releases #583

EliseiFrederic opened this issue Dec 7, 2017 · 32 comments

Comments

@EliseiFrederic
Copy link
Collaborator

Description of the failure

icub-main compilation fails when building cfw2can, with libcfw002.h not found

Detailed conditions and logs of the failure

On a fresh install (new icubsrv laptop), with the last Debian image for pc104,
http://www.icub.org/download/pc104-images/icub-live_7.9-17.12.04-rt-amd64.zip
and the latest sources from git.
Firmware was not updated (should it be ?), all other things were built/configured freshly.

Scanning dependencies of target cfw2can
[ 23%] Building CXX object src/libraries/icubmod/cfw2Can/CMakeFiles/cfw2can.dir/yarp_plugin_icubmod_cfw2can.cpp.o
In file included from /usr/local/src/robot/icub-main/build-pc104/src/libraries/icubmod/cfw2Can/yarp_plugin_icubmod_cfw2can.cpp:10:0:
/usr/local/src/robot/icub-main/src/libraries/icubmod/cfw2Can/Cfw2Can.h:38:23: fatal error: libcfw002.h: No such file or directory
#include "libcfw002.h"

@kt10aan
Copy link

kt10aan commented Dec 8, 2017

It may sound trivial (but it has happened in the past) so it's worth a try.
Are you sure you have sshed in the pc104 and ccmaking/compiling from there?

If you have, check during ccmake the cfw2 headers/libraries are found.

@EliseiFrederic
Copy link
Collaborator Author

Thanks for the suggestion, but I was on PC 104 (much slower compilation with the atom processor !) and in a dedicated build directory

The .so is found automatically by ccmake (it is a realtime module, directly included in the live image). The header file is not ! But it stays at the same location in the live
+image. I did try to include this directly. That's enough for cfw2can to compile. But then, yarprobotinterface fails to load cfw2can.
Same for Firmware update : cfw2can is found but fails to load.

The can hardware is fine : with the previous laptop and USB key (décembre 2015) everything is working

@EliseiFrederic
Copy link
Collaborator Author

If I change in /icub-main/src/libraries/icubmod/cfw2Can
the #inclusion of
#include "/lib/modules/4.9.0-3-rt-amd64/iCubDrivers/cfw002/LinuxDriver/API/libcfw002.h"
instead of
//#include "libcfw002.h"

I can compile the full icub-main suite. But yarprobotinterface still fails during startup :

log_new_yarprobotinterface.txt

@barbalberto
Copy link
Collaborator

barbalberto commented Dec 12, 2017

Can you do the following, please?
Remove the build folder for icub-main on pc104
run yarpdev --list and make sure there is no canmotioncontrol module
run ccmake turning on canmotioncontrol flag
then run cmake (single 'c') from terminal and post the output.
compile everything and run
yarp plugin --verbose canmotioncontrol and post the output

@EliseiFrederic
Copy link
Collaborator Author

EliseiFrederic commented Dec 12, 2017 via email

@barbalberto
Copy link
Collaborator

Do you mean, with no more flags than enabled canmotioncontrol, or with
all the usual flags ?

Sorry, I meant with all usual flags, but canmotioncontrol only is enough for the tests done.

When you compiled, the header was still modified or reset as the original? In it was modified, can you try to reset it and see if it compiles now? (if not we will have to check more, but it is a different matter from the robotinterface not starting, see later)

The plugin (when compiled) is correctly found by yarp. The yarprobotinterface is not starting because the log states that config files are old and no more compatible with latest version of canbusmotioncontrol device.

[ERROR]AxisName not found
[ERROR]AxisType not found
[ERROR]fullscalePWM not found
[ERROR]fullscalePWM param not found in config file. Please update robot configuration files or contact https://github.com/robotology/icub-support
[ERROR]One or more errors found while parsing device configuration 
yarpdev: ***ERROR*** driver <canmotioncontrol> was found but could not open

Also ControlBoardWrapper2 config files should be updated

[WARNING] ControlBoardWrapper2 device:
************************************************************************************
* ControlBoardWrapper2 'name' parameter for port name 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/part/     *
* A temporary automatic fix will be done for you, but please fix your config file  *
************************************************************************************ 

This latter is already updated upstream in the https://github.com/robotology/robots-configuration repository so you just need to pull it.

For the canmotioncontrol parameters I think @randaz81 can help you out.

@EliseiFrederic
Copy link
Collaborator Author

Thanks for the updated ControlBoardWrapper2 files !
Is it a clue that the firmware are likely to need update ?

cfw2can still cannot be compiled with the original #include "libcfw002.h".
This is the single module not compiling. No impact on canmotioncontrol.

@EliseiFrederic
Copy link
Collaborator Author

icub@icubsrv:/usr/local/src/robot$ cd robots-configuration
icub@icubsrv:/usr/local/src/robot/robots-configuration$ git pull
Already up-to-date.

Am I missing something there ?

@barbalberto
Copy link
Collaborator

Right now it is too early to determine if a firmware update is required.
Steps are:

  • robot-configuration: pull and make install to install new files and remove ControlBoardWrapper2 warning.
  • updated canbusmotioncontrol config file with @randaz81 support and again make install to install new files.
  • When canbusmotioncontrol starts, it'll check the firmware version and tell you if an update is required.

@randaz81
Copy link
Member

Ok. Update in progress.

@randaz81 randaz81 self-assigned this Dec 14, 2017
@randaz81
Copy link
Member

I updated configuration files by adding missing parameters.

I was not able to test them on a real robot, so please test them carefully, keeping the red button pressed during the first launch and checking with the yarpmotorgui if the encoder values of the large joints are ok (it may require a couple of minutes for the timeouts to expire and complete the calibration).

AxisName parameter in file icub_face.xml shoud be modified by you, replacing joint0,joint1 etc with the following strings: jaw, eyelids, lip-right, lip-left, lip-up, lip-bottom. The order in the file should be the same one displayed by yarpmotorgui (since I don't have a talking head robot here, I'm not sure about the order of the joints). This parameter, however, does not have any effect on the control.

An error message about motorPwmLimit is normal.

If yarprobotinterface does not startup because some other parameter is still missing, please tell me.

@EliseiFrederic
Copy link
Collaborator Author

Thanks @barbalberto and @randaz81 for the update !
I'm ok with the robot-config pull + make install.
Not sure about the make install related to canbusmotioncontrol...

That's probably why we still can't start yarprobotinterface, though the previous errors
with axisname all disappeared.

It seems to complain about cfw2can :
<...>
||| finding paths [plugins]
||| finding paths [plugins]
Cfw2Can::open() returning error -2
yarpdev: ERROR driver was found but could not open
[ERROR]SharedCanBus: could not instantiate can device
yarpdev: ERROR driver was found but could not open
[ERROR]Could not instantiate CAN device
[ERROR]Unable to unitialize CAN driver
yarpdev: ERROR driver was found but could not open
[WARNING]Cannot open device left_arm_mc
[WARNING]Cannot open device left_arm_mc

Full file is attached : log_test_yarprobotinterface_20171215.txt

Just in case it helps :
$ yarp plugin --verbose cfw2can
Yes, this is a YARP plugin
Trying to find library '/usr/local/src/robot/yarp/build-pc104/lib/yarp/cfw2can.so' containing function 'cfw2can' -- fail
error while opening /usr/local/src/robot/yarp/build-pc104/lib/yarp/cfw2can.so:
/usr/local/src/robot/yarp/build-pc104/lib/yarp/cfw2can.so: cannot open shared object file: No such file or directory
Trying to find library '/usr/local/src/robot/icub-main/build-pc104/lib/iCub/cfw2can.so' containing function 'cfw2can' -- found

  • library: /usr/local/src/robot/icub-main/build-pc104/lib/iCub/cfw2can.so
  • system version: 5
  • class name: yarp::dev::Cfw2Can
  • base class: yarp::dev::DeviceDriver

I confirm I still have to include
#include "/lib/modules/4.9.0-3-rt-amd64/iCubDrivers/cfw002/LinuxDriver/API/libc
instead of #include "libcfw002.h"
in src/libraries/icubmod/cfw2Can/Cfw2Can.{cpp,h} to be able to compile cfw2can

@mbrunettini
Copy link
Member

mbrunettini commented Dec 15, 2017

I'm trying to fix the issue working on a new icub-live release.
I'll let you know soon

@mbrunettini
Copy link
Member

mbrunettini commented Dec 18, 2017

A new release of iCub LIVE is now available. We are still testing it, but it fixes the cfw002 module loading and cfw002 API library linking.

@EliseiFrederic
Copy link
Collaborator Author

Indeed, the new version fixes the link/execution problem with the cfw2 problem. Thanks Matteo !

I now have the expected messages about our outofdate firmware :
<...>
||| finding paths [plugins]
||| finding paths [plugins]
[INFO]created device . See C++ class yarp::dev::Cfw2Can for documentation.
[WARNING]SharedCanBus [1] using default thread period = 10ms
[INFO]created device . See C++ class yarp::dev::CanBusAccessPoint for documentation.
printing destinations and inverted map
0 1
2 2
4 3
6 4
[WARNING]Set baud rate not allowed from CanBusAccessPoint implementation
[INFO]using ICUB_CANMASKS_STRICT_FILTER option
[DEBUG]class 0 set
[DEBUG]class 1 set
[DEBUG]class 2 set
[DEBUG]class 3 set
[DEBUG]Can read/write buffers created, buffer size: 500
[INFO]CanBusResources::initialized correctly
Registering new thread 0 out of 500
[INFO]
[INFO]**********************************
[INFO]iCubInterface CAN protocol: 1.6
[INFO]Firmware report:
[INFO]sharedcan [1] joint: 0 can_address: 1 board type: 4 (BLL) version: 2.50 build: 83 CAN_protocol:1.3
[INFO]sharedcan [1] joint: 1 can_address: 1 board type: 4 (BLL) version: 2.50 build: 83 CAN_protocol:1.3
[INFO]sharedcan [1] joint: 2 can_address: 2 board type: 4 (BLL) version: 2.57 build: 83 CAN_protocol:1.3
[INFO]sharedcan [1] joint: 3 can_address: 2 board type: 4 (BLL) version: 2.57 build: 83 CAN_protocol:1.3
[INFO]sharedcan [1] joint: 4 can_address: 3 board type: 3 (4DC) version: 2.19 build: 83 CAN_protocol:1.3
[INFO]sharedcan [1] joint: 5 can_address: 3 board type: 3 (4DC) version: 2.19 build: 83 CAN_protocol:1.3
[INFO]sharedcan [1] joint: 6 can_address: 4 board type: 3 (4DC) version: 2.19 build: 83 CAN_protocol:1.3
[INFO]sharedcan [1] joint: 7 can_address: 4 board type: 3 (4DC) version: 2.19 build: 83 CAN_protocol:1.3
[INFO]**********************************
[INFO]
[ERROR]
[ERROR]###################################################################################
[ERROR]###################################################################################
[ERROR]
[ERROR] It has been detected that your control boards are not using the same
[ERROR] CAN protocol used by iCubinterface. iCubInterface cannot continue.
[ERROR] Please update your system (iCubInterface and/or your control board firmware.
[ERROR] For further information please visit: http://wiki.icub.org/wiki/Firmware
[ERROR]
[ERROR]###################################################################################
[ERROR]###################################################################################
[ERROR]
[ERROR]checkFirmwareVersions() failed. CanBusMotionControl::open returning false,
yarpdev: ERROR driver was found but could not open

@EliseiFrederic
Copy link
Collaborator Author

@barbalberto, I think I'll need help to update the firmware...

I tried the GUI way, and the automated way :

  • With FirmwareUpdate, I can discover, select the identical board, but then I have no idea wich files should be sent to what ?
  • With the automatic script, we have errors ! Maybe the automatic script has not been update for Grenoble01 ?

icub@pc104:/usr/local/src/robot$ icub-firmware-build/updateRobot.sh


Welcome to the automatic firmware updater tool

no filename specified, using default configuration...
cannot open the firmware description file in default directory, searching in alternate path...

found firmware description file:
/usr/local/src/robot/iCubContrib/share/ICUBcontrib/robots/iCubGrenoble01/firmwareUpdate.txt

Remember: Never update the firmware if iCubInterface/robotInterface is running!
If you are not sure about the current status of the robot, turn off the motor boards, turn them on again and wait at 5 seconds before proceeding.
Do you want to proceed with the firmware update? (Y/N)
Y
canLoader --canDeviceType cfw2can --canDeviceNum 0 --boardId 1 --firmware 2BLLDC.1.62.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 0 --boardId 2 --firmware 4DC.2.15.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 0 --boardId 7 --firmware 4DC.2.15.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 0 --boardId 9 --firmware 4DC.1.11.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 0 --boardId 5 --firmware 2BLL_IE.2.54.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 0 --boardId 6 --firmware 2BLL_IE.2.52.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 1 --boardId 1 --firmware 2BLL_IE.2.50.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 1 --boardId 2 --firmware 2BLL_IE.2.57.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 1 --boardId 3 --firmware 4DC.2.19.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 5 --boardId 5 --firmware 4DC.2.28.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 5 --boardId 7 --firmware 4DC.2.30.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 2 --boardId 1 --firmware 2BLL_IE.2.50.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 2 --boardId 2 --firmware 2BLL_IE.2.57.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 2 --boardId 3 --firmware 4DC.2.19.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 6 --boardId 5 --firmware 4DC.2.28.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 6 --boardId 7 --firmware 4DC.2.30.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 3 --boardId 5 --firmware 2BLL_IE.2.51.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 3 --boardId 6 --firmware 2BLL_IE.2.51.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 3 --boardId 7 --firmware 2BLL_IE.2.51.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 4 --boardId 8 --firmware 2BLL_IE.2.51.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 4 --boardId 9 --firmware 2BLL_IE.2.51.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
canLoader --canDeviceType cfw2can --canDeviceNum 4 --boardId 10 --firmware 2BLL_IE.2.51.out.S
Initializing prompt version of canLoader...
[ERROR]invalid --firmware parameter
[ERROR]file not found
cfw2can 0 1 2BLLDC.1.62.out.S --> Error: INVALID_PARAM_FILE
cfw2can 0 2 4DC.2.15.out.S --> Error: INVALID_PARAM_FILE
cfw2can 0 7 4DC.2.15.out.S --> Error: INVALID_PARAM_FILE
cfw2can 0 9 4DC.1.11.out.S --> Error: INVALID_PARAM_FILE
cfw2can 0 5 2BLL_IE.2.54.out.S --> Error: INVALID_PARAM_FILE
cfw2can 0 6 2BLL_IE.2.52.out.S --> Error: INVALID_PARAM_FILE
cfw2can 1 1 2BLL_IE.2.50.out.S --> Error: INVALID_PARAM_FILE
cfw2can 1 2 2BLL_IE.2.57.out.S --> Error: INVALID_PARAM_FILE
cfw2can 1 3 4DC.2.19.out.S --> Error: INVALID_PARAM_FILE
cfw2can 5 5 4DC.2.28.out.S --> Error: INVALID_PARAM_FILE
cfw2can 5 7 4DC.2.30.out.S --> Error: INVALID_PARAM_FILE
cfw2can 2 1 2BLL_IE.2.50.out.S --> Error: INVALID_PARAM_FILE
cfw2can 2 2 2BLL_IE.2.57.out.S --> Error: INVALID_PARAM_FILE
cfw2can 2 3 4DC.2.19.out.S --> Error: INVALID_PARAM_FILE
cfw2can 6 5 4DC.2.28.out.S --> Error: INVALID_PARAM_FILE
cfw2can 6 7 4DC.2.30.out.S --> Error: INVALID_PARAM_FILE
cfw2can 3 5 2BLL_IE.2.51.out.S --> Error: INVALID_PARAM_FILE
cfw2can 3 6 2BLL_IE.2.51.out.S --> Error: INVALID_PARAM_FILE
cfw2can 3 7 2BLL_IE.2.51.out.S --> Error: INVALID_PARAM_FILE
cfw2can 4 8 2BLL_IE.2.51.out.S --> Error: INVALID_PARAM_FILE
cfw2can 4 9 2BLL_IE.2.51.out.S --> Error: INVALID_PARAM_FILE
cfw2can 4 10 2BLL_IE.2.51.out.S --> Error: INVALID_PARAM_FILE

@EliseiFrederic
Copy link
Collaborator Author

updateRobot.sh worked sucessfully, when launched directly from icub-firmware-build :-)

May I suggest to modify :

Launch the firmware update script (icub-firmware-build/updateRobot.sh):
from http://wiki.icub.org/wiki/Firmware#Standard_firmware_update_.28DSP.29
into something like
"Launch the firmware update script updateRobot.sh from the icub-firmware-build directory" ?

@EliseiFrederic
Copy link
Collaborator Author

EliseiFrederic commented Dec 21, 2017

So, I tried to launch yarprobotinterface with red button pressed, to validate the robotconfig files that @randaz81 updated.

Everything seems fine up to :
<...>
[INFO]Entering action level 5 of phase startup
[ERROR]Target device TalkingHead_Calibrator (network = Calibrator ) does not exist.
[ERROR]Cannot run attach action on device head_mc_wrapper
[ERROR]Target device TalkingFace_Calibrator (network = Calibrator ) does not exist.
[ERROR]Cannot run attach action on device face_mc_wrapper

This might be the cause that later it starts an automatic shutdown :
<...>
[INFO]icub/cartesianController/right_arm started successfully
[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.
[WARNING]There was some problem running actions for startup phase . Please check the log and your configuration
[INFO]startup phase finished.
[ERROR]Error in startup phase... see previous messages for more info
[WARNING]Interrupt # 1 # received.
[INFO]Interrupt received. Stopping all running threads.
[INFO]interrupt1 phase starting...
[INFO]Entering action level 1 of phase interrupt1
<...>

Any idea of the cause for this problem ?
Any .ini file than I can easily modify to check for the other parts of the robot ?

If that helps, I see 3 files in /usr/local/src/robot/iCubContrib/share/ICUBcontrib/robots/iCubGrenoble01/calibrators :
-rw-r--r-- 1 icub icub 2713 déc. 7 19:05 face_calib.xml
-rw-r--r-- 1 icub icub 2709 déc. 7 19:05 head_calib.xml
-rw-r--r-- 1 icub icub 3510 déc. 7 19:05 head_face_calib.xml
but
icub_all.xml included by yarpmotorgui.ini
only references :
devices file="calibrators/head_calib.xml"
devices file="calibrators/face_calib.xml"

$grep TalkingHead /
calibrators/head_calib.xml: param name="deviceName" TalkingHead_Calibrator
calibrators/head_face_calib.xml: param name="deviceName" TalkingHeadFace_Calibrator

an extra Head before Face maybe ?

@barbalberto
Copy link
Collaborator

Hi @EliseiFrederic, there is a mismatch in the wrapper config file.

in https://github.com/robotology/robots-configuration/blob/master/iCubGrenoble01/wrappers/motorControl/face_mc_wrapper.xml @line 19 the keywork "Calibrator" must refer to the tag name of the device parametricCalibrator, which in the file https://github.com/robotology/robots-configuration/blob/master/iCubGrenoble01/calibrators/face_calib.xml at line 4 is is set to "face_calibrator"

So, to cut a long story shirt, in hte wrapper files, change the "Calibrators" param to head_calibrator and head_calibrator respectively. I think that should fix the issue.

@EliseiFrederic
Copy link
Collaborator Author

Thanks for this solution !
yarprobotinterface now stays running 👍

I can launch yarpmotorgui, with red button pressed, in the hope to validate than the measured/corrected joints are in the correct range within the new robotconfig xml files.
The joint values are updated (encoders). But neither the "position" sliders, nor their range, are displayed (as they used too with the old motorgui).
It seems they don't even get loaded :

$ yarpmotorgui
||| configuring
||| default config file specified as yarpmotorgui.ini
||| checking [/localdata/exports/code/robots-configuration/build/yarpmotorgui.ini] (pwd)
||| checking [/usr/local/src/robot/iCubContrib/share/ICUBcontrib/robots/iCubGrenoble01/yarpmotorgui.ini] (robot)
||| found /usr/local/src/robot/iCubContrib/share/ICUBcontrib/robots/iCubGrenoble01/yarpmotorgui.ini
QObject::connect: No such signal MainWindow::internalClose()
QObject::connect: (sender name: 'MainWindow')
QObject::connect: (receiver name: 'MainWindow')
[WARNING]robotDescriptionServer not found, robot parts will be set manually.
[DEBUG]Appending /icub/head
[DEBUG]Appending /icub/face
[DEBUG]Appending /icub/torso
[DEBUG]Appending /icub/left_arm
[DEBUG]Appending /icub/right_arm
[DEBUG]Appending /icub/right_leg
[DEBUG]Appending /icub/left_leg
[DEBUG]Checking the existence of: /yarpmotorgui0//icub/face/rpc:o
[DEBUG]ADDRESS is:
||| finding paths [plugins]
||| checking [/localdata/exports/code/robots-configuration/build/plugins] (pwd)
||| checking [/usr/local/src/robot/iCubContrib/share/ICUBcontrib/robots/iCubGrenoble01/plugins] (robot)
||| checking [/home/icub/.config/yarp/plugins] (YARP_CONFIG_HOME)
||| checking [/home/icub/.local/share/yarp/plugins] (YARP_DATA_HOME)
||| checking [/etc/yarp/plugins] (YARP_CONFIG_DIRS)
||| checking [/share/yarp/plugins] (YARP_DATA_DIRS)
||| checking [/share/iCub/plugins] (YARP_DATA_DIRS)
||| checking [/usr/local/src/robot/iCubContrib/share/ICUBcontrib/plugins] (YARP_DATA_DIRS)
||| found /usr/local/src/robot/iCubContrib/share/ICUBcontrib/plugins
||| checking [/usr/local/src/robot/icub-tests/suits/plugins] (YARP_DATA_DIRS)
yarp: Port /yarpmotorgui0//icub/face/rpc:o active at tcp://192.168.70.52:10078/
yarp: Port /yarpmotorgui0//icub/face/command:o active at tcp://192.168.70.52:10079/
yarp: Port /yarpmotorgui0//icub/face/stateExt:i active at tcp://192.168.70.52:10080/
yarp: Sending output from /yarpmotorgui0//icub/face/rpc:o to /icub/face/rpc:i using tcp
yarp: Sending output from /yarpmotorgui0//icub/face/command:o to /icub/face/command:i using udp
yarp: Receiving input from /icub/face/stateExt:o to /yarpmotorgui0//icub/face/stateExt:i using udp
[INFO]created device <remote_controlboard>. See C++ class yarp::dev::RemoteControlBoard for documentation.
[DEBUG]Setting a valid finder
yarp: Port /yarpmotorgui/face/sequence:o active at tcp://192.168.70.52:10081/
[DEBUG]Initializing interfaces...
[DEBUG]Opening interfaces...
[INFO]face iencs->getEncoders() ok!
[ERROR]Error while getting current range, part face joint 0
[ERROR]Error while getting current range, part face joint 1
[ERROR]Error while getting current range, part face joint 2
[ERROR]Error while getting current range, part face joint 3
[ERROR]Error while getting current range, part face joint 4
[ERROR]Error while getting current range, part face joint 5
[DEBUG]Checking the existence of: /yarpmotorgui0//icub/head/rpc:o
[DEBUG]ADDRESS is:
yarp: Port /yarpmotorgui0//icub/head/rpc:o active at tcp://192.168.70.52:10082/
yarp: Port /yarpmotorgui0//icub/head/command:o active at tcp://192.168.70.52:10083/
yarp: Port /yarpmotorgui0//icub/head/stateExt:i active at tcp://192.168.70.52:10084/
yarp: Sending output from /yarpmotorgui0//icub/head/rpc:o to /icub/head/rpc:i using tcp
yarp: Sending output from /yarpmotorgui0//icub/head/command:o to /icub/head/command:i using udp
yarp: Receiving input from /icub/head/stateExt:o to /yarpmotorgui0//icub/head/stateExt:i using udp
[INFO]created device <remote_controlboard>. See C++ class yarp::dev::RemoteControlBoard for documentation.
[DEBUG]Setting a valid finder
yarp: Port /yarpmotorgui/head/sequence:o active at tcp://192.168.70.52:10085/
[DEBUG]Initializing interfaces...
[DEBUG]Opening interfaces...
[INFO]head iencs->getEncoders() ok!
[ERROR]Error while getting current range, part head joint 0
[ERROR]Error while getting current range, part head joint 1
[ERROR]Error while getting current range, part head joint 2
[ERROR]Error while getting current range, part head joint 3
[ERROR]Error while getting current range, part head joint 4
[ERROR]Error while getting current range, part head joint 5
[DEBUG]Checking the existence of: /yarpmotorgui0//icub/left_arm/rpc:o
[DEBUG]ADDRESS is:
yarp: Port /yarpmotorgui0//icub/left_arm/rpc:o active at tcp://192.168.70.52:10086/
yarp: Port /yarpmotorgui0//icub/left_arm/command:o active at tcp://192.168.70.52:10087/
yarp: Port /yarpmotorgui0//icub/left_arm/stateExt:i active at tcp://192.168.70.52:10088/
yarp: Sending output from /yarpmotorgui0//icub/left_arm/rpc:o to /icub/left_arm/rpc:i using tcp
yarp: Sending output from /yarpmotorgui0//icub/left_arm/command:o to /icub/left_arm/command:i using udp
yarp: Receiving input from /icub/left_arm/stateExt:o to /yarpmotorgui0//icub/left_arm/stateExt:i using udp
[INFO]created device <remote_controlboard>. See C++ class yarp::dev::RemoteControlBoard for documentation.
[DEBUG]Setting a valid finder
yarp: Port /yarpmotorgui/left_arm/sequence:o active at tcp://192.168.70.52:10089/
[DEBUG]Initializing interfaces...
[DEBUG]Opening interfaces...
[INFO]left_arm iencs->getEncoders() ok!
[ERROR]Error while getting current range, part left_arm joint 0
[ERROR]Error while getting current range, part left_arm joint 1
[ERROR]Error while getting current range, part left_arm joint 2
[ERROR]Error while getting current range, part left_arm joint 3
[ERROR]Error while getting current range, part left_arm joint 4
[ERROR]Error while getting current range, part left_arm joint 5
[ERROR]Error while getting current range, part left_arm joint 6
[ERROR]Error while getting current range, part left_arm joint 7
[ERROR]Error while getting current range, part left_arm joint 8
[ERROR]Error while getting current range, part left_arm joint 9
[ERROR]Error while getting current range, part left_arm joint 10
[ERROR]Error while getting current range, part left_arm joint 11
[ERROR]Error while getting current range, part left_arm joint 12
[ERROR]Error while getting current range, part left_arm joint 13
[ERROR]Error while getting current range, part left_arm joint 14
[ERROR]Error while getting current range, part left_arm joint 15
[DEBUG]Checking the existence of: /yarpmotorgui0//icub/left_leg/rpc:o
[DEBUG]ADDRESS is:
yarp: Port /yarpmotorgui0//icub/left_leg/rpc:o active at tcp://192.168.70.52:10090/
yarp: Port /yarpmotorgui0//icub/left_leg/command:o active at tcp://192.168.70.52:10091/
yarp: Port /yarpmotorgui0//icub/left_leg/stateExt:i active at tcp://192.168.70.52:10092/
yarp: Sending output from /yarpmotorgui0//icub/left_leg/rpc:o to /icub/left_leg/rpc:i using tcp
yarp: Sending output from /yarpmotorgui0//icub/left_leg/command:o to /icub/left_leg/command:i using udp
yarp: Receiving input from /icub/left_leg/stateExt:o to /yarpmotorgui0//icub/left_leg/stateExt:i using udp
[INFO]created device <remote_controlboard>. See C++ class yarp::dev::RemoteControlBoard for documentation.
[DEBUG]Setting a valid finder
yarp: Port /yarpmotorgui/left_leg/sequence:o active at tcp://192.168.70.52:10093/
[DEBUG]Initializing interfaces...
[DEBUG]Opening interfaces...
[INFO]left_leg iencs->getEncoders() ok!
[ERROR]Error while getting current range, part left_leg joint 0
[ERROR]Error while getting current range, part left_leg joint 1
[ERROR]Error while getting current range, part left_leg joint 2
[ERROR]Error while getting current range, part left_leg joint 3
[ERROR]Error while getting current range, part left_leg joint 4
[ERROR]Error while getting current range, part left_leg joint 5
[DEBUG]Checking the existence of: /yarpmotorgui0//icub/right_arm/rpc:o
[DEBUG]ADDRESS is:
||| finding paths [plugins]
yarp: Port /yarpmotorgui0//icub/right_arm/rpc:o active at tcp://192.168.70.52:10094/
yarp: Port /yarpmotorgui0//icub/right_arm/command:o active at tcp://192.168.70.52:10095/
yarp: Port /yarpmotorgui0//icub/right_arm/stateExt:i active at tcp://192.168.70.52:10096/
yarp: Sending output from /yarpmotorgui0//icub/right_arm/rpc:o to /icub/right_arm/rpc:i using tcp
yarp: Sending output from /yarpmotorgui0//icub/right_arm/command:o to /icub/right_arm/command:i using udp
yarp: Receiving input from /icub/right_arm/stateExt:o to /yarpmotorgui0//icub/right_arm/stateExt:i using udp
[INFO]created device <remote_controlboard>. See C++ class yarp::dev::RemoteControlBoard for documentation.
[DEBUG]Setting a valid finder
yarp: Port /yarpmotorgui/right_arm/sequence:o active at tcp://192.168.70.52:10097/
[DEBUG]Initializing interfaces...
[DEBUG]Opening interfaces...
[INFO]right_arm iencs->getEncoders() ok!
[ERROR]Error while getting current range, part right_arm joint 0
[ERROR]Error while getting current range, part right_arm joint 1
[ERROR]Error while getting current range, part right_arm joint 2
[ERROR]Error while getting current range, part right_arm joint 3
[ERROR]Error while getting current range, part right_arm joint 4
[ERROR]Error while getting current range, part right_arm joint 5
[ERROR]Error while getting current range, part right_arm joint 6
[ERROR]Error while getting current range, part right_arm joint 7
[ERROR]Error while getting current range, part right_arm joint 8
[ERROR]Error while getting current range, part right_arm joint 9
[ERROR]Error while getting current range, part right_arm joint 10
[ERROR]Error while getting current range, part right_arm joint 11
[ERROR]Error while getting current range, part right_arm joint 12
[ERROR]Error while getting current range, part right_arm joint 13
[ERROR]Error while getting current range, part right_arm joint 14
[ERROR]Error while getting current range, part right_arm joint 15
[DEBUG]Checking the existence of: /yarpmotorgui0//icub/right_leg/rpc:o
[DEBUG]ADDRESS is:
yarp: Port /yarpmotorgui0//icub/right_leg/rpc:o active at tcp://192.168.70.52:10098/
yarp: Port /yarpmotorgui0//icub/right_leg/command:o active at tcp://192.168.70.52:10099/
yarp: Port /yarpmotorgui0//icub/right_leg/stateExt:i active at tcp://192.168.70.52:10100/
yarp: Sending output from /yarpmotorgui0//icub/right_leg/rpc:o to /icub/right_leg/rpc:i using tcp
yarp: Sending output from /yarpmotorgui0//icub/right_leg/command:o to /icub/right_leg/command:i using udp
yarp: Receiving input from /icub/right_leg/stateExt:o to /yarpmotorgui0//icub/right_leg/stateExt:i using udp
[INFO]created device <remote_controlboard>. See C++ class yarp::dev::RemoteControlBoard for documentation.
[DEBUG]Setting a valid finder
yarp: Port /yarpmotorgui/right_leg/sequence:o active at tcp://192.168.70.52:10101/
[DEBUG]Initializing interfaces...
[DEBUG]Opening interfaces...
[INFO]right_leg iencs->getEncoders() ok!
[ERROR]Error while getting current range, part right_leg joint 0
[ERROR]Error while getting current range, part right_leg joint 1
[ERROR]Error while getting current range, part right_leg joint 2
[ERROR]Error while getting current range, part right_leg joint 3
[ERROR]Error while getting current range, part right_leg joint 4
[ERROR]Error while getting current range, part right_leg joint 5
[DEBUG]Checking the existence of: /yarpmotorgui0//icub/torso/rpc:o
[DEBUG]ADDRESS is:
yarp: Port /yarpmotorgui0//icub/torso/rpc:o active at tcp://192.168.70.52:10102/
yarp: Port /yarpmotorgui0//icub/torso/command:o active at tcp://192.168.70.52:10103/
yarp: Port /yarpmotorgui0//icub/torso/stateExt:i active at tcp://192.168.70.52:10104/
yarp: Sending output from /yarpmotorgui0//icub/torso/rpc:o to /icub/torso/rpc:i using tcp
yarp: Sending output from /yarpmotorgui0//icub/torso/command:o to /icub/torso/command:i using udp
yarp: Receiving input from /icub/torso/stateExt:o to /yarpmotorgui0//icub/torso/stateExt:i using udp
[INFO]created device <remote_controlboard>. See C++ class yarp::dev::RemoteControlBoard for documentation.
[DEBUG]Setting a valid finder
yarp: Port /yarpmotorgui/torso/sequence:o active at tcp://192.168.70.52:10105/
[DEBUG]Initializing interfaces...
[DEBUG]Opening interfaces...
[INFO]torso iencs->getEncoders() ok!
[ERROR]Error while getting current range, part torso joint 0
[ERROR]Error while getting current range, part torso joint 1
[ERROR]Error while getting current range, part torso joint 2
yarp: Removing output from /yarpmotorgui0//icub/face/rpc:o to /icub/face/rpc:i
yarp: Removing output from /yarpmotorgui0//icub/face/command:o to /icub/face/command:i
yarp: Removing input from /icub/face/stateExt:o to /yarpmotorgui0//icub/face/stateExt:i
yarp: Removing output from /yarpmotorgui0//icub/left_arm/rpc:o to /icub/left_arm/rpc:i
yarp: Removing output from /yarpmotorgui0//icub/left_arm/command:o to /icub/left_arm/command:i
yarp: Removing input from /icub/left_arm/stateExt:o to /yarpmotorgui0//icub/left_arm/stateExt:i
yarp: Removing output from /yarpmotorgui0//icub/right_arm/rpc:o to /icub/right_arm/rpc:i
yarp: Removing output from /yarpmotorgui0//icub/right_arm/command:o to /icub/right_arm/command:i
yarp: Removing input from /icub/right_arm/stateExt:o to /yarpmotorgui0//icub/right_arm/stateExt:i
yarp: Removing output from /yarpmotorgui0//icub/torso/rpc:o to /icub/torso/rpc:i
yarp: Removing output from /yarpmotorgui0//icub/torso/command:o to /icub/torso/command:i
yarp: Removing input from /icub/torso/stateExt:o to /yarpmotorgui0//icub/torso/stateExt:i
yarp: Removing output from /yarpmotorgui0//icub/right_leg/rpc:o to /icub/right_leg/rpc:i
yarp: Removing output from /yarpmotorgui0//icub/right_leg/command:o to /icub/right_leg/command:i
yarp: Removing input from /icub/right_leg/stateExt:o to /yarpmotorgui0//icub/right_leg/stateExt:i
yarp: Removing output from /yarpmotorgui0//icub/left_leg/rpc:o to /icub/left_leg/rpc:i
yarp: Removing output from /yarpmotorgui0//icub/left_leg/command:o to /icub/left_leg/command:i
yarp: Removing input from /icub/left_leg/stateExt:o to /yarpmotorgui0//icub/left_leg/stateExt:i
yarp: Removing output from /yarpmotorgui0//icub/head/rpc:o to /icub/head/rpc:i
yarp: Removing output from /yarpmotorgui0//icub/head/command:o to /icub/head/command:i
yarp: Removing input from /icub/head/stateExt:o to /yarpmotorgui0//icub/head/stateExt:i

@EliseiFrederic
Copy link
Collaborator Author

Here is a snapshot of what we get...
How can we verify that the motor limits are ok with the new files ?
snapshot_yarpmotorgui

@julijenv
Copy link
Collaborator

julijenv commented Jan 5, 2018

Hi @EliseiFrederic ,
if the head is positionned as if i would be already calibrated, the first 3 joints should be 0 or close (as the value that you can read are coming from absolute encoder - so the value should reflect the position.
Could you give us a picture of the head position at starting? (how is the head in the rest position on which you put or left it).
from the value I would guess the head is bent in frontward position - chin close to the chest- Am i right?
for the other high value for joint 4 ( 5th joint of the head - eye_verison) you will need to launch the calibration for real in order to understand if everthing is alright becasue obth eye need to go to theextreme limit to determine where the zero is. (you may need later to adjust at yoour will by changing delta in the config files to be more precise).
let us knkw

@julijenv julijenv closed this as completed Jan 5, 2018
@EliseiFrederic
Copy link
Collaborator Author

You're probably perfectly right about the head orientation (it is left opened during the USB key upgrade process), but my question was more generic than just for the head as I was trying to follow advices from @randaz81 about the red button depressed for our first motor-try after the file updates :
#583 (comment)

Should we only validate that the 0 positions for torso, shoulders etc are ok, and not the min/max ranges ? I remember that during the previous big upgrade of the robot with the older yarpmotorgui/file format I was asked to move the joints manually to check the ranges for the first run with the red button pressed.
I admit I'm relunctant to run without the red button, as the calibration movements could go too far without the right limits, couldn't they ?

Maybe it's a new behaviour of the release that the limits are not read if the red button is pressed ?
None of the encoders (torso, arms, legs...) could get their ranges, as posted in
#583 (comment)

[INFO]torso iencs->getEncoders() ok!
[ERROR]Error while getting current range, part torso joint 0
[ERROR]Error while getting current range, part torso joint 1
[ERROR]Error while getting current range, part torso joint 2

I understand that the calibration sort of alters the range and translate some hardware-read values of the joints into the software-displayed/used range. Maybe the newer/recent yarp/icub split does not mix these anymore and that's the reason why I get these errors and don't have them displayed, but I would prefer to have an explicit confirmation before taking the risk to run the robot without the red button ;-)

Thanks in advance !

@EliseiFrederic EliseiFrederic reopened this Jan 5, 2018
@julijenv
Copy link
Collaborator

julijenv commented Jan 9, 2018

Hi @EliseiFrederic ,
Marco @randaz81 , just want you to make sure that the values are close to zero when the robot is in a standing straight position (torso, leg and head straight like if the calibration phase has been done) - visual check before laucnhing fr real the robot. For the arms try to bring them up tp the final position of the calibration and check if the value are close to the usual one [ -30 30 0 45], check if everything looks alright - close the yarprobotinterface. at that point no need to fear anything just start the robot in the normal way ( NO RED BUTTON PRESSED) and have an eye during the first time the robot calibrates as actuated and check if it goes to the position it should go.
If everything went smooth just control the movement of every single joint range and verify that it is good - but I would guess as those files mx min value are egual to all robots it wont be a problem anymore.
Let us know

@EliseiFrederic
Copy link
Collaborator Author

Thanks for your help, iCubGrenoble01 now compiles and run !

We still have red errors in yarprobotinterface and yarpmotorgui though :

  • in yarprobotinterface :
    [ERROR]TalkingFace_Calibrator :Timeout while calibrating 2
    [ERROR]TalkingFace_Calibrator : set 1 : Calibration went wrong! Disabling axes and keeping safe pid limit

  • in yarpmotorgui for every of the joints groups (face, head, arm, legs and torso) :
    [DEBUG]Initializing interfaces...
    [DEBUG]Opening interfaces...
    [INFO]torso iencs->getEncoders() ok!
    [ERROR]Error while getting current range, part torso joint 0
    [ERROR]Error while getting current range, part torso joint 1
    [ERROR]Error while getting current range, part torso joint 2

though the sliders intervals in the GUI are displayed now and seem correct...

@EliseiFrederic
Copy link
Collaborator Author

It takes more than 11 seconds to start yarpmotorgui, because of all the
[ERROR]Error while getting current range, part

The pending messages in yarprobotinterface are :
[ERROR]getCurrentRangeRaw not yet implemented for CanBusMotionControl

Anything we can do about this ?

@barbalberto
Copy link
Collaborator

Some error messages about something missing is perfectly normal. The motorGui, at startup, asks a lot of stuff to the robot, some of them are implemented, some other aren't, depending on the robot. That one in particular is asking the maximum allowed current the motor can handle. That's a side information the gui can safely ignore, it is just a piece of information to be displayed.

The error about something missing piece of information does not have any impact on the start-up timing.

@EliseiFrederic
Copy link
Collaborator Author

Thanks for your answer.
So 11 seconds to start yarpmotorgui is a normal timing ?
If yes, I think we can close this issue !

@barbalberto
Copy link
Collaborator

Up to 5 or 6 second is normal, 11 is quite high, but it may be related to network issues or CPU workload.
I simply meant it is not related to the getSomeThing errors. Just wait for the robotInterface startup to be completed before starting the gui. A part from that, I can't think of anything else to speed up the gui.

@EliseiFrederic
Copy link
Collaborator Author

Maybe I was not clear :

  • yarprobotinterface has finished initialization. With no red error.
  • everytime I start yarpmotorgui : yarpmotorgui needs 11 seconds, prints the red error messages on its own, and get yarprobotinterface to print his own message
  • leaving yarpmotorgui and restarting it gives no improvement. starting a second one while the first is running does the same too.

@stale
Copy link

stale bot commented Oct 3, 2019

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

@stale stale bot added the wontfix label Oct 3, 2019
@pattacini pattacini removed the wontfix label Oct 3, 2019
@traversaro
Copy link
Member

Thanks for your answer. So 11 seconds to start yarpmotorgui is a normal timing ? If yes, I think we can close this issue !

Hi @EliseiFrederic . I do not know if you are still able to reproduce this issue, but indeed has @barbalberto mentions that could be related to the computer on which yarpmotorgui is launched. However, I strongly suggest to open a new issue if that is still a problem, thanks! As the main problem reported (compilation failure) has been solved, I think we can close this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants