【ROS2机器人入门到实战】使用SLAM

您所在的位置:网站首页 鲅鱼圈市民中心服务大厅电话 【ROS2机器人入门到实战】使用SLAM

【ROS2机器人入门到实战】使用SLAM

#【ROS2机器人入门到实战】使用SLAM| 来源: 网络整理| 查看: 265

5.使用SLAM_TOOLBOX完成建图 写在前面 当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号获取教程配套机器人开发平台:两驱版| 四驱版为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn

SLAM 是通过传感器获取环境信息然后进行定位和建图。在 ROS 2 中,提供了很多的 SLAM 功能包,比如 slam_toolbox,cartographer_ros 和 rtabmap_slam 等。针对二维场景,其中 slam_toolbox 开箱即用,上手较为简单,就用它类来构建我们的第一张地图。

一、安装slam-toolbox

slam_toolbox 是一套用于2D SLAM的开源工具,使用 apt 可以方便的进行安装,命令如下:

sudo apt install ros-$ROS_DISTRO-slam-toolbox 二、启动底盘和雷达

1.运行TF转换Launch-Bringup

source install/setup.bash ros2 launch fishbot_bringup fishbot_bringup.launch.py

2.运行Agent

sudo docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO udp4 --port 8888 -v6

3.启动雷达

直接使用Docker:

xhost + && sudo docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged -v /tmp/.X11-unix:/tmp/.X11-unix --device /dev/snd -e DISPLAY=unix$DISPLAY -p 8889:8888 registry.cn-hangzhou.aliyuncs.com/fishros/fishbot_laser

如果不用Docker需要修改下代码,因为 ydlidar_launch.py 会发布 base_link 和 laser_frame 之间的坐标变换,这和使用URDF发布的相冲突,所以需要做一次修改再运行:

def generate_launch_description(): ... return LaunchDescription([ params_declare, driver_node, #tf2_node, ----注释这一行就可以了----- ])

确定有雷达话题后,我们就可以运行建图了。

三、运行建图

接着打开一个新的终端, 入下面的命令,启动slam_toolbox 的在线建图:

ros2 launch slam_toolbox online_async_launch.py --- INFO] [launch]: All log files can be found below /home/fishros/.ros/log/2023-05-25-16-47-11-319871-fishros-VirtualBox-11288 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [async_slam_toolbox_node-1]: process started with pid [11290] [async_slam_toolbox_node-1] [INFO] [1685004431.442212575] [slam_toolbox]: Node using stack size 40000000 [async_slam_toolbox_node-1] [INFO] [1685004431.503891373] [slam_toolbox]: Using solver plugin solver_plugins::CeresSolver [async_slam_toolbox_node-1] [INFO] [1685004431.505007754] [slam_toolbox]: CeresSolver: Using SCHUR_JACOBI preconditioner. [async_slam_toolbox_node-1] Info: clipped range threshold to be within minimum and maximum range! [async_slam_toolbox_node-1] [WARN] [1685004431.658413039] [slam_toolbox]: maximum laser range setting (20.0 m) exceeds the capabilities of the used Lidar (8.0 m) [async_slam_toolbox_node-1] Registering sensor: [Custom Described Lidar]

slam-toolbox 的输入有两个,第一个是订阅来自雷达的 /scan 话题,用于获取雷达数据,第二个是获取里程计坐标系 odom 到机器人坐标系 base_footprint 之间的变换。这些数据都是有时间戳的,所以在上面的命令中将 use_sim_time 参数的值设置为 True 表示使用仿真的时间,以防止因时间戳造成数据不合法。

用RVIZ2可视化图像

打开 RViz,修改 Fixed Frame 为 map,接着通过 Add/By Topic 添加 /map 话题,也可以添加 TF 和 RobotModel 等你感兴趣的话题进行显示,最终配置及效果如下图所示。

在这里插入图片描述

遥控机器人建图(记得减速哦) ros2 run teleop_twist_keyboard teleop_twist_keyboard

房间已经探索了差不多后,接着我们来将地图保存下来。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3