Update : Radom Mapper ! - it works !
The cause and effect :
Arduino wire changes state (Bumper) ------ sends an event to Python ---------> Makes a random wall !
In one script (randomBumper.txt) ! Watching the walls just spring up.. Now I'll be looking into controlling the little green bot in the virtual world through MRL with the same control systems which would be used to control a "real" bot.
Bleeding Edge build 967
DWR was right, Simbad was not made to dynamically add components while it is running. But it's software right ? It can do anything you want (given infinite time). Fortunately, Simbad is so well structured, it was relatively easy to pull out the machete and hack away to the correct area. First I tried adding more strucutures dynamically to a thingy called MyEnv (environment).
It' didn't involve hacking, but it didn't work. Next I found a thingy called "World" which was not exposed. Dug a little deeper & found an "attach" method. With my machete I exposed that little jewel to the light and Viola !
Simbad can now dynamically add objects to it's simulated world ! In the above picture I plopped down the huge moniliths while the robot was racing around. I was imagining a Tron like world where the poor robot is running away, and the evil controller is trying to smash him to bits with giant black walls ! Bwa ha ha ha !
Below show's the Python access - add a wall by specifying the 2 x 3D points during "runtime"
Now, I guess I have to fork Simbad since it requires some updates to support this. I'll email the project manager and see if they are interested in having them. If they aren't or if the project is really dead, I'll fork the code into MRL source.
Next it to create a "Navigator Service" as DWR suggested - and bind it with sensor data (contrieved or real) so we have robots which can begin to graph their environment. WooHoo !
Added random walls, a little maze theory would probably be good at this point...
Easy to tweak ! Very well organized. See there's a differential drive demo too. So "theoretically" if I was to create a Differential Drive Platorm Service, A Finite State Machine service, and say a Bumper Service - I could build & test without hardware - then flip the control and state logic over to a real bot and see how it does.
We are looking for a good robot simulator(s) to add to MRL.
Currently, I've figured out how to get Simbad running as another service in MRL (Yay) works on Linux & Windows.
The view is of Simbad with an Arch, a basic robot & a set of random box like objects set about in an environment.
Simbad is great. It's written well, open source, has good documentation, and is very structured and written completely in Java. The only "bad" part would be it uses Java3d which is a library that is completely dead.
Anyway, it might do for the first, simple working simulator in MRL.
Above is what I've done so far.
You can now install & load Simbad as a service. It starts up, creates an environment & robot - then puts an arch up and 20 random place blocks.
The idea is "without hardware" you'll be able to test a robot created from MRL service in a simulated environment. Then when the batteries are charged and all the parts are hot glued together, you can run the same control system on the "real" robot. This is what is often done with ROS & Player/Stage/Gazebo.
We could write a service which would interact with other simulators too of course. Player/Stage/Gazebo, Blender, and a few others.
To Do :
- Look in detail at Simbad's programming guide
- All environments are static - they are created at initialization and used from that point - Look if creating a "Dynamic" Environment is possible. On which obstacles become apparent after being observed by a sensor
- Look at possibilities of creating an interface for a Platform Service which would represent a simple differential drive platform
- Interface for Arduino service - sensors & controllers (Motors & Servos)
- Figure out why some of my blocks shearing & why the robot can drive through them :P .. It "collides" with the arch ... mebbe it needs to be "green"
- Robotics Simulator - Wikipedia - list of open source simulators
- Java Player/Stage connector
- Java3D Downloads
- Simbad Homepage & Programming Guide
- Blender Robotics Simulator
- JOGL - low level Java Open GL library
- Ardor3D - Zip licensing - 3D scene graph replacement for Java3D uses JOGL (commercial split from JMonkey)
- JMonkey - schene graph library & game engine