Turtlebot建图、定位与导航实验总结

整体参考:自主移动机器人实验课

1 概述

硬件:Turtlebot3底盘 + 思岚rplidar A2
环境:Ubuntu 18.04 + ROS Melodic
流程:gmapping建图 + 蒙特卡洛定位 + A*自主导航

2 准备工作

2.1 解决catkin_make报错的问题

常见错误合集1:https://www.codenong.com/cs106660540
常见错误合集2:https://www.twblogs.net/a/5e80c790bd9eee2116866b77

ecl报错:https://blog.csdn.net/baidu_36645485/article/details/79020029(需要改ROS版本为melodic)

missing spnav.h:https://github.com/ros-drivers/joystick_drivers/issues/79

fatal error: bluetooth/bluetooth.h: No such file or directory:https://blog.csdn.net/p942005405/article/details/86559966

2.2 解决Turtlebot启动报错的问题

运行命令

roslaunch turtlebot_bringup minimal.launch

报错

[ WARN] [1426225321.364907925]: Kobuki : device does not (yet) available, is the usb connected?.
[ WARN] [1426225321.615097034]: Kobuki : no data stream, is kobuki turned on?

运行下面命令,发现/dev/kobuki设备不存在。

ls -n /dev | grep kobuki

解决方法:

sudo apt-get install ros-melodic-kobuki-ftdi
rosrun kobuki_ftdi create_udev_rules

参考:https://blog.csdn.net/EAIBOT/article/details/51212551

若报有关battery的错误,可运行如下指令解决

sudo apt-get install ros-melodic-laptop-battery-monitor

参考:https://blog.csdn.net/qq_41808841/article/details/113458565

2.3 解决rplidar端口号不固定的问题

由于ubuntu USB设备号为从零开始依次累加,所以多个设备每次开机后设备号不固定,如果launch文件以端口号(如ttyUSB0)索引rplidar,可能出现问题。
解决方法:
列出所有USB设备:

lsusb

在这里插入图片描述

ID 10c4:ea60 表示USB设备的ID,这个ID由芯片制造商设置,可以唯一表示该设备。因此,我们只需索引这个固定的ID。

sudo gedit /etc/udev/rules.d/rapliar.rules

在打开的文件中添加以下内容

KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666", GROUP:="dialout",  SYMLINK+="rplidar"

这样我们就将"rplidar"与ID 10c4:ea60建立了联系,在launch等文件中,我们就不需要以/dev/ttyUSB0索引rplidar,而是以/dev/rplidar索引它。
具体地,在turtlebot_ws/src/rplidar_ros/launch/rplidar.launch,以及turtlebot_ws/src/rplidar_ros/src/node.cpp中将/dev/ttyUSB0改为/dev/rplidar
这样无论rplidar是USB0还是USB1,程序都可以找到它。
查看端口号命令(理论上无需用到):

ls -l /dev|grep ttyUSB

参考:
https://blog.csdn.net/lj164567487/article/details/120327666?spm=1001.2014.3001.5501
https://www.it610.com/article/1294851321765109760.htm

3 实验过程

3.1 Gmapping建图

环境配置:https://blog.csdn.net/lj164567487/article/details/120331552

开启turtlebot底盘:

roslaunch turtlebot_bringup minimal.launch

启动gmapping并开启rviz:

roslaunch turtlebot_navigation rplidar_gmapping_demo.launch
rviz

在rviz左下角,点击add,添加map,在左侧栏中选择不同的Topic可呈现不同样式的地图,如普通地图,代价地图(cost map)等。

启动键盘控制:

roslaunch turtlebot_teleop keyboard_teleop.launch

控制机器人移动,完成建图:

在这里插入图片描述

保存建好的地图:

rosrun map_server map_saver -f /home/yicheng/turtlebot_ws/map/map2

注意:建图误差较大,表现在直角弯很可能无法建成直角。原因:(1) 算法性能的局限性,(2) Turtlebot底盘的里程计有一定误差。

要提高建图精度,可以尽量减小机器人移动速度。

3.2 蒙特卡洛定位

环境配置:https://blog.csdn.net/lj164567487/article/details/120543517

注意,蒙特卡洛定位调用的是第三步Gamppinp创建的地图,launch文件指定了这个地图文件的路径,应确保turtlebot_ws/src/turtlebot_apps/turtlebot_navigation/launch/rplidar_amcl_demo.launch文件中地图的路径与上一步保存的地图的路径一致。

关闭rviz窗口,关闭rplidar_gmapping_demo.launch所在的进程,然后运行

roslaunch turtlebot_navigation rplidar_amcl_demo.launch
roslaunch turtlebot_rviz_launchers view_navigation.launch

在rviz中,点击2D Pose Estimate,将向量的位姿设置为机器人的当前位姿。使用键盘控制机器人移动,可见位姿估计的粒子群逐渐收敛。

在这里插入图片描述

如果人为搬动机器人到新位置,要重新定位,只需重新运行rplidar_amcl_demo.launch

3.3 A*导航

注意:在进行A*自主导航时,要关闭键盘控制节点。
在rviz中点击2D Nav Goal设定目标位姿,机器人将自动规划出轨迹并移动到目标位置。

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
移动机器人项目组任务安排表 Day 01 上午 1.gmapping参数配置(李超) 2.总体launch文件的编写(钟浩) 3.机器人tf,状态,滤波器launch文件的编写(李博) 4.移动机器人调试(李超,钟浩,李博) 5.完成gmapping建图修图(李超,钟浩,李博) 下午 1.move_base参数配置(李超,钟浩) 2.amcl参数配置(李博) 3.调试机器人导航参数(李超,钟浩,李博) 4.在rviz中完成机器人单点导航(李超,钟浩) 5.记录多个导航目标点(李超,钟浩) 6.查阅随机循环导航函数的资料(李博) 7.完成随机循环导航功能节点函数(李超,钟浩,李博) 8.完成随机循环导航功能测试(李超,钟浩,李博) 里程碑事件: 1.完成gmapping建图修图 2.调试机器人导航参数 3.完成随机循环导航功能测试 Day 02 上午 1.完成循环导航代码的编写(李超,钟浩,李博) 2.调试循环导航功能(李超,钟浩,李博) 下午 1.完成自主探索建图代码的编写(李超,钟浩,李博) 2.调试自主探索功能(李超,钟浩,李博) 3.优化自主探索功能代码(李超,钟浩,李博) Day 03 上午 1.完成初始化位姿功能 2.完成里程计清零功能 下午 1.完成可设置循环次数导航功能 2.调试初始化位姿,里程计清零,循环导航功能 Day 04 上午 1.完成单点设定导航插件 下午 1.完善单点设定导航插件 2.调试单点设定导航插件功能 Day 05 上午 1.完成多导航点记录插件 2.完成多点循环导航节点 下午 1.完成多点循环导航插件 2.调试多点循环导航插件功能 Day 06 上午 1.查找关于巡墙算法的解决方案 2.完成rrt_exploration(快速随机搜索树)的下载和demo测试 下午 1.修改rrt_exploration接口 Day 07 上午 1.修改rrt_exploration接口 下午 1.修改rrt_exploration接口 Day 08 上午 1.在仿真机器人上完成快速随机搜索树自主探索建图功能 2.优化导航UI界面 下午 1.在真实机器人上完成快速随机搜索树自主探索建图功能 2.优化导航UI界面 Day 09 上午 1.分别完成导航和自主建图的move_base参数的配置 下午 1.完成rviz中marker标记 Day 10 上午 1.将marker功能添加到真实机器人上,并完成各项参数优化。 下午 1.完成代码整理,说明文档撰写。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值