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
u547du4e2d:1 http://mirrors.cloud.aliyuncs.com/ubuntu xenial InRelease
u83b7u53d6:2 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-updates InRelease [99.8 kB]
u83b7u53d6:3 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security InRelease [99.8 kB]
u5ffdu7565:4 http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu xenial InRelease
u83b7u53d6:5 http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu xenial Release [3,810 B]
u83b7u53d6:6 http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu xenial Release.gpg [833 B]
u83b7u53d6:7 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-updates/main Sources [665 kB]
u83b7u53d6:8 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-updates/universe Sources [548 kB]
u83b7u53d6:9 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-updates/main amd64 Packages [2,560 kB]
u83b7u53d6:10 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-updates/universe amd64 Packages [1,544 kB]
u83b7u53d6:11 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main Sources [311 kB]
u83b7u53d6:12 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/universe Sources [256 kB]
u83b7u53d6:13 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main amd64 Packages [2,051 kB]
u83b7u53d6:14 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/universe amd64 Packages [984 kB]
u83b7u53d6:15 http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu xenial/main amd64 Packages [854 kB]
u83b7u53d6:16 http://packages.ros.org/ros2/ubuntu xenial InRelease [4,668 B]
u83b7u53d6:17 http://packages.ros.org/ros2/ubuntu xenial/main amd64 Packages [131 kB]
u83b7u53d6:18 http://packages.ros.org/ros2/ubuntu xenial/main arm64 Packages [131 kB]
u5df2u4e0bu8f7d 10.2 MBuff0cu8017u65f6 11u79d2 (917 kB/s)
u6b63u5728u8bfbu53d6u8f6fu4ef6u5305u5217u8868... u5b8cu6210
u6b63u5728u5206u6790u8f6fu4ef6u5305u7684u4f9du8d56u5173u7cfbu6811
u6b63u5728u8bfbu53d6u72b6u6001u4fe1u606f... u5b8cu6210
u6709 698 u4e2au8f6fu4ef6u5305u53efu4ee5u5347u7ea7u3002u8bf7u6267u884c u2018apt list --upgradableu2019 u6765u67e5u770bu5b83u4eecu3002
shiyanlou:~/ $ sudo apt install ros-kinetic-gmapping [21:47:14]
u6b63u5728u8bfbu53d6u8f6fu4ef6u5305u5217u8868... u5b8cu6210
u6b63u5728u5206u6790u8f6fu4ef6u5305u7684u4f9du8d56u5173u7cfbu6811
u6b63u5728u8bfbu53d6u72b6u6001u4fe1u606f... u5b8cu6210
u5c06u4f1au540cu65f6u5b89u88c5u4e0bu5217u8f6fu4ef6uff1a
ros-kinetic-openslam-gmapping
u4e0bu5217u3010u65b0u3011u8f6fu4ef6u5305u5c06u88abu5b89u88c5uff1a
ros-kinetic-gmapping ros-kinetic-openslam-gmapping
u5347u7ea7u4e86 0 u4e2au8f6fu4ef6u5305uff0cu65b0u5b89u88c5u4e86 2 u4e2au8f6fu4ef6u5305uff0cu8981u5378u8f7d 0 u4e2au8f6fu4ef6u5305uff0cu6709 698 u4e2au8f6fu4ef6u5305u672au88abu5347u7ea7u3002
u9700u8981u4e0bu8f7d 263 kB u7684u5f52u6863u3002
u89e3u538bu7f29u540eu4f1au6d88u8017 1,328 kB u7684u989du5916u7a7au95f4u3002
u60a8u5e0cu671bu7ee7u7eedu6267u884cu5417uff1f [Y/n] y
u83b7u53d6: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]
u83b7u53d6: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]
u5df2u4e0bu8f7d 263 kBuff0cu8017u65f6 0u79d2 (394 kB/s)
u6b63u5728u9009u4e2du672au9009u62e9u7684u8f6fu4ef6u5305 ros-kinetic-openslam-gmappingu3002
(u6b63u5728u8bfbu53d6u6570u636eu5e93 ... u7cfbu7edfu5f53u524du5171u5b89u88c5u6709 185892 u4e2au6587u4ef6u548cu76eeu5f55u3002)
u6b63u51c6u5907u89e3u5305 .../ros-kinetic-openslam-gmapping_0.1.2-0xenial-20191214-001421 0000_amd64.deb ...
u6b63u5728u89e3u5305 ros-kinetic-openslam-gmapping (0.1.2-0xenial-20191214-001421 0000) ...
u6b63u5728u9009u4e2du672au9009u62e9u7684u8f6fu4ef6u5305 ros-kinetic-gmappingu3002
u6b63u51c6u5907u89e3u5305 .../ros-kinetic-gmapping_1.3.10-0xenial-20210503-142648-0800_amd64.deb ...
u6b63u5728u89e3u5305 ros-kinetic-gmapping (1.3.10-0xenial-20210503-142648-0800) ...
u6b63u5728u8bbeu7f6e ros-kinetic-openslam-gmapping (0.1.2-0xenial-20191214-001421 0000) ...
u6b63u5728u8bbeu7f6e ros-kinetic-gmapping (1.3.10-0xenial-20210503-142648-0800) ...
shiyanlou:~/ $ [21:51:15]
代码语言:javascript复制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
运行 rviz 可视化生成的地图
可以运行rviz并订阅/gmapping/map主题以可视化地图,或者可以使用stdr_launchers包提供的启动器并更改订阅的主题。在新终端中,运行:
代码语言:javascript复制$ roslaunch stdr_launchers rviz.launch
推荐ROS小课堂的stdr教程。