Custom vehicle - snowmobile chassis guidance

78 views
Skip to first unread message

David Morrill

unread,
Nov 7, 2025, 10:53:48 AMNov 7
to ProjectChrono
Hi, 
Newb here.  My goal is to develop a snowmobile chassis using the chrono:vehicle as a basis.  I'm in Windows using an anaconda installation with pychrono 9.0.1.  It doesn't need to turn, just analyze straight bumps and model acceleration/traction in a straight line and the reaction to the  variations on the chassis design.   Almost a "2D" analysis.  

I think I may be not understanding a fundamental concept.  I thought I could just "bolt" together parts from the tracked and wheeled vehicles and be good to go. 

Attempt A.
I've tried to model a single sprocket, idler and road wheel with a track using the  M113_TrackAssemblySinglePin_Left and chassis, with limited success.  The next step would be to replace the  M113 Linear Damper Suspension Left with links/etc from the road vehicle to model a 4 link type.  I've tried 2 ways, creating/editing the JSON files from the demo, and also tried to just instantiate M113 parts (road wheel for example) on their own without an assembly or JSON.  

Attempt B.
I've also tried to model it with just physics with cylinders for wheels and a segmented track.  Modeling the track as segments and getting the links to stay together hasn't worked yet, they "explode" when I apply torque.  

Just looking for some guidance on which way is the best path forward.  I've been looking through the forums it seems like B may be better, but I need some help/guidance. 

Recommendations from anyone are welcome.   

Thanks a lot,
Dave.

Radu Serban

unread,
Nov 11, 2025, 4:18:18 AMNov 11
to ProjectChrono

Hi Dave,

 

I’m not sure what you mean by “bolting” together parts. The template-based approach adopted in Chrono::Vehicle does allow building vehicle models from parts, but with an assumed topology. 

 

If you are willing to build the entire vehicle (which, I assume, has 2 track assemblies) just use the existing templates for a tracked vehicle.  You can then force it to go in a straight line using, if necessary, a lateral controller.  Depending on the construction of the vehicle you want to model, you may need to define new templates if the existing ones are not appropriate.

 

If you only want to model half of the vehicle (although it’s debatable if that is enough for the scenarios you are interested in), then look for inspiration at the implementation of the track test rig (which effectively constructs a vehicle with one track).

 

In either case, unless you can use the existing templates to model a full vehicle, this involves some extensions of the existing Chrono::Vehicle code. That is much easier to do in C++ since the Python wrappers are not really meant for that. If possible, I also suggest you use the latest code in the main branch of the Chrono git repository (since there were significant changes from the 9.0 release).

 

Radu

--
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 projectchron...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/projectchrono/453ff6eb-1e80-45d1-828c-c0fc5dd24044n%40googlegroups.com.

Message has been deleted

David Morrill

unread,
Nov 19, 2025, 8:34:22 AM (14 days ago) Nov 19
to ProjectChrono
Thanks Radu,
I'm making progress. and am using the pre-built pychrono builds from here on windows. https://anaconda.org/projectchrono/pychrono/files/manage.
I fought with installing C++ and could not get it to work on my system. 

It seems like  AddForce/AccumulateForce are not exposed in the build I installed (py313h84d2775_6211).  I looks to me that this is the latest Windows build there. 

You mentioned I should get the latest code as there have been updates.   Which one should I use?

Thanks a lot,
Dave.

Radu Serban

unread,
Nov 26, 2025, 10:55:40 AM (7 days ago) Nov 26
to ProjectChrono

Hi Dave,

 

I also suggested you use C++ :-)

Not everything is wrapped and exposed in PyyChrono.  Furthermore, it is easier to extend Chrono in C++ than it is in Python. If possible, I suggest you use C++ and the latest code in the main branch of the Chrono git repository.

 

Having said that, the function ChBodyy::AccumulateForce and friends have been available in PyyChrono for quite a while. Look at demo_MBS_emit_cluster.py in your PyChrono distribution.

 

--Radu

Reply all
Reply to author
Forward
0 new messages