Tracked vehicle direct motor control

Skip to first unread message

Gerald Gattringer

Mar 13, 2023, 10:29:24 AM3/13/23
to ProjectChrono
for the simulation of a tracked vehicle I need to control the motors directly. I.e. I need to control the target RPM (or throttle) per motor (left/right) instead of direction+throttle. I'd appreciate some help on how i'd be able to achieve this! Thanks.

Radu Serban

Mar 29, 2023, 12:09:35 PM3/29/23
to ProjectChrono

Hi Gerald,


While adding support for direct drive motors in Chrono::Vehicle is on my todo list, this is not currently available.


Having said that, this setup can still be accommodated with a bit of a workaround:

  1. First disconnect the existing driveline: once you construct your Chrono vehicle model (either from a set of JSON specification files or using one pre-defined in the vehicle models library), simply call the function ChTrackedVehicle::DisconnectDriveline() to do that.
  2. You must then apply the desired torques to the sprockets. You can do this at the same time you “synchronize” the vehicle system at any time step.  You can invoke your (electric) motor models to get the torques they produce and then apply it to the corresponding sprocket shafts (which you can access through the vehicle->track assembly->sprocket->axle).  For an example on how to apply the torque to these shafts, see for example the implementation of ChSimpleDriveline (lines 122-123).


This approach (albeit for a slightly different purpose) is implemented in the Chrono::Vehicle co-simulation framework when attaching a drawbar pull rig to a (tracked) vehicle. Look at the implementation of ChVehicleCosimTrackedVehicleNode::OnInitializeDBPRig and of TrackedVehicleDBPDriver.



You received this message because you are subscribed to the Google Groups "ProjectChrono" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
To view this discussion on the web visit

Reply all
Reply to author
0 new messages