机器人SLAM与自主导航——(一)环境搭建

(一)什么是SLAM?

  简单来说,SLAM就是在GPS无法使用的地方,对机器人进行定位定姿,建造增量式地图,实现机器人的自主定位和导航。就像是一个盲人,在未知环境中,用自己的双手探索环境,并不断矫正自己心中对外界环境构建的地图,这就是SLAM算法的主要过程。

(二)传感器信息

  针对激光雷达,ROS在sensor_msgs功能包中定义专用数据结构——LaserScan,用于存储激光消息。激光雷达有一些消息的具体定义(见217页)。
  如果没有激光雷达,有RGB-D深度摄像头也行,但是深度摄像头得到的数据是三维点云数据,而ROS很多功能包需要的输入是二维激光数据,我们需要调用相关的功能包将数据转换。

(三)创建机器人仿真环境(GAZEBO)

(1)打开仿真平台GAZEBO:

roscore
rosrun gazebo_ros gazebo

(2)验证是否与ROS系统连接成功:

rostopic list

成功则出现以下代码:

~$ rostopic list
/clock
/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/set_link_state
/gazebo/set_model_state
/rosout
/rosout_agg

(3)直接插入模型

模型下载地址:

https://bitbucket.org/osrf/gazebo_models/downloads/
https://github.com/osrf/gazebo_models

将下载好的模型放在本地文件夹~/.gazebo/models/

sudo cp -r gazebo_models-master /home/wmj/.gazebo/models

我们发现,将模型文件夹复制到目标路径,在GAZEBO中并未找到该模型文件夹,我们进入目标路径,注意使用控制+h键可以将隐藏文件显示。
在这里插入图片描述这是我们之前就与到过的权限问题,给他权限就好了,记得要获取ROOT权限:

chmod +x gazebo_models-master

我们发现这个命令是不行的,这个应该是对文件给予权限的,下面这个指令是对文件夹给予权限:

chmod 777 gazebo_models-master

在这里插入图片描述我们发现,现在可以进入模型文件夹,但是模型子文件夹仍然不可用,有没有什么办法可以批量给予权限呢?

先进入文件后输入命令:sudo chmod 777 -R *
(其中的-R是递归处理,*代表所有文件)
或sudo chmod 777 -R /home/abc/文档/*
此命令不用进入文件夹中处理,“/home/abc/文档/“是文件夹路径。
再介绍一下linux的权限设置:
sudo chmod 600 ××× (只有所有者有读和写的权限)
sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)
sudo chmod 700 ××× (只有所有者有读和写以及执行的权限)
sudo chmod 666 ××× (每个人都有读和写的权限)
sudo chmod 777 ××× (每个人都有读和写以及执行的权限)

其中×××指文件名(也可以是文件夹名,不过要在chmod后加-ld)。
整个命令的形式是
sudo chmod -(代表类型)×××(所有者)×××(组用户)×××(其他用户)

三位数的每一位都表示一个用户类型的权限 设置。 取值是0~7,即二进制的[000]~[111]。

这个三位的二进制数的每一位分别表示读、写、执行权限。

如000表示三项权限均无,而100表示只读。这样,我们就有了下面的对应:
0 [000] 无任何权限
4 [100] 只读权限
6 [110] 读写权限
7 [111] 读写执行权限

再来一点chmod命令的帮助(从终端输入chmod --help就可以后到帮助):
-c, --changes 类似 --verbose,但只在有更改时才显示结果
--no-preserve-root 不会对根目录给予特别对待 (默认)
--preserve-root 对根目录进行递归操作时会失败
-f, --silent, --quiet 去除大部份的错误信息
-v, --verbose 处理任 何文件都会显示详细信息
--reference=参考文件 使用<参考文件>的模式,而非自行指定权 限模式
-R, --recursive 以递归方式更改所有的文 件及子目录
--help 显示此帮助信息并离开
--version 显示版本信息并离开 

在这里插入图片描述到这里,我们成功获取了该文件夹下所有文件夹的权限。
应该注意,不能将整个模型文件夹直接放入其中,否则系统会不认这些模型,和功能包类似,模型文件也不可以嵌套放置,需要平行放置在模型文件根目录下。
我们可以看到,这里成功的出现了我们下载的所有模型文件:
在这里插入图片描述

(4)Building Editor

手绘地图,选中Edit==》Building Editor
在这里插入图片描述在Edit中找到Building Editor,或者直接Ctrl+B,都能打开界面
在这里插入图片描述左侧有绘图选项,我们可以在里面进行图形绘制:
在这里插入图片描述之后点击左上角File进行保存,路径自己选择,保存后会在路径所在位置生成一个room1文件夹。
在这里插入图片描述
我们将gazebo关闭并再次打开。在Insert中选择自己已经下载好的模型添加到环境中,就可以保存了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/c4389de35ffa4dcf92523631513ff963.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbWVsb2RpYzE4,size_20,color_FFFFFF,t_70,g_se,x_16
如图,我们在房子边上添加了一个路障,保存的时候将文件后缀改成.world选择好路径,之后就可以在roslaunch中加载打开此地图环境了。world路径:

building_editor_models/worlds/cloister.world

###我们使用launch文件的方式登录刚刚搭建好的仿真环境:

roslaunch pkg-name launch-file-name

(四)加载机器人

这里需要我们之前下载好的代码文件,路径:
mrobot_gazebo/launch/mrobot_laser_nav_gazebo.launch

(1)使用如下命令启动以上launch文件,启动仿真环境

roslaunch mrobot_gazebo mrobot_laser_nav_gazebo.launch

这里遇到了问题:将launch文件中的模型文件路径改为我们新建的模型路径,启动失败。
我更改完路之后忘记编译了,问题应该就是处在这里,我们重新更改,编译试一下:
在这里插入图片描述还是不行。
我大概知道是怎么回事了,代码空间中有一个worlds文件夹,里面放置了世界模型文件,我们没有将自己创造的文件放进去编译,我们将文件放进去后再行编译:
在这里插入图片描述果然,文件打开成功,基础了解阶段告一段落,后续我们再进行学习。

  • 2
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

melodic18

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值