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
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
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 <