UserPreferences

OldAiboNotes


Using the Sony AIBO Robot

This module describes using the AIBO robot dog with Pyro, the Python Robotics system.

Initial Setup

These are notes on exploring AIBO at Bryn Mawr College. Eventually this will be a description of how to use Pyro with AIBO. But for now, it is a series of notes of where we currently are in the development of the code.

To compile HelloWorld for AIBO

  1. Set the environment variables so that OPEN-R knows where to find itself. You can put this in your .bashrc file, or just execute it before doing any compiling. I had to install it in my directory, because I don't have root access.

export OPENRSDK_ROOT=/home/dblank/usr/local/OPEN_R_SDK
  1. Next, copy the sample files to your own aibo directory:

cd
mkdir aibo
cd aibo
cp ~dblank/aibo/OPEN_R_SDK-sample-1.1.5-r1.tar.gz .
  1. Untar the file:

tar xfz OPEN_R_SDK-sample-1.1.5-r1.tar.gz
  1. Make HelloWord:

cd sample/common/HelloWorld/HelloWorld/
make
make install

That should have compiled, gzipped a program, and copied it to the MS directory (MS stands for Memory Stick).

Putting the Program on the Dog

For this, I'm relying on the [FILE]Installation Guide Chapter 3. I haven't made it that far yet.

Python Programming

Ok, so forget that method of interfacing. We'll skip that level, and just use the Tekkotsu server monitor programs, and talk to them directly via Python.

There are a few channels of communication.

Vision

Here is the order of data received on the vision channel

Got type=TekkotsuImage
Got format=0
Got compression=1
Got newWidth=104
Got newHeight=80
Got timest=121465
Got frameNum=3185
Got creator=FbkImage
Got chanwidth=104
Got chanheight=80
Got layer=3
Got chan_id=0
Got fmt=JPEGColor
read JPEG: len=2547

file:///home/dblank/aibo/Tekkotsu_mon_2.1/org/tekkotsu/mon/VisionListener.java

[Vision]
raw_port=10011
rle_port=10012
# gain           low | mid | high
# higher gain will brighten the image, but increases noise
gain=high
                                                                                
# shutter_speed  slow | mid | fast
# slower shutter will brighten image, but increases motion blur
shutter_speed=mid
                                                                                
# resolution     quarter | half | full
# this is the resolution vision's object recognition system will run at
resolution=full
# 7red.tm - just your usual pink/red/purple color detection, nothing too fancy
# ball.tm - standard Sony pink ball definition
thresh=/ms/config/7red.tm
thresh=/ms/config/ball.tm
# the .col file gives names and a "typical" color for display
# the indexes numbers it contains correspond to indexes in the .tm file
colors=/ms/config/default.col
                                                                                
### Image Streaming Format ###
                                                                                
# rawcam_encoding   color | y_only | uv_only | u_only | v_only | y_dx_only | y_dy_only | y_dxdy_only
rawcam_encoding=color
                                                                                
# compression       none | jpeg
rawcam_compression=jpeg
                                                                                
# quality of jpeg compression 0-100
rawcam_compress_quality=85
                                                                                
# apparently someone at sony thinks it's a good idea to replace some
# pixels in each camera image with information like the frame number
# and CDT count.  if non-zero, will replace those pixels with the
# actual image pixel value in RawCamGenerator
restore_image=1
# jpeg algorithm: 'islow' (integer, slow, but quality), 'ifast' (integer, fast,
but rough), 'float' (floating point)
jpeg_dct_method=ifast
                                                                                
# log_2 of number of pixels to skip, 0 sends reconstructed double
#   resolution (mainly useful for Y channel, others are just resampled)
#   our eyes are more sensitive to intensity (y channel) so you might
#   want to send the UV channels at a lower resolution (higher skip) as
#   a form of compression
# rawcam_y_skip is used when in sending single channel, regardless of
#   which channel
# valid values are 0-5
rawcam_y_skip=2
rawcam_uv_skip=3
                                                                                
# you can send the original segmented image
# or an RLE compressed version (which includes some noise removal)
#rlecam_compression   none | rle
rlecam_compression=rle
                                                                                
# this is the channel of the seg cam which should be sent.
# corresponds to the index of the .tm file you want in thresh
rlecam_channel=0
                                                                                
# this is the log_2 of pixels to skip when sending RLE encoded
# segmented camera images, same idea as rawcam_*_skip
rlecam_skip=1
[Main]
console_port=10001
stderr_port=10002
error_level=0
debug_level=0
verbose_level=0
wsjoints_port=10031
wspids_port=10032
walkControl_port=10050
aibo3d_port=10051
headControl_port=10052
estopControl_port=10053
wmmonitor_port=10061
use_VT100=true
                                                                                
[Behaviors]
# your-stuff-here?
                                                                                
[Controller]
gui_port=10020
select_snd=whiip.wav
next_snd=toc.wav
prev_snd=tick.wav
read_snd=ping.wav
cancel_snd=whoop.wav
error_snd=fart.wav
                                                                                
[Motion]
root=/ms/data/motion
walk=/ms/data/motion/walk.prm
estop_on_snd=skid.wav
estop_off_snd=yap.wav
max_head_tilt_speed=2.1
max_head_pan_speed=3.0
max_head_roll_speed=3.0

[Sound]
root=/ms/data/sound
# volume = mute | level_1 | level_2 | level_3 | <direct dB setting: 0x8000 - 0xFFFF>
# if you directly set the decibel level, be warned sony recommends against going above 0xF600
# However, I believe the commercial software on the ERS-7 runs at 0xFF00
# going above 0xF800 on a ERS-210 causes distortion (clipping) - full volume on
a ERS-7 sounds fine though.
volume=level_3
                                                                                
sample_rate=16000
sample_bits=16
# Preload is a list of sounds to cache at boot
# can be either root relative or full path
preload=skid.wav
preload=yap.wav
                                                                                
                                                                                
[WorldModel2]
dm_port=10041
hm_port=10042
gm_port=10043
fs_port=10044

file:///home/dblank/aibo/Tekkotsu_memstick_ERS7_2.1/config/tekkotsu.cfg

Pyro Modules Table of Contents

Modules

  1. PyroModuleIntroduction

  2. PyroModuleObjectOverview

  3. PyroModulePythonIntro

  4. PyroModuleDirectControl

  5. PyroModuleSequencingControl

  6. PyroModuleBehaviorBasedControl

  7. PyroModuleReinforcementLearning

  8. PyroModuleNeuralNetworks

  9. PyroModuleEvolutionaryAlgorithms

  10. PyroModuleComputerVision

  11. PyroModuleMapping

  12. PyroModuleMultirobot

  13. FurtherReading

Additional Resources

  1. PyroIndex

  2. PyroAdvancedTopics

  3. PyroUserManual

  4. [WWW]Pyro Tutorial Movies

Reference: PyroSiteNotes