Skip to content

raisim::Track ​

struct · #include <raisim/object/ArticulatedSystem/Track.hpp>

A rigid track (continuous belt) of an articulated system, defined by a URDF <track> element.

The belt wraps the convex hull of its wheels, in the plane perpendicular to axis, and is rigidly attached to link. Its surface moves along the loop at the belt speed s = sum(gain * joint velocity) over the drives: where the outward surface normal is n, the surface velocity is s * (axis x n), the same as the rim of a wheel of radius gain turning about axis. Contacts on the belt therefore pull on the drive joints, so a drive torque moves the robot through friction and a blocked robot loads its drives.

The belt's collision geometry is one cylinder per wheel (radius: wheel radius + thickness) and one box per straight span; getCollisionBodies() lists them under the names in collisionBodies.

Public attributes ​

name ​

cpp
std::string name

Track name.

cpp
std::string link

Name of the link that carries the belt.

bodyIdx ​

cpp
size_t bodyIdx

Local index of the body that carries the belt (the link, or the body it is fixed to).

axis ​

cpp
Vec<3> axis

Belt rotation axis, a unit vector in the link frame.

width ​

cpp
double width

Belt width along axis [m].

thickness ​

cpp
double thickness

Belt thickness [m]: the belt's outer surface lies this far outside the wheels.

drives ​

cpp
std::vector<TrackDrive> drives

Joints that move the belt.

collisionBodies ​

cpp
std::vector<size_t> collisionBodies

Indices into ArticulatedSystem::getCollisionBodies() of the belt's collision bodies.

RaiSim — physics for robotics and AI.