Software meetings on iCub and YARP

From Wiki for iCub and Friends
Jump to: navigation, search

Next Meeting

  • Descrizione dell'hardware (i.e. flags --headV2, --legsV2) usati dai vari moduli wholeBodyDynamics, gaze controller etc dovrebbero essere contenuti nel file generale icub.ini, a cui tutti i moduli dovrebbero attingere, piuttosto che nelle configurazioni dei singoli moduli.
  • Move position control commands from streaming to rpc

Meeting 04/12/2012

Meeting held 11-13 meeting room 3rd floor.

  • Builder
    • Elena and Ali work together to fix missing minimal features in the builder
  • IDL

Vadim, Marco and Ugo will start porting some modules. We will work on a branch see below.

  • List of modules
    • lumachroma
    • ispeak
    • motioncut
    • ...

Work on branch:

  • Misc
    • persistent connections for rpc command line?
  yarp rpc <dest_port> already does this
    • verify how to fix parameter list in yarp rpc/yarp read write
  Sent email to yarp developers to get feedback from users

Meeting 20/11/2012

Meeting held 11-13 meeting room 3rd floor.

Participants: Lorenzo, Elena, Ali, Vadim, Randaz, Daniele, Andrea, Ugo

cmake_install_prefix [...]

Currently this cmake variable points to the "/usr/local" on Linux machines. I think that $ICUB_DIR could be a better default value since it would avoid the problem of having two copies of out-of-sync binaries in the path. (Randaz).

  • check if in future releases of the linux pc104 we want to remove ICUB_DIR/bin from path and install sf in usr/local/bin

PID design for the new boards [...]

The high-level designer should not be concerned about the way the FW handles the PID parameters. Example: once the Kp values is established it should be sent straightaway to the FW without any further manipulation (such as multiplication by ticks/angles ratio, shifting). To achieve that one definite solution would be to send parameters with float size (Ugo).

  • consider for next release of firmware with dsp that supports floats


Discuss how to improve the documentation.

  • Clean orphan pages
  • Fix -->
  • --> ?
  • Change documentation for applications, use individual page on wiki and link them in doxygen/pages can have pictures and links to videos/link to answers (see above)
   See also:
  • a system for bug tracking

Definition of Components

How to proceed to:

  • Use of IDL
  • Description of modules/YARP builder

Next meeting. 4/12.

New iCubInterface

  • Work to use new robotInterface
    • icub.ini --> xml
    • port modules (new skin, accelerometers, debug interface, can backdoor)

Todo: Marco R., Daniele, Alessandro

Meeting 09/10/2012

Meeting held 11-13 meeting room 3rd floor.

Participants: Lorenzo, Marco R., Vadim, Ali, Daniele, Elena, Ugo.

Discussion on thrift

  • Please get familiar with Elena's tutorials (see below)
  • Elena, Ali and Ugo: start writing xml descriptions for some modules to be used in the builder.

Utilities for yarp ports [DONE]

  • iCub/main/tools/portsmerge for Vector (available)
  • upsampling/downsampling (missing)
    • Move portsmerge to YARP [DONE]
    • Implement upsampling/downsampling [DONE]

Compilation VS 2012 and 64 bits

  • Binaries for YARP and iCub are available. We need Ipopt (TODO: Ugo)
  • Ipopt for VS12 Win32 [DONE]
  • Ipopt for Win64: Intel Fortran Compiler for x64 seems to be mandatory. [TODO]

OpenCV versions

  • We need to check:
    • problems with MotionCUT with newer versions of OpenCV
    • problems with Disparity map with newer versions of OpenCV
  • Current situation we use OpenCV 2.2
  • Need TBB in binaries, both Windows and Linux
  • Some problems with newer versions:
    • motionCUT does not work properly (but compiles) with newer versions
    • compilation problems in segmentation code (contrib)
  • Disparity map uses OpenCV 2.2
  • Possible solution: distribute precompiled version of opencv with TBB/CUDA/ffmpg, make a package with different name that conflicts with the version in Ubuntu/Debian.
   On Debian testing since February 2012 opencv 2.3.1 (2.3.1-8) is compiled with -DWITH_TBB on i386, amd64 and ia64 09:36, 12 October 2012 (CEST)

Revision of iCubInterface

  • robotinterface, new xml format for configuration (IN PROGRESS)
  • Control boards firmware version should be displayed in iCubInterfaceGui (TODO: Alessandro)

Bug in inertial sensor instantiation

Sometimes the /icub/inertial port is simply not opened when iCubInterface is launched.

Check inertial sensor code to see if there are error messages, add error check/prints in case they are missing. (TODO: nobody)

Fingers FW: apply torque offsets upon positionMove

  • To compensate for stiction we need to add feedforward offset; i.e. offset added to the pwm whenever the required speed of the joint is != 0. We need two values one for speed > 0 one of speed < 0.
  • Add to:
    • YARP's Pid interface (Marco)
    • Firmware (Marco)
    • iCubInterface configuration files

Meeting 11/09/2012

Meeting held 11-13 meeting room 3rd floor.

Participants: Lorenzo, Marco R., Carlo, Ali, Daniele, Andrea, Ugo.

Thrift [...]

All: have a look at Elena's tutorials

Documentation for applications [...]

General reminder, document example applications when appropriate (see dataPlayer application).

Motor control interface with partial number of joints [...]

As of discussion with Ugo we have two solutions:

  • new remote control board object (proposal)
  • stateless interfaces TODO (Ugo & Marco to take them up)

Example prototypes:

positionMove(int axes, int *map, double *values);

We agreed to not go for brand new interfaces but rather to extend current ones (IPosition, IVelocity, IImpedance, ITorques) with default methods (non pure virtual).

GetReference [...]

Discuss how to control what information is available as broadcast.

  • at the moment what to send as broadcast is in ini file, requires iCubInterface restart
  • in the future it could be in separate user interface accessible through port
  • handling of reference to be fixed (Marco): DONE
  • reference to be put on broadcast selectively TODO

yarpscope [...]

Identified some bugs to be fixed:

  • connect after output port is created: defined behavior, when source is specified connections are established automatically otherwise not. In former case temporary ports are created by the yarpscope, otherwise they need to be specified. TODO
  • parameter: --name TODO

Discussion with Daniele on revising parameters.

We discussed some features in order of importance:

  • timestamps for t axis, scale with respect to first (share single time for each instance of yarpscope)
  • cursors like in a scope
  • re-scale

Meeting 01/08/2012

Meeting held 11-13 meeting room 3rd floor.

Participants: Lorenzo, Vadim, Marco R., Carlo, Elena, Ali, Daniele, Alessandro, Ugo.

mcast [?]

Normally working correctly with sporadic failure difficult to debug. Usage was suspended again. Decided to go back using it and try to debug problems when they occur. Lorenzo suggestion: can we limit use of mcast for broadcasting images to modules from camcalib? (maybe it is already like this). This may limit fluctuations and help focusing on the problem. We should try to make the problem repeatable.

  • TODO: don't give up (all).
  • VADIM: Working with mcast and so far no problems...will push it further..

bayer carrier [DONE]

Working ok. However when the fg streams images in raw bayer format the saturation regulation is not available. This is limiting usage bc we have to switch back and forth when doing the ball demo.

This is not a huge deal bc saturation is only needed for the red-ball demo. However it is not negligible so we should try to fix it.

  • DONE: implement saturation regulation in the camcalib (Vadim)
  • VADIM: Can now increase saturation on bayer images, from the rpc port of camCalib

yarpscope [DONE]

Working ok, fixing bugs as they are reported. Introduced default policy in YARP so that xml files are searched in the local directory or in ICUB_ROOT if YARP_POLICY=ICUB_ROOT.

  • DONE: write documentation (Daniele)

You can find it here:

  • DONE: modify .bashrc in the cluster so that YARP_POLICY env variable is set to ICUB_ROOT (Ugo)

IDL/Thrift [DONE]

Working ok. We need to start using it. Elena has been using it in xperience; however we need a simple tutorial to show basic usage.

  • DONE: write simple tutorial (Elena)

New links: and, for the brave at heart: (They are both linked from the main YARP Tutorials page)

YARP builder [...]

We need to define a standard format for writing manifest xml files for modules. Ideally this file should contain module documentation, parameters and ports. The file could be parsed by doxygen to produce documentation or pre-parsed by script to produce doxygen code. Agreed to keep it simple unless needed.

  • TODO: come up with template and circulate (Ali).

Subversion: branches and head development [DONE]

We discussed how to develop happily without affecting users. We decided that we should advertise usage of snapshots or releases to users that do not want to be exposed to fluctuations. We decided to export the enhance YARP versioning system to include the SVN revision number so we can check it in the iCub build.

  • DONE: add SVN revision number in YARP build

dataDumper [DONE]

  • DONE: handling of lossless avi videos (Ugo)

Now dataDumper employes the "huffyuv" codec (available on win/linux/mac) to store lossless avi. Positive tests on windows and linux. On linux it is required to compile ffmpeg and OpenCV as per documentation within the module's page. Information about single frames time-stamps are also generated in order to enable step-wise playing in-sync with the encoders from within the dataSetPlayer.

dataSetPlayer [DONE]

This has been included in the release. It could be nice to make available a short dump so users can test it when they install the software.

  • DONE: produce simple dump, to be uploaded in the MIT database (if public) (Vadim)
  • VADIM: Some data are on the MIT ftp.
There is a folder called test data (containing the red ball demo dump). 
I had to convert the ppm to jpg (1Gb to 47M - as it is for testing it does not really matter)
Here the details: 
Username: icubdata
Password: icubdata
Example sequence moved to public server: 
  • DONE: update software installation pages with instructions on how to use the datasetplayer to play the test sequence (Lorenzo):


qt3 in iCubGui [...]

To simplify we should plan to update iCubGui so that it does not use qt but gtk. This should be doable.

  • TODO: nothing for now