Title: Universal Real-time Behavior Interface
1Universal Real-time Behavior Interface
URBI for iCat
Jean-Christophe Baillie ENSTA / Gostai
Aldebaran Robotics
2WHAT IS URBI? URBI is a complete solution to
control robots, both on a software and hardware
level. It is simple powerful, based on a script
language compatible with all types of robots, all
OS and it is interfaced with C, Java or Matlab.
The language itself is extensible via a plugins
mechanism, which can work as embedded components
or distant modules over the Internet. Important
technical breakthroughs native parallel
programming event-based programming.
3URBI Engine
Mac OSX, Intel or standard
URBI modules (remote)
URBI Engine
Windows, Linux,
commands
messages
super calculator
or, simply onboard
4Examples
eyeBrowR
URBI is an Object Oriented parallel script
language to control the robot on the hardware and
software level.
camera
lipUL
URBI Engine 1.0 is now available for iCat
All you need is the name of the object
// Ball tracking program whenever
(ball.visible) headPan headPan
camera.xfov ball.x headTilt
headTilt camera.yfov ball.y
// Get up on the Aibo getup leg2 90
time2s leg3 0 time2s leg1 90
time1s leg2 10 time1s leg1 -10
time2s leg3 90 time2s
// Event detection at (headSensor 2s)
speaker.play("hello.wav") at (distance lt 40)
emit collision ...
stop getup
5How to use URBI?
- simple commands
- functions definition
- complex scripts
URBI Server
Remote/Plugged C Module
other integrated clients (matlab, python, . . .)
// C object inherit fro UObject UStart(ball) c
lass ball UObject ball(string) UVar
x,y . . .
6Demo code on iCat
function cat.amorphe() lips100 eyeBrow0
eyeLid70 eyesTilt50 function
cat.drunk() eyeBrowR100 eyeBrowL-100
eyeLidL50 eyeLidR30 lipUR0
lipUL-100 lipL-100 function
cat.happy() eyeLid100 eyeBrow -100
lips-100 function cat.no() headTilt50
eyeLid0 lips0 eyeBrow0 timeout(3s)
headPan 0 sin1500 ampli80, function
cat.roll() headTilt50 headPan0
lipU100 lipL-100 eyeBrow-100
eyeLid100 timeout(4s) eyesTilt 0
sin1s ampli80 eyePan 0 sin1s ampli80
phasepi/2
function cat.blinkaround() around at
(random(150)3) eyeLid random(50)
timerandom(800) wait(random(500))
eyeLid 100 timerandom(800) function
cat.expraround() around at (random(80)3)
vrandom(200) eyeBrow v-100
lipU -vrandom(40)-20 lipL
-vrandom(40)-20 function
cat.behave() cat.turnaround()
cat.lookaround() cat.blinkaround()
cat.expraround() cat.randompose() functio
n cat.stop() stop randompose stop
around
7Contact Jean-Christophe Baillie,
contact_at_urbiforge.com
at (talk.finished true) echo  Thank you
for your attention Â