Introduction to humanoid robot iCub, YARP and simulator

4,896 views
4,727 views

Published on

This is a very basic introduction to humanoid robotic platform iCub, YARP (Yet Another Robotic Platform) - software that is used to facilitate communication with the robot and also iCub simulator that is a tool that we use first to develop our system before we deploy it on the real physical robot.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
4,896
On SlideShare
0
From Embeds
0
Number of Embeds
248
Actions
Shares
0
Downloads
154
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introduction to humanoid robot iCub, YARP and simulator

  1. 1. Martin Peniak & Anthony Morse 11/06/2010, Plymouth
  2. 2. Overview <ul><li>iCub </li></ul><ul><ul><li>Introduction </li></ul></ul><ul><ul><li>Hardware, software and communication </li></ul></ul><ul><li>YARP </li></ul><ul><ul><li>Introduction </li></ul></ul><ul><ul><li>Basic use and programming applications </li></ul></ul><ul><li>iCub simulator </li></ul><ul><ul><li>Introduction </li></ul></ul><ul><ul><li>Basic use </li></ul></ul>
  3. 3. iCub - Introduction <ul><li>Designed by RobotCub Consortium </li></ul><ul><ul><li>with the goal of studying cognition through the implementation of bio-inspired algorithms </li></ul></ul><ul><li>There are about twenty iCubs in various laboratories across Europe and US </li></ul><ul><li>Open-source - GPL license </li></ul><ul><li>The dimensions of the iCub are similar to that of a 3.5 year old child </li></ul><ul><ul><li>53 actuated degrees of freedom </li></ul></ul><ul><ul><ul><li>7 in each arm </li></ul></ul></ul><ul><ul><ul><li>9 in each hand </li></ul></ul></ul><ul><ul><ul><li>6 in the head </li></ul></ul></ul><ul><ul><ul><li>3 in the torso/waist </li></ul></ul></ul><ul><ul><ul><li>6 in each leg </li></ul></ul></ul>
  4. 4. iCub - Hardware <ul><li>Brushless motors, DC motors and wires </li></ul><ul><li>Sensors </li></ul><ul><ul><li>Cameras and microphones </li></ul></ul><ul><ul><li>Force-torque sensors </li></ul></ul><ul><ul><li>Absolute encoders and hall-effect sensors </li></ul></ul><ul><ul><li>Gyroscope </li></ul></ul><ul><li>PC104 </li></ul><ul><li>Facial expression </li></ul>
  5. 5. <ul><li>Modules </li></ul><ul><ul><li>attentionSelection, audioAnalyser, biologicalControlGazeEngine, camCalib, faceEyeDetector, Imitation Modules … </li></ul></ul><ul><li>Graphical User Interfaces </li></ul><ul><ul><li>biControlGazeInterface, canLoader, robotMotorGui, selectiveAttentionInterface … </li></ul></ul><ul><li>Libraries </li></ul><ul><ul><li>iDyn, iKin, iCubInterface, iCubDev … </li></ul></ul><ul><li>Tools </li></ul><ul><ul><li>blobTracker, cableLengthGuard, canBusSniffer … </li></ul></ul>iCub - Software
  6. 6. iCub - Software <ul><li>iCubInterface </li></ul><ul><ul><li>Interface to the robot </li></ul></ul><ul><ul><li>Instantiates devices controlling the robot </li></ul></ul><ul><ul><ul><li>CAN bus devices for all CAN networks (head-torso, legs, rightarm and leftarm) and the inertial sensor device </li></ul></ul></ul><ul><ul><li>Instantiates network wrappers </li></ul></ul><ul><ul><ul><li>Creates YARP ports that allow remote control of the robot and access to sensory reading </li></ul></ul></ul>
  7. 7. iCub - Communication iCub – PC104 YARP server Computer - II Computer - I Computer - III
  8. 8. YARP - Introduction <ul><li>Yet Another Robot Platform </li></ul><ul><ul><li>supports building a robot control system as a collection of programs communicating via tcp, udp, multicast, local, MPI, … </li></ul></ul><ul><li>YARP can be broken down into: </li></ul><ul><ul><li>libYARP_OS - interfacing with the operating system(s) to support easy streaming of data across many threads across many machines </li></ul></ul><ul><ul><li>libYARP_sig - performing common signal processing tasks (visual, auditory) in an open manner easily interfaced with other commonly used libraries, for example OpenCV. </li></ul></ul><ul><ul><li>libYARP_dev - interfacing with common devices used in robotics: framegrabbers, digital cameras, motor control boards, etc. </li></ul></ul>
  9. 9. YARP – multiple OSs & PCs <ul><li>Computation of visual, auditory, and tactile perception while performing elaborate motor control in real-time requires a lot of computation </li></ul><ul><ul><li>YARP can run across any number of machines with different operating systems </li></ul></ul><ul><ul><li>Supports CUDA via IGPUInterface in ibYARP_dev </li></ul></ul>
  10. 10. YARP – Terminal use <ul><li>yarp </li></ul><ul><li>yarp help </li></ul><ul><li>yarp check </li></ul><ul><li>yarp clean </li></ul><ul><li>yarp cmake </li></ul><ul><li>yarp conf </li></ul><ul><li>yarp detect </li></ul><ul><li>yarp disconnect </li></ul><ul><li>yarp exists </li></ul><ul><li>yarp forward </li></ul><ul><li>yarp help </li></ul><ul><li>yarp name </li></ul><ul><li>yarp name check </li></ul><ul><li>yarp name list </li></ul><ul><li>yarp name unregister </li></ul><ul><li>yarp namespace </li></ul><ul><li>yarp ping </li></ul><ul><li>yarp read </li></ul><ul><li>yarp regression </li></ul><ul><li>yarp resource </li></ul><ul><li>yarp rpc </li></ul><ul><li>yarp rpcserver </li></ul><ul><li>yarp run </li></ul><ul><li>yarp server </li></ul><ul><li>yarp terminate </li></ul><ul><li>yarp topic </li></ul><ul><li>yarp version </li></ul><ul><li>yarp wait </li></ul><ul><li>yarp where </li></ul><ul><li>yarp write </li></ul>
  11. 11. YARP – Terminal use <ul><li>[terminal A] yarp server </li></ul><ul><li>[terminal B] yarp </li></ul><ul><li>[terminal B] yarp read /read </li></ul><ul><li>[terminal C] yarp write /write verbatim /read </li></ul><ul><li>[terminal D] yarp disconnect /write / </li></ul><ul><li>[terminal D] yarp connect /write / </li></ul>
  12. 12. iCub Simulator - Introduction
  13. 13. iCub Simulator - Introduction <ul><li>Developed primarily by Vadim Tikhanoff </li></ul><ul><li>Open-source mutiplatform computer simulation based on ODE and OpenGL </li></ul><ul><ul><li>Reduces the time of experiments such as in evolutionary robotics approach </li></ul></ul><ul><ul><li>Increases productivity when developing and testing algorithms </li></ul></ul><ul><ul><li>Allows experimenting with changes in morphology </li></ul></ul><ul><ul><li>Allows importing 3D objects as well as on-line creation of various objects such as boxes, cylinders, spheres, etc… </li></ul></ul><ul><ul><li>Provides the same ports as iCub, which makes the communication with the real robot as well as the simulator and development transparent </li></ul></ul>
  14. 14. iCub Simulator – ports <ul><li>yarp rpc /icubSim/left_leg/rpc:i - 6 joints </li></ul><ul><li>yarp rpc /icubSim/right_leg/rpc:i - 6 joints </li></ul><ul><li>yarp rpc /icubSim/torso/rpc:i - 3 joints </li></ul><ul><li>yarp rpc /icubSim/left_arm/rpc:i - the arm includes the hand for a total of 16 controlled degrees of freedom </li></ul><ul><li>yarp rpc /icubSim/right_arm/rpc:i - structure is identical to the left arm </li></ul><ul><li>yarp rpc /icubSim/head/rpc:i - 6 joints </li></ul>
  15. 15. iCub Simulator – ports example <ul><li>yarp rpc /icubSim/left_arm/rpc:I </li></ul><ul><ul><li>set pos 0 45 </li></ul></ul><ul><ul><li>set vel 0 10 </li></ul></ul><ul><li>Moves axis 0 of the left_arm to 45 degrees </li></ul><ul><li>Sets the velocity of the left_arm motor controlling axis 0 to 10 </li></ul>
  16. 16. iCub Simulator – ports example Vision <ul><li>Images: </li></ul><ul><ul><li>It is possible to get the images from the left and right eye as well as a &quot;world&quot; view. The format of the cameras are: </li></ul></ul><ul><ul><ul><li>Cartesian ( 320 x 240 ) </li></ul></ul></ul><ul><ul><ul><li>Fovea ( 128 x 128 ) </li></ul></ul></ul><ul><ul><ul><li>Logpolar ( 252 x 152 ) </li></ul></ul></ul><ul><li>Ports: </li></ul><ul><ul><li>/icubSim/cam/left (left camera Cartesian images) </li></ul></ul><ul><ul><li>/icubSim/cam/left/fovea (left camera fovea images) </li></ul></ul><ul><ul><li>/icubSim/cam/left/logpolar (left camera log polar images) </li></ul></ul><ul><ul><li>/icubSim/cam/right (right camera Cartesian images) </li></ul></ul><ul><ul><li>/icubSim/cam/right/fovea (right camera fovea images) </li></ul></ul><ul><ul><li>/icubSim/cam/right/logpolar (right camera log polar images) </li></ul></ul><ul><ul><li>/icubSim/cam/ for the &quot;world&quot; view </li></ul></ul><ul><li>Example </li></ul><ul><ul><li>yarpview /example </li></ul></ul><ul><ul><li>yarp connect /icubSim/cam/left /example </li></ul></ul>
  17. 17. iCub Simulator – creating objects <ul><li>There are currently different objects in the world ball, cube, and box </li></ul><ul><li>Port yarp rpc /icubSim/world </li></ul><ul><ul><li>SET and GET example </li></ul></ul><ul><ul><ul><li>&quot;world set box x y z&quot; eg: &quot;world set ball 1.0 0.1 2.0” </li></ul></ul></ul><ul><ul><ul><li>&quot;world get cube&quot; (or ball) this will return the x y z coordinates of the object </li></ul></ul></ul>
  18. 18. iCub Simulator – creating objects Examples <ul><li>yarp rpc /icubSim/world </li></ul><ul><li>world mk box (three params for size) (three params for pos) (three params for colour) (This creates a box affected by gravity) </li></ul><ul><li>world mk sph (radius)(three params for pos) (three params for colour) (This creates a sphere affected by gravity) </li></ul><ul><li>world mk cyl (radius lenght) (three params for pos) (three params for colour) (This creates a cylinder affected by gravity) </li></ul><ul><li>world mk sbox (three params for size) (three params for pos) (three params for colour) (This creates a static box) </li></ul><ul><li>world mk ssph (radius) (three params for pos) (three params for colour) (This creates a static sphere) </li></ul><ul><li>world mk scyl (radius lenght) (three params for pos) (three params for colour) (This creates a static cylinder) </li></ul>
  19. 19. iCub Simulator – creating objects Examples <ul><li>world mk box 0.03 0.03 0.03 0.3 0.2 1 1 0 0 </li></ul><ul><li>world mk sph 0.04 0.0 1.0 0.5 1 0 1 </li></ul><ul><li>world mk cyl 0.1 0.2 0.0 0.9 1.0 0 0 1 </li></ul><ul><li>If you need to rotate the boxes or the cylinders just use the following function: </li></ul><ul><ul><li>world rot (object)(num) rotx roty rotz </li></ul></ul>
  20. 20. iCub Simulator – creating 3D object Example <ul><li>3D models can be imported to the simulator via /icubSim/world port: </li></ul><ul><ul><li>yarp rpc /icubSim/world </li></ul></ul><ul><ul><li>world set mdir full_path_to_models – sets the directory containing the 3d model </li></ul></ul><ul><ul><li>world mk model name_of_model.x name_of_texture.bmp Xpos Ypos Zpos – this will create a dynamic 3D model </li></ul></ul><ul><ul><li>world mk smodel name_of_model.x name_of_texture.bmp Xpos Ypos Zpos - this will create a static 3D model </li></ul></ul><ul><ul><li>world get model (num) - this will return the X Y Z position of the 3D model </li></ul></ul><ul><ul><li>world set model (num) Xpos Ypos Zpos - this will set the model to the required X Y Z position </li></ul></ul><ul><ul><li>world rot model (num) rotx roty rotz - this will rotate the model to the required X Y Z angle) </li></ul></ul>

×