[FishBot教程] 9.0.6. 雷达驱动及建图测试
-
9.0.6. 雷达驱动及建图测试
你好,我是小鱼,上一节我们完成了对雷达板进行烧录固件和配置WIFI等信息,本节我们就可以实现手持雷达建图的效果了。
一、手动切换模式
我们的转接板有三种模式,当配置完后,需要将跳线帽调整到WIFI模式,这样雷达板将会把来自雷达的数据通过wifi转发给tcp服务。
调整完后,跳线帽接法如上图所示。
二、启动服务
打开电脑,输入下面的指令,我们使用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
国外使用镜像:
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 fishros2/fishbot_laser
下载完成后,你可以看到下面的界面
三、驱动测试
保持雷达板在通电状态,输入1,回车,我们尝试驱动雷达
看到上述界面,表示驱动成功。
如果没有看到上述界面,请检查是否符合下述现象和问题:
- 蓝色LED灯长亮,表示此时在配置模式,请将跳线帽调整至运行模式,LED闪烁表示在运行模式
- 出现
timout count
提示,表示雷达板没有数据发送到的电脑,此时应该检查跳线帽是否在WIFI模式,并确定连接了雷达。
驱动成功后,我们可以打开一个新的终端,输入ros2 topic list,查看是否有scan话题。
ros2 topic list
ros2 topic hz /scan
在RVIZ2中可视化点云数据
此时打开rviz2,添加LaserScan,并修改fixedframe为laser_frame
修改Qos为Best Effort,接着就能看到雷达的点云数据了
移动雷达,观察点云的变化
四、手动建图测试
使用Crtl+C,打断驱动的运行,接着输入2,建图测试
等待片刻,你应该可以直接看到一张地图出现
你可以将FishBot放到地上,或者用手拿着fishbot,慢慢走一圈,观察地图的变化,也可以直接用键盘控制节点(需要根据上节教程个启动Agent)控制fishbot走一圈,看看能否得到完整的地图。
再秀一下小鱼的大house
五、保存地图
我们需要使用一个叫做
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后缀的是地图的描述文件。
下面的导航过程中我们将要使用到地图文件进行路径的搜索和规划。
六、总结
本节主要带你一起完成FishBot的建图和导航功能,因为FishBot对网络有所依赖,所以不要离路由太远完成建图。/home/fishros/下载/cgi-bin_mmwebwx-bin_webwxgetmsgimg_&MsgID=4363356762744434523&skey=@crypt_d03924ac_617b051763b5996ca572271c87d9dbcb&mmweb_appid=wx_webfilehelper.jpeg/home/fishros/下载/cgi-bin_mmwebwx-bin_webwxgetmsgimg_&MsgID=4363356762744434523&skey=@crypt_d03924ac_617b051763b5996ca572271c87d9dbcb&mmweb_appid=wx_webfilehelper.jpeg
-
-
@小鱼 在 [FishBot教程] 6. 雷达驱动及建图测试 中说:
如果没有看到上述界面,请检查是否符合下述现象和问题:
蓝色LED灯长亮,表示此时在配置模式,请双击BOOT切换到运行模式,LED闪烁表示在配置模式
一直停留在Prepare to Accept connect!, 表示雷达板并没有链接到电脑,此时确定雷达板是否可以ping通
出现timout count: 1提示,表示雷达板没有数据发送到的电脑,此时应该检查跳线帽是否在WIFI模式,并确定连接了雷达。!!led 在闪烁,可以ping通 一直停留在 Prepare to Accept connect!是什么原因
-
@1461307079 已解决,原因是使用虚拟机nat模式,改成桥接模式就可以。
-
@小鱼 大佬,. 雷达固件烧录及配置正常,WIFI连的是手机热点,但是一直ping不通,是怎么回事啊
-
@2458348057 该问题已解决
-
鱼哥,这个是什么情况,在使用雷达驱动的时候报错
docker: Error response from daemon: driver failed programming external connectivity on endpoint inspiring_fermi (116f5be039d5e41f87f532271b1754d6a9d32fcfe46f4394461d29bc8404f753): Bind for 0.0.0.0:8889 failed: port is already allocated. -
-
@2458348057 怎么解决的啊,求教!
-
@小鱼 在 [FishBot教程] 6. 雷达驱动及建图测试 中说:
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
鱼哥,我配置最新的固件,ping也是通的,但就是没有收到回复
Ubuntu是22.04,装的也是ros2 -
@2689876497 雷达转吗,是否插反了
-
-
能够ping通雷达,而且雷达也在旋转,蓝灯处于闪烁状态。但是一直没有雷达数据传输。 -
@913869698 什么网络环境,左边窗口是 ping 的吗
-
@小鱼 左边是ping的,有时候正常有时候就比较奇怪。但是都是一直在跳的。网络是主机(笔记本)Wi-Fi连接,虚拟机桥接。
-
@913869698 有没有其他路由器换个试试
-
使用镜像时提示这里错误ros2@ros2:~$ 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 access control disabled, clients can connect from any host [sudo] ros2 的密码: docker: Error response from daemon: driver failed programming external connectivity on endpoint hardcore_cartwright (f64473343a47c101fc1174e9c2cf93dd74a6c012c47ff7d5e1fd0221f2120738): Error starting userland proxy: listen tcp4 0.0.0.0:8889: bind: address already in use.
-
@1216898523 在 [FishBot教程] 6. 雷达驱动及建图测试 中说:
isten tcp4 0.0.0.0:8889: bind: address already in use
常见的端口占用,是不是开了多个
-
鱼哥,我的rviz里fixed_frame选项里没有laser_frame是为什么呀,之前的omed也没有,只有一个map![替代文字]
-
@深海 没得选直接输入也行
-
@小鱼 但是rviz里没有东西
-
@深海 终端里会报这个