环视相机代码调试日记

按照安装说明重新编译opencv WITH_CUDA=ON 可以用cmake-gui编译通过
2020.12.29
出现段错误:
eigen 3.4.4版本不能通过eigen 3.2.10版本的奇异值分解函数
需要重装eigen3.2.10
同时重新编译ceres

跑通离线建图代码:

地下停车场

使用数据/media/csc105/samsungT5/shangqi/test/dw_000_110216_101449.000_150322_default
图片来源(“input”, boost::program_options::valuestd::string(&inputDir)->default_value("/media/csc105/samsungT5/shangqi/0507/dw_000_060519_203212.000_150322_default"), “Location of the folder containing all input data. Files must be named camera_%02d_%05d.jpg. In case if event file is specified, this is the path where to find frame_X/ subfolders”)
在这里插入图片描述
在这里插入图片描述
输出结果在
/media/csc105/samsungT5/shangqi/test/dw_000_110216_101449.000_150322_default/camodocal_data0.5/pointcloud_5
在这里插入图片描述
在这里插入图片描述

2020.12.30
地上室外
。。。
新年快乐啊哈哈哈哈哈哈

2021.1.2
室外可跑
其他的参数都是先验外参、输出标定结果和点云图路径,可以不改
build_map.launch 可以不变
build_map_test.cc只需要改input为/media/csc105/samsungT5/shangqi/0418/dw_000_110216_083027.000_150322_default
在这里插入图片描述
在这里插入图片描述
在线定位
修改online_localize.launch
pcd_filename
在这里插入图片描述
修改test_location_ceres_node.cpp
在这里插入图片描述

rosbag play -r 0.5 ‘/media/csc105/samsungT5/ououtdoor2.3ag.bag’
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

rosbag play -r 0.5 ‘/media/csc105/samsungT5/ououtdoor4.bag’
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
rosbag play -r 0.5 ‘/media/csc105/samsungT5/ououtdoor2.bag’
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2021.1.5
在线SLAM
修改online_multi_odometry_k.launch
在这里插入图片描述
特别是

<arg name="calibDir" default="/home/csc105/multi/src/multi_odom_slam/data/calibparam0.25" />
<arg name="mapfile" default="/home/csc105/multi/src/multi_odom_slam/data/ATD_parking/camodocal_data0.5/" />

一开始使用了自己test文件输出结果的calibparam0.25和camodocal_data0.5
但是其中calibparam0.25的extrin…txt不存在 初始化一直有误,相机数量不对,一直为0,访问越界
在这里插入图片描述
rosbag play ‘/media/csc105/samsungT5/test_2018-12-11-21-13-16.bag’
在这里插入图片描述
gps数据获得
gps_common_test.launch里面打开两个结点一个是ros官方gps_common,需要sudo apt-get install ros-***-gps-common;这个节点的任务是将gps数据转换成轨迹,
默认Subscribed Topics
fix (sensor_msgs/NavSatFix)

Published Topics
odom (nav_msgs/Odometry)
可以通过

<remap from="odom" to="vo"/>
<remap from="fix" to="/gps" />

改变topic名字
另一个节点是save——gps对应于ead_data/scripts/save_gps.py,这个需要到硬盘里找一下,gitee上面删掉了,这个python文件里面接受/vo这个topic,保存位姿,文档路径修改`

gps_f = open("/home/csc105/multi/src/multi_odom_slam/read_data/poses/gps_outdoor4.txt",'w')
odom_f = open("/home/csc105/multi/src/multi_odom_slam/read_data/poses/system_poses.txt",'w')

因为这个是ros的python,所以是python2,不需要进入conda环境,但是还是需要安装python的包
如pip install xlrd 注意不是pip3
如果运行正确,会有save gps!的输出
在线SLAM位姿输出
路径在multi_odom_slam/config/odom_config.yaml文件中pose_graph_save_path参数路径下

pose_graph_save_path: "/home/csc105/multi/src/multi_odom_slam/output/2/" # save and load path

!!!这里需要打开一个本来被注释掉的线程
pose_graph_node.cpp623 keyboard_command_process = std::thread(command);
这个command函数 在放完数据包之后 输入s 就开始保存pose(posegraph.savePoseGraph())到这个路径下的tum_pose.txt,对于这个txt的保存
pose_graph.cpp:

1018 fprintf (pFile1, "%f %f %f %f %f %f %f %f\n",(*it)->time_stamp,
1019                 PG_tmp_T.x(), PG_tmp_T.y(), PG_tmp_T.z(),
1020                 PG_tmp_Q.x(), PG_tmp_Q.y(), PG_tmp_Q.z(), PG_tmp_Q.w());

要改成这样,一开始的%lld有问题
他还有很多其他的保存 关键帧的kp和dp,各种格式的位姿

运行convertpose.py文件,前面得到的gps位姿对应gpsfile,在线slam得到的位姿对应camfile,输出的相机真值文件对应camgtout
convertpose.py需要在硬盘里找一下/media/csc105/samsungT5/shangqi/scripts/

camgtout = open('/media/csc105/samsungT5/shangqi/0423/outdoortest/16/camgt.txt', 'w')
gpsfile='/home/csc105/multi/src/multi_odom_slam/read_data/poses/gps_outdoor4.txt'
camfile='/home/csc105/multi/src/multi_odom_slam/output/2/tum_poses.txt'

//这里还有问题 但是可以直接用gpsfile和camfile对比,时间上可能要改一下倍数关系
选择在pose——graph.cpp里面改1018行(it)->time_stamp10e8,

evo评估
evo_rpe home/csc105/multi/src/multi_odom_slam/read_data/poses/gps_outdoor4.txt’ ‘/home/csc105/multi/src/multi_odom_slam/output/2/tum_poses.txt’ -va –t_max_diff 10000000 -p

cut --delimiter " " --fields 1-8 msckf_traj.txt > clean.tum
evo_traj tum ekftagscarto0.tum -p

猜你喜欢

转载自blog.csdn.net/weixin_43900210/article/details/111948500