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 // Generic concrete rigid-pinned-axle suspension subsystem. 16 // 17 // This concrete suspension subsystem is defined with respect to a right-handed 18 // frame with X pointing towards the front, Y to the left, and Z up (as imposed 19 // by the base class ChRigidSuspension) and origin in the chassis midplane. 20 // 21 // All point locations are provided for the left half of the suspension. 22 // 23 // ============================================================================= 24 25 #ifndef GENERIC_RIGID_PINNED_AXLE_H 26 #define GENERIC_RIGID_PINNED_AXLE_H 27 28 #include "chrono_vehicle/wheeled_vehicle/suspension/ChRigidPinnedAxle.h" 29 30 #include "chrono_models/ChApiModels.h" 31 32 namespace chrono { 33 namespace vehicle { 34 namespace generic { 35 36 /// @addtogroup vehicle_models_generic 37 /// @{ 38 39 /// Rigid pinned axle suspension for a generic vehicle (spindles attached to a rigid axle). 40 class CH_MODELS_API Generic_RigidPinnedAxle : public ChRigidPinnedAxle { 41 public: Generic_RigidPinnedAxle(const std::string & name)42 Generic_RigidPinnedAxle(const std::string& name) : ChRigidPinnedAxle(name) {} 43 ~Generic_RigidPinnedAxle()44 ~Generic_RigidPinnedAxle() {} 45 46 virtual const ChVector<> getLocation(PointId which) override; 47 getAxleTubeCOM()48 virtual const ChVector<> getAxleTubeCOM() const override { return m_axleTubeCOM; } getAxlePinLocation()49 virtual const ChVector<> getAxlePinLocation() const override { return m_axlePinLoc; } 50 getSpindleMass()51 virtual double getSpindleMass() const override { return m_spindleMass; } getAxleTubeMass()52 virtual double getAxleTubeMass() const override { return m_axleTubeMass; } 53 getSpindleRadius()54 virtual double getSpindleRadius() const override { return m_spindleRadius; } getSpindleWidth()55 virtual double getSpindleWidth() const override { return m_spindleWidth; } getAxleTubeRadius()56 virtual double getAxleTubeRadius() const override { return m_axleTubeRadius; } 57 getSpindleInertia()58 virtual const ChVector<>& getSpindleInertia() const override { return m_spindleInertia; } getAxleTubeInertia()59 virtual const ChVector<>& getAxleTubeInertia() const override { return m_axleTubeInertia; } 60 getAxleInertia()61 virtual double getAxleInertia() const override { return m_axleInertia; } 62 63 private: 64 static const double m_spindleMass; 65 static const double m_axleTubeMass; 66 67 static const double m_spindleRadius; 68 static const double m_spindleWidth; 69 static const double m_axleTubeRadius; 70 71 static const ChVector<> m_spindleInertia; 72 static const ChVector<> m_axleTubeInertia; 73 74 static const ChVector<> m_axleTubeCOM; 75 static const ChVector<> m_axlePinLoc; 76 77 static const double m_axleInertia; 78 }; 79 80 /// @} vehicle_models_generic 81 82 } // end namespace generic 83 } // end namespace vehicle 84 } // end namespace chrono 85 86 #endif 87