Carla 阿克曼控制
carla_ackermann_control
软件包 用于通过阿克曼消息控制 Carla 车辆。该包将 阿克曼消息 转换为 CarlaEgoVehicleControl 消息。它从 Carla 读取车辆信息,并将该信息传递给基于 Python 的 PID 控制器,调用simple-pid
控制器来控制加速度和速度。
配置
使用 ROS 1 和 ROS 2 时,可以在 配置文件 中初始设置参数,也可以在运行时通过 ROS 1 中的 ROS 动态重新配置 来设置参数。
测试控制消息
通过主题 /carla/<ROLE NAME>/ackermann_cmd
向汽车发送命令来测试设置。例如,通过运行以下命令以 10 米/秒的速度移动参与者名称为ego_vehicle
的自我车辆:
# ROS 1
rostopic pub /carla/ego_vehicle/ackermann_cmd ackermann_msgs/AckermannDrive "{steering_angle: 0.0, steering_angle_velocity: 0.0, speed: 10, acceleration: 0.0, jerk: 0.0}" -r 10
# ROS 2
ros2 topic pub /carla/ego_vehicle/ackermann_cmd ackermann_msgs/AckermannDrive "{steering_angle: 0.0, steering_angle_velocity: 0.0, speed: 10, acceleration: 0.0, jerk: 0.0}" -r 10
或者让车辆向前移动,同时转弯 1.22 弧度的角度:
# ROS 1
rostopic pub /carla/ego_vehicle/ackermann_cmd ackermann_msgs/AckermannDrive "{steering_angle: 1.22, steering_angle_velocity: 0.0, speed: 10, acceleration: 0.0, jerk: 0.0}" -r 10
# ROS 2
ros2 topic pub /carla/ego_vehicle/ackermann_cmd ackermann_msgs/AckermannDrive "{steering_angle: 1.22, steering_angle_velocity: 0.0, speed: 10, acceleration: 0.0, jerk: 0.0}" -r 10
ROS 应用程序接口
订阅
主题 | 类型 | 描述 |
---|---|---|
/carla/<ROLE NAME>/ackermann_cmd |
ackermann_msgs.AckermannDrive | 转向命令的 订阅者 |
发布
主题 | 类型 | 描述 |
---|---|---|
/carla/<ROLE NAME>/ackermann_control/control_info |
carla_ackermann_control.EgoVehicleControlInfo | 控制器内使用的当前值(对于调试有用) |