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, Asher Elmquist, Rainer Gericke
13 // =============================================================================
14 //
15 // FEDA rigid tire subsystem
16 //
17 // =============================================================================
18 
19 #include <algorithm>
20 
21 #include "chrono_vehicle/ChVehicleModelData.h"
22 #include "chrono_models/vehicle/feda/FEDA_RigidTire.h"
23 
24 namespace chrono {
25 namespace vehicle {
26 namespace feda {
27 
28 // -----------------------------------------------------------------------------
29 // Static variables
30 // -----------------------------------------------------------------------------
31 
32 const double FEDA_RigidTire::m_radius = 0.499;
33 const double FEDA_RigidTire::m_width = 0.335;
34 
35 const double FEDA_RigidTire::m_mass = 55.4;
36 const ChVector<> FEDA_RigidTire::m_inertia(6.39, 11.31, 6.39);
37 
38 const std::string FEDA_RigidTire::m_meshFile = "feda/meshes/feda_tire_fine.obj";
39 
40 // -----------------------------------------------------------------------------
41 // -----------------------------------------------------------------------------
FEDA_RigidTire(const std::string & name,bool use_mesh)42 FEDA_RigidTire::FEDA_RigidTire(const std::string& name, bool use_mesh) : ChRigidTire(name) {
43     if (use_mesh) {
44         SetMeshFilename(GetDataFile("feda/meshes/feda_tire_fine.obj"), 0.005);
45     }
46 }
47 
48 // -----------------------------------------------------------------------------
49 // -----------------------------------------------------------------------------
CreateContactMaterial(ChContactMethod contact_method)50 void FEDA_RigidTire::CreateContactMaterial(ChContactMethod contact_method) {
51     MaterialInfo minfo;
52     minfo.mu = 0.9f;
53     minfo.cr = 0.1f;
54     minfo.Y = 2e7f;
55     m_material = minfo.CreateMaterial(contact_method);
56 }
57 
AddVisualizationAssets(VisualizationType vis)58 void FEDA_RigidTire::AddVisualizationAssets(VisualizationType vis) {
59     if (vis == VisualizationType::MESH) {
60         m_trimesh_shape = AddVisualizationMesh(m_meshFile,   // left side
61                                                m_meshFile);  // right side
62     } else {
63         ChRigidTire::AddVisualizationAssets(vis);
64     }
65 }
66 
RemoveVisualizationAssets()67 void FEDA_RigidTire::RemoveVisualizationAssets() {
68     ChRigidTire::RemoveVisualizationAssets();
69     RemoveVisualizationMesh(m_trimesh_shape);
70 }
71 
72 }  // namespace feda
73 }  // end namespace vehicle
74 }  // end namespace chrono
75