In order to boost the move towards the robocup main goal, and speed-up the AI research we decided to release parts of our source code for the public robocup simulation community, so that participants in this great field of AI won't waste their time to write codes for the very low-level aspects of the research, like connecting to the simulator.
The codes are from our previous implementation (Under the name of Gcyrus) who participated in Iran-open 2007 robotic games and managed to reach to the final round. The code is written in C++ but it doesn't use professional and hard-to-check-out codes to make the review hard. It is structured scientifically and smoothly, and is heavily documented.
The main idea for releasing the sources, was to simplify and boost the move to AI aspects, to use the time normally wasted in implementing the low-levels, for implementing the ideas of learning and decision making mechanisms.
We hope that this could be the beginnings of a new start to the community
2D simulation has gotten very exciting recently, agents playing somehow completely autonomous, and all of us were expecting humanoid agents to somehow have this way of thinking on their robot body and finally a real autonomous agent to be born, but all the things done in 2D field was not enough for this great purpose, still there were low-level skills needed to be implemented on agent, and without those, no humanoid robot could be capable of doing high level decisions. So 3D simulator came in, bringing in real simulation needed for completing decision mechanisms, and the idea to use humanoid robot models, simulated, to enable low-level actions like walking, and to adapt very high-level decision mechanisms used in 2D simulation to a real-time, real-world 3D simulation, and to create broader, more complex ( and maybe unpredictable ), and more real situations.
Design process for a simulation robotTo design a robot for simulation, there are steps that should be done: A robot should be chosen, Attributes of its parts should be extracted, like dimension, mass, density and joints, all of these steps are needed to simulate the agent, then someone should type the attributes, correct them, debug them and finally with all of these done, a robot scene is ready.
There are problems and speed dumpers that significantly reduce speed of this process, and they appear when all of the information needed is ready and robot information is going to be coded. Currently the only way to create a robot from known information is to type them as a scene by hand, which is greatly time taking and has a great error probability, and what about updating the robot? Just take in mind that main goal is to develop intelligent softwares that fit in a real robot, which its technology improves day to day and an update once in a while is needed for softwares. Take this too: When a robot is first made for simulation, like the soccerbot, it is not going to be the full featured robot for simulation, think about reasons of simplifying simulation, like it’s not necessary to have a turn able neck at first but it is necessary to have legs and stuff, cause the first problem for soccerbot to be solved was not how to look to a particular position, but how to maintain balance and have ability to walk, then when the time came, in which soccerbot is ready and can walk, run: it is going to be needed. Not previously but now. Now that’s the time which an update is needed to create a neck and head and etc for robot. This was one little problem that can be solved in a day or two, but take in mind the process of adding hips or vertebrae, and everybody agrees that a humanoid robot should have both of these! There are other problems that may occur, which do not relate to robot structure, but related to limitations of specific tools of simulation, like a problem joschka once talked about: "I designed size of soccerbot big enough so that our would not encounter any bugs with ode
These are problems that can be solved by automated softwares, designed specially for this purpose. See how AutoCAD simplifies creating and managing designs for designing engineers Currently there is no such software and all modifications to simulation robots are done by hand, that is why updating and correcting process for robots are done this slow. To solve this great problem, Zigorat has thought about creating a software responsible for this purpose, and currently the software created for this purpose – ZigoBot Designer – is ready and is capable of creating complete robots and load and update them while showing the result as a 3D simulation.
Design Specifications of ZigoBot Designer: (This application is mainly designed for simulator development) On first hand, let's clear out format of a scene: A robot scene is written in S-expression format and is composed of nodes. There are several nodes in a scene, ex. transforms, Cylinders, AgentAspect, SingleMatInitEffector, TimePerceptor, Space, etc. Which all represent something about the robot to be loaded, like for the TimePerceptor, a perceptor to send robot time information. All of these nodes can have parent nodes, which then creates a scope to child nodes, like for example a joint node is child of a Transform node. Every node has its own parameters and respecting values, like for a transform node, a 'name' compound which sets name of node. There are constants and definitions set by define statements and aside from these all, are evaluation statements. With the help of definitions, scene can be written more human understandable, but even with those, a scene for a robot like HOAP-2 comes awfully big and mind-twisting. ZigoBot Designer has a full-featured built-in S-Lang expression parser which is capable of parsing any element in scene, so a scene can be loaded and changed. Aside from the powerful parser, there is a powerful merge system that merges all the information and saves to scene so that simulator can interact with it. There are two top-level windows in application:
Now, with all the things said till here, there seems to be greater future for robot modeling and simulation in 3d soccer simulation project, with robots more worthy for playing soccer.
Source of ZigoBot-Designer is available for public via this link.