1 / 7

U niversal R eal-time B ehavior I nterface

U niversal R eal-time B ehavior I nterface. URBI for iCat. Jean-Christophe Baillie ENSTA / Gostai. Aldebaran Robotics. WHAT IS URBI?

hume
Télécharger la présentation

U niversal R eal-time B ehavior I nterface

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. UniversalReal-timeBehaviorInterface URBI for iCat Jean-Christophe Baillie ENSTA / Gostai Aldebaran Robotics

  2. 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. Importanttechnical breakthroughs: native parallel programming & event-based programming.

  3. URBI Engine URBI Module (plugin) Mac OSX, Intel or standard URBI modules (remote) URBI Engine Windows, Linux, … commands messages super calculator or, simply onboard

  4. Examples 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 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; ... stop getup;

  5. How to use URBI? telnet or urbilab client headPan.val = 15; headPan.val; [136901543:notag] 15.1030265089 ... C++ client // 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); } Java client // Java code with liburbi Java import liburbi.UClient; robotC = new UClient(robotname); robotC.send("motor on;"); robotC.setCallback(image, "cam"); URBI.INI onboard scripts • simple commands • functions definition • complex scripts URBI Server Remote/Plugged C++ Module other integrated clients (matlab, python, . . .) // C++ object inherit fro UObject UStart(ball); class ball : UObject { ball(string); UVar x,y; . . . };

  6. 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.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 : Jean-Christophe Baillie, contact@urbiforge.com at (talk.finished == true) echo « Thank you for » + « your attention »;

More Related