Gazebo Simulation - olinrobotics/gravl GitHub Wiki

Installation and Usage

For installation and usage information see the tractor_sim repo here

Why a simulation?

Originally, we asked ourselves why we needed a simulation when we already had a platform. After working on the platform for several semesters without a simulation, we realized that being dependent on weather and mechanical things working caused significant delays in code progress, so this was developed in order to help combat that.

Why is this built the way it is?

Since none of us had experience with working with Gazebo, we wanted to start off by finding a working simulation out-of-the-box, understanding how it works, then building a model of the tractor based on our findings.

Options Explored:

Erle Rover

Erle Rover is a well-documented platform typically used for learning ROS and Gazebo.

Pros:

  • Sensors (camera, lidar) are already integrated
  • Has ackermann steering
  • Well documented with people actively maintaining the project

Cons:

  • Lots of dependencies and large overhead to get one thing working
  • Uses a different distro of ROS, wouldn't build successfully on ROS Kinetic after several attempts Erle-Rover Reference

Ackermann Steering Simulation

This is a sample ROS package for simulating a vehicle with Ackermann steering Pros:

  • Working ackermann drive simulation
  • Simple and easy to understand - few unnecessary dependencies/files

Cons:

  • Tweaking any parameter causes simulation to break

Informative Blog Post

Source

How could this be better?

ROS has a package for ackermann steering based robots where things like transforms, twist to ackermann conversions, and other things are already built-in. There's a package that uses this package for Gazebo, but we chose not to use it here since it would involve re-doing most of our platform.

Other Resources

Open Source Self-Driving: Contains lots of self-driving modules and bag data

Simple Gazebo Tutorial: Contains tutorials for making a simple robot platform that moves

Gazebo Plugin For Ackermann Steering

Controller for Ackermann Steering

Another Controller for Ackermann Steering

Xacro to URDF explained

Adding lidar and camera to bot with xacro

Good examples for different sensors

Known Dependencies:

https://github.com/tu-darmstadt-ros-pkg/hector_gazebo (maybe, not be necessary)

CAD Models:

TODO:

  • Modify mass of cone
  • Add terrain model
  • Figure out model coloring
  • Fix relative positions of sensors
  • Add sensor meshes
  • Add localization to launch
  • Rename sensor links to match
  • How to have optional launch file? <
  • Double check transforms + link names <
  • Figure out what localization should do <