这个数据问题已经通过修改ros的消息发送方式解决了!
基站定位
在使用UWB基站进行定位的时候,由于消息格式不一致,且偶尔会有数据缺失,容易造成底层ROS程序出现vector(size()==0 ),现象发生。在运行命令 rosrun nlink linktrack_publisher /dev/ttyUSB0 921600 的时候,总是使shell死掉。
方法:写一个循环拉起脚本 monitor.sh
#!/bin/sh
source ./devel/setup.bash
while true;
do
rosrun nlink linktrack_publisher /dev/ttyUSB0 921600
sleep 0.5
done
比如,使用nohup命令,可以使进程在后台启动:
nohup sh monitor.sh>qa_wish.file 2>&1
脚本可以在后台不间断运行,把输出写入到qa_wish.file 中。
激光定位
使用Cartographor定位的效果,在固定环境中,比基站定位看起来稳定一点。需要通过判定函数进行不同的调用。这就是最简单的传感器融合阿!
定位算法
Cartographor定位算法:使用所谓的scan-match算法,与构建地图的时候调试参数和调用条件有所不同。