Using the Sony AIBO Robot

This module describes how to use the Sony AIBO robot dog in Pyro.

Connecting to the AIBO

To use the AIBO, first load your Tekkotsu memstick into the AIBO's memstick slot. (See "Setting up Your Memstick" below if you haven't already done this.) Then turn the dog on; you will hear a beep, then a growling noise. This means that the robot is ready.

Nearly all of these features are fully integrated into the Python Robotics system. At the moment, however, both ear movement and sound detection using the microphones remain unimplemented.

AIBO Movement Control

The AIBO can be moved using the standard forward/backward and rotate interfaces (ie, robot.move()). There is also an additional control: robot.strafe(amount). Strafing is a side-to-side movement.

Three different types of walks can be imported using the command robot.setWalk(file), where file can be one of the following: PACE.PRM, TIGER.PRM, WALK.PRM.

Individual Joint Control

The AIBO has a number of joints to be manipulated. The values of the joint positions are normalized to a range from -1.0 to 1.0, or in some cases 0.0 to 1.0. This table lists the joint names, ranges, and some useful values to know.

joint

range

significant values

mouth

0.0 : 1.0

0.0 is closed, 1.0 is open

tail pan

-1.0 : 1.0

tail tilt

-1.0 : 1.0

front rotator

-1.0 : 1.0

0.0 pointing down, 1.0 max forward, -1.0 max backward

back rotator

-1.0 : 1.0

0.0 pointing down, 1.0 max backward, -1.0 max forward

elevator

-1.0 : 1.0

0.0 straight down, 1.0 max away from body, -1.0 close to the body

front knee

-1.0 : 1.0

0.0 straight, 1.0 max bent, -1.0 max extended

back knee

-1.0 : 1.0

0.0 straight, 1.0 max bent, -1.0 max extended

To get the value of a joint, use getJoint(jointName), where jointName is one of the following:

To set the position of a joint use setPose(jointName, amount). amount is a floating-point value between -1.0 and 1.0 (see table above). jointName is any of the possiblities from getJoint(). For example:

Alternatively, you can leave off the [elevator | rotator | knee] component of the leg joints and specify all three values at once. Similarly, you can specify both the pan and tilt of the tail with one command.

Head Movement/Using the AiboCamera

To make use of the AIBO's head camera, type

robot.startDevice("AiboCamera")

at the pyrobot command line. A window will pop up displaying the real-time image taken from the AIBO's camera. The AIBO Camera is fully integrated with Pyro's vision system, so you can filter, blobify, etc.

The robot's head is implemented as a standard pan/tilt/zoom device, but the zoom parameter is ignored. An additonal parameter, roll, controls the angle of the head relative to the neck.

robot.ptz[0].pan(0.3)
robot.ptz[0].roll(1.0)

The ranges of the pan/tilt/roll parameters are:

param

range

significant values

pan

-1.0 : 1.0

0.0 centered, 1.0 max left, -1.0 max right

tilt

-1.0 : 0.0

0.0 highest, -1.0 lowest

roll

0.0 : 1.0

0.0 lowest (straight ahead), 1.0 highest (about 45 degrees up)

Some AIBO Brains

TrackBall.py will follow a blob. See the vision module for more information.

If you have any spaces in your ESSID, don't put any kind of quote marks around it. For example, if your ESSID was Clever DogWireless, the line would be:

ESSID=Clever DogWireless

Also, don't forget to put 0x in front of your WEPKEY if it is in hexidecimal.

Edit your MEMSTICK/config/tekkotsu.cfg and change all of the lines that have "rawcam" and "udp" on them so that they refer to "tcp" rather than "udp". For example, change:

rawcam_transport=udp
to
rawcam_transport=tcp

Boot the Aibo on this new memstick. You should hear a growl after a few seconds. You should also be able to ping it (if you don't block ping data in your firewall). You will also need to have access to the following ports: 10011, 10012, 10020, 10031, 10032, 10050, 10051, 10053, and 10061.

Run Pyro version 3.5.0 or greater.

Bryn Mawr student Ioana Butoi did the work to get the AIBO interface running. For further informationb please visit: