Sergei Poskriakov jr, MSci student
Internship Project, Course #1832 (Summer/Fall 2004)
University of Geneva, Dept. of Computer Science (CUI)
So it's not Tuesday December 28 after all... Still, the project is officially over; and even though we have achieved significantly less than our original goals, we still feel that we have made a considerable effort towards complete and stable Aibo ERS-series support in Webots.
Download the Aibo chapter from Webots User's Guide
Our work will be integrated into the soon-to-come major Webots 5 release, purchaseable from the Cyberbotics.com website (demo version available will also be available). In the meantime, here are some final screenshots:
Control panel for Aibo ERS-7 robot
Control panel for Aibo ERS-210 robot
For additional information, please do not hesitate to contact us by email.
Work on the source code has been finalized today. We have achieved a fully functional product (including Windows remote connectivity) and even managed to add a few previously lacking features, such as a status bar displaying useful information/confirmation and, more importantly, an MTN "fix" feature which allows to adapt MTNs to our software in one click (and, incidentally, helps to port MTNs from one ERS model to another).
We need a couple more days to finalize a User's Guide chapter on Aibo support in Webots which we are currently writing. Additionally, some final tweaking needs to be done to the Aibo models and the virtual worlds they live in.
We are making considerable progress, at long last, in unifying the control panels for the ERS-210 and ERS-7 series. The result is a product which is both cleaner (code-wise) and, we hope, slightly better-looking (one criterium being that the control window should fit onto a 1024x780 screen).
About 90% of the codebase is now in a shared trunk, the rest of the code being very specific to each individual model. Here's what the panels now look like:
New Aibo ERS-210 control panel
New Aibo ERS-7 control panel
A patch for Webots integrating these new developments, as well as a few unrelated bugfixes, should be made available soon. Check back for more news!
We are still working on the unified control panel. It is taking longer than we previously surmised, partly because we under-estimated the effort required to unify the trunk of the code and still cope with individual differences of both target models (ERS-210 and ERS-7) and partly as a consequence of personal issues.
New, final, milestones are as follows:
- Mon December 13 (~2 weeks)
working and tested version of the unified control panel for both ERS-210 and ERS-7;
- Fri December 24 (2 more weeks)
fully compiled and proof-read documentation for the Webots User's Guide
Week 7: We are back!
Back to work after a 4-week break, we now enter the final stage of this internship project (extended until shortly before Christmas).
With 5 weeks left until the end of the 3 months allocated to the project, it is now apparent that the original goal (i.e., the creation of a framework for RoboCup development) will not be met. We have therefore redefined priority objectives to achieve by mid-December, which are as follows:
- Unified control panel
- Fix Aibo connection issues (Windows)
We have a new working control panel for ERS-7 and an old control panel for ERS-210; these need to be unified, because the bulk of the code and functionality is very similar between the two models. Once this task is done, we shall be able to commit our work into the main Webots trunk, thus completing our main development objective.We allow 2 weeks for this part.
It is imperative that a clear and extensive documentation be available regarding our work done on the Aibo support within Webots. In this view, a new chapter will be added to the Webots User's Guide where support for the Aibo ERS-210/ERS-7 and the related models will be thoroughly discussed.Furthermore, we will provide a detailed description of the classes created during the unification process for the benefit of the Programmer's Guide (or simply as an internal addendum to the source code).We allow further 2 weeks for this part.
It is currently impossible to control a live Aibo remotely using the integrated control panel; there seems to be a bug or incompatibility with Winsock which makes the robot drop the connection whenever a command attempt is made. This issue affects the new ERS-7 software as well as the old ERS-210 control panel (which was at the time tested on Linux only).We allow a final 1 week for this part.
Ready for Andong!
With a couple of days to go before the Conference, we now have a working version of the Aibo control panel. We are able to control the model in simulation as well as send commands to the live robot.
Download a short movie [4.09Mb] of an Aibo ERS-7 performing a dance in simulated playback
Here's what the control panel for the Aibo ERS-7 looks like:
(Credits: Ricardo Telez for providing ERS-7-enhanced stand-alone version of the control panel based on previous work done on ERS-210 by Lukas Hohl.)
MTN playback works in simulation; on the real robot however, the playback seems to be in "fast-forward" mode, in spite of our effort to convert unsupported MTNs to a format playable with the old control software running on Aibo.
The conversion tool we produced for the purpose will eventually be integrated into the AiboERS-DRC3 applet, allowing inter alia to convert between ERS7 and ERS210 playback files, as well as adapt MotionEditor-generated MTN sequences to work with the old control software.
We will be taking a 4 weeks break starting from tomorrow (of which 3 weeks will be spent on exams and various University projects, and an additional week on civil service duties).
End of Week 4: Synopsis
The project has now been ongoing for 4 weeks. So far, we have accomplished the following tasks:
- created a proper model for ERS-7
- updated existing model for ERS-210
- written an MTN playlist controller for the ERS-series
- fixed MTN playback in controller's API
The 5th week (starting now) will be spent:
- hot-fixing MTN playback (simultaneous as intended instead of sequential as currently implemented in our fixed API)
- working on the unified ERS-series control panel (at last!)
This work will be directly used for Cyberbotics' demo at the Intelligent Robotic Contest in Andong. All things needed for the demonstration should be ready by late September, so we have a little less than 3 weeks to have a working prototype (or even better, a final release) of the Direct/Remote Control & Cross-Compilation applet for Webots.
Clean & documented ERS-series models
At this stage, we finally have complete clean and properly documented models for both the existing ERS-210 and the new ERS-7 robotic dogs.
The ERS-7 model has been improved and now has proper jaw support. All joints and range sensors are now fully supported on both models, and joint limits are taken into account model-side (the ERS-210 model previously did not include those limits). Front legs' bounding boxes are now defined more tightly, the idea being that if the dog is to be used for football play, developers are likely to require precise collision detection on the front part of the robot.
Here's what the ERS-7 looks like now:
Here's what the ERS-210 looks like now:
(White wireframe are bounding objects; red crosses are servos/sensors positions; red lines represent distance sensor range metaphors.)
ERS-7 model ready
The few past days were spent building and fine-tuning Aibo ERS-7 model into Webots. We had a LightWave model of the robot, supplied by Sony, converted to VRML97-like format used in Webots for scene tree modelling.
Our task consisted in implementing bounding boxes for collision detections, as well as support for mobile components, such as servos (motors which control moveable joints), LEDs, I/O devices (camera, touch & distance sensors), as well as the physics of the robot (distributing the weight across various parts in order for the simulation engine to more accurately render robot's movements). The fine-tuning was done by copying relevant values over from the ERS-210 previous model, since we have no real ERS-7 available to play with.
This is what the robot looks like with its bounding boxes defined:
ERS-7 model with bounding boxes
Internship started! (check back for progress...)
The Internship started in a very relaxed way, on a rainy summer day in Lausanne. My first meeting with Cyberbotics' boss, Olivier Michel, was spent discussing details of the project as well as outlining a general plan of action.
The first week would be spent studying the Webots package and getting acquainted with integrated robot model building.
The project's key points as defined during our first session are as follows:
- Modelling of Aibo ERS-7 robot
- ok enhance given 3D VRML model (servos)
- ok implement I/O elements (sensors, camera)
- ok test with simple controller
- ok document
- (10.09.2004) Revise existing Aibo ERS-210 model
- ok add proper I/O support (sensors, camera)
- ok document
- Unified Control Panel for ERS-series
- ok extract common trunk from existing ERS-210 control panel
- ok re-implement ERS-210 specific support
- ok implement ERS-7 specific support
- Demo at Intelligent Robotic Contest 2004 in Andong, Korea (Oct. 6-10, 2004)
- ok ensure remote control still works on ERS-210
- ok implement remote control support for ERS-7
- ensure cross-compilation still works on ERS-210
- implement cross-compilation support for ERS-7
- prepare demo controllers for show
- (20.09.2004) Extended MTN playback support
- ok better support for interpolated keyframes (model-side)
- ok MTN formats conversion toolbox
- add MTN playlist routines to controller API
- Aibo-side playback software revision
Camera feedback support(dropped for lack of time)
- add support for on-board camera feedback
- involved writing a streaming video server for Aibo
RoboCup-specific API for Webots(dropped for lack of time)
- build world with relevant Supervisor ruling
- create API for easy RoboCup-related development
- ok Aibo ERS-series chapter in Webots User's Guide
- ok internal project documentation
- (02.11.2004) Fix Aibo connection issues (Windows)
- fixed Aibo drops connection on command attemps
(bug involved improper send/receive calls, apparently Winsock networking API does not support universal read/write to sockets like Unix does...)