Presentation is loading. Please wait.

Presentation is loading. Please wait.

iCat Workshop, March 27th 2006 1/7 Universal Real-time Behavior Interface Jean-Christophe Baillie ENSTA / Gostai URBI for iCat AldebaranRobotics.

Similar presentations


Presentation on theme: "iCat Workshop, March 27th 2006 1/7 Universal Real-time Behavior Interface Jean-Christophe Baillie ENSTA / Gostai URBI for iCat AldebaranRobotics."— Presentation transcript:

1 contact@urbiforge.com iCat Workshop, March 27th 2006 1/7 Universal Real-time Behavior Interface Jean-Christophe Baillie ENSTA / Gostai URBI for iCat AldebaranRobotics

2 contact@urbiforge.com iCat Workshop, March 27th 2006 2/7 WHAT 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. WHAT 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.

3 contact@urbiforge.com iCat Workshop, March 27th 2006 3/7 URBI Engine URBI Engine URBI modules (remote) super calculator or, simply onboard Windows, Linux, … Mac OSX, Intel or standard commands messages URBI Module (plugin)

4 contact@urbiforge.com iCat Workshop, March 27th 2006 4/7 Examples // Ball tracking program: whenever (ball.visible) { headPan = headPan + camera.xfov * ball.x & headTilt = headTilt + camera.yfov * ball.y }; // 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 time:2s & leg3 = 0 time:2s } | leg1 = 90 time:1s | leg2 = 10 time:1s | { leg1 = -10 time:2s & leg3 = 90 time:2s } }; // Get up on the Aibo getup: { { leg2 = 90 time:2s & leg3 = 0 time:2s } | leg1 = 90 time:1s | leg2 = 10 time:1s | { leg1 = -10 time:2s & leg3 = 90 time:2s } }; // Event detection at (headSensor ~ 2s) speaker.play("hello.wav"); at (distance < 40) emit collision;... // Event detection at (headSensor ~ 2s) speaker.play("hello.wav"); at (distance < 40) emit collision;... URBI Engine 1.0 is now available for iCat URBI is an Object Oriented parallel script language to control the robot on the hardware and software level. eyeBrowR camera lipUL All you need is the name of the object stop getup;

5 contact@urbiforge.com iCat Workshop, March 27th 2006 5/7 How to use URBI? URBI Server // C++ code with liburbi C++ main() { UClient * client = new UClient("myrobot.ensta.fr"); int pos; pos = complex_calculation(x,y); client->send(“headPan.val = %d;”,pos); } C++ client URBI.INI onboard scripts URBI.INI // C++ object inherit fro UObject UStart(ball); class ball : UObject { ball(string); UVar x,y;... }; Remote/Plugged C++ Module // Java code with liburbi Java import liburbi.UClient; robotC = new UClient(robotname); robotC.send("motor on;"); robotC.setCallback(image, "cam"); Java client headPan.val = 15; headPan.val; [136901543:notag] 15.1030265089... telnet or urbilab client other integrated clients (matlab, python,...) simple commands simple commands functions definition functions definition complex scripts complex scripts

6 contact@urbiforge.com iCat Workshop, March 27th 2006 6/7 Demo code on iCat function cat.amorphe() { lips=100 & eyeBrow=0 & eyeLid=70 & eyesTilt=50 }; function cat.drunk() { eyeBrowR=100 & eyeBrowL=-100 & eyeLidL=50 & eyeLidR=30 & lipUR=0 & lipUL=-100 & lipL=-100 }; function cat.happy() { eyeLid=100 & eyeBrow= -100 & lips=-100 }; function cat.no() { headTilt=50; eyeLid=0; lips=0; eyeBrow=0; timeout(3s) headPan = 0 sin:1500 ampli:80, }; function cat.roll() { headTilt=50; headPan=0; lipU=100; lipL=-100; eyeBrow=-100; eyeLid=100; timeout(4s) { eyesTilt = 0 sin:1s ampli:80 & eyePan = 0 sin:1s ampli:80 phase:pi/2 } }; function cat.amorphe() { lips=100 & eyeBrow=0 & eyeLid=70 & eyesTilt=50 }; function cat.drunk() { eyeBrowR=100 & eyeBrowL=-100 & eyeLidL=50 & eyeLidR=30 & lipUR=0 & lipUL=-100 & lipL=-100 }; function cat.happy() { eyeLid=100 & eyeBrow= -100 & lips=-100 }; function cat.no() { headTilt=50; eyeLid=0; lips=0; eyeBrow=0; timeout(3s) headPan = 0 sin:1500 ampli:80, }; function cat.roll() { headTilt=50; headPan=0; lipU=100; lipL=-100; eyeBrow=-100; eyeLid=100; timeout(4s) { eyesTilt = 0 sin:1s ampli:80 & eyePan = 0 sin:1s ampli:80 phase:pi/2 } }; function cat.blinkaround() { around: at (random(150)==3) { eyeLid = random(50) time:random(800); wait(random(500)); eyeLid = 100 time:random(800); }; function cat.expraround() { around: at (random(80)==3) { v=random(200); eyeBrow = v-100; lipU = -v+random(40)-20; lipL = -v+random(40)-20; }; function cat.behave() { cat.turnaround() & cat.lookaround() & cat.blinkaround() & cat.expraround() & cat.randompose() }; function cat.stop() { stop randompose; stop around; }; function cat.blinkaround() { around: at (random(150)==3) { eyeLid = random(50) time:random(800); wait(random(500)); eyeLid = 100 time:random(800); }; function cat.expraround() { around: at (random(80)==3) { v=random(200); eyeBrow = v-100; lipU = -v+random(40)-20; lipL = -v+random(40)-20; }; function cat.behave() { cat.turnaround() & cat.lookaround() & cat.blinkaround() & cat.expraround() & cat.randompose() }; function cat.stop() { stop randompose; stop around; };

7 contact@urbiforge.com iCat Workshop, March 27th 2006 7/7 at (talk.finished == true) echo « Thank you for » + « your attention »; at (talk.finished == true) echo « Thank you for » + « your attention »; Contact : Jean-Christophe Baillie, contact@urbiforge.com


Download ppt "iCat Workshop, March 27th 2006 1/7 Universal Real-time Behavior Interface Jean-Christophe Baillie ENSTA / Gostai URBI for iCat AldebaranRobotics."

Similar presentations


Ads by Google