Ernest IRL

Ernest IRL

Description:

This robot was created to test the Extra-personal Space Memory in a real environment. The environment is similar to the simulated environment: walls are green, preys and algas are represented by colored cardboard squares.

Environnement
Ernest playing in the real world...
The robot was constructed with Lego Mindstorms, and its design implements its interactional system: it consists in a mobile platform that can move forward and rotate. The sensory system includes a frontal contact sensor to detect "bump" interaction and a light sensor beneath to detect when the robot moves on a blue square, that define the "eat a prey" interaction. An elevated panoramic camera provides visual interactions. This camera consists in a webcam oriented toward a spherical reflecting surface that gives a visual field of 180°. The colors are filtered, and "hidden" elements removed. The image is then projected on a plane surface to define enacted visual interactions.

johnny1
The visual system of the robot: robot in the environment, image perceived by the camera, filtered image, projected image.
The communication with a PC is based on an infrared link with the Lego RCX brick. A Not Quite C (NQC) program allows the RCX to receive action commands and to send results of interactions.


Resources:

- Lego model of the robot (open with leoCAD) : robot.lcd
Note that non-Lego pieces (webcam, mirror and rubber bands) and flexible pieces are not represented.

ernestIRL
The robot model made with leoCAD.

- Lego model made with Blender : ernestIRL.blend
The components of the robot can be manipulated using the "empty" element named "Robot". The model proposes a camera parented to the camera model, which allows to simulate the image produced by the camera of the robot. To select a camera, select it with a right clic, then press Ctrl+0.
ernestIRL webcam
The blender model of the robot. Right : the point of view of the robot.


- java-RCX interface: Interface.java

- nqc program: ernest.nqc

Under windows, the nqc program can be sent to RCX using Bricx Command Center (Bricxcc).

Under Linux, you have to install the "nqc" package, then open a console and type the command: nqc -S"serial_port" -d "file_name.nqc".
"serial_port" is the used port. In my case, I use a USB to serial converter (/dev/ttyUSB0).
Thus, the command is: nqc -S/dev/ttyUSB0 -d ernest.nqc


Commands:

List of action commands: (message numbers were randomly defined)
- move forward of one step: 42. The robot returns 2 if it bumps, 3 if it stops on a blue square and 1 otherwise.
- turn left of 45° : 64.
- turn right of 45° : 128.
- turn left of 90° : 164.
- turn right of 90° : 200.
In the case of a rotation, the robot returns 1.

These commands can be sent with Bricxcc, with the provided java interface or with the command nqc -S"serial_port" -msg "command" (for example, nqc -S/dev/ttyUSB0 -msg 42 ) under Linux.

Experiments:

the robot demonstrates the robustness of our system as, even with an unreliable space memory and unprecise motors, the behavior of the robot is very similar to the simulated agent: the robot generates pertinent signatures of interactions and moves toward preys while avoiding walls.

We observe, on signatures of interactions, that the visible part of the robot (camera reflection) is not considered. Indeed, this element is always present in the visual field, and is thus not pertinent to predict the result of an interaction. The robot thus ''forget'' its camera. Another interesting observation is that when the battery discharges, and the step of the robot is shortened, signatures adapt to this variation. The model thus demonstrates a tolerance and adaptability to failures.

Ernest IRL
Signatures of interactions move forward, bump, eat. We observe that the visible part of the robot (camera reflection) is not considered by signatures.