跟着鱼香ROS的《ROS2机器人开发_从入门到实践 -- 桑欣 -- 2024 -- 机械工业出版社》

以及10.8为Fishbot配置Nav2课程资料完成slam建模和多点导航。记录一下复现代码时的步骤以及遇到的坑。

1.slam建模

这里没有使用Cartographer进行slam建模,可能因为版本问题我用这个SLAM的系统一直有问题,所以用的是slam_toolbox

安装slam_toolbox

$sudo apt install ros-$ROS DISTRO-slam-toolbox

安装好之后,以仿真时间启动slam_toolbox

ros2 1aunch slam_toolbox online_async_launch.py use_sim_time:=True 

发布map话题,slam建图的内容也是发布在这里

启动之前创建好的gazebo地图和移动机器人

ros2 launch cjcar_description gazebo.launch.py

这时再启动rviz2,初次启动里面没有配置,自行添加TF、scan、urdfrobot等内容,设置坐标系等信息,可以保存,之后启动rviz2就不用再重新配置了

然后就能再rviz2中看见粒子效果,启动键盘控制小车移动进行扫图

ros2 run teleop_twist_keyboard teleop_twist_keyboard 

控制键盘完成整的扫描出map,保存

sudo apt install ros-$ROS DISTRO-nav2-map-server #安装地图服务

ros2 run nav2_map_server map_saver_cli -f $图的名字  #保存地图

2.navagition2导航

导航的前提时salm已经建图成功,并且得到如下的两个文件

按照小鱼的教程安装nav2

10.7Nav2导航框架介绍

然后继续按照按照教程创建功能包

这里在配置nav2参数的时候,需要用的源码中的参数模板:nav2_params.yaml

但是Ubuntu系统我暂时没有魔法无法下载源码,我用另一台电脑ssh链接ubuntu系统的主机,讲github上nav2_params.yaml的源码粘贴过来,再进行修改

然后就是创建luanch,注意这里要把maps修改成自己创建的slam地图名

然后再ws的目录层级下运行

colcon build

source install/setup.py

最后启动launch文件,初始化位置之后可以看见左下角的navigation和Localization都是active,同时看见膨胀图层,说明一切正常,可以进行单点或者路点导航了。

注:

开始直接照搬小鱼的第七章代码出现问题,打开rviz2后显示Navigation为inactive,最后发现是因为ROS2版本问题,源码是Humble版本的,里面的nav2_params.yaml与Foxy版本不兼容,之后重新复制foxy版本的Navigation源码并重新修改参数解决了这个问题。

Logo

立足具身智能前沿赛道,致力于搭建全球化、开源化、全栈式技术交流与实践共创平台。

更多推荐