The project aims to be the first steps for a development of a more general learn-by-imitation approach for autistic children. It was developed in collaboration with the CHU Brest, more specifically with Dr. Nathalie Collot as the main contact.
The main goal was to simulate a well-known nursery rhyme used by Ms Collot's team to interact with the patients. The song is divided up in several sections, where the entertainer would assume a pre-defined posture that the kids should try to imitate.
The gestures currently used are shown in the image below:
As such, the project is built on top of two main pillars, namely:
Body pose detection was entirely done using publicly available software. Thus, the main focus of our work was to familiarize ourselves with the robot itself and synchronize all the tasks, as well as fine-tune everything, taking into account the nature of the project and the target subjects.
The chosen framework was ROS (the only tested version was kinetic), written mainly in C++, with some parts in python.
The code is fully available here. The repo should be cloned directly into the src folder of a catkin workspace. The repository above contains two ROS packages at the root folder level:
Dependencies (and even ROS itself if not present in the system), can be installed running installDependencies.sh in pepper_imitation/installDependencies.sh.
The game sequence can be started by running the roslaunch file pepper_imitation_game.launch. The skeleton tracker and the kinect driver are to be run separately using the file pepper_imitation_kinect.launch.
Body pose checks can be disabled in pepper_imitation_node.launch, setting the “skip_pose_checks” parameter to true. If disabled, the game will assume all the checks to be correct.
The system is made up of the following nodes:
All these nodes can be run separately and commanded by publishing in their respective topics, allowing a Wizard of Oz-ish level of control. The actual game and synchronization is achieved by means of a state machine, defined in “pepper_imitation_game_node.py” file. SMACH was the library chosen for this.
The expected behaviour is as follows:
Álvaro Páez Guerra
paezguerraalvaro@gmail.com