无人驾驶小车调试笔记(六)-- 车轮校准

        简介:小车的动力完全来自于两个电机带动的车轮,在理想状态下,给两个电机同样的驱动参数,两个车轮会以同样的转速带动小车直线行驶,而实际情况是每个电机可能都会有个体差异,也就是说给予同样的驱动参数,表现出的转动速度会有些许不同,两个轮子的差速会导致车辆拐弯,后果就是给了直线行驶的控制命令,但是车走着走着就偏离了原本的方向,所以在开始控制之前,我们需要先平衡两个车轮的转速,保证在同样驱动参数下,两个车轮转速大致相同,也就是可以走直线。

        车轮校准分为3步,测试、调整后再测试、保存参数,第二步循环执行若干次,直到小车大致可以走直线。具体过程如下:

首先参考上一节内容,可以通过键盘控制小车行走:

在虚拟机内打开终端,输入命令:

$ dts duckiebot keyboard_control duckiebot1

无人驾驶小车调试笔记(六)-- 车轮校准_第1张图片

等待系统开启一个带方向按钮的控制窗口,激活窗口,通过键盘上的↑↓←→键即可控制小车移动。

然后在地面上贴一条直线做参考,可以用胶带,也可以找原本就存在的直线参考(地面不能太滑),将小车放到直线的起点,方向与直线平行,然后控制小车向前行驶2米左右,观察小车位置:

无人驾驶小车调试笔记(六)-- 车轮校准_第2张图片

如果小车位置在直线上偏差不大(10cm以内),说明当前配置合适,不需要调整,如果偏差比较大,观察小车偏离方向,根据偏离方向执行以下命令:

偏左的情况下

$ rosparam set /duckiebot1/kinematics_node/trim -0.1

或者偏右的情况下

$ rosparam set /duckiebot1/kinematics_node/trim 0.1

规则为左负右正,设置完以后再次测试,如果依然偏差较大,则增加调整参数的绝对值,直到小车直线行驶偏差不大为止。

然后还有一个参数需要适当调整 /duckiebot1/kinematics_node/gain,该参数整体控制车轮转速,取值为0~1,默认为1,值越大小车速度越快,越小小车速度越慢,如果车辆行驶车轮打滑严重,则需要适当缩小gain的值,调整命令如下:

$ rosparam set /duckiebot1/kinematics_node/gain 0.9

最后保存设置后的参数:

$ rosservice call /duckiebot1/kinematics_node/save_calibration

注:rosparam set paramName paramValue 是修改系统参数的命令,对应有rosparam get paramName,可以查看参数值

附kinematics_node节点其他参数说明:

gain:应用于所需速度的缩放因子,默认是1.0

trim:修剪因子,通常用于抵消左右电机的行为差异,建议使用一个值,当给出forward命令时,该值将导致机器人沿直线移动,默认值为0.0

baseline:机器人的两个轮子之间的距离,默认为0.1

radius:轮子的半径,默认为0.0318

k:电机常数,假设两个电机相等,默认为27.0

limit:限制发送给电机的最终命令,默认为1.0

v_max:限制输入速度,默认为1.0

omega_max :限制输入转向角度,默认为8.0

你可能感兴趣的:(无人驾驶小车,自动驾驶)