LasaBodySchema:reaching module

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

Author: Micha Hersch

This module performs reaching movements with a serial manipulator of arbitrary geometry and number of degrees of freedom. The target of the reaching movement can be a given position or a given position and orientation. The algorithm used is the dynamical systems - based, hybrid joint angle and end-effector location controller, described in this paper.

Back to iCub YARP module specifications


Compiler & Linker Dependencies

Include files

BodySchema.h
Vector.h
Matrix.h
mathlib.h
TreeParser.h
KinematicChain.h
Rotation.h
Translation.h
RigidTransfo.h
KChainBodySchema.h
KChainOrientationBodySchema.h
ReachingGen.h
SpecializedPort.h
ReachingModuleThread.h

Libraries

None

Run-time Dependencies

Module arguments

Mandatory arguments:

--structure <structure filename> the name of the file describing the manipulator structure

Optional arguments:

--name <portBaseName>  <portBaseName> is the port prefix. Default is none
--orientation 1 if the target specifies also end-effector orientation

Ports accessed

Ports that are assumed to exist prior to instantiation of the module (i.e. some other module must create them)


Ports created

Ports that are instantiated by the module and are then available for other modules to use (using yarp connect)

  • <portBaseName>/target/in where to send the target position
  • <portBaseName>/vc_command/outthe output port where motor position commands are sent


Input data files

The file describing the structure of the manipulator. Here is an example of a 2 dof manipulator:


<Segment> r_sfe
 <Axis> 1 0 0  </Axis>
 <Angle> 0 </Angle>
 <Range> -90 150 </Range>
 <Position> -100 0 0 </Position>
 <Children>
   <Segment> r_saa
     <Axis> 0 0 1 </Axis>
     <Angle> 0  </Angle>
     <Range> -95 0 </Range>
     <Position> -107.75 0 0 </Position>
   </Segment>
 </Children>
</Segment>


  • Axis: the rotation axis
  • Angle: initial rotation angle (always zero, actually)
  • Range: min and max allowable angle
  • Position: position of the joint with respect to previous link at zero angle
  • Children: next link

Output data files

None

Configuration files

None


User interface mechanism

Run-time modification of module parameters

The user can send commands to the command port, for example using a yarp write port. Commands currently supported include

  • Reset <theta1> <theta2> <theta3> <theta4> : resets the robot at those postion. DO NOT use this command while actually controlling the robot, it can damage it badly.
  • Pause
  • Resume

OS on which the module was developed

Linux

OS on which the module was tested

Linux,

Operating system dependencies

Example instantiation of the module

Run & port connection commands

$./reaching_module --structure conf/icub_right_arm4_struct.xml

iCub Capabilities

reaching

iCub capability code

C3   Learn to reach towards a fixation point 

Other Yarp modules required to effect this capability

stereoVisualTracker      performs stereovision tracking.
vc_controller  

The target must be given in the shoulder-center frame of reference

Example instantiation

dsreaching
tracking3D
arm_controller
yarp writer /write
yarp connect  tracking3D/out /dsreaching/target
yarp connect write /dsreaching/command_in
yarp connect /dsreaching/angles arm_controller/in


Back to iCub YARP module specifications