four_wheel_steering_controller

本文介绍了ROS中的four_wheel_steering_controller,它适用于四驱车的控制,可作为Gazebo插件。控制器能设置轮子速度和摆角,通过geometry_msg::twist或自定义的four_wheel_steering_msgs进行指令。内容涵盖了四驱车模型的解算方法,包括速度、摆角的计算,并讨论了odometry的计算过程。
摘要由CSDN通过智能技术生成

ros_controllers里有个four_wheel_steering_controller,可以用于四驱车的控制,可以作为四驱车控制的gazebo plugin使用.

四个轮子的控制,包括轮子速度及轮子摆角

这里的四驱车模型是,每个轮子有独立的转向系统, 有独立的驱动系统. 因此需要地盘单独驱动每个轮子的摆角和速度.

有两种指令方式,一种是普通的geometry_msg::twist, 一种是自定义的four_wheel_steering_msgs,他的具体msg内容如下:

float32 front_steering_angle           # position of the virtual angle (radians)
float32 rear_steering_angle            # position of the virtual angle (radians)
float32 front_steering_angle_velocity  # rate of change (radians/s)
float32 rear_steering_angle_velocity   # rate of change (radians/s)

float32 speed                   # forward speed (m/s)
float32 acceleration            # acceleration (m/s^2)
float32 jerk                    # jerk (m/s^3)

可以看出,这个指令,其实也没有具体到每个轮子的摆角和速度.因此也是需要根据地盘的几何信息i进行具体解算的. 那么就来看看他这里是怎么进行解算的.

两种msg类型,分别用了不同的callback: cmdVelCallback和cmdFourWheelSteeringCallback;msg中的数据分别放在了 command_twist_和command_four_wheel_steering_里, 然后在updateCommand中比较二者的stamp,选取时间最新的那个作为指令,同时检查是否超时, 若超时就刹车.

需要解算的量包括8个:

double vel_left_front = 0, vel_right_front = 0;

double vel_left_rear = 0, vel_right_rear = 0;

double front_left_steering = 0, front_right_steeri

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值