[carla]通过Twist指令控制carla中的车辆
创始人
2024-05-25 07:39:38

0.背景

通过carla_ros_bridge_with_example_ego_vehicle.launch可以启动carla-ros-bridge,并在carla中生成一台可以遥控的车.

roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch role_name:="ego_vehicle" town:="town02"

界面如图所示
在这里插入图片描述
我们在使用程序控制车辆时,需要给车辆发送控制指令.那么使用什么控制指令来控制车辆呢?

1.问题

在CARLA 0.9.7之前的版本中,控制车辆运动的消息默认就是geometry_msgs/Twist,包括线速度和角速度信息.

但是在CARLA0.9.8之后,控制车辆运动默认只支持carla_msgs/CarlaEgoVehicleControl,包括油门,刹车和档位等信息.

那么,在0.9.8之后的版本中,我们如何使用geometry_msgs/Twist格式来控制车辆呢?

1.1 消息详细说明

(1)geometry_msgs/Twist格式

linear: x: 0.0y: 0.0z: 0.0
angular: x: 0.0y: 0.0z: 0.0

(2)carla_msgs/CarlaEgoVehicleControl格式

header: seq: 20357stamp: secs: 0nsecs:         0frame_id: ''
throttle: 0.0  #油门
steer: 0.0  #转向
brake: 0.0 #刹车
hand_brake: False
reverse: False 
gear: 1 #档位
manual_gear_shift: False

2.解决方法

方法也很简单,从CARLA github中获知:0.9.8中新增了一个能够将twist转换成vehicle control command的节点,如图所示.

这个转换节点就是:carla_twist_to_control.因此,我们只需要另外运行这个节点就可以了.
在这里插入图片描述
carla_twist_to_control节点运行指令:

roslaunch carla_twist_to_control carla_twist_to_control.launch role_name:="ego_vehicle"

3.DIY

关于carla_twist_to_control节点,如果转换让人不够满意,例如单位,范围等,可以在carla_twist_to_control.py中88行进行修改.

例如,我就做了以下修改:将油门throttle直接赋值为twist.linear.x;将twist.angular.z限制在[-0.7~0.7]的范围内.

  if twist.linear.x > 0:control.throttle = twist.linear.xelse:control.reverse = Truecontrol.throttle = twist.linear.xif twist.angular.z > 0:control.steer= min(twist.angular.z,0.7)else:control.steer= max(twist.angular.z,-0.7)

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...