Skip to content

阿克曼运动学模型#

Autoware 现在支持基于 阿克曼(Ackermann) 运动学模型的车辆控制输入. 本节向您简要介绍 阿克曼 运动学模型的概念,并解释了 Autoware 如何控制它. 请记住,Autoware 软件控制输出 (/control/command/control_cmd),根据 Ackermann 运动学模型发布横向和纵向命令.

  • 如果您的车辆不适合 阿克曼 运动学模型,则必须修改控制命令.[另一个文档为您提供了一个示例,如何将 阿克曼 运动模型控制输入转换为 差速驱动模型

几何学#

阿克曼运动模型的基本风格是四个轮子,前面有一个阿克曼连杆, 它由后轮提供动力. 阿克曼运动学模型的关键点是:所有车轮的轴线在同一点相交, 这意味着所有车轮都将追踪具有不同半径但具有公共中心点的圆形轨迹(见下图). 因此,这种模型有一个很大的优势,它可以最大限度地减少车轮的打滑,并防止轮胎很快磨损.

通常,阿克曼运动学模型接受纵向速度 \(v\) 和转向角 \(\phi\) 作为输入. 在 autoware 中,如果 \(\phi\) 逆时针方向转向,则 \(\phi\) 为正数, 所以下图中的转向角实际上是负的.

ackermann_link

阿克曼 运动学模型的基本样式.左图显示车辆笔直向前,而右图显示向右转向的车辆.

控制#

Autoware 发布名称为 control_cmd 的ROS 2话题. 消息类型是 AckermannControlCommand 消息字段包含:

AckermannControlCommand
  builtin_interfaces/Time stamp
  autoware_auto_control_msgs/AckermannLateralCommand lateral
  autoware_auto_control_msgs/LongitudinalCommand longitudinal

字段类型展开描述如下所示:

AckermannLateralCommand
  builtin_interfaces/Time stamp
  float32 steering_tire_angle
  float32 steering_tire_rotation_rate
LongitudinalCommand
  builtin_interfaces/Time stamp
  float32 speed
  float32 accelaration
  float32 jerk

有关详细信息,请参见 AckermannLateralCommand.idlLongitudinalCommand.idl.

车辆界面应通过车辆的控制设备实现这些控制命令.

此外,Autoware 还提供制动命令、灯光命令等(参见 车辆接口设计),因此只要有可用的设备来处理这些命令,车辆接口模块就应该适用于这些命令.