Download - Getting Started with Aibo and Tekkotsu
Getting Started with Aibo and Getting Started with Aibo and TekkotsuTekkotsu
QuickTime™ and aTIFF (Uncompressed) decompressor
are needed to see this picture.
Aperios - firmware OS in Aibo
Aibo (“friend”)
OPENR-SDK - basic developers kit from Sony (model specific)
Tekkotsu - (“iron bones”) - Controller overlay and development environment from CMU
AIBOAIBO
HardwareHardwareSensors - 320 line CCD camera with color
segmentation hardware IR distance sensors (2 on ERS-7),
one on ERS 210 Position encoders for all joints
actuator motors (see below) Stereo Microphone Touch sensors (switches) head (1),
back (3/ers7, 1/ers210), chin Accelerometer for detecting falls
and pick-ups Switch sensors on each paw pad
Actuation motors and OutputsJoint actuation motors (one per paren) Tail: (left/right)
Neck: (up/down)Head: (left/right) (up/down)Hip/shoulder- per leg: (in/out)
(forward backward)Knee, (bend position) Ankle (bend position)
Audio channelNetworking and removable media
803/11g – wireless network channelremoveable memory stick slot.
Aibo Programming Aibo Programming ModelModel
An Aibo “program” is a collection of concurrent/event driven threads An Aibo “program” is a collection of concurrent/event driven threads called “BEHAVIORS”called “BEHAVIORS”
Look for object
Point head at object
Bark and wag tail
Monitor the battery charge
Example: Head tracks of object in visual field, barks and wags tail when object found
Behavior (foreground)
Behavior (background)
Behavior (foreground)
Behavior (foreground)
Shared ObjectsShared Objects WorldState ObjectWorldState Object- Shared memory region that - Shared memory region that
holds the current state of all sensors and holds the current state of all sensors and actuatorsactuators Updated in background every 30msUpdated in background every 30ms read by behaviorread by behavior
Motion ObjectsMotion Objects - one unique object for each - one unique object for each motion, i.e. move head to a specific positionmotion, i.e. move head to a specific position Several canned ones w/Tekkotsu or you can write your Several canned ones w/Tekkotsu or you can write your
ownown Named <motion>MC.cc (.h) by conventionNamed <motion>MC.cc (.h) by convention Executed through the “motion manager” processExecuted through the “motion manager” process
More laterMore later
//-*-c++-*-//-*-c++-*-#ifndef INCLUDED_happyBehavior_h_#ifndef INCLUDED_happyBehavior_h_#define INCLUDED_happyBehavior_h_#define INCLUDED_happyBehavior_h_
#include "Events/EventRouter.h"#include "Events/EventRouter.h"#include "Behaviors/BehaviorBase.h"#include "Behaviors/BehaviorBase.h"#include "Motion/MotionManager.h"#include "Motion/MotionManager.h"#include "Motion/MotionSequenceMC.h"#include "Motion/MotionSequenceMC.h"
class happyBehavior : public BehaviorBase {class happyBehavior : public BehaviorBase {
public:public: happyBehavior() : BehaviorBase(),happyBehavior() : BehaviorBase(), stand_id(MotionManager::invalid_MC_ID),stand_id(MotionManager::invalid_MC_ID), stand()stand() {{ // initialiation of stand up behavior// initialiation of stand up behavior stand->setPlayTime(700); // 700 milliseconds to stand upstand->setPlayTime(700); // 700 milliseconds to stand up stand->setPose(PostureEngine("/ms/data/motion/situp.pos"));stand->setPose(PostureEngine("/ms/data/motion/situp.pos")); }} virtual void DoStart();virtual void DoStart(); virtual void DoStop();virtual void DoStop(); virtual void processEvent(const EventBase& event);virtual void processEvent(const EventBase& event);
virtual std::string getName() const {virtual std::string getName() const { // Name is used for menus, or debugging.// Name is used for menus, or debugging. return "happyBehavior";}return "happyBehavior";}protected:protected: MotionManager::MC_ID stand_id;MotionManager::MC_ID stand_id; SharedObject< MotionSequenceMC<MotionSequence::SizeSmall> > stand;SharedObject< MotionSequenceMC<MotionSequence::SizeSmall> > stand;};};#endif#endif
Beh
avio
r Cla
ss B
eh
avio
r Cla
ss te
mp
late
tem
pla
te
Includes for Motions Events Base-behaviors
Constructor must run constructor for base class
DoStart()• runs each time behavior activates
EventHander(event)•Runs on incoming event
DoStop()• runs each time behavior deactivates
Intermal data structures
For debugging
How Tekkotsu WorksHow Tekkotsu Workswww.tekkotsu.org