Giter Club home page Giter Club logo

svo_edgelet's Introduction

SVO_edgelet

ChangeList, compare with the origin svo:

  1. add edgelete feature
  2. inition VO: auto select H model and E model
  3. keyframe selection strategy
  4. add pangolin to draw trajectory and remove ROS

install(ubuntu)

Prerequisites

  • boost - c++ Librairies (thread and system are needed)

    sudo apt-get install libboost-all-dev

  • Eigen 3 - Linear algebra

    apt-get install libeigen3-dev

  • OpenCV3

  • Sophus - Lie groups we have intergrated sophus in our code. Thanks for the code: https://github.com/strasdat/Sophus.git

  • g2o - General Graph Optimization OPTIONAL Only required if you want to run bundle adjustment. It is not necessary for visual odometry. I suggest an out-of-source build of g2o:

    cd workspace

    git clone https://github.com/RainerKuemmerle/g2o.git

    cd g2o

    mkdir build

    cd build

    cmake ..

    make

    sudo make install

Build and Compile

If you want use g2o, please set flag in cmakerlists.txt:

SET(HAVE_G2O TRUE) #TRUE FALSE

compile:

mkdir build cd build cmake .. make

Run code

test file, test_pipline and test_live_vo:

Offline datasets:

To run on tum dataset:test_pipline
To run on euroc dataset:test_piplel_euroc

Online camera:test_live_vo

Results

Results1

Authors

Yijia He, Institute of Automation, Chinese Academy of Sciences

Wei Wei, Institute of Computing Technology, Chinese Academy of Sciences

Yanan Gao, Institute of Computing Technology, Chinese Academy of Sciences

svo_edgelet's People

Contributors

heyijia avatar skylook avatar yan99033 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

svo_edgelet's Issues

小边原理

用的是小边吗?小边用的哪个啊,有什么讲小边原理的教材可以看吗?还有为什么对着白墙可能检测出来呢,麻烦前辈指教

Fail when using customized camera parameter

When I change the parameters at cam_ = new svo::PinholeCamera intest_live_vo.cpp, the VO pipeline always fails with error Not enough matched features
Not enough matched features, Reproject process failure!
The cam param is calculated by Matlab toolbox.
And using the default cam param works just fine.

特征点少并且速度很慢

贺博好。我用了一个无人机航拍数据集,分辨率1920*1080,速度很慢并且特征点奇少。
请问速度慢是图像分辨率的问题么? 特征点奇少并且跟丢是什么原因?如下图

2019-12-18 22-57-03屏幕截图

fisheye camera model

贺博你好,请问添加鱼眼相机模型除了在camera_model.cpp中参照pinhole模型增加fisheye模型外,还需要修改哪部分的代码吗?关于svo_edgelet添加鱼眼模型,有什么建议吗?十分感谢

always fail on kitti dataset and tum dataset

您这里提供的代码在Kitti数据集和TUM 数据集里面基本上都是初始化之后过几帧就挂掉了,很快就跟踪的点数目不够了,请问是我哪里配置不对吗?我测试的是KITTI里面第一个序列还有TUM中fr1_room那个序列.不过fr1_xyz那个序列是可以成功跟踪的.

what is version of pangolin ?

sudo make install pangolin error,
下载/Pangolin-0.4/build$ sudo make install
[sudo] password for ouweiqi:
Inconsistency detected by ld.so: dl-version.c: 224: _dl_check_map_versions: Assertion `needed != ((void *)0)' failed!
make: *** [cmake_check_build_system] 错误 127

appreciate you help me .

深度滤波器中更新小边特征方向

if(it->ftr->type == Feature::EDGELET)
{
  it->ftr->grad_cur_ = (matcher_.A_cur_ref_ * it->ftr->grad).normalized();
}

........
........
if(it->ftr->type == Feature::EDGELET)
{
it->ftr->grad = it->ftr->grad_cur_; // edgelete in newkeyframe, it's direction should change;
}

在我的理解中,it->ftr应该是一直储存这个特征被第一次检测到的feature。

深度滤波器这边极线搜索匹配到的edgelet的ftr变量,没有看到被关联到newkeyframe的代码。

不知道是否是我理解有误,还请赐教一下^^

数据集

贺神好,请问有提供数据集下载地址吗?tum里没找到pipline, Euroc 也是。可否告知下数据集下载地址呢?谢谢您哈!

test_live_vo error

hi @HeYijia @supersheepcy
when I run the test_live_vo
there will occur a error like:HIGHGUI ERROR:libv4l unable to ioctl S_FMT
I use the inter aero RTF drone as the platform.
the drone has the intel realsense R200 and a facedown camera on the bottom of the drone.
I want to test this program on both of the camera.
the opencv version is :2.4.13.6
Do anyone have method for this?

是单目直接法吗?

我测试的euroc的数据集,但是读取数据时同时读取了左右两个相机的数据?

Problem With Euroc Dataset

Sorry to distrubing you. I have also test it on the euroc dataset MAV_EASY_01, but there still show not enough matched featrues. Reproject process failure! Is there something wrong with the parameters?

svo::findEssentialMat(x1, x2, focal, pp, CV_RANSAC, 0.99, 2.0/focal_length, cv::noArray() );

sorry to disturb you.
I want to modify the svo code(on ros) with your code.
but I have a problem with the “svo::findEssentialMat” in five-point.cpp

my kinetic use opencv in version of 3.3.1
when I compile the code it will occur an error in"cv::Mat(tempMask).setTo(true);"
it said:"no matching function for call to 'cv::mat::mat(cvmat*&)'"
Dose this error caused by the version of opencv?
Could you please tell me if I can modified it by using other method?
Thanks for your sharing and patience.

evaluate it with Evo

Hello, which variable stores the position and camera direction of each moment? Would you like to output it and evaluate it with Evo

where edges feature were used?

Thanks for your open source code. I find that the edge features only exists in processFirstFrame function.
Does it means that only initialization use edge features?
Thanks very much.

轨迹信息

可以获取它的轨迹信息吗,想与真实轨迹信息做一下对比实验?

HIGHGUI ERROR:V4L2:

hi,你好。我运行test_live_vo时,终端显示HIGHGUI ERROR:V4L2:Pixel format of incoming image is unsupported by OpenCV BenchmarkNode finished.我使用的是2.4.13版本的Opencv,请问这是什么问题呢?谢谢

请问怎么运行?

实在是门外汉。课题里面又用到了视觉里程计。想问一下。
编译生成可执行文件后,euroc飞行数据也下了(mav0),运行命令是什么呢?

比如
./test_pipel_euroc , 后边儿应该怎样加上要运行得数据呢?
image

some errors

Hi,
There are some errors when I ran it,I can't find solutions of this case.Can you tell me what's wrong with it ?Thank you!
What's your opencv version?
2017-10-25 23 20 52

opencv支持

请问这个程序只能调用opencv2吗?我用opencv3.4.0编译时会报错

编译成功加载测试数据集后trajectory view无反应

您好,打扰了。想请问一下,我这边编译运行成功了,但是下载测试数据集运行test_pipeline后SVO:trajectory viewer中没有任何结果显示可能是什么原因呢?之前在ros上也跑过svo代码也是无法成功加载数据集跑测试,编译之类的都没有报错100%编译通过了。但按照官网加载数据集后roslunch会自动shutdown...

检测梯度最大点

贺博士打扰了,
我在自己的摄像头下(对着特征较少的环境,比如墙面理论上来说这种情况下特征点提取和edgelet提取应该十分有限)跑您的代码过程中并没有发现有检测到梯度变化最大点。
不知道是否是没有做可视化所以看不到,还是因为这部分特征始终没有参与计算。
可否麻烦您稍微讲解一下。
谢谢🙏

error: no matching function for call to ‘format(cv::Mat&, const char [4])’

/home/ubuntu/svo_edgelet-master/src/feature_detection.cpp: In function ‘void svo::feature_detection::saveMatToCsv(cv::Mat, std::string)’:
/home/ubuntu/svo_edgelet-master/src/feature_detection.cpp:28:39: error: no matching function for call to ‘format(cv::Mat&, const char [4])’
28 | outputFile <<cv::format(data,"CSV")<<endl;
| ^
In file included from /usr/local/include/opencv4/opencv2/core.hpp:3302,
from /usr/local/include/opencv4/opencv2/opencv.hpp:52,
from /home/ubuntu/svo_edgelet-master/include/svo/global.h:28,
from /home/ubuntu/svo_edgelet-master/include/svo/feature_detection.h:20,
from /home/ubuntu/svo_edgelet-master/src/feature_detection.cpp:17:
/usr/local/include/opencv4/opencv2/core/operations.hpp:430:19: note: candidate: ‘cv::String cv::format(const char*, ...)’
430 | CV_EXPORTS String format( const char* fmt, ... ) CV_FORMAT_PRINTF(1, 2);
| ^~~~~~
/usr/local/include/opencv4/opencv2/core/operations.hpp:430:39: note: no known conversion for argument 1 from ‘cv::Mat’ to ‘const char*’
430 | CV_EXPORTS String format( const char* fmt, ... ) CV_FORMAT_PRINTF(1, 2);
| ~~~~~~~~~~~~^~~
/usr/local/include/opencv4/opencv2/core/operations.hpp:435:16: note: candidate: ‘cv::Ptrcv::Formatted cv::format(cv::InputArray, cv::Formatter::FormatType)’
435 | Ptr format(InputArray mtx, Formatter::FormatType fmt)
| ^~~~~~
/usr/local/include/opencv4/opencv2/core/operations.hpp:435:61: note: no known conversion for argument 2 from ‘const char [4]’ to ‘cv::Formatter::FormatType’
435 | Ptr format(InputArray mtx, Formatter::FormatType fmt)
| ~~~~~~~~~~~~~~~~~~~~~~^~~
/home/ubuntu/svo_edgelet-master/src/feature_detection.cpp: In member function ‘virtual void svo::feature_detection::EdgeDetector::detect(svo::Frame*, const ImgPyr&, double, svo::Features&)’:
/home/ubuntu/svo_edgelet-master/src/feature_detection.cpp:545:15: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vectorsvo::feature_detection::Edgelete::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
545 | int a = (n>edge_list.size())? edge_list.size():n;
| ~^~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/svo.dir/build.make:303:CMakeFiles/svo.dir/src/feature_detection.cpp.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:179:CMakeFiles/svo.dir/all] 错误 2
make: *** [Makefile:84:all] 错误 2

build demo with undefined reference to Sophus

[ 82%] Built target svo
[ 85%] Linking CXX executable ../bin/test_pipeline
../lib/libsvo.so:对‘Sophus::SE3::operator*(Eigen::Matrix<double, 3, 1, 0, 3, 1> const&) const’未定义的引用
../lib/libsvo.so:对‘Sophus::SO3::log() const’未定义的引用
../lib/libsvo.so:对‘Sophus::SE3::operator=(Sophus::SE3 const&)’未定义的引用
../lib/libsvo.so:对‘Sophus::SE3::SE3()’未定义的引用
../lib/libsvo.so:对‘Sophus::SE3::SE3(Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 3, 1, 0, 3, 1> const&)’未定义的引用
../lib/libsvo.so:对‘Sophus::SE3::exp(Eigen::Matrix<double, 6, 1, 0, 6, 1> const&)’未定义的引用
../lib/libsvo.so:对‘Sophus::SE3::SE3(Sophus::SE3 const&)’未定义的引用
../lib/libsvo.so:对‘Sophus::SE3::inverse() const’未定义的引用
../lib/libsvo.so:对‘Sophus::SE3::operator*(Sophus::SE3 const&) const’未定义的引用
../lib/libsvo.so:对‘Sophus::SO3::matrix() const’未定义的引用
collect2: error: ld returned 1 exit status
CMakeFiles/test_pipeline.dir/build.make:141: recipe for target '../bin/test_pipeline' failed
make[2]: *** [../bin/test_pipeline] Error 1
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/test_pipeline.dir/all' failed
make[1]: *** [CMakeFiles/test_pipeline.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

I have installed Sophus already, what could be the probblem? Thanks in advance.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.