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

Posted zhangrelay

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中提供的启动器之一。在终端运行中:

$ roslaunch stdr_launchers server_with_map_and_gui_plus_robot.launch

 

 

 

运行 slam_gmapping 节点

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

$ rosrun gmapping slam_gmapping scan:=/robot0/laser_0 _base_frame:="/robot0" map:=/gmapping/map

安装gmapping:

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]


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节点,请在新终端中运行:

$ rosrun stdr_samples stdr_obstacle_avoidance robot0 laser_0

运行 rviz 可视化生成的地图

可以运行rviz并订阅/gmapping/map主题以可视化地图,或者可以使用stdr_launchers包提供的启动器并更改订阅的主题。在新终端中,运行:

$ roslaunch stdr_launchers rviz.launch

 

推荐ROS小课堂的stdr教程。


以上是关于ROS1云课→26机器人Gmapping等环境地图构建的主要内容,如果未能解决你的问题,请参考以下文章

ROS1云课→27机器人SLAM小结

ROS1云课→27机器人SLAM小结

ROS1云课→28机器人代价地图配置

ROS1云课→28机器人代价地图配置

ROS1云课→22机器人轨迹跟踪

ROS1云课→22机器人轨迹跟踪