Peripersonal Space
This repository deals with the implementation of peripersonal space representations on the iCub humanoid robot.
Overall Idea
The basic principle concerns the use of the tactile system in order to build a representation of space immediately surrounding the body - i.e. peripersonal space. In particular, the iCub skin acts as a reinforcement for the visual system, with the goal of enhancing the perception of the surrounding world. By exploiting a temporal and spatial congruence between a purely visual event (e.g. an object approaching the robot's body) and a purely tactile event (e.g. the same object eventually touching a skin part), a representation is learned that allows the robot to autonomously establish a margin of safety around its body through interaction with the environment - extending its cutaneous tactile space into the space surrounding it.
We consider a scenario where external objects are approaching individual skin parts. A volume is chosen to demarcate a theoretical visual "receptive field" around every taxel. Learning then proceeds in a distributed, event-driven manner - every taxel stores and continuously updates a record of the count of positive (resulting in contact) and negative examples it has encountered.
Video
For a video on the peripersonal space, click on the image below (you will be redirected to a youtube video):
Publication
Roncone, A.; Hoffmann, M.; Pattacini, U. & Metta, G. (2015), Learning peripersonal space representation through artificial skin for avoidance and reaching with whole body surface, in 'Intelligent Robots and Systems (IROS), 2015 IEEE/RSJ International Conference on', pp. 3366-3373.
Repository Structure
PeriPersonal Space Library
The library is located under the lib directory. It wraps some useful methods and utilities used throughout the code. Most notably:
- A Parzen Window Estimator class, both in 1D and 2D.
- An inverse kinematics solver for the 12DoF or 14DoF self-touch task
- A revised, improved
iKinlibrary with non standard kinematics in order to allow for reading a DH chain from the end-effector up to the base of the kinematic chain.
Modules
The modules are located under the modules directory. Some of them include:
doubleTouch: this module implements the double touch paradigm. A video describing this can be found here (https://youtu.be/pfse424t5mQ)ultimateTracker: A 3D tracker able to track objects with stereoVision and disparity map.visuoTactileRF: The core module which manages the peripersonal space and does the actual learning of visuo-tactile representationvisuoTactileWrapper: A corollary module which "wraps" a variety of input signals used for the peripersonal space learning (e.g. double touch signal, optical flow, 3D optical flow from theultimateTracker, ...) and sends them to thevisuoTactileRFmodule
