# Standalone (or capable of being) Robotics Simulator

I'm a software engineer who volunteers with a non-profit that introduces young girls to technology. We have recently been talking about methods of introducing these children to the world of robotics, and I am curious what types of low-cost options we have.

One very appealing idea would be to have an online simulator, or (more preferable) an off-line standalone-simulator that we can build and program simple robots with. Perhaps nothing more than dragging components together, and then programming the interactions between those components.

What solution(s) exist that I might be able to make use of in our outreach?

• In my experience, a non-working average-looking robot gets way more attention (as a robot) than a full-blown cool-looking robot in a simulator. As long as it's not real, it may have as well all been a computer game or a cartoon for all kids care. – Shahbaz Dec 18 '12 at 17:15
• We need a simulator so the girls can actually learn programming concepts, and put them in use. The simulator doesn't need to be pretty - it could be nothing more than crude geometric shapes. The code is what matters. – Sampson Dec 18 '12 at 17:26

Stage and Gazebo are open source 2D and 3D simulators respectively. They are created and maintained by the Player project. They are very easy to use and have a lot of pre-built maps and robots. Depending on the experience of your audience you may need to do a bit of the heavy lifting (i.e. building configuration files and the main classes).

They have a couple of additional benefits as well. First, so long as you create your main control code as player plug-ins then they can be easily adapted to real robots. Second, there are a large number of plug-ins already built to work with real hardware. Third, they work with ROS.

May be it is a bit pricy (CHF 75) but I still suggest Colobot. It is a nice, almost game-like environment where robots need to help humans to make a space base habitable. Robots are programmed by the kids while increasingly complex tasks are performed. The program teaches the fundamentals of programming in a goal-oriented, funny way.

Microsoft robotics is FREE and includes a simulator. It is not exactly the easiest environment in the world, however it IS robust and appropriate to real robotics. I think with some teacher involvement to set things up beforehand, it could be usable. There is a simulator 'package' for LEGO, Neato and some other robots, and they can be programmed in C# or a visual drag and drop language.

Again, I think it would need some work up front to make it easy for youngsters to use, but it wouldn't be that hard, and would be my approach given your requirements. I would say as far as complexity goes, this (windows) vs. a Linux environment with Gazebo/ROS, the windows environment would be slightly less complicated, although most of that would hopefully be hidden with preparation work.

RobotC has a simulator available, although both are products at some costs. However, they are very geared towards younger students and education. This would be the easiest, and most appropriate route if costs are not a blocking factor (around \$100 per license for both for single user, \$300 for 6 users, \$600 for 30 users). If you buy the student version ROBOTC for MINDSTORMS NXT of LEGO the price can be 49\$ for each or 40\$ (more than 20 licences)

V-Rep (Virtual Robot Experimentation Platform) seems to be quite broad in the kinds of simulations that it can do. It is free for educational purposes and comes with a wide range of tools. You can take a look at this YouTube video for a demo.

Maybe not a full robotics simulator but we are using 3D CAD, Autodesk Inventor, quite a lot for simulations. Usually we make an interface to the CAD similar to what we want it to be for the hardware. That way we can use the CAD model as a virtual prototype to:

• Catch design errors early. Collisions, not enough stroke etc.
• It has also been useful for finding compensations to errors such as alignment errors. Using the CAD we can model different errors one by one and test our compensations. It is convenient to be able to introduce large errors with known sign.
• We also use the CAD model to generate the program for the equipment.
• Correct me if I'm wrong but CAD focuses very much on modelling the hardware and physics correctly, much less on programming the robot. The OP is interested in teaching programming, not engineering, so I think a CAD system doesn't address his problem – ThomasH Jan 22 '13 at 16:27
• @ThomasH we have had some success programming to the api of the CAD and that way been able to do a lot of development. Should I delete? – Johan Larsson Jan 22 '13 at 16:31
• No need to delete. It's not a bad answer just because I think it's not a great fit for the OP. Voting usually propels the most fitting answer to the top anyway, and the OP will accept the one that helped most. But your's might still be of interest to someone with a similar problem that comes across this question – ThomasH Jan 23 '13 at 1:29

You might want to check out "MindRover". It's old and harder to find now since the original website is defunct, but can still be found on Ebay or Amazon. Although game/mission oriented, it involved picking from a palette of robot components, putting them on a chassis, and then wiring them together. It was really well done for a game and could be used to explore simple to semi-advanced concepts. Some screenshots here: http://images.google.com/images?q=mindrover.

If you are looking for something a bit more serious with real world capabilities, you might want to check out FlowStone for Education. I have not used it, but I believe it is a visual programming environment ideally suited for robotics type work.

Last, although not software or simulation, I recently came across a comment on reddit by phblj regarding a technique for introducing programming, and I thought it was really good (and especially adaptable to robotics programming). Quote:

Great example of computers I did with kids: One kid got to be the "program" and gave instructions on how to make a peanut-butter and jelly sandwich, but they couldn't watch my actions. I was the computer, and followed the instructions exactly. Hilarity resulted. (Not taking lid off peanut bar, not getting bread out of box I had it in). After a minute, another kid came up and tried. They got a little further, but still floundered. "Put the peanut butter on the bread" resulted in the jar sitting on the loaf, etc. It took several kids, but eventually we got it. If you've got an assistant, have them write the instructions as they're said, creating the "program."

You can get into explanations, then, but the thing that really stuck was that the kids were each "smarter than a computer." But that computers were really, really fast at following instructions. So they needed to use their smarts and the computers speed, and... programming!