启动fishbot建图程序后应该从哪里提取定位数据?
-
@siviechen 再附带一个我当时建的图,这个算还可以吗?我感觉形状是对的。左边是入口和厕所门,中间是桌子的桌角和杂物。
怎么laser_frame会那么离谱呢? -
@siviechen 里程计数据是 odom到 base_link 之间的位姿变换
-
@小鱼 小鱼的意思是我应该用/odom到/laser_frame的位姿变换和/odom话题消息进行比较吗
-
@siviechen 看你这个像直接跑的carto的纯定位,这样一来你其实对比的是雷达定位和里程计定位的精度,而非地图精度。
因为用docker选2建图其实只用了雷达数据而已 -
@小鱼 嗯,我只是开启了docker里的雷达建图然后选2,仅此而已,然后提取了数据来做这个对比。这个选2有在建图啊,应该不是纯定位吧?
‘’这样一来你其实对比的是雷达定位和里程计定位的精度,而非地图精度‘’这句话我理解了。
另外想问一下,小鱼是怎么修改carto里的雷达订阅策略的?我按教程写的launch文件,然后跳出了雷达策略不对的日志:
[WARN] [1692271382.825165765] [ydlidar_node]: New subscription discovered on topic '/scan', requesting incompatible QoS. No messages will be sent to it. Last incompatible policy: RELIABILITY_QOS_POLICY
因为carto源码是ros1的,没有qos,我也没找出来怎么改(carto的代码也很有难度 )。佩服小鱼的docker里的选2是能跑起来的。能否指教一下?求求 有偿也可以,真的很想知道
教程链接:
https://fishros.com/d2lros2/#/humble/chapt10/get_started/3.%E9%85%8D%E7%BD%AEFishBot%E8%BF%9B%E8%A1%8C%E5%BB%BA%E5%9B%BE
-
@siviechen 补充一下,我的操作过程有(我没用gazebo仿真环境而是用实车):
启动microros的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
驱动雷达按1:
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
启动教程里的launch文件:
ros2 launch fishbot_cartographer cartographer.launch.py
-
-
@siviechen 你可以尝试slam_toolbox ,相比carto更好用。
ros2 launch slam_toolbox online_async_launch.py
-
@小鱼 我是想自己学写一写slam算法的。cartographer我已经把多少看了一遍了,所以我想了解一些cartographer实现方面的问题,比如上面这些。能教一教吗
-
@siviechen 按照教程应该能跑起来,你遇到什么错误了
-
@小鱼 emm,是这样的:教程里是教我们下载carto源码,然后改配置文件.lua和launch文件,然后启动gazebo仿真,然后跑cartographer,这样做是没问题的,我的也没问题。
而我现在是把启动gazebo的仿真这一步换成了启动fishbot实车,启动了agent来获取scan,odom和imu数据。(在这同时把launch文件里的'use_sim_time'改成了’false‘,因为不是在跑仿真了)
然后我放一张rviz的图:
和一张rqt_graph的图:
我对其的理解是map没有数据,用ros2 topic echo去试也是没有数据跳出来的
不知道要如何才能像小鱼的雷达docker选2那样跑起来
-
@siviechen 看一下tf,还有frameid对不对
-
-
@siviechen 再刷新看看,没有就有大问题了
-
-
@siviechen 用rqt_tf_tree 看
-
@小鱼 ros2好像没有这个功能,rqt_tf_tree: command not found
-
@siviechen 有的,搜一下安装下
-
@小鱼 找到了,贴一下过程:
sudo apt install ros-humble-rqt-tf-tree rm ~/.config/ros.org/rqt_gui.ini #删除缓存,不然报错 ros2 run rqt_tf_tree rqt_tf_tree
但是结果还是一样的:
会和车的雷达要把fixed frame改成laser_frame有关系吗?默认好像是map
-
@siviechen 那就真的可能没人发布frame,你可以把这里的做一下