[carla]通过Twist指令控制carla中的车辆

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.0
  y: 0.0
  z: 0.0
angular: 
  x: 0.0
  y: 0.0
  z: 0.0

(2)carla_msgs/CarlaEgoVehicleControl格式

header: 
  seq: 20357
  stamp: 
    secs: 0
    nsecs:         0
  frame_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.x
  else:
      control.reverse = True
      control.throttle = twist.linear.x
  if twist.angular.z > 0:
      control.steer= min(twist.angular.z,0.7)
  else:
      control.steer= max(twist.angular.z,-0.7)

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值