在这之前先仔细学习书中的内容,运行相关教学包,试一试这种感觉,培养自己的兴趣,觉得这个做起来还是挺有趣的,下面这些图是运行书中的展示效果:主要是ros建图,与机器人实现导航功能

#下面小编开始自己的乐趣了,利用书中源码,实现ros建图与机器人导航功能

首先打开gazebo建立一个房间模型,建立好后如图1所示

图1 创建房间模型

将创建好的房间模型,保存到自己的工作空间下,需要注意的是房间模型放在gazebo的坐标中间,因为等下要引入小车模型,小车定义的点是(0,0,0)点,所以放在中间的同时,还要将坐标原点留出来。然后需要在launch文件中链接自己所画的模型,需要进行相关的设置。另外launch文件中需要添加自己创建的四轮小车的模型,小车模型如图2所示,一切准备就绪后,使用以下指令启动gazebo仿真环境和gamapping节点

roslaunch mrobot_gazebo mrobot_laser_nav_gazebo.launch
roslaunch mrobot_navigation gmapping_demo.launch

运行成功后,可以在rviz中查看传感器和地图构建的实时信息,周围的红点是激光雷达传感器实时检测到的环境信息,并且根据这些信息建立了部分已知环境的地图,呈现浅灰色。


图2 四轮小车模型

我们可以让机器人动起来,在观察:

roslaunch mrobot_teleop mrobot_teleop.launch

这样通过机器人的不断运动,获取的环境信息也不断更新,这样地图也不断更新,并且gmapping会自动校正之前建立的地图和机器人的位置偏差。最终在rviz中生成map如图3所示。


图3 基于雷达的gmapping SLAM的最终仿真效果

地图建立完成后,使用指令保存该地图

rosrun map_sever map_saver

地图保存在当前终端的目录下,所以我们要用该地图实现自主导航,就需要把它和另外生成的map.yaml文件移到相应工作空间的map文件夹下,没有的话需要自己创建,然后在launch文件需要修改或者添加引用该map对应的yaml文件的语句。
然后运行以下指令,就可以实现自己创建的小车模型与地图下的导航功能,具体效果如图4、图5所示。

roslaunch mrobot_bringup fake_mrobot_with_laser.launch
roslaunch mrobot_navigation fake_nav_demo.launch


图4 rviz视野中的导航

图5 gazebo中机器人导航与rviz中同步

#总结一下过程中遇到的问题

过程中,遇到的问题,gazebo文件打开后,一直黑屏,寻找了很多解决方法,也进行了重装gazebo,还是没有解决,最后猛地发现不是gazebo的问题,而是因为电脑配置的问题,需要耐心等待,相关模型才显示出来(我的电脑等了6min左右,在这里我真的哭了呀,不过幸好黄天不负有心人)。另外还遇到了一个问题,相似的问题在此实验中前前后后遇到3次,需要安装不同的包,在这里举其中一个例子总结一下——

在实现导航功能过程中,

首先更新一下工作空间 ros_exploring与arbotix

再运行——

roslaunch mrobot_bringup fake_mrobot_with_laser.launch

出现下面的报错:

ERROR: cannot launch node of type[arbotix_python/arbotix_driver]:arbotix_pythonROS path [0]=/opt/ros/kinetic/share/rosROS path [1]=/home/yukun/ros_exploring/srcROS path [2]=/opt/ros/kinetic/share

用以下语句检查有无arbotix_python package

roscd arbotix_python

没有则用下面的指令安装arbotix_python,问题便得到解决

sudo apt-get install ros-kinetic-arbotix

需要注意的是,Ubuntu18.04与Ubuntu16.04中不同,不是用“ros-kinetic-”,而是用“ros-melodic-”。

好啦,这次就说到这里啦~

注:相关源码出自胡春旭老师的《ros机器人开发实践》,GitHub中也有托管,感兴趣的同学可以入手一波

git clone https://github.com/huchunxu/ros_exploring.git

基于《ros机器人开发实践》的学习,ros建图,机器人导航相关推荐

  1. ROS机器人应用(6)—— 激光雷达建图和导航

    文章目录 一.激光雷达建图 二.建图算法切换及其优缺点 三.自主导航 四.多点导航 一.激光雷达建图 小车开机,连接WIFI,密码:dongguan. 启动激光建图(服务端) ssh -Y wheel ...

  2. ROS入门——胡春旭老师《机器人开发实践》在ROS-Melodic下的编译

    入门ROS系统,网上接触到的资料大部分都跟古月有关,故买来胡春旭老师(古月)的书籍<机器人开发实践>拜读.书中对仿真以及真实机器人同步做介绍,能一步一步跟着操作下来,非常适合入门.但由于书 ...

  3. 《ROS理论与实践》学习笔记(九)机器人自主导航

    <ROS理论与实践>学习笔记(九)机器人自主导航 课程内容 ROS中的导航框架 导航框架中的关键功能包 move_base amcl 机器人自主导航案例 导航仿真 程序接口 move_ba ...

  4. 机器人操作系统ROS—深度相机+激光雷达实现vSLAM建图与导航 转载

    原文:机器人操作系统ROS-深度相机+激光雷达实现vSLAM建图与导航_wx5d23599e462fa的技术博客_51CTO博客 这次将带大家学习如何使用深度相机实现机器人的视觉SLAM建图及导航. ...

  5. ROS理论与实践——二、ROS基础

    ROS理论与实践--二.ROS基础 前言 一.创建工作空间 1 什么是工作空间 2 创建流程 二.创建功能包 1 创建命令 2 创建流程 三.ROS通信编程 1 话题编程 1.1 话题编程流程 1.2 ...

  6. 古月居 机器人开发实践源码 编译报错问题解决方法

    ubuntu:16.04.7 ros:kinetic 移植<机器人开发实践>源码包 ros_exploring,出现的问题都包含于以下内容中. 书中提到,如果将源码包 ros_explor ...

  7. 《疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践》学习笔记

    <疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践>学习笔记 二〇一九年二月十三日星期三2时28分54秒 前提:本书适合有初步HTML.CSS.JavaScri ...

  8. 为什么您应该使用基于标准的开发实践

    为什么您应该使用基于标准的开发实践 Why you should use standards-based development practices (even if you don't have t ...

  9. 物联网竞赛-基于CC2530寄存器开发-基础知识学习

    基于CC2530寄存器开发-基础知识学习 一.C语言基础知识学习 二.单片机基础知识学习 三.CC2530数据手册的使用 四.常用到的寄存器或函数 1.常用到的寄存器 2.常需要用到的宏.自定义的函数 ...

最新文章

  1. Python3 configparser 中文乱码
  2. MPLS原理之MPLS基本结构—Vecloud微云
  3. as3.0 比较两个数组
  4. echart php mysql简书_echarts-自定义构建
  5. 在區塊鏈上建立可更新的智慧合約(二)
  6. origin遇到不适当的参数_Origin教程|如何更改Lable和设置非均匀坐标
  7. Java飞行记录器(JFR)
  8. c语言过磅系统,为什么要用无人值守_自动过磅系统?
  9. 机器学习笔记——随机森林
  10. 35岁以后,被社会无情抛弃,放下面子赚钱
  11. Install deepin-wine QQ inside a docker image in Ubuntu 20.04
  12. 联想thinkpadE14 vm蓝屏问题解决
  13. 如何进行ERP、CRM实施时的流程梳理?
  14. 三分钟明白 Activiti工作流 -- java运用
  15. 十八新娘八十郎,苍苍白发对红妆。鸳鸯被里成双夜,一树梨花压海棠。
  16. CTR和CVR联合训练
  17. 什么浏览器最好用,五款浏览器对比那个最好?
  18. 十一个Python在线学习网站
  19. chatgpt-mirai-qq-bot
  20. javaScript函数的定义和arguments,result关键字

热门文章

  1. Hooks(钩子)监听消息的方法
  2. golang前后端分离框架
  3. midi键盘接电脑实现电子琴功能
  4. C语言实现汉诺塔问题(保姆式讲解)
  5. [nRF52832开发板:Nordic Thingy:52]Nordic Thingy:52到手
  6. Cisco ❀ 二层交换安全技术
  7. 不断的学习,不断的思考
  8. 【Mapreduce】Mapreduce实例——WordCount
  9. 电脑怎么直接给服务器传文件夹,教你电脑怎么传文件夹给qq好友
  10. Gradle编译生成不同的版本,动态设定应用标题 / 应用图标 / 替换常量