chrono::vehicle overview - university of …sbel.wisc.edu/documents/chronovehicleoverview.pdf ·...
Post on 30-Jul-2018
237 Views
Preview:
TRANSCRIPT
CHRONO::VEHICLE OVERVIEW
- Radu Serban
1
What is Chrono::Vehicle?
• Chrono vertical app (unit) for the modeling, simulation, and visualization of wheeled ground vehicles and (soon) tracked vehicles
• Middleware: can be embedded in third parties software
• Open source with BSD license
• Library developed in C++
• Cross-platform: compiles on GNU GCC, MSVC, etc
• Dependencies: Chrono::Engine and (optionally) the Chrono UNIT_Irrlicht
2
What is Chrono::Vehicle?
• Vehicle system
• Auxiliary systems for testing vehicle systems in a co-simulation framework:
• Tire system (rigid, LuGre, Pacejka)
• Terrain (heigh-map)
• Powertrain (engine + TC + transmission)
• Driver model (interactive, data-based)
VEHICLE
DRIVER POWERTRAIN
TIRES
TERRAIN
HeightNormal
Forces and moments on wheel bodies
Wheel states
Driveshaftspeed
Driveshafttorque
Throttle input
Steering inputBraking input
3
What is Chrono::Vehicle?
• Modular: vehicle are modeled from instances of subsystems (suspension, steering, driveline, etc.)
• Flexible: use parameterized templates
• Expandable, via C++ inheritance• New subsystems
• New templates for existing subsystems
• New vehicle types (e.g. tracked)
ChassisStee
ring
sub
system
Body state
Driveshafttorque
Front suspensionsubsystem
Rear suspensionsubsystem
Tire forcesWheel state
Steering
Body forces
Tire forcesWheel state
Tire forcesWheel state Tire forcesWheel state
Drivelinesubsystem
Driveshaftspeed
Brake torqueBrake torque
Brake torque Brake torque
4
Code design – templates
• Template-based modeling(not in the C++ sense)
• In Chrono::Vehicle, templates are parameterized models that define a particular implementation of a subsystem type:
• Define the basic Chrono modeling elements (bodies, joints, force elements, etc.)
• Impose the subsystem topology (connectivity)
• Define the template parameters
• Implement common functionality for the type of subsystem (e.g. ‘suspension’), particularized to the specific template (e.g. ‘double-wishbone’)
5
Template example – Double wishbone suspension
Upper control arm
Lower control arm
LCA balljoint
Tierod
Upright
Spindle
UCA balljoint
Shock
LCA revolute
UCA revolute
Spindle revolute
6
Y
XZ
UPRIGHTSPINDLE
TIEROD_U
TIEROD_C
LCA_B
LCA_F
LCA_U
UCA_U
UCA_F
UCA_B
UCA_CM
LCA_CM
SHOCK_C
SHOCK_U
SUSPENSION SUBSYSTEMREFERENCE FRAME
CONTROL ARMCENTROIDAL FRAME
Z X
Y
7
DOUBLE A-ARM SUSPENSIONTEMPLATE
1D shaft element
3D rigid body
shaft – body connector
jointUpper control arm
Lower control arm
Chassis Upright Spindle Axle
Tire forcesWheel state
Angular velocity
Motor torque
Revolutejoint
Revolutejoint
Revolutejoint
Sphericaljoint
Sphericaljoint
Distance constraint
Shock
8
DOUBLE A-ARM SUSPENSIONTEMPLATE PARAMETERS
rotational inertia
mass and inertia tensor
spring coef., damping, free length
point locationUpper control arm
Lower control arm
Chassis Upright Spindle Axle
Revolutejoint
Revolutejoint
Revolutejoint
Sphericaljoint
Sphericaljoint
Distance constraint
Shock
9
Code design – class hierarchy
• Chrono::Vehicle encapsulates templates for systems and subsystems in polymorphic C++ classes:• A base abstract class for the system/subsystem type (e.g. ChSuspension)
• A derived, still abstract class for the system/subsystem template (e.g. ChDoubleWishbone)
• Concrete class that particularize a given system/subsystem template (e.g. HMMWV_DoubleWishboneFront)
• Concrete classes:• User-defined – a derived class that satisfies all virtual functions imposed by the inherited template class
• not part of the Chrono::Vehicle library
• several example concrete classes and demo programs are provided
• Generic – a derived class that satisfies all required virtual functions using parameter data from a specification file
• part of the Chrono::Vehicle library
• specification files use the JSON format
10
Chrono::Vehicle subsystem templates
• Suspension subsystem• Double wishbone
• Multi-link
• Solid-axle
• Steering subsystem• Pitman arm
• Rack and pinion
• Driveline• 4WD
• 2WD
• Brake
• Wheel
11
Run-time visualization with Irrlicht
12
Post-processing visualization with PovRay
13
Run-time and Presentation Animations
14
Code availability
• Source code:https://github.com/projectchrono/chrono-vehicle
• Bug reports, feature requests, pull requests GitHub
• API documentation (doxygen)http://api.chrono-t.uwsbel.org/
15
top related