机器人建图与导航(ROS2 Foxy)
跟着鱼香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
然后继续按照按照教程创建功能包
这里在配置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源码并重新修改参数解决了这个问题。
更多推荐
所有评论(0)