一、前言

首先说一下我的运行环境
操作系统:UbuntuKylin-14.04
ROS版本:indigo
机器人平台:iRobot Create
陀螺仪:ADXRS610(±300°/sec)
注意Turtlebot2采用kobuki底盘,自带标定好的陀螺仪,所以不需要标定。但是我的iRobot Create移动机器人平台本身是不带陀螺仪的,我购买了dfrobot社区的ADXRS610陀螺仪,陀螺仪的模拟输出引脚RATEOUT接在iRobot Create的cargo bay连接器(就是底盘中间的DB-25并口)PIN4引脚Analog input上,连上电脑可以直接读取到陀螺仪模拟信号经过底盘AD芯片转换过得数字信号,默认值是500。

二、陀螺仪的安装

(1)ADXRS613

有些版本的Turtlebot是自带ADXRS613陀螺仪芯片的,在Sparkfun上也有这块芯片的breakout board:Gyro Breakout Board - ADXRS613 - 150°/s

这块板子已经停产,我找了下sparkfun的中国代理商奥松机器人商城里也买不到这块板子。不过sparkfun的主页上有这块板子的原理图,可以自己淘宝买ADI公司的ADXRS613芯片自己焊一块陀螺仪的接线板,值得注意的是这块芯片是BGA封装的,它没有引脚,底部是锡球,如下图:


这种封装的芯片手工焊成功率挺低的,我第一次就是买了芯片照着原理图设计了PCB,然后把板子做出来焊上元件,结果RATEOUT引脚输出是个定值,旋转芯片输出电压不随之变化,妥妥地焊坏了。

(2)ADXRS610

不得不说国外良心网站真多,我在dfrobot上找到了类似上面那块板子的陀螺仪:Gyro Breakout Board - ADXRS610

可以在dfrobot的中国代理商 DFRobot开源硬件及机器人商城购买:http://www.dfrobot.com.cn/goods.php?id=333
这块板子接线和上面板子差不多,就是测量范围(gyro_measurement_range)有差别:
ADXRS610:±300°/秒
ADXRS613:±150°/秒
不过ADXRS610便宜好多,性能上稍微差点,不过够用了,最重要的是不用自己焊BGA封装的芯片!!!
【安装】
首先把排针焊在这块板子上,利用杜邦线把5V、GND、REATEOUT三个引脚引出来,接到一个DB-25的免焊转接头公头上,转接头如下图所示:

可以将杜邦线的另一头接到DB-25转接头的接线端子上,再把转接头插到Turtlebot底部的DB-25并口上。
连好线之后用万用表测一下线路是否连通。接好之后如下图:



【注意】
1、接线:
5V——PIN8
GND——PIN16
REATEOUT——PIN4
2、把板子固定在机器人中央,如下图我是用双面胶粘在亚克力板中间的。
3、公头上的引脚顺序和母头上的引脚顺序是左右相反的。
【测试】插上DB-25转接头,打开Turtlebot的电源开关,先让陀螺仪预热一会儿,用万用表测陀螺仪静止时RATEOUT电压是否停在2.5V周围,再旋转陀螺仪,测RATEOUT电压是否随旋转角速度而变化。如果以上输出都没问题,那么陀螺仪硬件连接已经完成可以运行标定程序了。

三、运行标定程序

标定过程参考ROSwiki上面的教程:http://wiki.ros.org/turtlebot_calibration/Tutorials/Calibrate%20Odometry%20and%20Gyro

(1)首先确保已经安装Turtlebot相关的包

请参照官方WIKI:http://wiki.ros.org/turtlebot/Tutorials/indigo/Turtlebot%20Installation
或者看看我的另一篇博客:http://blog.csdn.net/u013453604/article/details/49386953

(2)开始标定

请参照官方WIKI:http://wiki.ros.org/turtlebot_calibration/Tutorials/Calibrate%20Odometry%20and%20Gyro
主要就是两个:一是设定陀螺仪量程,二是运行标定程序

1.以最小模式运行Turtlebot

首先把turtlebot的kinect摆正,把它摆在一面至少两米长的墙前面,让它面向墙,离墙大约30厘米,启动turtlebot相关节点

$ roslaunch turtlebot_bringup minimal.launch

2.设置陀螺仪量程

这取决于陀螺仪芯片的型号,比如
ADXRS610的量程是±300°/秒,那么gyro_measurement_range就设为300
ADXRS613的量程是±150°/秒,那么gyro_measurement_range就设为150
ADXRS652的量程是±250°/秒,那么gyro_measurement_range就设为250
我的陀螺仪模块采用的芯片是ADXRS610。
问题就来了,怎么设定这个值呢?有三种方式:
一是直接在终端设定这个值,如下

$ rosparam set /turtlebot_node/gyro_measurement_range 300

这种方式只是临时修改运行过程中的参数,下次启动Turtlebot它仍然会从文件里读取默认的值;
二是在rqt里设置这个值,如下

$ rosrun rqt_reconfigure rqt_reconfigure 

打开rqt界面,在面板上直接设置gyro_measurement_range的值为300,但是和上面一样,这种方法只能临时设定gyro_measurement_range的值;
三是在启动文件里面设定相应的启动参数,将gyro_measurement_range设定为300,具体步骤是找到/home/siat/turtlebot/src/turtlebot/turtlebot_bringup/launch\minimal.launch,然后打开它,在原来的< arg >标签下加上下列语句作为启动参数

<!--Turtlebot calibration:陀螺仪(ADXRS610)标定参数--><param name="turtlebot_node/gyro_measurement_range" value="300.000000"/><param name="turtlebot_node/gyro_scale_correction" value="1"/><param name="turtlebot_node/odom_angular_scale_correction" value="1"/>

现在只要改gyro_measurement_range为300,剩下两个参数先设为1,它们将会在标定的时候生成。

3.启动标定节点

一开始turtlebot是面向墙的

$ roslaunch turtlebot_calibration calibrate.launch

这时候标定就开始了,他会一开始逆时针转两圈,然后停下,输出信息是陀螺仪和里程计的误差,再寻找墙将自己转到正面对墙的位置;然后再转一圈,停下,输出陀螺仪和里程计的误差,把寻找墙把自己调整到正面对墙的位置;接着转两圈测试,最终输出陀螺仪和里程计的误差以及推荐的turtlebot_node/gyro_scale_correction和turtlebot_node/odom_angular_scale_correction值,由于标定程序里还以为启动turtlebot的文件名是老版本的turtlebot.launch,所以这里是不会直接将这两个值写到launch文件中的,我们可以手动修改前面添加到minimal.launch文件中的的代码将之设定为标定程序推荐的值。
注意
当然为了方便我可以直接修改/home/siat/turtlebot/src/turtlebot_apps/turtlebot_calibration/src/turtlebot_calibration\calibrate.py文件中的下列语句:
(主要是修改路径,请根据自己路径修改)

第273行的
f = open("/etc/ros/distro/turtlebot.launch", "r")
改为
f = open("/home/siat/turtlebot/src/turtlebot/turtlebot_bringup/launch/minimal.launch", "r")第288行的
f = open("/etc/ros/distro/turtlebot.launch", "w")
改为
f = open("/home/siat/turtlebot/src/turtlebot/turtlebot_bringup/launch/minimal.launch", "w")

这样标定程序就能找到你的minimal.launch文件并自动写入标定好的数据了,标定完之后你可以打开minimal.launch文件看看turtlebot_node/gyro_scale_correction和turtlebot_node/odom_angular_scale_correction是否已经更新为标定之后的数据


以下是标定过程中的经验仅供参考:
1、在转完整圈的过程中turtlebot应该是很顺畅的转完一个圈的,虽然可能有点慢,但却是连续的,不会出现一顿一顿的情况,如果turtlebot在转一个完整圈的过程中会停一下走一下,甚至停几分钟才继续走,那就是节点运行有问题了,你应该重启节点,检查节点启动的时候turtlebot是否已经正面对着墙,打开turtlebot_dashboard检查陀螺仪是否有输出等等。
2、一般来说标定结果turtlebot_node/gyro_scale_correction和turtlebot_node/odom_angular_scale_correction的值会大于1,如果出现了0.5左右甚至更小的值,并且在标定过程中他们旋转圈数不是两圈和一圈,而是出现了三圈这样的情况,那就说明标定陷入了局部最优解,虽然他们显示的误差可能是一个非常小的值,比如1.1%和3%这样小的误差,那是因为它多转了整整一圈而正好面对墙。可手动修改minimal.launch文件把这两个值设为1.5,再重新运行标定程序。
3、标定是可以连续进行的,第一次标定完之后程序给出了turtlebot_node/gyro_scale_correction和turtlebot_node/odom_angular_scale_correction的推荐值,这时你用rosparam get这两个参数会发现他们在当前运行的节点下已经被修改为标定推荐的值了,这时你可以再次运行标定程序,直到误差稳定在一个较小的范围内。最终我的标定结果是:

turtlebot_node/gyro_scale_correction:1.304699 误差0.1%
turtlebot_node/odom_angular_scale_correction:1.032019 误差6.8%

四、利用标定好的陀螺仪和里程计运行导航建图包

插上串口,给权限:

$ cd /dev/
$ sudo chmod 777 ttyUSB0

运行turtlebot节点:

$ roslaunch turtlebot_bringup minimal.launch

运行导航建图节点:

$ roslaunch turtlebot_navigation gmapping_demo.launch

运行可视化节点:

$ roslaunch turtlebot_rviz_launchers view_teleop_navigation.launch 

建图完毕保存地图:

$ rosrun map_server map_saver -f ~/map/map1

我的建图如下:

保存地图之后是这样的:

【turtlebot】陀螺仪的安装以及标定(iRobot Create 底盘+ADXRS610陀螺仪)相关推荐

  1. VM安装失败 Failed to create the requested registry key Key:installer Error:1021

    1.美图 VM安装失败 "Failed to create the requested registry key Key:installer Error:1021" 问题描述: 安 ...

  2. Oracle12c安装出现Failed to Create oracle Oracle Home User的解决方案

    我在安装Oracle12c时也遇到Oracle12c安装出现Failed to Create oracle Oracle Home User这个问题,在网上也找了很多解决办法,就这个管用. 1.打开域 ...

  3. VM安装失败 “Failed to create the requested registry key Key:installer Error:1021

    VM安装失败 "Failed to create the requested registry key Key:installer Error:1021" 问题描述: 安装虚拟机V ...

  4. turtlebot+rplidar,安装所遇问题及解决方法

    turtlebot+rplidar,安装所遇问题及解决方法 ubuntu18.04 + ros-melodic + turtlebot2 + rplidar turtlebot安装步骤 问题一:No ...

  5. 机器人带陀螺仪走钢丝_走直线很难吗?陀螺仪表示,少了它机器人连直线都走不了...

    原标题:走直线很难吗?陀螺仪表示,少了它机器人连直线都走不了 机器人要想完成特定任务,就一定要有所动作,这个时候,必须掌握如何控制机器人走直线.曲线,从而使机器人移动到我们想做任务的地方. 机器人走直 ...

  6. Robomaster云台,底盘,陀螺仪校准

    文章目录 前言 一.云台校准 二.底盘校准 三.陀螺仪校准 前言 本文主要介绍了Robomaster云台,底盘,陀螺仪怎么校准. 一.云台校准 1.将开关 S2 和开关 S1 都拨到最下面. 2.将两 ...

  7. Ubuntu20.04安装zabbix以及Cannot create the configuration file解决

    添加zabbix的扩展源 echo 'deb http://mirrors.aliyun.com/zabbix/zabbix/5.0/ubuntu/dists/ focal main' >> ...

  8. mysql安装提示create_MySQL5.1安装时出现Cannot create windows service for mysql.error:0

    安装MySQL5.1过程中,我把以前MySQL5.0的GUI工具和服务器全部删掉,安装目录全部删掉,数据文件目录名字改掉,注册表用完美卸载清理了. 然后重启安装MySQL5.1(我以前遇到过服务启动不 ...

  9. mysql5.1安装失败_解决MySQL5.1安装时出现Cannot create windows service for mysql.error:0

    安装MySQL5.1过程中,我把以前MySQL5.0的GUI工具和服务器全部删掉,安装目录全部删掉,数据文件目录名字改掉,注册表用完美卸载清理了. 然后重启安装MySQL5.1(我以前遇到过服务启动不 ...

最新文章

  1. 一个用于styleGAN图像处理的编码器
  2. linux进程和程序的却别,操作系统:进程的概念和与程序的区别
  3. b树与b+树的区别_Linux内核-数据结构系列(B树、B-树、B+树)的区别
  4. Nature:超越地域和文化,AI识别出全人类共同的16种面部表情
  5. 类的构造函数和析构函数详解
  6. 【问链-Eos公开课】第5课 组建单机多节点EOS网络
  7. Could not find a suitable table factory for ‘org.apache.flink.table.factories.CatalogFactory‘
  8. java调用js查询mongo_mongodb操作之使用javaScript实现多表关联查询
  9. ASP.NET Web API中的返回值
  10. 基于DCT系数的实时监控中运动目标检测
  11. java mongo忽略大小写_Java Spring Mongo排序忽略大小写问题
  12. android3种播放视频方式,Android 两种方式播放视频
  13. 基于北京二手房价数据的探索性数据分析和房价评估——房价评估模型构建
  14. 第八章 Python之常用模块
  15. python填充excel单元格颜色_使用python3+openpyxl模块对excel表格进行背景颜色的填充...
  16. 九宫格摆法_九宫格婚纱照摆法图片与技巧
  17. 六度分离(hdu1869,floyd最短路)
  18. HashMap底层——解决Hash冲突(链地址法)
  19. ssh突然无法登录,报错failed to start openssh daemon
  20. 恢复出厂设置 LED灯闪烁

热门文章

  1. 有奖调研-嵌入式技术国产化教学意向征集4-13 多路信号混频实验(外部输入信号)
  2. 2020自考计算机应用技术,2020年8月自考02316计算机应用技术真题及答案
  3. 工业物联网 | 智慧工厂转型——实际案例5则(上篇)
  4. 全部常用邮件端口25、109、110、143、465、995、993、994
  5. 商品进销差价_药品进销差价财务做账
  6. Retrofit2.0 源码分析
  7. 【雷达通信】回波数据处理(Matlab代码实现)
  8. 国家网信办发布第四批境内区块链信息服务备案编号 | 附名单
  9. 基于贝叶斯算法的证券市场风险研究
  10. 游戏玩家如何沉浸式体验交互竞技场? #ArenaVerse