Piecewise Rigid Simulation of Continuous Tracks

Overview

The “continuous track”, also called “crawler” or “caterpillar”, is a locomotion mechanism widely used in tanks, construction machines, rescue robots, and so on. Choreonoid provides the “piecewise rigid continuous track” (PiecewiseRigidContinuousTrack) device for simulating continuous tracks. This page explains how to use this device.

In the physics simulation of continuous tracks, modeling each shoe of the track as a rigid body is a precise approach, but the number of rigid bodies and constraints becomes large and the computational cost increases. In contrast, the piecewise rigid continuous track treats the track belt wrapped between the sprocket and the idler as a small number of “piecewise rigid” bodies, such as the upper and lower straight sections and the sections wrapped around the wheels. The circulation of the track is synchronized with the rotation of the sprocket, and the behavior of the shoes (grousers) actually circulating and gripping the ground is reproduced. This makes it possible to stably simulate the characteristic ground contact behavior of tracks while greatly reducing the computational cost.

Note that Simplified Simulation of Continuous Tracks is also available as a simpler method for simulating continuous tracks. It does not represent the appearance of the tracks or the wrapping around the wheels, but it is the easiest method to use. Conversely, AGX Vehicle Continuous Track for the AGX simulator is available as a more precise method. Use each method depending on your purpose.

Compatible Simulators

The simulation with the piecewise rigid continuous track is supported by the following simulator items:

The device itself is built with the CMake option BUILD_PIECEWISE_RIGID_CONTINUOUS_TRACK (ON by default), and the simulators of the above plugins recognize this device and perform the simulation.

Model Description

A model using the piecewise rigid continuous track is configured as follows:

  • Define the sprocket (driving wheel) and the idler as normal wheel links with revolute joints

  • Define a link corresponding to the whole track, and describe a PiecewiseRigidContinuousTrack device node in the elements of that link

  • Refer to the sprocket and idler links by name with the sprocket and idler keys of the device node

In simulation, by rotating the joint of the sprocket with velocity commands etc., the track circulates in synchronization with it and the robot is driven.

The following is a description example in the sample model (share/model/Tank/PRCTrackTank.body).

type: PiecewiseRigidContinuousTrack
name: TRACK_L
sprocket: WHEEL_L0
sprocket_radius: 0.075
idler: WHEEL_L2
idler_radius: 0.075
width: 0.09
thickness: 0.01
num_shoes: 46
grouser_height: 0.012
grouser_thickness: 0.01
mass: 2.5
contact_material: TankTracks
drive_damping: 2000.0
drive_max_force: 200.0

The following parameters can be set in the device node.

Parameter

Default value

Meaning

sprocket

(required)

The link name of the sprocket (driving wheel).

sprocket_radius

(required)

The radius of the sprocket [m].

idler

(required)

The link name of the idler.

idler_radius

(required)

The radius of the idler [m].

width

0.1

The width of the track [m].

thickness

0.005

The thickness of the track (belt part) [m].

num_shoes

20

The number of shoes that make up the track. It corresponds to the density of the rendered grousers.

grouser_height

0.01

The height of the grousers (protrusions on the track surface) [m].

grouser_thickness

(same as thickness)

The thickness of the grousers [m]. When omitted, the value of thickness is used.

mass

(automatic)

The mass of the whole track [kg]. When omitted, the sum of the masses of the sprocket and idler links is used.

contact_material

The material name applied to the track. With the mechanism of Contact Materials, you can configure the friction between the track and the ground, etc.

appearance_material

The appearance material (diffuse etc.) used for rendering the track.

drive_damping

10000.0

The damping coefficient of the constraint used for driving the track.

drive_max_force

(unlimited)

The upper limit of the driving force of the track [N]. When omitted, the force is not limited.

Note

This device was previously provided exclusively for the PhysX plugin under the name “PxContinuousTrack”. Device nodes with the old name can still be loaded for backward compatibility, but the old name is deprecated, so use PiecewiseRigidContinuousTrack for new models.

Samples

Sample projects using the piecewise rigid continuous track are provided in the choreonoid/sample/PiecewiseRigidContinuousTrack/ directory. Each of them contains both the PhysX simulator and the Bullet simulator, and can be operated with a joystick (or the virtual joystick view).

  • PRCTrackTank.cnoid : A sample of a tank-shaped robot. You can operate the left and right tracks and the turret with a joystick.

  • PRCTrackVehicle.cnoid : A sample in which a tracked vehicle runs on uneven terrain.