四轮驱动阿克曼建模与仿真

简介

本案例基于 Modelica MultiBody 构建一个阿克曼(Ackermann)转向小车的机械多体仿真系统,完整呈现「转向命令 → 阿克曼转向几何 → 平面运动约束 → 车轮自转 → 整车姿态」的闭环,是车辆运动学、多体动力学与轮式移动机器人建模仿真的典型示例。

适用课程、行业与场景

本案例适用于车辆动力学、汽车理论、车辆系统动力学与仿真、多体系统动力学、机械系统建模与仿真、机器人学与移动机器人、自动驾驶与智能车基础等课程教学;面向汽车与智能网联汽车、移动机器人与 AGV、无人驾驶、教学科研等行业的研发与教学人员;可用于阿克曼转向几何与自行车模型的直观讲解,轮式车辆平面运动学与多体动力学联合仿真的入门样例,以及自动驾驶算法开发前的车辆模型验证与方案演示等场景。

案例背景与目标

阿克曼转向是轮式车辆实现无侧滑转向的基本几何约束:转向时内侧车轮转角大于外侧车轮,使四个车轮绕同一瞬时转向中心滚动。本案例以一辆小型四轮小车为对象,用 Modelica 标准库 MultiBody 的多体组件搭建车身、四轮、转向关节与自转关节,并通过「平面关节链 + 速度约束源」的方式约束车辆在平面内的 x/y/yaw 三个自由度,最终在三维动画中演示小车按正弦转向命令稳定行驶。

系统组成

模块 类型 说明
Types 包 统一参数与颜色定义(轴距、轮距、车轮半径、车身尺寸、质量、最大转角、名义车速)
SteeringGeometry block 由等效中心转角计算左右前轮阿克曼转角
Wheel model 带自转关节与圆柱视觉形状的可复用车轮
Chassis model 以后轴中心为运动学参考点的车身与四轮安装接口
SteeringCommand block 正弦转向命令生成
DriveCommand block 名义车速到后轮角速度命令换算
AckermannVehicle model 约束驱动型 MultiBody 阿克曼整车
Sensors.VehicleSignals block 将整车 MultiBody 状态整理为可绘图信号
Scenario model 顶层演示场景(世界坐标系、地面、坐标轴参考)
Tests.ScenarioSmoke model 轻量验证入口

阿克曼转向几何(技术要点)

SteeringGeometry 实现经典阿克曼转向公式:先由等效中心转角求瞬时转向半径,再分别计算左右前轮转角。

steerLimited = clamp(steerCmd, -maxSteer, maxSteer)
turnRadius   = wheelBase / tan(steerLimited)          // 瞬时转向半径
deltaLeft    = atan(wheelBase / (turnRadius - trackWidth/2))   // 内侧轮
deltaRight   = atan(wheelBase / (turnRadius + trackWidth/2))   // 外侧轮
  • 内侧车轮(转弯一侧)转角更大,外侧车轮转角更小,二者绕同一转向中心滚动,避免侧滑。
  • 转角经 min/max 限幅,maxSteer = 30°;steerLimited 接近零时以 1e9 近似直行,避免除零。

平面运动约束与自行车模型(技术要点)

AckermannVehicle 采用「约束驱动」方式约束车辆平面自由度,由世界固定参考点经三段关节链连接车身:

planarReference → translateX(Prismatic, X) → translateY(Prismatic, Y) → yawJoint(Revolute, Z)

平面运动的速度约束源按自行车模型(bicycle model)给出:

longitudinalSpeed = wheelRadius * rearWheelOmegaCmd
steerEquivalent   = clamp(steerCmd, ±maxSteer)
v_x   = longitudinalSpeed * cos(yaw)                       // X 向速度分量
v_y   = longitudinalSpeed * sin(yaw)                       // Y 向速度分量
ω_z   = longitudinalSpeed * tan(steerEquivalent) / wheelBase  // 偏航角速度

即纵速沿车头方向分解为世界系 x/y 速度,偏航角速度满足 ω = v·tan(δ)/L,与小转角下的车辆平面运动学一致。三个自由度均使用 StateSelect.always 状态,由速度源约束驱动。

车辆结构与动力学

  • 车身:以后轴中心为参考点(x 指向车头、y 指向左侧、z 向上),Body 刚体质量 5.0 kg,惯量按长方体公式 I = m·(边长² + 边长²)/12 计算;配套底盘、侧板、挡风玻璃、车顶、货斗、雷达、相机等多组 FixedShape 视觉件。
  • 车轮:四个可复用 Wheel,各含一个绕局部 Y 轴的自转 Revolute 关节 + 圆柱视觉件;单轮质量 0.2 kg,绕自转轴惯量 0.5·m·r²。
  • 前轮转向:两个前轮通过轴向局部 Z 的 Revolute 转向关节安装,转角由 SteeringGeometry 输出的左右前轮转角经位置源驱动。
  • 驱动:DriveCommand 将目标车速换算为后轮角速度 ω = v / r,四个车轮统一由该角速度命令驱动。

关键参数

参数 值 说明
轴距 wheelBase 0.34 m 前后轴距
轮距 trackWidth 0.24 m 左右轮距
车轮半径 wheelRadius 0.055 m 单轮半径
车身尺寸 bodyLength×Width×Height 0.50×0.26×0.12 m 车身长宽高
车身质量 / 单轮质量 5.0 / 0.2 kg 刚体质量
最大转角 maxSteer 30° 等效中心转角限幅
名义车速 nominalSpeed 0.5 m/s 目标车速

仿真场景与配置

  • 顶层 Scenario 集成世界坐标系、地面参考平面、X/Y 方向参考轴、整车、转向命令与驱动命令,并将整车状态经 Sensors.VehicleSignals 整理为 pose(x/y/yaw)、speed(vx/vy/yawRate)、wheel(左右前轮转角、前后轮角速度)三组可绘图信号。
  • 默认仿真:StartTime=0, StopTime=20, Interval=0.02,Dassl 算法,容差 1e-4。
  • 转向命令为 20°·sin(0.5·t) 正弦转向,驱动命令为 0.5 m/s 定速。
  • Tests.ScenarioSmoke 为轻量验证入口(车速 0.3 m/s、转向幅值 10°、StopTime=5)。

建模说明与边界

本案例为 Phase A 约束驱动模型:采用「X/Y 平移关节 + Z 偏航关节」约束车身平面 x/y/yaw 自由度,车轮、转向关节与自转关节均通过 MultiBody frame 装配,暂未引入轮胎侧偏、轮地接触摩擦等复杂轮地约束。后续可替换为滚动轮组(RollingWheelSet)或完整轮地约束模型以逼近真实车辆动力学。本案例适合教学演示与运动学/多体建模入门,不追求高保真轮胎与悬架动力学。

目录内容

路径 说明
package.mo 库完整源码(AckermannMultiBodyPhysicsDemo,依赖 Modelica 4.0.0.TY.1)

版本说明

V0.0.1,2026-06-06 11:55

  • 初始版本

使用许可

本模型库版权由MoHub版权所有,未经许可,不得用于商业用途。