This repository contains the version of the software for idmind's Elmo robot used by GAIPS (research group at INESC-ID, IST), along with a C# wrapper to communicate with the REST API. Please refer to idmind's Github repository for the most recent version of Elmo's drivers and tools.
Robot features:
- Raspberry PI 4 Running PiOS Buster (Linux);
- Battery
- 13x13 Led matrix (in the chest);
- Touch sensor in front of the led matrix (in the chest);
- Pan/Tilt mechanism for neck movement;
- Image or video can be shown in the screen (face);
- USB Camera with microphone;
- Touch sensors on top of head.
Upon receiving the robot, plug the charger into the charging port and press the power button according to the Figure
.
When powered on, Elmo will create a hotspot. You can use your device to connect to this hotspot.
name: Elmo
password: 1234567890
Now you can use Elmo. To control Elmo's behaviour you can use 1) ssh to access files and scripts; 2) the REST API; 3) the companion app.
When connected to Elmo's hotspot, you can access Elmo's files remotely via ssh. Connect to Elmo via ssh by writing in the terminal / command line: ssh [email protected]
. The password is: asdf
.
The files need to be placed in a particular directory /home/idmind/elmo/catkin_elmo/src/elmo/src/static/folder
in which folder
is either images
or sounds
.
To place files in Elmo, use the following ssh command to access that remote location: scp filename [email protected]:/home/idmind/elmo/catkin_elmo/src/elmo/src/static/folder
. Replace folder
with images
or sounds
and filename
with the specific image or sound file and use this command from the directory in your local machine that contains the file.
Blush behaviour consists of heart eyes image on screen, moving ECG figure in the chest LEDs and a characteristic noise.
Elmo will exhibit "blush" behaviour when touch sensors in the head are activated (i.e. when he is petted). It might be possible to activate touch sensors in chest using the touch_sensors.py
script (not tested yet).
To verify whether blush behaviour is active, you can access Elmo via ssh (as explained in 1) and check out the list of active nodes with rosnode list
and look for a node named /blush
. In order to deactivate this behaviour you can rosnode kill /blush
.
The companion app source code is available inside the catkin_elmo/app folder.
- control the chest LEDs;
- change the screen;
- play Audio files;
- toggle behaviours;
- inspect touch sensors;
- control the pan/tilt motors;
- upload and delete multimedia files;
- upload wifi credentials;
- shutdown;
Python development
Location of Elmo's "core": /home/idmind/elmo/catkin_elmo/src/elmo/src Relevant files: robot_server.py robot.py touch_sensors.py
To ckeck for active rosnodes: rosnode list
If relevant nodes ar enot active, Elmo will not work
You have to unscrew Elmo's cover (grey part on the bottom) using an appropriate screwdriver (in the robot room, 3rd drawer from the 2nd row of drawers counting from the right, white dresser behind the door) and manually remove the battery's plug. Afterwards, you can reconnect it, screw the bottom back on and turn on Elmo as usually.
You most lilely have to clean Elmo's disk space. Connect to Elmo via ssh (as described above).
To discover if this really is the problem, check disk usage with df -h
. If dev/root
is over 85% use, do the following:
In order to find the files that are filling up the cache, connect to Elmo via ssh (as described above) and use the following command to find out top 10 largest file/directories: du -a /var | sort -n -r | head -n 10
. Delete them with caution. Run df -h
again to verify disk usage.
From previous experience: delete all .mkv files in this directory: cd /var/lib/motion
.