Ros Bridge中消息的拓扑关系
Carla Ros Bridge的使用也不是三言两语就能介绍完的,【思想】也还没玩透它。接下来先分享下最入门也是最常用的玩法!如何通过Ros控制Carla中的ego car!后今天要分享的是【思想】比较常用的一些设置,如果有更好的使用建议,欢迎后台私信!
roslaunchcarla_ros_bridgecarla_ros_bridge_with_example_ego_vehicle.launch
当我们通过下面命令启动brgide后,通过Rqt_graph查看话题订阅关系。默认状态下,只能使用手动进行控制。
通过键盘控制自车
点击H键显示的帮助,我们就能通过键盘控制carla中的ego。
rostopic echo /carla/ego_vehicle/vehicle_control_cmd_manual
通过上面的指令打印vehicle_control_cmd_manual话题,可以查看键盘发出的控制指令。
显然,通过键盘控制仅仅只是辅助手段,日常工作里ego的控制是由于自动驾驶程序完成。
通过ros话题控制
CarlaRosBridge为我们提供了接口,自动驾驶程序发布一个vehicle_control_cmd的话题,通过这个话题类控制Carla中的ego。
在官方的文档里,有对carla.VehicleControl这个API的介绍以及各控制量的值域。
rostopic pub /carla/ego_vehicle/vehicle_control_cmd carla_msgs/CarlaEgoVehicleControl "{brake: 1.0, steer: 1.0}"
通过命令发布一个vehicle_control_cmd话题,使制动为100,方向向右打满,进行测试。
在窗口中查看,制动与转向是否跟发布的话题内容一致。
通过,翻阅CARLA技术文档。除了carla.VehicleControl可以控制ego,还有一个名为carla.VehicleAckermannControl的API接口。
这个API控制方式更加贴近实际,输入方向盘转角【rad】,需求速度【m/s】,需求加速度【m/s2】甚至需求加加速度【m/s3】。
而在RosBridge中也提供了现成的节点和lauch文件,我们要做的就是在carla_ros_bridge_with_example_ego_vehicle.launch 添加该lauch文件,这样carla_ackermann_control就会跟整个仿真环境一起启动。
在rqt_graph中可以看到增加了一个carla_ackermann_control话题,可以通过rostopic pub命令发布需求车速,需求方向盘等
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}"
通过上面的命令就能让车辆以10km/h的车速行驶!
打开carla_ackermann_control_node.py文件,还能对速度、加速度的PID参数进行修改!
欢迎关注
古德曼那汽车工业