// ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- UAZBUS_RigidTire::UAZBUS_RigidTire(const std::string& name, bool use_mesh) : ChRigidTire(name) { SetContactFrictionCoefficient(0.9f); SetContactRestitutionCoefficient(0.1f); SetContactMaterialProperties(2e7f, 0.3f); SetContactMaterialCoefficients(2e5f, 40.0f, 2e5f, 20.0f); if (use_mesh) { SetMeshFilename(GetDataFile("uaz/uazbus_tire.obj"), 0.005); } }
void RigidTire::Create(const rapidjson::Document& d) { // Read top-level data assert(d.HasMember("Type")); assert(d.HasMember("Template")); assert(d.HasMember("Name")); SetName(d["Name"].GetString()); m_radius = d["Radius"].GetDouble(); m_width = d["Width"].GetDouble(); // Read contact material data assert(d.HasMember("Contact Material")); float mu = d["Contact Material"]["Coefficient of Friction"].GetFloat(); float cr = d["Contact Material"]["Coefficient of Restitution"].GetFloat(); SetContactFrictionCoefficient(mu); SetContactRestitutionCoefficient(cr); if (d["Contact Material"].HasMember("Properties")) { float ym = d["Contact Material"]["Properties"]["Young Modulus"].GetFloat(); float pr = d["Contact Material"]["Properties"]["Poisson Ratio"].GetFloat(); SetContactMaterialProperties(ym, pr); } if (d["Contact Material"].HasMember("Coefficients")) { float kn = d["Contact Material"]["Coefficients"]["Normal Stiffness"].GetFloat(); float gn = d["Contact Material"]["Coefficients"]["Normal Damping"].GetFloat(); float kt = d["Contact Material"]["Coefficients"]["Tangential Stiffness"].GetFloat(); float gt = d["Contact Material"]["Coefficients"]["Tangential Damping"].GetFloat(); SetContactMaterialCoefficients(kn, gn, kt, gt); } // Check if using contact mesh. if (d.HasMember("Contact Mesh")) { std::string mesh_file = d["Contact Mesh"]["Mesh Filename"].GetString(); double sweep_radius = d["Contact Mesh"]["Sweep Sphere Radius"].GetDouble(); SetMeshFilename(vehicle::GetDataFile(mesh_file), sweep_radius); } // Check how to visualize this tire. if (d.HasMember("Visualization")) { if (d["Visualization"].HasMember("Mesh Filename")) { m_meshFile = d["Visualization"]["Mesh Filename"].GetString(); m_meshName = d["Visualization"]["Mesh Name"].GetString(); m_has_mesh = true; } } }