ROS与duckietbot指南-线速度和角速度校准

ROS与duckietbot指南-线速度和角速度校准

说明:

  • 介绍如何通过校准让小车以最大的速度走直线

影响不能走直线原因:

  • 电机通过电压值不同来控制电机转速,他们是正比关系,电压信号差异会导致走直线会出现偏移
  • 电机差异导致两轮前进的速度不一致,从而走直线会出现偏移
  • 轮子周长差异差异也会导致走直线会出现偏移

电机速度与电压关系:

  • 图示:

请输入图片描述

  • Vright,Vleft是两个电机速度
  • g是gain,r是tirm
  • v是线速度,w是角速度
  • l是两轮之间的间距
  • g控制小车线速度,g>1.0会跑的更快,g<1.0会跑的更慢些
  • r控制小车角速度,r>0同样速度情况下,右轮比左轮会稍微幅度大些,r<0右轮比左轮会稍微幅度小些

校准tirm参数:

  • 默认下trim参数为0,假设电机和轮都相同的情况下,修改tirm参数
$ rosservice call /robot name/inverse_kinematics_node/set_trim -- trim value
  • 步骤1:打开duckietbot并联网
  • 步骤2:通过游戏杆控制
$ roslaunch duckietown joystick.launch veh:=robot name
  • 步骤3:用一些胶带在地板上创建一条直线

请输入图片描述

  • 步骤4:把你的Duckiebot放在胶带的一端。 确保Duckiebot完全相对于线路居中。

  • 步骤5:命令你的Duckiebot直走约2米。 观察Duckiebot从开始移动的点,并注意Duckiebot漂移在胶带的哪一边

请输入图片描述

  • 步骤6:走完2米后,测量胶带中心与Duckiebot车轴中心,确保标尺与磁带正交。

请输入图片描述

  • 如果偏移小于10厘米的话,就不需要做trim参数校准了。
  • 步骤7:如果偏移到胶带的左边,减少r值,可以执行:
$ rosservice call /robot name/inverse_kinematics_node/set_trim -- -0.1
  • 步骤8:如果偏移到胶带的右边,增加r值,可以执行:
$ rosservice call /robot name/inverse_kinematics_node/set_trim -- 0.1
  • 步骤9:然后重复步骤1-8步骤,直到偏移在10厘米之内

校准gain参数:

  • gain参数默认是1,可以通过如下命令进行修改:
$ rosservice call /robot name/inverse_kinematics_node/set_gain -- gain value
  • 设置能刚好达到2米的固定速度和行走时间,通过修改gain,让其固定时间能正确到达2米处。

保存校准参数:

  • 命令:
$ rosservice call /robot name/inverse_kinematics_node/save_calibration
  • 第一次执行会创建文件
src/00-infrastructure/duckietown/config/baseline/calibration/kinematics/robot name.yaml

参考:

  • http://book.duckietown.org/master/duckiebook/wheel_calibration.html#sec:wheel-calibration

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros与duckietbot指南