车辆接口#
什么是车辆接口?#
车辆接口包的目的是将从 autoware 计算的控制消息转换为车辆可以理解的形式并将其传输到车辆(CAN、串行消息等),并解码来自车辆的数据并通过 autoware 期望的 ROS 2 主题发布它. 因此,我们可以说车辆接口的目的是:
-
将 Autoware 控制命令转换为特定于车辆的格式. autoware 的控制命令示例:
- 横向控制:转向轮胎角度、转向轮胎转速
- 纵向控制:速度、加速度、加加速度
-
将车辆特定格式的车辆状态信息转换为 Autoware 消息.
Autoware 发布控制命令,例如:
- 速度控制
- 转向控制
- 车灯命令
- 等.
然后,车辆接口将这些命令转换为驱动,例如:
- 激活电机和制动器
- 操作车轮转向
- 控制车灯
- 等.
因此,将车辆接口视为一个模块,它运行车辆的控制设备以实现 Autoware 提供的输入命令.
有两种类型的接口可用于控制您自己的车辆:
目标转向和目标速度/加速度接口.(本文档将命名为A型车辆)- 通用目标命令接口(即加速/制动踏板、转向扭矩).(本文档将命名为
B型车辆)
对于A型车辆,其中,控制接口包括目标转向和目标速度/加速度.
- 因此,在这种类型中,速度控制是通过所需的
速度或加速度来实现的. - 通过所需的
转向角和转向角速度进行转向控制.
另一方面,B型车辆,其特征是广义的目标命令接口(例如,加速/制动踏板、转向扭矩),
引入了一种更具动态性和适应性的控制方案.在此配置中,车辆控制命令直接来自Autoware输出的驱动命令 raw_vehicle_cmd_converter,
以提供更直观和更人性化的驾驶体验.
如果您以这种方式使用自己的车辆(即控制油门和制动踏板), 你需要使用 raw_vehicle_cmd_converter 包, 将Autoware输出控制命令转换为刹车制动、档位、转向. 为此,您需要校准制动器、油门和转向.所以您可以使用 accel_brake_map_calibrator 包进行校准. 请按照校准您的车辆驱动的步骤进行作.
这些控制接口之间的选择对设计和开发过程产生了深远的影响.如果您打算使用A型车辆,然后,您将控制线控驱动系统的速度或加速度.如果B型车辆更适合您的实现,然后您需要控制车辆的刹车和油门踏板.
车辆接口与车辆控制设备之间的通信#
- 如果您打算通过软件驾驶您的车辆,那么您的车辆必须满足一些要求:
| A型车辆 | B型车辆 |
|---|---|
| 您的车辆可以通过目标速度或加速度在纵向上进行控制. | 您的车辆可以通过特定的目标命令进行纵向控制.(即刹车和油门踏板) |
| 您的车辆可以通过目标转向角在横向进行控制.(或者,您也可以使用转向率) | 您的车辆可以通过特定的目标命令进行横向控制.(即转向扭矩) |
| 您的车辆必须提供上述车辆状态主题中描述的速度或加速度信息以及转向信息. | 您的车辆必须提供上述车辆状态主题中描述的速度或加速度信息以及转向信息. |
- 您也可以混合使用A型和B型,例如,您希望使用带有转向角的横向控制和针对特定目标的纵向控制.为此,您必须订阅
/control/command/control_cmd以获取转向信息,并且必须订阅/control/command/actuation_cmd以获取油门和制动踏板驱动命令.然后,您必须按照自己的车来接口设计处理这些消息. - 您必须采用您的车辆低级控制器才能与 autoware 一起运行.
- 您的车辆可以通过目标换挡模式进行控制,并且还需要向 Autoware 提供换挡信息.
- 如果您在车辆上使用 CAN 通信,请参考 Autoware 的 ros2_socketcan 包.
- 如果您在车辆上使用串行通信,您可以查看 serial-port.