Coder Social home page Coder Social logo

icub-tech-iit / documentation Goto Github PK

View Code? Open in Web Editor NEW
23.0 7.0 31.0 659.43 MB

iCub Tech Docs

Home Page: https://icub-tech-iit.github.io/documentation/

License: BSD 3-Clause "New" or "Revised" License

Ruby 88.47% Shell 11.53%
icub documentation tendons upgrade-kits icub-tech-docs firmware operating-systems software-installation ergocub

documentation's People

Contributors

actions-user avatar ale-git avatar antonioazocar avatar cedricgoubard avatar davidetome avatar elio75 avatar emilianob80 avatar fiorisi avatar github-actions[bot] avatar giulioromualdi avatar gsisinna avatar icubtokyo01 avatar julijenv avatar lawproto avatar maggia80 avatar marcoaccame avatar martinaxgloria avatar maurizbo avatar mbrunettini avatar mfussi66 avatar mick3lozzo avatar msecode avatar nicogene avatar pattacini avatar s-dafarra avatar salvi-mattia avatar simeonedussoni avatar traversaro avatar valegagge avatar violadelbono avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

documentation's Issues

Document installation procedure for ergocub-head system

During the ICRA 2023 demo with ergoCub, one problem that hit us is that we wanted to debug a software problem on the ergocub-head, but it is not clear how the software was installed there. While the software installation on the ergocub-torso basically reflects the one tipically used in icub-head, so documented in:

At the moment instead the ergocub-head has some specificies that I am not sure if they are documented anywhere:

  • Use of robotology-superbuild compiled against conda-forge dependencies to support ROS humble on Ubuntu 20.04
  • Use of GPU-enabled librealsense
  • Something else that I may be missing

It would be great to have even a simple documentation on how to setup the system in its intendend state from scratch.

Document convention for ports/devices exposed in iCub-like robots

I wanted to work on robotology/robots-configuration#485, but I am missing even a rough guideline related to naming. I will write one draft here, then we can migrate this to proper documentation when it is ready.

iCub YARP network wrapper server conventions

iCub exposes its functionalities (sensors and actuators) via YARP devices called YARP's Network Wrapper Servers (NWSs) that publish information over YARP ports. For historical reasons, for each type of functionality such as "controlboards" (i.e measure of joint-related sensors and capability of setting setpoints of low-level control loops), inertial measurement units, force torque sensors, multiple devices are used, one for each iCub's "part".

The "parts" of iCub are:

  • head
  • left_arm
  • right_arm
  • torso
  • left_leg
  • right_leg

Not all iCubs have all its six parts. There are iCub variants that are composed only by the head, or iCub variants that are composed only by the legs. In some contexts also a special part alljoints is defined and used, that is just a part that actually represents all the differents part of the iCub combined.

In the following, we will list the convention used for each type of functionality.

In the following, we will refer also to the robotPortPrefix, that is a string that can have multiple values:

  • icub for physical iCub robots
  • icubSim for simulated iCub robots
  • ergoCub for physical ergoCub robots
  • ergoCubSim for simulated ergoCub robots

ControlBoard

The ControlBoard functionality is exposed via the controlBoard_nws_yarp device. The name parameter passed to this device is: /<robotPortPrefix>/<partName>.

This means that for each part there will be a controlBoard_nws_yarp device that will open the following YARP ports:

  • /<robotPortPrefix>/<partName>/state:o : that publishes encoder information for the part
  • /<robotPortPrefix>/<partName>/stateExt:o : that publishes different joint-level sensors information for the part, using the structure defined in https://github.com/robotology/yarp/blob/master/src/libYARP_dev/src/idl/stateExt.thrift
  • /<robotPortPrefix>/<partName>/rpc:i : that expose several information related to the part via a YARP RPC port
  • /<robotPortPrefix>/<partName>/command:i : that takes in input references for the low-level control loops

Note: these YARP ports are not meant to be accessed directly, but should be accessed instead via the remote_controlboard device.

Inertial Measurements Units (IMUs)

Inertial Measurements Units functionalities are exposed via the multipleanalogsensorsserver YARP device.
The name parameter passed to this device is: /<robotPortPrefix>/<partName>/inertials.

This means that for each part there will be a multipleanalogsensorsserver device that will open the following YARP ports:

Note: these YARP ports are not meant to be accessed directly, but should be accessed instead via the multipleanalogsensorsclient device.

This device will expose sensors related to the following Multiple Analog Sensors Interfaces:

Force-Torque Sensors

Force-Torque Sensors functionalities are exposed via the multipleanalogsensorsserver YARP device.
The name parameter passed to this device is: /<robotPortPrefix>/<partName>/FT.

This means that for each part there will be a multipleanalogsensorsserver device that will open the following YARP ports:

Note: these YARP ports are not meant to be accessed directly, but should be accessed instead via the multipleanalogsensorsclient device.

This device will expose sensors related to the following Multiple Analog Sensors Interfaces:

Broken links in iCub wiki

I hope this 2021 is off to a good start for the iCub Techs. I just wanted to raise the issue that there may be broken links in the iCub wiki. For example:

  • the (F/T sensors page)[http://wiki.icub.org/wiki/FT_sensor] points the user to https://icub-tech-iit.github.io/documentation/icub_firmware/ft-sensors/ft-sensors/ which is a badly formatted page with no clear way to get to the correct link (which should be (this one)[https://icub-tech-iit.github.io/documentation/ft-sensors/ft-sensors/])
  • One other thing I recommend doing is to have this link https://icub-tech-iit.github.io point to the homepage of your documentation (i.e. this one https://icub-tech-iit.github.io/documentation/ ). As of now, the link above displays just a generic jekyll template and it is very hard to get to the right link unless you know it.
  • Finally, some good SEO would be nice. Right now, it's basically impossible to find this new documentation website if you are not aware of it. There is a handy jekyll-seo package that is supported by github and should make the job easy!

I hope this helps. I am tagging @julijenv just because ๐Ÿ˜Ž

Remove CanLoader documentation?

I think that old iCub users (see robotology/icub-tech-support#1129) are used to canLoader, and they should just switch to the new FirmwareUpdater. However, the documentation is a bit not clear w.r.t. to the canLoader, as there is still a first level link to canLoader in the main firmware page (see https://icub-tech-iit.github.io/documentation/icub_firmware/) and also in the firmware https://icub-tech-iit.github.io/documentation/icub_firmware/firmware/firmware/ . Furthermore, there is a full page of docs in https://icub-tech-iit.github.io/documentation/icub_firmware/canLoader/canLoader/, that starts with a small warning message "Canloader is deprecated since this PR" . However, this may be misleading, as the CanLoader tool was not just deprecated in that PR (approximately one year ago), but it was completely removed.

To avoid confusion, could it make sense to just delete the old canLoader docs? If we need any info from it, we can always recovere it from the git history or the wiki history.

lfs + gh-pages: dont work together

problem:
the rebase operation takes ages. more than 20 minutes

#icub-tech/documentation (gh-pages)
$ git rebase master 

hence, i did tests to use lfs for images + video

however, the gh-pages do not show the lfs files (images and videos)
it is reasonable because in github there are pointers and not the real files

see: git-lfs/git-lfs#3498

Revert #328

After an internal discussion during our board meeting, we decided to revert PR #328.

This is because the convention for the CSYS is limited to the alignment of their axes wrt a resting position of the robot, but doesn't include the directions of rotation. In practical terms, this means that the same joint angles guarantee a specular symmetry between the arms.

Reverting #328 is as simple as clicking a button, although we may need to carry out a careful review.

cc @Lawproto @Nicogene @fiorisi @traversaro

Doubts on icub_operating_systems section

Today with @Iaxama we used the icub_operating_systems and we had a few doubts. I would be happy to go on and open a PR fixing this aspects, but I am afraid I am not sure about some information on this, as mentioned in the following.

"real" icub server

The iCub server section mentions two options, one is the "real" iCub server, while another is the "laptop used as the iCub server" .
From the context, it is not clear what is the meaning of the "real" iCub server. I guess it is meant for when the iCub server is installed not on a laptop?

server

iCubOS Ubuntu versions

I was not able to understand on which version of Ubuntu the iCubOS is based. From https://icub-tech-iit.github.io/documentation/icub_operating_systems/ it seems that iCubOS is used to refer to the OS image meant to be running on the icub-head machine that is the COMExpress board that is placed on the iCub head, and from https://icub-tech-iit.github.io/documentation/icub_operating_systems/icubos/icubos/ it seems that it is based on Ubuntu 18.04 .
But then in https://icub-tech-iit.github.io/documentation/icub_operating_systems/other-machines/icub-server-from-image/ it seems that the iCubOS image is also used for the iCub server, and from https://icub-tech-iit.github.io/documentation/icub_operating_systems/other-machines/icub-server-from-scratch/ it seems that this image should be based on Ubuntu 20.04.
I guess I am missing something, but I am not sure what.

Not documented need to update ycm-cmake-modules in iCubOS 8.0 relased on 2021/06/04?

In the last days, both @Uboldi80 (robotology/ycm-cmake-modules#392) and @HosameldinMohamed reported this error when compiling the robotology-superbuild on a brand new iCubOS:

CMake Error at CMakeLists.txt:33 (find_package):
  Could not find a configuration file for package "YCM" that is compatible
  with requested version "0.13.0".

  The following configuration files were considered but not accepted:

    /usr/share/cmake/YCM/YCMConfig.cmake, version: 0.12.2

The problem is that YARP finds an old YCM installed in the system, and so it does not proceed as it requires YCM 0.13 (that would be downloaded by the superbuild if a YCM was not found in the system).
The solution is to just sudo apt update and sudo apt upgrade that updates YCM to 0.13 .

However, as this problem already affected two users in a few days, probably we should specify that sudo apt update and sudo apt upgrade is necessary, either after the iCubOS from image installation, or before the software installation?

Provide page on ergoCub joint specs

I observed that the details for a few of the joints in iCub 3 joints specs, in particular Motor type and Harmonic drive, are not up to date with the latest CAD model. I believe the documentation has not been updated after some of the latest upgrades on iCub 3.

I noticed mainly the following inconsistencies:

How shall we proceed in order to update the iCub 3 joints specs documentation ??
cc @fiorisi @pattacini


โš ๏ธ We changed the original scope of this issue as per #184 (comment).

Update icub_operating_systems/other-machines/generic-machine.md for Ubuntu 20.04 support

The documentation in https://github.com/icub-tech-iit/documentation/blob/master/docs/icub_operating_systems/other-machines/generic-machine.md#static-ip-configuration refers to the /etc/network/interfaces file, that from what I understand (@Iaxama @2103simon) it is not supported anymore on Ubuntu 20.04 . Probably we should modify that section to be Ubuntu 20.04 .

Related issue: robotology/robotology-superbuild#481 .

Clarification on the Hand MK5 coupling laws

Hi all,

I am trying to implement the coupling laws available in https://icub-tech-iit.github.io/documentation/hands/hands_mk5_coupling/ to make some tests (more details in robotology/gazebo-yarp-plugins#647).

Specifically, I would be interested in evaluating the expression of $q2$ as a function of the angle $q1$. That expression depends on $h(q_1)$ that in turn depends on $P_1(q_1)$. Both the $x$ and $y$ coordinates of $P_1$ depends on additional constants, $P_{0x}$ and $P_{0y}$ that I cannot find in the table comprising all parameters.

Are they missing or should I evaluate them using other available quantities given the geometry?

Thank you

cc @ale-git @mfussi66

Updating Robot PC Setup Documentation to Prevent Duplicate Environment Variable Loading

With @lrapetti @mebbaid and @traversaro and I noticed that the variable exported in .bashrc_ergoCub were loaded twice when a new terminal is opened.

Upon further investigation, it was discovered that the following code:

  if [ "$HOME" != "" ]; then                                                                                                                                                                               
      ICUBRC_FILE="${HOME}/.bashrc_ergoCub"                                                                                                                                                                
  else                                                                                                                                                                                                     
      ICUBRC_FILE="/home/icub/.bashrc_ergoCub"                                                                                                                                                             
  fi                                                                                                                                                                                                       
  if [ -f "$ICUBRC_FILE" ]; then                                                                                                                                                                           
      source $ICUBRC_FILE                                                                                                                                                                                  
  fi  

was placed above the following block of code in .bashrc:

# If not running interactively, don't do anything                                                    
case $- in                                                                                           
    *i*) ;;                                                                                          
      *) return;;                                                                                    
esac 

so when the gui session was loading the bash it was exporting all the environment variables in .bashrc_ergoCub

To fix this we modified the .bashrc adding the following lines at the beginning of the file

if [[ $- == *i* ]] || [[ -n "$SSH_CLIENT" ]] || [[ -n "$SSH_TTY" ]]; then                                                                                                                                  
  #Load the ergoCub custom bashrc                                                                                                                                                                          
  if [ "$HOME" != "" ]; then                                                                                                                                                                               
      ICUBRC_FILE="${HOME}/.bashrc_ergoCub"                                                                                                                                                                
  else                                                                                                                                                                                                     
      ICUBRC_FILE="/home/icub/.bashrc_ergoCub"                                                                                                                                                             
  fi                                                                                                                                                                                                       
  if [ -f "$ICUBRC_FILE" ]; then                                                                                                                                                                           
      source $ICUBRC_FILE                                                                                                                                                                                  
  fi                                                                                                                                                                                                       
fi   

In this code snippet, [[ $- == *i* ]] checks if the $- variable contains the i character, which indicates an interactive shell. [[ -n "$SSH_CLIENT" ]] checks if the SSH_CLIENT environment variable is non-empty, which indicates an SSH session. Similarly, [[ -n "$SSH_TTY" ]] checks if the SSH_TTY environment variable is non-empty, which also indicates an SSH session.

If either of these conditions is true, the code inside the if block is executed. You can replace the echo command with the command you want to run.

To ensure others do not encounter this issue, we should update the documentation on how to set up a robot PC.

Possible missing information about PC104 live image (when combined with robotology-superbuild)

I am opening this issue to discuss possible missing information about the iCub PC104 live image in a scenario where we use the robotology-superbuild (but not necessarily limited to this actually).

1. CMake version

The latest robotology-superbuild requires CMake 3.16. If I am not wrong the latest PC104 image is based on Debian Buster (10) that has, by default, CMake 3.13.4. According to the robotology-superbuild documentation it is possible to update on the latest by enabling buster-backports.

My question is, then, should this step be done by the user after installing the PC104 image on the robot? Is it the case that we add something about in the documentation such that the scenario in which the user uses the superbuild is covered? Another solution, but I don't know if is feasible, would be to pre-configure the PC104 image such that backports are enabled.

2. diagnostic daemon

The superbuild, but I think this is independent from the superbuild itself, enables build of the diagnostic daemon library when the profile ROBOTOLOGY_ENABLE_ICUB_HEAD is enabled. As stated in the repository of the library, it requires libboost-system-dev. However, as per the documentation, the PC104 live image does not include this package by default.

My question is similar in this case. Should we add something in the documentation to cover this or is it the case to ship the live image pre-configured with that package?

Thank you

cc @pattacini @traversaro @mbrunettini

Document that the robotology-superbuild needs to be compiled and installed in build-pc104 on pc104 system with shared `/usr/local/src/robot` directory

The .bashrc_iCub of the icub-live image (used on pc104 systems) assumes that the build directory of the robotology superbuild on the pc104 is /usr/local/src/robot/robotology-superbuild/build-pc104, see https://github.com/icub-tech-iit/icub-os-files/blob/5084e7466524ffb8d9198fc67c72bc35b53095a4/scripts/icub-live/live-build/config/includes.chroot/etc/skel/.bashrc_iCub#L20 , as the /usr/local/src/robot/robotology-superbuild directory is tipically (or always? I am not sure on this) shared between the icub laptops and the pc104, different from system base on COM-Express boards that use the iCubOS image.

However, it seems that there is no documentation on the fact that the on pc104 the robotology-superbuild should be compiled in the build-pc104 directory. A possible solution is to add the pc104 to the system covered by the "Installation on specific systems on iCub setup" section of the documentation (see

- Installation on specific systems on iCub setup:
), and the "installing OS" and "installing software" pages should be better harmonize/connected, as tipically anyone that is interested in installing the OS on an icub setup machine is also interested in then installing the software (but perhaps this should be the subject of another issue).

Document final steps of "Write the image" procedure in "The OS on icub-head - Installation from pre-built image"

In the 'Write the image" section in https://icub-tech-iit.github.io/documentation/icub_operating_systems/icubos/installation-from-image/#write-the-image, a few steps are missing that could confused not experience users of clonezilla (like me : ) ).

Personally, I was stopped at the last documented step, i.e. :

select the correct drive and partition for the USB drive (as in step 8) (usually partition is n.1)

I arrived at this form:
icubos_browser_done

As the selected directory was the correct one, I simply pressed Enter, but this resulted in the error "The directory you choose is a Clonezilla dir"
MicrosoftTeams-image (9)

If I typed enter again, I would be brought back to the original form, in a sort of endless loop. The way of exiting for this loop is not to press enter (that will automatically select the "Browse" option in the form), but you need to use the arrow keys to reach the "Done" option and select that one.

After that, you will see many forms, but selecting the default one is ok, except for the "select mode" one:
clonezilla_select_mode

In Select Mode, the default option is savedisk, but the correct option to select in this case is restoredisk, that needs to be selected with arrow keys. After selecting that, continuing with the default options for the rest of the forms is fine.

Update iCub 3 joint documentation to document joint names used in URDF files and configuration parameters

In several points of the software infrastructure, joint are identified with strings, for example the joint r_shoulder_roll for iCub3 in:

However, the documentation in https://icub-tech-iit.github.io/documentation/icub3/icub3-joints/ does not report this identifier for the joints, creating confusion as the mapping between is not clear.

Document process of configuring the YARP server in the iCub setup?

While debugging the iCubNancy01, I noticed that in our documentation it is not documented anywhere the fact that a single machine in the system should be designated to host the yarpserver, and all the other machines should be configured, first aligning the yarp namespace, and then setting the server address via yarp detect --write or yarp conf ip socketport. Not sure if this should be added.

Document how to access the skin data in iCub robots

Several information on how to read the low-level and high-level data from the skin sensors in iCub 2.x robots is available in the Tactile sensors (aka Skin) page from the "old" iCub wiki.

A section with these information is missing in the iCub Tech Docs website, at least I could not find it. It could probably contain an extract of what is written in the old wiki, not sure if all the information there is still up to date.

As regards iCub 3, I think the same information would also apply to the hand palm and fingertips of that robot.

Improve documentation on network configurations to connect laptop to EMS board

I needed to connect my laptop to the motor setup in DIC area and I discovered that we do not have public and official documentation on how to do it. In particular, I discovered that I had to set a static IP address and a certain subnet mask to the network interface to be able to communicate with the EMS board. This information is not anywhere and future users could experience problems in setting up the correct configuration.
cc @traversaro

Add missing code to identify the complete UKIT (MKIT+EKIT+WKIT+other...)

Task Description

The code to identify the global assembly (UKIT) to execute the upgrade is missing.

Definition of Done

  • The documentation contains the upgrade identification code
  • Each part (MKIT, EKIT, etc) that constitutes the UKIT is described and correctly identified
  • The scope of the upgrade is clearly specified (for which platform)

Derivative of the Hand MK5 coupling law possibly incorrect

I am working in order to fix robotology/gazebo-yarp-plugins#647, and at some point I need to use the expression

$$ \frac{\partial{q2}}{\partial{q1}} $$

provided in https://icub-tech-iit.github.io/documentation/hands/hands_mk5_coupling/#coupling-laws

I tried plotting the provided law and an alternative version obtained using finite differentiation on the positional law $q2(q1)$.

image

They look similar in terms of shape but they are different. Could it be that the law is incorrect? Is there any internal documentation where this law has been used / tested ?

Thank you

Documents steps to take if "Missing operating system" error message is printed after an iCubOS update

While updating a COMEXPRESS CONGATEC-based system (iCubGenova09, see https://icub-tech-iit.github.io/documentation/icub_cpu_boards/icub_cpu_boards/) to iCubOS 8.0 based on Ubuntu 20.04, we experienced that the icub-head was not starting and instead an error:

Missing operating system

was just printed on the screen after the BIOS.

@davidelasagna found that the problem was that the non-UEFI variant of the disk partition was put before in the BIOS Boot Sequence with respect to the UEFI one, and this caused the problem. Re-ordering the boot sequence in the BIOS to have the UEFI disk before solved the problem.

While we solved the specific problem on iCubGenova09, if this problem happens to a iCub user outside IIT, it could be quite tricky to debug and solve for an iCub user. For this reason, it could make sense to document this somewhere, for example as part of some troubleshooting section of the documentation.

Feedback from installation of new iCubOS image on iCubGenova04

On 2021/12/17, the iCubGenova04 icub-head was updated, following the docs in https://github.com/icub-tech-iit/documentation/blob/0db3f48fe41a71dfcedf93d989cc32e71f390d1e/docs/icub_operating_systems/icubos/installation-from-image.md . This is a list of issue/small annoyances experienced:

Update coupling parameters for Hand MK5.1

Today, while reviewing the newly opened PR icub-tech-iit/ergocub-software#169, I had the chance to compare the documented parameters of the coupling law for the MK5 .1 hand and a table that can be found in https://github.com/icub-tech-iit/ergocub-design-lowerarm/issues/157#issuecomment-1674984233.

It seems that there are discrepancies for the following paremeters.

Note: green and yellow highlighed text is just coming from the screenshot of the "table" indicated above. I am not highlighting anything.

Moreover please take into account that for each "table" entry the order of numbers is "thumb", "index" and "pinky" (as index == middle == ring) while each "documentation" entry report all the 5 parameters in the order "thumb", "index", "middle", "ring", "pinky".

Parameter $q_{0off}$

table

image

documentation

image

Parameter $k$

table

image

documentation

image

Parameter $d$

table

image

documentation

image

Parameter $l$

table

image

documentation

image

Parameter $b$

table

image

documentation

image

Parameter $s$

table

image

documentation

image

Parameter $t$

table

image

documentation

image

Parameter $f$

table

image

documentation

image

Paramter $r$

table

image

documentation

image

cc @pattacini

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.