目前編寫雙目vins**,發現雙目vins初始化後的尺度存在問題(理想化雙目尺度應該為1),所以想著利用無誤差的測試集來測試一下自己寫的**。我先在單目vins下做了測試,下面是我利用github上賀所長的單目測試集在單目vins上測試的過程:
1.單目vins測試資料集:
(1)gener_alldata.cpp :
a. createpointslines(): 通過這個函式取出設計好的房子圖形中的map點,之後所有的影象都能觀測到這些map點,且順 序不變;
b. imudata 和 imudata_noise: 只用了imudata;
c. camdata: 完全由imudata 和map點決定,所以沒有誤差;
(2)imudata的生成:imu.cpp
a. motionmodel: 直接給出imu的線加速度和角加速度 以及imu的r、t;(需要推導)
2.在vins中新建兩個節點分別讀取feature資料 和 imu資料:
(1)其中map點在各幀觀測的歸一化座標儲存在 vio_data_simulation/bin/keyframe/all_points_x.txt中
(6維,map3維+1+歸一化座標點2維),
(2)feature的時間 儲存在vio_data_simulation/bin/cam_pose.txt中
(14維,時間1維+q4維+t3維+陀螺儀加速度3維+線加速度3 維),
(3)imu資料儲存在vio_data_simulation/bin/imu_pose.txt(無雜訊)
( 與cam_pose儲存相同,只需要時間和gyro、acc 7維)。
3.節點發布:
(1)feature發布:注意頻率為30
ros::init(argc, argv, "test_pub_feature");
ros::nodehandle n("~");
ros::console::set_logger_level(rosconsole_default_name, ros::console::levels::info);
pub_img = n.advertise("feature", 1000);
test_s();// 讀取feature 和 time 資料
int count = 0;
ros::rate loop_rate(30);
while(ros::ok())
(2)imu發布:注意頻率為200(與上面類似)
4.引數修改:projection_parameters + cam to imu 的 r、t
5.執行結果:refine之前g=9.80418
6.完整**:
test_pub_feature.cpp
#include #include #include #include #include #include #include #include #include #include bool publish = 1;
ros::publisher pub_img,pub_match,pub_imu;
ros::publisher pub_restart;
int image_num = 600;
int init_pub = 0;
/*struct imu_data
;*/void load_feature(std::string filename, std::vector&point)
}}void load_camtime(std::string filename, std::vector&time)
}}void pub_feature(const std::vector&point, const double per_time)
feature_points->channels.push_back(id_of_point);
feature_points->channels.push_back(u_of_point);
feature_points->channels.push_back(v_of_point);
feature_points->channels.push_back(velocity_x_of_point);
feature_points->channels.push_back(velocity_y_of_point);
//ros_info("publish point %f, at %f", feature_points->header.stamp.tosec(), ros::time::now().tosec());
pub_img.publish(feature_points);
}std::vectorcam_time;
std::vector> all_points;
void test_s() }
int main(int argc, char **argv)
}
test_pub_imu.cpp
#include #include #include #include #include #include #include #include #include #include #include bool publish = 1;
ros::publisher pub_imu;
struct imu_data
;void load_imu(std::string filename, std::vector&imu_data)
}}void pubimu(const imu_data & imu_data)
std::vectorcam_time;
std::vectorimu_data;
std::vector> all_points;
void test_s()
int main(int argc, char **argv)
}
構造測試資料 對比測試資料
正確 include using namespace std typedef long long ll const int max n 1e6 10 intmain return0 author max n date 2019 10 04 15.03.21 description 正確 錯誤 inc...
web測試 資料分層測試
51testing 測試效率低下?很多時間都在等程式開發功能,直到介面層展現出來資料後,我們才能介入測試,然後忙的焦頭爛額,上線前心裡還沒底。亦或者發現乙個bug,發給程式猿a查,程式猿a說,可能是程式猿b的問題,你讓程式猿b查查。程式猿b說,我這正忙著呢,你讓a先查查,然後這個bug就丟在那裡好久...
常用測試資料
程式或應用編寫好了之後,通常要輸入一些測試資料,我們懶人一般的做法就是,輸入 asdf,愛上對方,阿道夫。之類的隨手打的字元。這裡,我收集了一點點資料供測試時候使用,應該可以作為常用的測試資料。1.常用的姓名 平時,很多系統比如員工名字需要,但是又怕洩露隱私,所以這裡從網上收集了中國50個最常用的姓...