小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
拓展3:FishBot 树莓派配置建图导航
-
之前在快速上手教程中,建图是通过Docker镜像提供的选项来完成的,镜像是封装了Cartographer 的纯雷达建图算法,而本教程提供在树莓派或者其他类似板子系统中结合FishBot底盘完成建图和导航的方法。
在开始本步骤前请先完成拓展1和拓展2,完成雷达的驱动和底盘的驱动。
一、第一步安装依赖,下载代码
树莓派上安装Ubuntu22.04 系统,安装ROS 2-Humble,接着安装依赖
sudo apt install ros-humble-nav2-bringup
然后下载代码和编译
git clone https://github.com/fishros/fishbot.git -b v1.0.0 --depth=1 cd fishbot colcon build
二、运行TF转换Launch-Bringup
source install/setup.bash ros2 launch fishbot_bringup fishbot_bringup.launch.py
三、运行建图
ros2 launch slam_toolbox online_async_launch.py
此时就可以遥控机器人建图
ros2 run teleop_twist_keyboard teleop_twist_keyboard
建完图就可以保存,我们需要使用一个叫做
nav2_map_server
的工具。安装nav2_map_server
sudo apt install ros-$ROS_DISTRO-nav2-map-server
保存地图
ros2 run nav2_map_server map_saver_cli --help
可以看到有下面的用法
Usage: map_saver_cli [arguments] [--ros-args ROS remapping args] Arguments: -h/--help -t <map_topic> -f <mapname> --occ <threshold_occupied> --free <threshold_free> --fmt <image_format> --mode trinary(default)/scale/raw NOTE: --ros-args should be passed at the end of command line
我们的地图话题为map,文件名字我们用fishbot_map,所以有下面这个这样写的命令行。
ros2 run nav2_map_server map_saver_cli -t map -f fishbot_map
接着我们就可以得到下面的两个文件
. ├── fishbot_map.pgm └── fishbot_map.yaml 0 directories, 2 files
这两个文件就是对当前地图保存下来的文件,其中.pgm是地图的数据文件,.yaml后缀的是地图的描述文件。
四、导航测试
接着我们就可以启动导航了
source install/setup.bash ros2 launch fishbot_navigation2 navigation2.launch.py
启动后如上图所示,地图被正常加载出来了
接着我们需要告诉nav2当前机器人在地图的哪个位置,点击Rviz2工具栏——2D Pose Estimate,然后在地图上点个目标点并选择方向
接着你将看到全局代价地图以及被地代价地图以及激光在地图上都标记出来了
此时你可以使用rviz2的工具栏中的Nav2 Goal发送一个目标点,然后观察机器人运动即可。
-
-
小鱼,麻烦帮看看
我ubuntu环境,第三步运行结果如图:
这种是预期结果吗?
因为没弹出rviz2,我单独再打开rviz2也看不到地图;
话题 /scan /map /tf 都是有的
如果这种状态尝试保存地图会出错
补充一点:雷达使用的是拓展1中的有线模式
rviz2中,map插件状态提示: no map received -
-
@小鱼 搞定了谢谢,我电脑重启重走了一遍流程就好了
估计是哪里疏忽了
中文互联网最牛逼的ros2教程 -
请教一下在ssh里想要打开rviz2在远程控制屏幕的命令应该怎么写,
尝试用Xmanager打开配置助手但是在xhost命令在执行之后终端一点返回没有 -
@1904688138 这个很麻烦,而且带宽堪忧,最好的办法是利用ros2的局域网自动发现,直接用本机的rviz2看远程数据
-
@小鱼 ros连接的那个机器显示有点不太一样,有没有什么好办法
-
这个教程支持树莓派上的galactic版本么?
-
@slxzj1990 没有测试过,理论上问题不大
-
鱼哥,建图如果要用IMU,这个IMU应该是需要标定的吧,标定的教程有么?@小鱼
-
@592976189 暂时没有哈
-
鱼哥,第二步说这个包有问题
-
@515261725 sudo apt install ros-$ROS_DISTRO-joint-state-publisher
-
此回复已被删除! -
@小鱼 这个命令还是这个报错,这个问题是pip版本太高了,回退就行了
-
鱼哥,我雷达和主控板都是通过串口与树莓派进行通信的,前几步都没问题,但是我运行ros2 launch slam_toolbox online_async_launch.py就一直出现这个问题,换成cartograph建图也是报错,能出现map,但是不是实时更新
-
@2524167316 出现的map是这样的,不能实时更新,不知道哪里出来问题
-
@2524167316 雷达能正常运行,但是死活就是不能建图
-
@2524167316 这个看起来是正常的,不出图检查下各个话题是否正常。另外告知下固件版本类型。
-
@小鱼 [async_slam_toolbox_node-1] [INFO] [1714996759.771290017] [slam_toolbox]: Message Filter dropping message: frame 'laser_frame' at time 1714996759.626 for reason 'discarding message because the queue is full'
我现在是用树莓派当上位机通过串口与主控板和雷达驱动板通信,树莓派用的是4b的,没有固件库,因为我没用wifi通信,一直报上面的错误