# Simulating a track driven robot

I'm trying simulate the movement of a robot with a rubber track similar to iRobot's LANdroid. Ideally I would like to represent the robot with URDF and use Gazebo as the simulation environment. I am particularly interested in tasks such as climbing over stairs; the way these robots climb over stairs is dependent on some approximation of a track being present.

Does anyone have any advice or pointers on how I can model a track driven robot, preferably with Gazebo & URDF?

Currently I am using ODE and some OpenGL visualizations I wrote myself. The tread is modeled as a series of overlapping non-colliding wheels. While this works, it is a very rough approximation and there are un-addressed issues such as determining the torque to apply on each wheel joint based upon the signal sent to the drive motor and the friction each wheel is encountering.

I have also considered modelling the track as a chain of rigid links being driven by the drive wheel. This would be a more accurate model of the tread but I'm concerned with the stability and performance of ODE if I take this approach.

Originally posted by jcleveland on ROS Answers with karma: 1 on 2011-06-27

Post score: 7

Now there is official support for tracked robots in Gazebo 9 and 11 using ODE. Check out https://github.com/osrf/gazebo/blob/gazebo11/worlds/tracked_vehicle_simple.world for usage example.

Originally posted by peci1 with karma: 1366 on 2020-04-24

This answer was ACCEPTED on the original site

Post score: 1

I agree that simulating contacts between the tread's rigid body links, the drive wheels and the ground might be computationally very expensive to simulate stably and correctly (i.e. small time step size + high inner iteration count).

If near real-time performance is needed, one possible "cheat" I can think of is to break the track into a few sections:

1. front drive wheel with tread around the drive wheel modeled as a single rigid body.
• back drive wheel with tread around the drive wheel modeled as a single rigid body.
• simulate the straight part of the track between front and back drive wheel by a single piece tread section constrained by a slider. Allow some overlap between the track section and the drive wheels, so the track section can slide "one tick length". As the track section moves from one drive wheel to the other during its travel, simulate the periodic boundary condition by "snapping" the track section back to the opposite drive wheel so it can continue its motion in the same direction.

The simulated track will not be flexible, but will be much cheaper to simulate computationally.

Hope this makes sense?

Originally posted by hsu with karma: 5780 on 2011-06-29

This answer was NOT ACCEPTED on the original site

Post score: 4

Comment by ChickenSoup on 2014-04-08:

Have you seen these videos?
ODE Tank Tracks 1
ODE Tank Tracks 2
ODE Tank Tracks 3
I have not seen the code, but it appears that with some tricks (see video comments) it is feasible to model tracks as rigid body links in real-time... new track constraints anyone? :)

Originally posted by hsu with karma: 5780 on 2011-07-18

This answer was NOT ACCEPTED on the original site

Post score: 2