1 // =============================================================================
2 // PROJECT CHRONO - http://projectchrono.org
3 //
4 // Copyright (c) 2014 projectchrono.org
5 // All rights reserved.
6 //
7 // Use of this source code is governed by a BSD-style license that can be found
8 // in the LICENSE file at the top level of the distribution and at
9 // http://projectchrono.org/license-chrono.txt.
10 //
11 // =============================================================================
12 // Authors: Radu Serban
13 // =============================================================================
14 //
15 // mrole rigid tire subsystem
16 //
17 // =============================================================================
18 
19 #include <algorithm>
20 
21 #include "chrono_vehicle/ChVehicleModelData.h"
22 #include "chrono_models/vehicle/mrole/mrole_RigidTire.h"
23 
24 namespace chrono {
25 namespace vehicle {
26 namespace mrole {
27 
28 // -----------------------------------------------------------------------------
29 // Static variables
30 // -----------------------------------------------------------------------------
31 
32 const double mrole_RigidTire::m_radius = 0.675;
33 const double mrole_RigidTire::m_width = 0.8 * 0.415;
34 
35 const double mrole_RigidTire::m_mass = 105.0;
36 const ChVector<> mrole_RigidTire::m_inertia(21.72, 38.74, 21.72);
37 
38 const std::string mrole_RigidTire::m_meshFile_left = "hmmwv/hmmwv_tire_left.obj";
39 const std::string mrole_RigidTire::m_meshFile_right = "hmmwv/hmmwv_tire_right.obj";
40 
41 // -----------------------------------------------------------------------------
42 // -----------------------------------------------------------------------------
mrole_RigidTire(const std::string & name,bool use_mesh)43 mrole_RigidTire::mrole_RigidTire(const std::string& name, bool use_mesh) : ChRigidTire(name) {
44     if (use_mesh) {
45         SetMeshFilename(GetDataFile("hmmwv/hmmwv_tire_coarse.obj"), 0.005);
46     }
47 }
48 
49 // -----------------------------------------------------------------------------
50 // -----------------------------------------------------------------------------
CreateContactMaterial(ChContactMethod contact_method)51 void mrole_RigidTire::CreateContactMaterial(ChContactMethod contact_method) {
52     MaterialInfo minfo;
53     minfo.mu = 0.9f;
54     minfo.cr = 0.1f;
55     minfo.Y = 2e7f;
56     m_material = minfo.CreateMaterial(contact_method);
57 }
58 
AddVisualizationAssets(VisualizationType vis)59 void mrole_RigidTire::AddVisualizationAssets(VisualizationType vis) {
60     if (vis == VisualizationType::MESH) {
61         m_trimesh_shape = AddVisualizationMesh(m_meshFile_left,    // left side
62                                                m_meshFile_right);  // right side
63     } else {
64         ChRigidTire::AddVisualizationAssets(vis);
65     }
66 }
67 
RemoveVisualizationAssets()68 void mrole_RigidTire::RemoveVisualizationAssets() {
69     ChRigidTire::RemoveVisualizationAssets();
70     RemoveVisualizationMesh(m_trimesh_shape);
71 }
72 
73 }  // namespace mrole
74 }  // end namespace vehicle
75 }  // end namespace chrono
76