For Robo Renegades starting out with a low budget, simulations can be the only way to prove an idea.
The problem is that designing a robot for Gazebo is has lots of moving parts, especially if you want to control your simulation using the Robot Operating System (ROS). Here are all the key technology ideas you need in one place to get started:
# XML (Extensible Markup Language)
All of the configuration files for Gazebo are written using XML.
It's basically a system like HTML, that lets you create properties and relationships to things. It's extremely general, and so the following formats use XML as a base to express things related to simulation. Think of XML like grammar of the English language, while the following things are like technical language such as the way doctors have their own technical medical language.
# URDF (Unified Robot Description Format)
If you're building on top of someone else's robot, they will probably send you a URDF file.
This file is used by ROS to describe how a robot is put together. Its necessary for a robot to know how long its arm is and precisely how far away its wheels are from its cameras.
Upon first glance URDF file looks like its enough for a robot simulation, but sadly its not.
# SDF (Simulation Description Format)
The Gazebo software package has its own language for describing things in the simulation.
Because Gazebo simulates physics, it needs to know things like how much mass, inertia and friction the different objects in the world need. A URDF file will almost always need extra detail for it to work in Gazebo.
# ROS PLUGINS
If you want to simulate a robot, you need it to be controllable and be able to see.
This is where ROS Plugins come in. You can use a plugin to assign a sensor to a particular part of the robot. You can use a different plugin to let the robot know where its wheels are and listen to command signals.
# XACRO (Xml mACRO's)
If you play with URDF long enough you are bound to come across XACRO.
This is a meta language that lets you script your robot file. This can be useful when your robot has lots of similar parts. Perhaps you have 4 wheels, you can write the description for the wheel once and then have it repeated 4 times.
Critically if you receive an XACRO file you will need to run the xacro script to convert the output into URDF or SDF, as Gazebo can't read XACRO by default.