Yarp Module Management toolkit Yarp Module Management toolkit Ali - - PowerPoint PPT Presentation

yarp module management toolkit yarp module management
SMART_READER_LITE
LIVE PREVIEW

Yarp Module Management toolkit Yarp Module Management toolkit Ali - - PowerPoint PPT Presentation

Italian Institute of Technology (IIT) Yarp Module Management toolkit Yarp Module Management toolkit Ali Paikan Ali Paikan July 2011 July 2011 Problem Description Increasing in number of iCub software modules Needs for module


slide-1
SLIDE 1

Italian Institute of Technology (IIT)

Yarp Module Management toolkit Yarp Module Management toolkit

Ali Paikan Ali Paikan

July 2011 July 2011

slide-2
SLIDE 2

Problem Description

  • Increasing in number of iCub software modules
  • Needs for module description (input/output ports,

dependencies, version, ... )

  • Managing module connections in a complex application
  • Needs for Module integrity (building module blocks over

each other, nested application)

  • Dependency resolving
  • Application execution and failure recovery
  • Writing, checking and modifying long XML files for

implementing complex application

slide-3
SLIDE 3

Available approaches

  • “Icubapp.py”, “Manager.py” and “yarprun”
  • Some of the available robotics middleware

simply offers module execution via “SSH” (roslaunch, ...)

  • Better approaches with failure recovery can be

seen in Grid and Cloud computing (OLAN, PLUSH, …)

  • Some alternative efficient approaches to “ssh”

(focus on performance and usually need OS kernel modification )

slide-4
SLIDE 4

Module Description

slide-5
SLIDE 5

Module Description (example)

<module> <name>camCalibConf</name> <description> Camera Calibration</description> <version>1.0</version> <rank>1</rank> <authors> <author email="jonas.ruesch@isr.ist.utl.pt"> Jonas Ruesch </author> </authors> <arguments> <param desc="configuration path"> context </param> </arguments> <input> <type>cartesian-image</type> <port carrier="UDP">/camCalibConf/image</port> <required>yes</required> <priority>yes</priority> </input> <output> <type>cartesian-image</type> <port carrier="UDP">/camCalibConf/image</port> </output> </module>

slide-6
SLIDE 6

Application Description

slide-7
SLIDE 7

Application Description (example)

<application> <name>AllCameraCalibration</name> <description> … </description> <version>1.0</version> <module> <name>camCalibConf</name> <parameters>--group CAMERA_CALIBRATION_CONFIGURATION_RIGHT</parameters> <node>icub1</node> <broker>yarprun</broker> </module> <module> <name>gnome-system-monitor</name> <node>localhost</node> <broker>ssh</broker> </module> <application>LeftCameraCalibration</application> <connection> <from>/icub/cam/right</type> <to>/camCalibConf/image</port> </connection> </application>

slide-8
SLIDE 8

Module integration

Module Module Module Module Module Module Application Application

slide-9
SLIDE 9

Automatic dependency resolver

Color-based O.D

  • bj-image

coordinate raw image iKinHead

  • bj-image

coordinate

  • bj-

coordinate Feature-based O.D

  • bj-image

coordinate raw image Edge Matching O.D

  • bj-image

coordinate raw image iCub camera frame grabbers raw image head state torso state

slide-10
SLIDE 10

Selection policies

Color-based O.D

  • bj-image

coordinate raw image

Feature-based O.D

  • bj-image

coordinate raw image

Edge-based O.D

  • bj-image

coordinate raw image

  • Computational overload (C)
  • Data rate (P)
  • CPU utilization (U = C/P)
  • Quality of data (subjective)
  • Resource dependencies (I/O, Memory, GPU, ...)
  • ...
  • User Rank (which can be a combination of all above criteria)
slide-11
SLIDE 11

The system

slide-12
SLIDE 12

Executable state machine

Advantages:

  • Synchronous execution (launching modules with priority)
  • Real-time module status checking (context awareness)
  • Avoiding pooling/wait execution
  • Real-time failure recovery

Most of the available robotics middlewares neglect these points!

slide-13
SLIDE 13

Host 1

Cross-middleware management

YManager yarprun Yarp Module roslaunch/rostopic cisstCmpManager

  • ther protocols

Yarp Module Ros node Yarp Module Cisst Cmp Ros node Host 2

slide-14
SLIDE 14

Code/Application integration

Code Module 1 Module 2 Module n Module 1 Module 2 Module n Code LibYManager Another Module Compile/link Console/GUI Application builder Compile/link

slide-15
SLIDE 15

Code/Application example

From a Planer: “PICK” GREEN A1 RIGHT “PICK” RED A1 LEFT “PUT” GREEN A3 RIGHT ...

A1 A2 A3

slide-16
SLIDE 16

Code/Application example

Color-based O.D iKinHead Strip-based Plan executor Action Primitives

(StripPlan) (ObjCordinate) connected to robot Arms connected to robot Cameras

“SimpleDiskManipulation”

slide-17
SLIDE 17

Code/Application example

I want to test my own planner on the robot. I have an application to recognize and manipulate simple disks. Then all I need is to use this application inside my test code...

LibYManager::loadApplication(“SimpleDiskManipulation”) strObjPort = LibYManager::getDataPort(“ObjCoordinate”) strPlanPort = LibYManager::getDataPort(“StripPlan”) LibYManager::connect(myPlanPort.getName(), strPlanPort) LibYManager::connect(myObjPort.getName(), strObjPort) LibYManager::run() ... myPlanner.updatePlannerDomain(myObjPort.read()) myPlanner.plan() myPlanner.writePlan(MyPlanPort); … LibYManager::stop()

slide-18
SLIDE 18

YManager toolkit

  • A library for application integration/management

(libYManager)

  • Command line module manager (ymanager)
  • Interactive GUI (qymanager)
slide-19
SLIDE 19

Problems

YManager reasons on module dependencies and find a set of connections to established based on module description XML file. Module1 /Module1/out /Module2/in Module2

Automatically connected by YManager

<module> <name>Module1</name> <node>localhost</node> <parameters>--name myModule</parameters> <portmap> <old>/Module1/out</old> <new>/myModule/out</new> </portmap> </module>

slide-20
SLIDE 20

Summary

  • Management of many software modules in a complex

robotics application requires easier and more flexible tools

  • Standard modules can be interconnected and

integrated via proper tools for rapid application prototyping

  • Automatic dependency resolving, modules execution

and failure recovery can improve reliability of robotics application

  • Code/Application integration and cross middleware

management can help users to benefit from software modules written in other robotic frameworks

  • A nice GUI is always welcome for users
slide-21
SLIDE 21

Question and discussion Thank you and please help me to justify my ideas by your valuable feedback.