ROS1云课→26机器人Gmapping等环境地图构建

ROS1云课→25机器人控制配置


机器人感知模块和控制模块都ok啦,那么进入到机器人环境感知算法部分了。

如何学习SLAM(如Gmapping算法等)。

最近,引入了 Rao-Blackwellized 粒子滤波器作为解决同时定位和建图(SLAM) 问题的有效手段。 这种方法使用粒子过滤器,其中每个粒子都带有一个单独的环境图。 因此,一个关键问题是如何减少粒子的数量。 Gmapping提出了自适应技术来减少 Rao-Blackwellized 粒子滤波器中的粒子数量,以学习网格图。 Gmapping提出了一种计算准确提议分布的方法,该方法不仅考虑了机器人的运动,还考虑了最近的观察结果。 这大大降低了过滤器预测步骤中机器人姿势的不确定性。 此外,Gmapping采用一种方法来选择性地执行重新采样操作,从而严重减少了粒子耗尽的问题。

中文资料(视觉SLAM十四讲(推荐新版) 高翔):

视觉SLAM十四讲从理论到实践第二版源码调试笔记(理论基础1-6章)

视觉SLAM十四讲从理论到实践第二版源码调试笔记(实践应用7-14章)

英文资料(openslam-org.github.io):

左侧是 


各类算法,点击可查看详细内容,依据此学习即可。 

蓝桥ROS中依次输入如下:

使用一台机器人启动 STDR 模拟器

使用stdr_launchers中提供的启动器之一。在终端运行中:

代码语言:javascript
复制
$ roslaunch stdr_launchers server_with_map_and_gui_plus_robot.launch

运行 slam_gmapping 节点

如果还没有安装gmapping ,则需要先安装。默认情况下,Gmapping 将生成的地图发布到/map主题,该主题与 STDR 模拟器用于静态地图的/ map主题冲突。必须改变它,否则模拟器会崩溃。在新终端中运行以下命令开始 gmapping:

代码语言:javascript
复制
$ rosrun gmapping slam_gmapping scan:=/robot0/laser_0 _base_frame:="/robot0" map:=/gmapping/map

安装gmapping:

代码语言:javascript
复制
shiyanlou:~/ $ rosrun gmapping slam_gmapping scan:=/robot0/laser_0 _base_frame:="/robot0" map:=/gmapping/map
[rospack] Error: package 'gmapping' not found
shiyanlou:~/ $ gedit init.sh                                         [21:44:42]

(gedit:787): GVFS-RemoteVolumeMonitor-WARNING **: remote volume monitor with dbus name org.gtk.vfs.UDisks2VolumeMonitor is not supported

(gedit:787): Gtk-WARNING **: Calling Inhibit failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files
shiyanlou:/ $ chmod +x init.sh [21:46:46]
shiyanlou:
/ $ ./init.sh [21:46:55]
OK
\u547d\u4e2d:1 http://mirrors.cloud.aliyuncs.com/ubuntu xenial InRelease
\u83b7\u53d6:2 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-updates InRelease [99.8 kB]
\u83b7\u53d6:3 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security InRelease [99.8 kB]
\u5ffd\u7565:4 http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu xenial InRelease
\u83b7\u53d6:5 http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu xenial Release [3,810 B]
\u83b7\u53d6:6 http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu xenial Release.gpg [833 B]
\u83b7\u53d6:7 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-updates/main Sources [665 kB]
\u83b7\u53d6:8 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-updates/universe Sources [548 kB]
\u83b7\u53d6:9 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-updates/main amd64 Packages [2,560 kB]
\u83b7\u53d6:10 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-updates/universe amd64 Packages [1,544 kB]
\u83b7\u53d6:11 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main Sources [311 kB]
\u83b7\u53d6:12 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/universe Sources [256 kB]
\u83b7\u53d6:13 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main amd64 Packages [2,051 kB]
\u83b7\u53d6:14 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/universe amd64 Packages [984 kB]
\u83b7\u53d6:15 http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu xenial/main amd64 Packages [854 kB]
\u83b7\u53d6:16 http://packages.ros.org/ros2/ubuntu xenial InRelease [4,668 B]
\u83b7\u53d6:17 http://packages.ros.org/ros2/ubuntu xenial/main amd64 Packages [131 kB]
\u83b7\u53d6:18 http://packages.ros.org/ros2/ubuntu xenial/main arm64 Packages [131 kB]
\u5df2\u4e0b\u8f7d 10.2 MB\uff0c\u8017\u65f6 11\u79d2 (917 kB/s)
\u6b63\u5728\u8bfb\u53d6\u8f6f\u4ef6\u5305\u5217\u8868... \u5b8c\u6210
\u6b63\u5728\u5206\u6790\u8f6f\u4ef6\u5305\u7684\u4f9d\u8d56\u5173\u7cfb\u6811
\u6b63\u5728\u8bfb\u53d6\u72b6\u6001\u4fe1\u606f... \u5b8c\u6210
\u6709 698 \u4e2a\u8f6f\u4ef6\u5305\u53ef\u4ee5\u5347\u7ea7\u3002\u8bf7\u6267\u884c \u2018apt list --upgradable\u2019 \u6765\u67e5\u770b\u5b83\u4eec\u3002
shiyanlou:/ $ sudo apt install ros-kinetic-gmapping [21:47:14]
\u6b63\u5728\u8bfb\u53d6\u8f6f\u4ef6\u5305\u5217\u8868... \u5b8c\u6210
\u6b63\u5728\u5206\u6790\u8f6f\u4ef6\u5305\u7684\u4f9d\u8d56\u5173\u7cfb\u6811
\u6b63\u5728\u8bfb\u53d6\u72b6\u6001\u4fe1\u606f... \u5b8c\u6210
\u5c06\u4f1a\u540c\u65f6\u5b89\u88c5\u4e0b\u5217\u8f6f\u4ef6\uff1a
ros-kinetic-openslam-gmapping
\u4e0b\u5217\u3010\u65b0\u3011\u8f6f\u4ef6\u5305\u5c06\u88ab\u5b89\u88c5\uff1a
ros-kinetic-gmapping ros-kinetic-openslam-gmapping
\u5347\u7ea7\u4e86 0 \u4e2a\u8f6f\u4ef6\u5305\uff0c\u65b0\u5b89\u88c5\u4e86 2 \u4e2a\u8f6f\u4ef6\u5305\uff0c\u8981\u5378\u8f7d 0 \u4e2a\u8f6f\u4ef6\u5305\uff0c\u6709 698 \u4e2a\u8f6f\u4ef6\u5305\u672a\u88ab\u5347\u7ea7\u3002
\u9700\u8981\u4e0b\u8f7d 263 kB \u7684\u5f52\u6863\u3002
\u89e3\u538b\u7f29\u540e\u4f1a\u6d88\u8017 1,328 kB \u7684\u989d\u5916\u7a7a\u95f4\u3002
\u60a8\u5e0c\u671b\u7ee7\u7eed\u6267\u884c\u5417\uff1f [Y/n] y
\u83b7\u53d6:1 http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu xenial/main amd64 ros-kinetic-openslam-gmapping amd64 0.1.2-0xenial-20191214-001421+0000 [88.8 kB]
\u83b7\u53d6:2 http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu xenial/main amd64 ros-kinetic-gmapping amd64 1.3.10-0xenial-20210503-142648-0800 [174 kB]
\u5df2\u4e0b\u8f7d 263 kB\uff0c\u8017\u65f6 0\u79d2 (394 kB/s)
\u6b63\u5728\u9009\u4e2d\u672a\u9009\u62e9\u7684\u8f6f\u4ef6\u5305 ros-kinetic-openslam-gmapping\u3002
(\u6b63\u5728\u8bfb\u53d6\u6570\u636e\u5e93 ... \u7cfb\u7edf\u5f53\u524d\u5171\u5b89\u88c5\u6709 185892 \u4e2a\u6587\u4ef6\u548c\u76ee\u5f55\u3002)
\u6b63\u51c6\u5907\u89e3\u5305 .../ros-kinetic-openslam-gmapping_0.1.2-0xenial-20191214-001421+0000_amd64.deb ...
\u6b63\u5728\u89e3\u5305 ros-kinetic-openslam-gmapping (0.1.2-0xenial-20191214-001421+0000) ...
\u6b63\u5728\u9009\u4e2d\u672a\u9009\u62e9\u7684\u8f6f\u4ef6\u5305 ros-kinetic-gmapping\u3002
\u6b63\u51c6\u5907\u89e3\u5305 .../ros-kinetic-gmapping_1.3.10-0xenial-20210503-142648-0800_amd64.deb ...
\u6b63\u5728\u89e3\u5305 ros-kinetic-gmapping (1.3.10-0xenial-20210503-142648-0800) ...
\u6b63\u5728\u8bbe\u7f6e ros-kinetic-openslam-gmapping (0.1.2-0xenial-20191214-001421+0000) ...
\u6b63\u5728\u8bbe\u7f6e ros-kinetic-gmapping (1.3.10-0xenial-20210503-142648-0800) ...
shiyanlou:
/ [21:51:15]</code></pre></div></div><div class="rno-markdown-code"><div class="rno-markdown-code-toolbar"><div class="rno-markdown-code-toolbar-info"><div class="rno-markdown-code-toolbar-item is-type"><span class="is-m-hidden">代码语言:</span>javascript</div></div><div class="rno-markdown-code-toolbar-opt"><div class="rno-markdown-code-toolbar-copy"><i class="icon-copy"></i><span class="is-m-hidden">复制</span></div></div></div><div class="developer-code-block"><pre class="prism-token token line-numbers language-javascript"><code class="language-javascript" style="margin-left:0">shiyanlou:~/ rosrun gmapping slam_gmapping scan:=/robot0/laser_0 _base_frame:="/robot0" map:=/gmapping/map
[ INFO] [1662990795.178719229]: Laser is mounted upwards.
-maxUrange 4.08 -maxUrange 4.08 -sigma 0.05 -kernelSize 1 -lstep 0.05 -lobsGain 3 -astep 0.05
-srr 0.1 -srt 0.2 -str 0.1 -stt 0.2
-linearUpdate 1 -angularUpdate 0.5 -resampleThreshold 0.5
-xmin -100 -xmax 100 -ymin -100 -ymax 100 -delta 0.05 -particles 30
[ INFO] [1662990795.190358262]: Initialization complete
update frame 0
update ld=0 ad=0
Laser Pose= 1 2 0
m_count 0
Registering First Scan

启动 stdr_obstacle_avoidance 节点以自主移动机器人

将使用stdr_samples包提供的stdr_obstacle_avoidance节点。可以使用任何发布geometry_msgs/Twist消息的导航包,例如move_base。要启动stdr_obstacle_avoidance节点,请在新终端中运行:

代码语言:javascript
复制
 rosrun stdr_samples stdr_obstacle_avoidance robot0 laser_0</code></pre></div></div><figure class=""><div class="rno-markdown-img-url" style="text-align:center"><div class="rno-markdown-img-url-inner" style="width:100%"><div style="width:100%"><img src="https://cdn.static.attains.cn/app/developer-bbs/upload/1723364412992435127.png" /></div></div></div></figure><h3 id="48285" name="%E8%BF%90%E8%A1%8C-rviz-%E5%8F%AF%E8%A7%86%E5%8C%96%E7%94%9F%E6%88%90%E7%9A%84%E5%9C%B0%E5%9B%BE">运行 rviz 可视化生成的地图</h3><p>可以运行rviz并订阅/gmapping/map主题以可视化地图,或者可以使用stdr_launchers包提供的启动器并更改订阅的主题。在新终端中,运行:</p><div class="rno-markdown-code"><div class="rno-markdown-code-toolbar"><div class="rno-markdown-code-toolbar-info"><div class="rno-markdown-code-toolbar-item is-type"><span class="is-m-hidden">代码语言:</span>javascript</div></div><div class="rno-markdown-code-toolbar-opt"><div class="rno-markdown-code-toolbar-copy"><i class="icon-copy"></i><span class="is-m-hidden">复制</span></div></div></div><div class="developer-code-block"><pre class="prism-token token line-numbers language-javascript"><code class="language-javascript" style="margin-left:0"> roslaunch stdr_launchers rviz.launch

推荐ROS小课堂的stdr教程。