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)43mrole_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)51void 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)59void 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()68void 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