詳解)
輪胎系統(tǒng)詳解一、輪胎的本質(zhì):車輛與地面的"接口"1.1 輪胎的雙重角色車輛動(dòng)力學(xué) ────┬──── 地面相互作用 │ ▼ 輪胎 │ ┌─────────┼─────────┐ │ │ │ 承載重量 傳遞力 吸收沖擊 │ │ │ ▼ ▼ ▼ 垂直力 驅(qū)動(dòng)/制動(dòng) 側(cè)向力 (Fz) (Fx) (Fy)輪胎是力產(chǎn)生器:輸入:車輪位置、速度、地面狀態(tài)輸出:作用在車輪上的力和力矩1.2 Chrono 輪胎建模層次Chrono 提供三種層次的輪胎模型:精度 vs 效率 │ ┌─────────────┼─────────────┐ │ │ │ 剛性輪胎 半經(jīng)驗(yàn)輪胎 柔性輪胎(FEA) (最快) (平衡) (最精確) │ │ │ ChRigidTire ChFialaTire ChANCFTire 無變形 經(jīng)驗(yàn)公式 有限元計(jì)算 純碰撞力 TMeasy等 殼單元網(wǎng)格二、輪胎基類 ChTire 解析2.1 類定義classCH_VEHICLE_APIChTire:publicChPart{public:// ======== 碰撞檢測(cè)類型 ========enumclassCollisionType{SINGLE_POINT,// 單點(diǎn)碰撞(最快)FOUR_POINTS,// 四點(diǎn)碰撞(更精確)ENVELOPE// 包絡(luò)面方法(考慮曲率)};// ======== 參數(shù)設(shè)置 ========voidSetStepsize(doubleval){m_stepsize=val;}doubleGetStepsize()const{returnm_stepsize;}voidSetCollisionType(CollisionType collision_type){m_collision_type=collision_type;}voidSetPressure(doublepressure){m_pressure=pressure;}doubleGetPressure()const{returnm_pressure;}// ======== 幾何屬性 ========virtualdoubleGetRadius()const=0;// 輪胎半徑virtualdoubleGetWidth()const=0;// 輪胎寬度// ======== 慣性屬性 ========virtualdoubleGetTireMass()const=0;virtualChVector3dGetTireInertia()const=0;// ======== 力報(bào)告 ========// 全局坐標(biāo)系下的力和力矩virtualTerrainForceReportTireForce(ChTerrain*terrain)const=0;// 輪胎坐標(biāo)系下的力和力矩virtualTerrainForceReportTireForceLocal(ChTerrain*terrain,ChCoordsystire_frame)const=0;// ======== 滑移參數(shù) ========doubleGetSlipAngle()const{returnm_slip_angle;}doubleGetLongitudinalSlip()const{returnm_longitudinal_slip;}doubleGetCamberAngle()const{returnm_camber_angle;}// ======== 其他 ========virtualdoubleGetDeflection()const{return0;}conststd::stringGetMeshFilename()const{returnm_vis_mesh_file;}staticChVector3dEstimateInertia(doubletire_width,doubleaspect_ratio,doublerim_diameter,doubletire_mass,doublet_factor=2);// ======== 初始化和同步 ========virtualvoidInitialize(std::shared_ptrChWheelwheel);virtualvoidSynchronize(doubletime,constChTerrainterrain){}virtualvoidAdvance(doublestep){}protected:ChTire(conststd::stringname);// ======== 力獲?。ü┸囕v內(nèi)部使用) ========virtualTerrainForceGetTireForce()const=0;// ======== 輔助方法 ========voidCalculateKinematics(constWheelStatewheel_state,constChCoordsystire_frame);doubleGetOffset()const{returnm_wheel-m_offset;}virtualdoubleGetAddedMass()const=0;virtualChVector3dGetAddedInertia()const=0;