-
Notifications
You must be signed in to change notification settings - Fork 16
Peripersonal space and modulation by drives and object valence
This page contains instructions on how to run the iCub peripersonal space representation (using this repository) jointly with relevant WYSIWYD modules.
- YARP
- icub-contrib-common
- iCub
- objectsPropertiesCollector (OPC): to store all objects information.
-
WYSIWYD: optional for running with PPS. In particular, the following modules are required:
- opcPopulater: to create fake objects in OPC
- sensationManager
- homeostasis
- allostaticController
- behaviorManager
- kinectServer
- referenceFrameHandler
- agentDetector
- Other modules: needed for robot actions as
reaching with avoidance
-
In simulation:
-
In robot:
- CalibCameras: needed for real robot
- iCubStartup (neediKinCartesianController
,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 tohand
(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.
-
- Run all modules in scripted application. Remember running the