Skip to content
This repository has been archived by the owner on Sep 24, 2019. It is now read-only.

Peripersonal space and modulation by drives and object valence

Nguyen Dong Hai Phuong edited this page Jan 30, 2017 · 16 revisions

This page contains instructions on how to run the iCub peripersonal space representation (using this repository) jointly with relevant WYSIWYD modules.

Dependencies

Applications:

  • In simulation:

  • In robot:
    - CalibCameras: needed for real robot
    - iCubStartup (need iKinCartesianController, iKinCartesianSolver, iKinGazeCtrl, wholebodyDynamics, gravityCompensator)
    - Skin_Gui_All - in fact, the demo operates on hand and forearms only.
    - WYSIWYD_IIT_Y3.xml
    - PPS_modulation_iCub.xml

  • How to run:

    • Run all modules in scripted application. Remember running the iCub_SIM first for simulation case.
    • Connect all modules.
    • In order to see the effect of PPS:
      • Using opcPopulater for virtual objects. Open a terminal and connect to opcPopulater:

         yarp rpc /opcPopulater/rpc
         populateSpecific3
        
      • Then open a terminal and connect to OPC to modulate objects' name and position. Following example change the name of unknown_2 object to hand(of other agent) to make PPS take into account the hand's position, then move it to change the effect of PPS on the motion of arm. The expected effect will be the robot's arm is approaching a desired position then stopping if the partner's hand move to and interfere the motion path of robot's arm.

         yarp rpc /OPC/rpc
         set ((id 2) (name hand))
         set ((id 2) (robot_position_x -0.3) (robot_position_y -0.15) (robot_position_z 0.05))
         set ((id 2) (robot_position_x -0.8) (robot_position_y -0.15) (robot_position_z 0.05))
        
      • Or Using Kinect to obtain the humans' hands as objects, this requires kinectServer and referenceFrameHandler from WYSIWYD. It is necessary to calibrate the Kinect wrt the icub's vision system. It can be done as following:

         1) Delete all but the first line in **frames.ini**;  			
         2) Start *referenceFrameHandler* and *agentDetector*;  
         3) Put one object on the table (and only one!), which needs to be visible to both the iCub and the Kinect. Make sure *iol2opc* runs nicely and reports the proper coordinates in iCubGui;  			
         4) Left click on the depth image where the object is;  			
         5) Move the object and repeat 4); do this at least 3 times;  			
         6) Right click on the depth image to saves the calibration;  			
         7) Check the referenceFrameHandler.ini and restart agentDetector. 
        
Clone this wiki locally