Giter Site home page Giter Site logo

rpg_svo's Introduction

SVO

This code implements a semi-direct monocular visual odometry pipeline.

Video: http://youtu.be/2YnIMfw6bJY

Paper: http://rpg.ifi.uzh.ch/docs/ICRA14_Forster.pdf

Disclaimer

SVO has been tested under ROS Groovy, Hydro and Indigo with Ubuntu 12.04, 13.04 and 14.04. This is research code, any fitness for a particular purpose is disclaimed.

Licence

The source code is released under a GPLv3 licence. A closed-source professional edition is available for commercial purposes. In this case, please contact the authors for further info.

Citing

If you use SVO in an academic context, please cite the following publication:

@inproceedings{Forster2014ICRA,
  author = {Forster, Christian and Pizzoli, Matia and Scaramuzza, Davide},
  title = {{SVO}: Fast Semi-Direct Monocular Visual Odometry},
  booktitle = {IEEE International Conference on Robotics and Automation (ICRA)},
  year = {2014}
}

Documentation

The API is documented here: http://uzh-rpg.github.io/rpg_svo/doc/

Instructions

See the Wiki for more instructions. https://github.com/uzh-rpg/rpg_svo/wiki

Contributing

You are very welcome to contribute to SVO by opening a pull request via Github. I try to follow the ROS C++ style guide http://wiki.ros.org/CppStyleGuide

rpg_svo's People

Contributors

akirayou avatar andre-nguyen avatar cfo avatar flaviofontana avatar focs avatar kartikmohta avatar pmoulon avatar supitalp avatar tanmengwen avatar zhangzichao 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  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

rpg_svo's Issues

How to set ARM_ARCHITECTURE correctly?

I want to compile svo in my odroid machine. However, it always shows some cflags are not exist:

-mmmx -msse -msse -msse2 -msse3 -mssse3 

So I think it might be the optimization function that arm architecture does not have. I tried a stupid way like rewrite CMakeLists.txt to let it always compile in arm optimization cflags. Although it is not the solution, it works fine now. I want to ask is there a way easily to set the ARM_ARCHITECTURE?

which mvBlueFOX camera driver

Hi, I was wondering which camera driver you're using. We have a mvBlueFOX-MLC200wG, and the native driver provided by Matrix Vision runs around 30 fps on the Odroid. And then we use a ROS driver (https://github.com/KumarRobotics/bluefox2) on top of it, and /camera/image publishes at around 12 fps, which is too slow. Thanks in advance!

Eigen assert: "Invalid sizes when resizing a matrix or array"

I have succesfully compiled SVO in a Ubuntu 14.04 machine (USE_ROS FALSE) using Eigen 3.2.2. The tests test_feature_align, test_feature_detection, test_pose_optimizer, test_sparse_img_align runned just fine, but test_depth_filter, test_matcher and test_pipeline crash with the same Eigen assert error: Invalid sizes when resizing a matrix or array.

Details: test_pipeline crashed in computeHomography while test_depth_filter and test_matcher crash in depthFromTriangulation. All of them crashed in the same rotation_matrix function in Sophus (the assertion happens in PlainObjectBase of Eigen). Below you can see the backtrace for test_matcher:

#0  0x00007ffff5cd5bb9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00007ffff5cd8fc8 in __GI_abort () at abort.c:89
#2  0x00007ffff5ccea76 in __assert_fail_base (fmt=0x7ffff5e20370 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", 
assertion=assertion@entry=0x7ffff7bbe9d0 "(!(RowsAtCompileTime!=Dynamic) || (nbRows==RowsAtCompileTime)) && (!(ColsAtCompileTime!=Dynamic) || (nbCols==ColsAtCompileTime)) && (!(RowsAtCompileTime==Dynamic && MaxRowsAtCompileTime!=Dynamic) || ("..., file=file@entry=0x7ffff7bbe990 "/usr/local/include/eigen3/Eigen/src/Core/PlainObjectBase.h", line=line@entry=241, 
function=function@entry=0x7ffff7bc0ce0 <Eigen::PlainObjectBase<Eigen::Matrix<double, 4, 4, 0, 4, 4> >::resize(long, long)::__PRETTY_FUNCTION__> "void Eigen::PlainObjectBase<Derived>::resize(Eigen::PlainObjectBase<Derived>::Index, Eigen::PlainObjectBase<Derived>::Index) [with Derived = Eigen::Matrix<double, 4, 4>; Eigen::PlainObjectBase<Derived"...) at assert.c:92
#3  0x00007ffff5cceb22 in __GI___assert_fail (
assertion=0x7ffff7bbe9d0 "(!(RowsAtCompileTime!=Dynamic) || (nbRows==RowsAtCompileTime)) && (!(ColsAtCompileTime!=Dynamic) || (nbCols==ColsAtCompileTime)) && (!(RowsAtCompileTime==Dynamic && MaxRowsAtCompileTime!=Dynamic) || ("..., file=0x7ffff7bbe990 "/usr/local/include/eigen3/Eigen/src/Core/PlainObjectBase.h", line=241, 
function=0x7ffff7bc0ce0 <Eigen::PlainObjectBase<Eigen::Matrix<double, 4, 4, 0, 4, 4> >::resize(long, long)::__PRETTY_FUNCTION__> "void Eigen::PlainObjectBase<Derived>::resize(Eigen::PlainObjectBase<Derived>::Index, Eigen::PlainObjectBase<Derived>::Index) [with Derived = Eigen::Matrix<double, 4, 4>; Eigen::PlainObjectBase<Derived"...) at assert.c:101
#4  0x00007ffff7b83328 in resize (nbRows=3, nbCols=3, this=0x7fffffffd190) at /usr/local/include/eigen3/Eigen/src/Core/PlainObjectBase.h:237
#5  resizeLike<Eigen::Matrix<double, 3, 3> > (this=0x7fffffffd190, _other=...) at /usr/local/include/eigen3/Eigen/src/Core/PlainObjectBase.h:330
#6  _resize_to_match<Eigen::Matrix<double, 3, 3> > (this=0x7fffffffd190, other=...) at /usr/local/include/eigen3/Eigen/src/Core/PlainObjectBase.h:577
#7  lazyAssign<Eigen::Matrix<double, 3, 3> > (this=0x7fffffffd190, other=...) at /usr/local/include/eigen3/Eigen/src/Core/PlainObjectBase.h:413
#8  run (dst=..., other=...) at /usr/local/include/eigen3/Eigen/src/Core/Assign.h:520
#9  _set_noalias<Eigen::Matrix<double, 3, 3> > (this=0x7fffffffd190, other=...) at /usr/local/include/eigen3/Eigen/src/Core/PlainObjectBase.h:621
#10 Matrix<Eigen::Matrix<double, 3, 3> > (other=..., this=this@entry=0x7fffffffd190) at /usr/local/include/eigen3/Eigen/src/Core/Matrix.h:281
#11 Sophus::SE3GroupBase<Sophus::SE3Group<double, 0> >::rotation_matrix (this=this@entry=0x7fffffffd360) at /usr/local/src/Sophus/sophus/se3.hpp:282
#12 0x00007ffff7b9fa27 in svo::depthFromTriangulation (T_search_ref=..., f_ref=..., f_cur=..., depth=@0x7fffffffd460: 94) at /usr/local/src/rpg_svo/svo/src/matcher.cpp:117
#13 0x00007ffff7ba0b74 in svo::Matcher::findEpipolarMatchDirect (this=this@entry=0x7fffffffd620, ref_frame=..., cur_frame=..., ref_ftr=..., d_estimate=d_estimate@entry=3,1512730121612549, 
d_min=<optimized out>, d_max=d_max@entry=3,9512730121612547, depth=@0x7fffffffd460: 94) at /usr/local/src/rpg_svo/svo/src/matcher.cpp:319
#14 0x0000000000408415 in (anonymous namespace)::MatcherTest::testEpipolarSearchFullImg (this=this@entry=0x7fffffffdce0) at /usr/local/src/rpg_svo/svo/test/test_matcher.cpp:102
#15 0x0000000000405067 in main (argc=<optimized out>, argv=<optimized out>) at /usr/local/src/rpg_svo/svo/test/test_matcher.cpp:197

Any help?

IMU integration

I'm trying to figure out how IMU data could be integrated with the system to improve performance. I see that there are use_imu parameters in config.h and config.cpp but I haven't found instances where the parameter or useImu() is used to get relative rotations.

Is this currently implemented? If so, where and how should the IMU data be streamed into the system?

DSLR+Ocamcalib+SVO without ROS

DSLR+Ocamcalib+SVO without ROS

First of all, this is an amazing work. Well done.

I am recently using a DSLR on SVO without ROS while I calibrate the DSLR using the latest Ocamcalib. Here is the problem. It seems that the vk::OmniCamera needs several parameters

double *pol        
double *invpol     
int *length_pol    
int *length_invpol

They are not exited any more but encoded into a parameter called ss in the the latest Ocamcalib. Is there anything I can do to fix it? If it needs too much work, I consider the other calibration mode (pinhole and atan) as well. Could you recommend any other easy calibration software to get the related info (fx,fy,cx,cy etc)? I quote here:

PinholeCamera(double width, double height,
              double fx, double fy,
              double cx, double cy,
              double d0, double d1, double d2, double d3, double d4)
ATANCamera(double width, double height,
           double fx, double fy,
           double cx, double cy,
           double s)

Many thanks for this.

Any plans for OpenCL support(GPU)

Hi There,
Is this package amenable to OpenCL/Parallelization support?
I noticed the corner detection algorithm is borrowed from a package libcvd that has a OpenCL supporting clone libcvd-cl. ie OpenCL support would mean LOTS more cores(up to 64 opencl gpu cores on the parallela 64 core chips).

Any plans to optimize for even more performance?

 hzl

SVO and Multiple Sensor Fusion

@cfo I'm confused with regards to getting my MAV working with SVO and the ethzasl-MSF. I keep getting "fuzzy tracking triggered", which points to my camera-IMU transform being wrong. The parameters "init_rx, init_ry, init_rz" are confusing me.

My IMU is outputting data in ENU. That means (with respect to front of MAV) - X forward, Y left and Z upwards. The camera has its top (top of image frame)pointing forwards. So, I should only be rotated 180 degrees on X axis to rotate the camera frame to IMU frame, right?

So I set "init_rx" to 3.14, which should make the IMU and camera frame converge...? But then there are the parameters in MSF :

pose_sensor/init/q_ic/w: 0.0
pose_sensor/init/q_ic/x: 0.0
pose_sensor/init/q_ic/y: 0.0
pose_sensor/init/q_ic/z: 0.0

How do I set them properly to reflect my camera-IMU transformation?

Kabir

Problem with catkin_make on ARM

I'm trying to build SVO on an ODROID U3 running ROS Hydro. Running catkin_make seems to go smoothly until the very end, at which point I get the following errors (at 100%):

Linking CXX executable /root/catkin_ws/devel/lib/svo_ros/vo
/opt/ros/hydro/lib/libtf.so: undefined reference to `ros::console::print(ros::console::FilterBase*, log4cxx::Logger*, ros::console::levels::Level, char const*, int, char const*, char const*, ...)'
collect2: error: ld returned 1 exit status
make[2]: *** [/root/catkin_ws/devel/lib/svo_ros/vo] Error 1
make[1]: *** [rpg_svo/svo_ros/CMakeFiles/vo.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
Linking CXX executable /root/catkin_ws/devel/lib/svo_ros/benchmark
/opt/ros/hydro/lib/libtf.so: undefined reference to `ros::console::print(ros::console::FilterBase*, log4cxx::Logger*, ros::console::levels::Level, char const*, int, char const*, char const*, ...)'
collect2: error: ld returned 1 exit status
make[2]: *** [/root/catkin_ws/devel/lib/svo_ros/benchmark] Error 1
make[1]: *** [rpg_svo/svo_ros/CMakeFiles/benchmark.dir/all] Error 2
make: *** [all] Error 2
Invoking "make" failed

Crash during init while running example bag

Hi everything seems to compile fine. When I run roslaunch svo_ros test_rig3.launch and the example bag file rosbag play airground_rig_s3_2013-03-18_21-38-48.bag it seems to start and then crashes during the init stage with the follow:

[ INFO] [1410443849.506024487]: SVO initialized
[ INFO] [1410443849.507316249]: Found parameter: svo/cam_topic, value: /camera/image_raw
[ INFO] [1410443895.161938813]: RESET
[ INFO] [1410443895.287321332]: Init: Selected first frame.
[ INFO] [1410443895.306120214]: Init: KLT tracked 150 features
[ INFO] [1410443895.306377886]: Init: KLT 2.05349px average disparity.
[ INFO] [1410443895.326249577]: Init: KLT tracked 150 features
[ INFO] [1410443895.326474210]: Init: KLT 4.00302px average disparity.
*** Error in `/home/ros/catkin_ws/devel/lib/svo_ros/vo': double free or corruption (out): 0x08a0cd80 ***

Then it displays Backtrace and Memory Map. See the full debug here:
https://drive.google.com/file/d/0B2tRJoqjaZmxZ0RyOHNlZlhtalU/edit?usp=sharing

Any ideas?

Compiling on OSX Mavericks 10.9.3 with clang and No-ROS (Success!)

I finally managed to compile rpg_svo successfully after several hours of headbanging (due in no small part to my ineptitude with CMake)

I followed the instruction on https://github.com/uzh-rpg/rpg_svo/wiki/Installation:-Plain-CMake-(No-ROS). What follow are the issues I encountered along the way, and how I solved them.

Eigen 3

  • Could not use apt-get but used homebrew (brew install eigen). However, simply downloading Eigen and putting it somewhere the system will find it also works (need to change CMakeLists.txt accordingly though)

Sophus - Lie groups

  • Changed Code in sophus/so2.cpp (clang was complaining that error: expression is not assignable)
    unit_complex = Complexd(1.,0.);_
    instead of
    unit_complex.real() = 1.;_
    unit_complex.imag() = 0.;_
    solves the issue.

Fast - Corner Detector

  • Taken out -Wno-unused-but-set-variable (not liked by clang) from CMakeLists.txt
  • Seems to not find the correct symbols in the OpenCV libraries at linking time (osx llvm / c+x11 problem?). I recompiled OpenCV (2.4.9) and both Fast and vikit_common now compile fine. (I probably had GCC libraries)

Compiling G2O (optional)

  • skipped

vikit_common

  • Same problem with OpenCV (unrecognised symbols at linking time)
  • The project does not generate a cmake config file for find_package (which is a problem for rpg_svo)

rpg_svo

  • find_package() cannot find vikit_common because of missing config file. manually added the path to the library
    set(vikit_common_LIBRARIES "/Users/basilio/Code/RPG_SVO/rpg_vikit/vikit_common/lib/libvikit_common.dylib")
    as well as copying the vikit include folder in svo (the lazy alternative to actually doing it properly in CMake)
  • Warnings are messing up compilation on clang, took out -Werror and -Wno-unused-but-set-variable and -funsafe-remove-loops from CMakeLists.txt
  • Cannot find boost::system::system_category(). Added the boost_system library in CMakeLists.txt: set(boost_LIBRARIES "/opt/local/lib/libboost_system-mt.dylib")
  • ERROR: test_utils.h:l22
    #include < ros/package.h >
    needs to be commented away if you’re not using ROS
  • ERROR: test_depth_filter.cpp:l124+l132
    boost::make_shared< svo::Frame > (cam, img, 0.0);_
    adding
    #include < boost/make_shared.hpp >
    #include < boost/shared_ptr.hpp >
    Solved the issue

Running the tests
The tests work fine, as does test_pipeline on a custom dataset!

p.s. sorry for the bad formatting, not a guru with Markdown!
p.p.s posting this as an Issue because I didn't know where else to put it!

Missing -lboost_system

I follow the instruction to install SVO without ROS under Ubuntu 13.10. I have the following error message when test examples are compiling.

[ 71%] Building CXX object CMakeFiles/test_depth_filter.dir/test/test_depth_filter.cpp.o
Linking CXX executable ../bin/test_depth_filter
/usr/bin/ld: CMakeFiles/test_depth_filter.dir/test/test_depth_filter.cpp.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
/usr/lib/x86_64-linux-gnu/libboost_system.so.1.53.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

This problem can be fixed by adding a flag

-lboost_system

to the end of the link file:

/build/CMakeFiles/test_depth_filter.dir/link.txt

cannot remote-test svo, hope anyone can help

Hello everyone,

I've tested svo with a usb camera and now i'm trying to do this on a quadroptor.

there is a computer(i7, ubuntu 12.04) on the quadroptor and I have tested svo on this computer too(on my desk)


Now I want to remote-test svo,

1/ The computer on quadroptor and the ground station are both connected to a wireless router.

2/ the ground station now can remote-control the ubuntu on quadroptor via ssh tool

3/ the ground station now can image_view the /usb_cam/image_raw node of ros on quadroptor(with a very low framerate of about 2Hz)

4/ the ground station CANNOT image_view THE /svo/image node nor rostopic hz/echo THE /svo/points node.

I want to know whether it's caused by the limitation of wifi bandwith or other reasons.

or I want to know whether there is an effective way to remote-test svo

hope anyone could help, thx in advance!

Compiling errors (without ROS)

Hello,
I get another error, but this one is maybe my fault.

/usr/bin/ld: CMakeFiles/test_depth_filter.dir/test/test_depth_filter.cpp.o: undefined reference to symbol 'cv::imread(std::basic_string<char, std::char_traits, std::allocator > const&, int)'
/usr/bin/ld: note: 'cv::imread(std::basic_string<char, std::char_traits, std::allocator > const&, int)' is defined in DSO /usr/lib/libopencv_highgui.so.2.3 so try adding it to the linker command line
/usr/lib/libopencv_highgui.so.2.3: could not read symbols: Invalid operation
collect2: ld returned 1 exit status

Am I using a wrong version of libopencv?

Thank you very much
Giacomo

Crash After Initial Triangulation in ROS Hydro on ARM

I have SVO running on an ODROID U3 in ROS Hydro. SVO detects features and begins tracking. Once the second frame is selected and the initialization is performed, SVO crashes with the following error:

[ INFO] [946685447.012625556]: Init: Homography RANSAC 59 inliers.
[ INFO] [946685447.013208473]: Init: Selected second frame, triangulated initial map.
[ WARN] [946685447.020911390]: Not enough matched features.
[ WARN] [946685447.024558973]: Relocalizing frame
[ WARN] [946685448.028804723]: Relocalizing frame
[ WARN] [946685448.035998640]: Not enough matched features.
*** Error in `/root/catkin_ws/devel/lib/svo_ros/vo': free(): invalid next size (normal): 0x00074fa0 ***
[svo-2] process has died [pid 2591, exit code -6, cmd /root/catkin_ws/devel/lib/svo_ros/vo __name:=svo __log:=/root/.ros/log/137fbeaa-226f-11e4-b65c-00265abbe815/svo-2.log].
log file: /root/.ros/log/137fbeaa-226f-11e4-b65c-00265abbe815/svo-2*.log

I have not been able to get SVO past the initialization without crashing.

SVO crashes when trying to run example rosbag

Dear Mr./Mrs.:
I'm trying to run SVO with the provided rosbag example file, but it crashes when I play the provided example rosbag, giving me this message when I run the node with gdb:

[ INFO] [1409154736.961603786]: SVO initialized
[New Thread 0x7fffcf160700 (LWP 10433)]
[ INFO] [1409154736.965555116]: Found parameter: svo/cam_topic, value: /camera/image_raw
[ INFO] [1409154741.246118056]: RESET

Program received signal SIGILL, Illegal instruction.
0x00007ffff6d9f608 in vk::halfSample(cv::Mat const&, cv::Mat&) ()
from /home/alfredoso/catkin_ws/devel/lib/libvikit_common.so
(gdb) quit

I'm running everything on ROS Indigo Igloo, with XUbuntu 14.04 64bits as the operating system. My computer has an AMD Phenom II N830 CPU, and an AMD Mobility Radeon HD 4250 GPU. Apart from the inclusion of gdb on the SVO launch file, SVO default configuration remains intact.

Could it be a problem with rpg_vikit? Something related to the 64bits SO? What would you recommend me to do?

Thank you very much for your time and your attention.
Yoshua Nava.

initialization

I reduced svo/init_min_tracked to 20 and svo/init_min_inliers to 15. Still I am not able to initialize and start the tracking.
I am getting the following warning
[ WARN] [1404372650.801254146]: Not enouagh matched features.
[ WARN] [1404372650.851218033]: Relocalizing frame
[ WARN] [1404372651.849127330]: Not enough matched features.
[ WARN] [1404372651.914739067]: Relocalizing frame
[ WARN] [1404372652.975268913]: Relocalizing frame
[ WARN] [1404372654.039130571]: Relocalizing frame
[ WARN] [1404372655.099086776]: Relocalizing frame
I want to start the tracking and then care for the accuracy. I want to know which parameters should I change in order to do the initialization and start the tracking.
Please help

rviz

i am not able to use rviz with this package. Please can somebody provide a tutorial for visualizing the data from svo_ros package.
i can't see any video as mentioned in the short tutorial given for running the package https://github.com/uzh-rpg/rpg_svo

Issue compiling without ROS

In the instruction the project should be placed in Catkin workspace (Catkin? without ROS?)
And When I'm done generating the makefile, the .so is generated, but test projects asks for ros/package.h

compile error

I already Sophus library. but when I build vikit_common, I got this error.

/home/sungmok16hwang/workspace/catkin_ws/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::SE3(Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 3, 1, 0, 3, 1> const&)'
/home/sungmok16hwang/workspace/catkin_ws/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::operator*(Eigen::Matrix<double, 3, 1, 0, 3, 1> const&) const'
/home/sungmok16hwang/workspace/catkin_ws/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::exp(Eigen::Matrix<double, 6, 1, 0, 6, 1> const&)'
/home/sungmok16hwang/workspace/catkin_ws/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::operator*(Sophus::SE3 const&) const'
/home/sungmok16hwang/workspace/catkin_ws/devel/lib/libvikit_common.so: undefined reference to `Sophus::SE3::operator=(Sophus::SE3 const&)'

how to fix it. Thank you in advance.

question about function Map::getCloseKeyframes

void Map::getCloseKeyframes(const FramePtr& frame, list< pair<FramePtr,double> >& close_kfs) const
{
const Vector3d frame_pos(frame->pos());
for(auto it_kf=keyframes_.begin(), ite_kf=keyframes_.end(); it_kf!=ite_kf; ++it_kf)
{
// check first if Point is visible in the Keyframe, use therefore KeyPoints
for(auto it=(it_kf)->key_pts.begin(), ite=(it_kf)->key_pts.end(); it!=ite; ++it)
{
if(*it == NULL)
continue;

  assert((*it)->point != NULL);

  if((*it_kf)->isVisible((*it)->point->pos_))
  {
    close_kfs.push_back(pair<FramePtr,double>(*it_kf,
                        (frame->T_f_w_.translation()-(*it_kf)->T_f_w_.translation()).norm()));
    break; // this keyframe has an overlapping field of view -> add to close_kfs
  }
}

}
}

____________________________________________________________-
I am reading this function.

Based on my understanding of this framework, I think this function goes through all the keyframes to find out close ones(close one shares at least one feature with current frame)

But in the condition line

if((_it_kf)->isVisible((it)->point->pos))

we don't use any information related to variable 'frame', which I cannot understand.

Hope any one could help me, THX in advance !

Assembler messages

After following the installation directions exactly, the below error occurs when running 'catkin_make' to build the vikit and svo packages. The 'IS_ARM' flag is not set. I'm running Ubuntu 12.04 on a x86_64 machine (i7).

Any ideas?

...
rpg_vikit/vikit_common/CMakeFiles/vikit_common.dir/src/pinhole_camera.cpp.o
[ 42%] Building CXX object rpg_vikit/vikit_common/CMakeFiles/vikit_common.dir/src/homography.cpp.o
[ 44%] Building CXX object rpg_vikit/vikit_common/CMakeFiles/vikit_common.dir/src/img_align.cpp.o
/tmp/ccXXH67w.s: Assembler messages:
/tmp/ccXXH67w.s:481: Error: no such instruction: vfmadd312ss .LC0(%rip),%xmm0,%xmm0' make[2]: *** [rpg_vikit/vikit_common/CMakeFiles/vikit_common.dir/src/robust_cost.cpp.o] Error 1 make[2]: *** Waiting for unfinished jobs.... /tmp/ccTKsebv.s: Assembler messages: /tmp/ccTKsebv.s:367: Error: no such instruction:vfmadd312sd 8(%rsi),%xmm5,%xmm1'
/tmp/ccTKsebv.s:369: Error: no such instruction: vfmadd312sd 16(%rsi),%xmm5,%xmm2' /tmp/ccTKsebv.s:370: Error: no such instruction:vfmadd312sd (%rsi),%xmm5,%xmm0'
...
/tmp/cc4xDiOp.s:21241: Error: no such instruction: vfmadd312sd (%rax,%r15,8),%xmm1,%xmm7' /tmp/cc4xDiOp.s:21244: Error: no such instruction:vfmadd312sd (%rax,%rsi,8),%xmm1,%xmm8'
make[2]: *** [rpg_vikit/vikit_common/CMakeFiles/vikit_common.dir/src/homography.cpp.o] Error 1
make[1]: *** [rpg_vikit/vikit_common/CMakeFiles/vikit_common.dir/all] Error 2
make: *** [all] Error 2
Invoking "make" failed

Camera calibration

Hello,
I have some problems on running test_pipeline.cpp. I have an IDS UEye UI-1220SE CMOS Mono. When I run test_pipeline on my dataset I get 0 features in each image. I think that the problem is the camera calibration.
When I define
cam_ = new vk::PinholeCamera(640, 480, 315.5, 315.5, 376.0, 240.0);
I don't know what to put in each field. I read the instructions on the wiki, but I can't decide which approach is better, since I'm totally new in this kind of things.
Thank you very much
Giacomo

Compiling errors (without ROS)

Hello,
when I try to compile SVO without ROS on Ubuntu 12.04 I get the following errors:

/home/glunghi/workspace/VO/rpg_svo/svo/src/map.cpp: In function ‘void svo::map_debug::mapStatistics(svo::Map*)’:
/home/glunghi/workspace/VO/rpg_svo/svo/src/map.cpp:345:3: error: ‘set’ was not declared in this scope
/home/glunghi/workspace/VO/rpg_svo/svo/src/map.cpp:345:12: error: expected primary-expression before ‘*’ token
/home/glunghi/workspace/VO/rpg_svo/svo/src/map.cpp:345:13: error: expected primary-expression before ‘>’ token
/home/glunghi/workspace/VO/rpg_svo/svo/src/map.cpp:345:15: error: ‘points’ was not declared in this scope

Thank you very much for you help,
Best regards

test_rig3.launch doesn't work

Hi,

I installed SVO on my computer. I followed instruction step by step. I installed Sophus, Fast - Corner Detector, g2o, vikit and svo. I also dowload bag file for test_rig3.launch.

When I start roslaunch svo_ros test_rig3.launch, SVO runs only few seconds and then breaks.

There is console record:

SUMMARY

CLEAR PARAMETERS

  • /svo/

PARAMETERS

  • /rosdistro: indigo
  • /rosversion: 1.11.7
  • /svo/cam_cx: 0.45905
  • /svo/cam_cy: 0.510056
  • /svo/cam_d0: 0.932
  • /svo/cam_fx: 0.509326
  • /svo/cam_fy: 0.796651
  • /svo/cam_height: 480
  • /svo/cam_model: ATAN
  • /svo/cam_topic: /camera/image_raw
  • /svo/cam_width: 752
  • /svo/grid_size: 30
  • /svo/init_rx: 3.14
  • /svo/init_ry: 0.0
  • /svo/init_rz: 0.0
  • /svo/loba_num_iter: 0
  • /svo/max_n_kfs: 10

NODES
/
image_view (image_view/image_view)
rosbag (rosbag/play)
svo (svo_ros/vo)

.
.
.

[ INFO] [1408385936.142594428]: SVO initialized
[ INFO] [1408385936.144891010]: Found parameter: svo/cam_topic, value: /camera/image_raw
[ INFO] [1408385937.698342572]: RESET
[ INFO] [1408385937.703611414]: Init: Selected first frame.
[ INFO] [1408385937.755553964]: Init: KLT tracked 152 features
[ INFO] [1408385937.755841193]: Init: KLT 2.0524px average disparity.
[ INFO] [1408385937.788262581]: Init: KLT tracked 152 features
[ INFO] [1408385937.788440164]: Init: KLT 3.96111px average disparity.
[ INFO] [1408385937.820203489]: Init: KLT tracked 152 features
[ INFO] [1408385937.820302677]: Init: KLT 6.0386px average disparity.
[ INFO] [1408385937.850586390]: Init: KLT tracked 152 features
[ INFO] [1408385937.850689688]: Init: KLT 7.99897px average disparity.
[ INFO] [1408385937.881346367]: Init: KLT tracked 152 features
[ INFO] [1408385937.881456164]: Init: KLT 10.0193px average disparity.
[ INFO] [1408385937.912736941]: Init: KLT tracked 152 features
[ INFO] [1408385937.912839523]: Init: KLT 12.1231px average disparity.
[ INFO] [1408385937.944202274]: Init: KLT tracked 152 features
[ INFO] [1408385937.944305143]: Init: KLT 14.0281px average disparity.
[ INFO] [1408385937.976431391]: Init: KLT tracked 152 features
[ INFO] [1408385937.976538881]: Init: KLT 16.0643px average disparity.
[ INFO] [1408385938.012144351]: Init: KLT tracked 152 features
[ INFO] [1408385938.012243958]: Init: KLT 18.2142px average disparity.
[ INFO] [1408385938.045281120]: Init: KLT tracked 152 features
[ INFO] [1408385938.045381654]: Init: KLT 20.0408px average disparity.
[ INFO] [1408385938.078758143]: Init: KLT tracked 152 features
[ INFO] [1408385938.078857819]: Init: KLT 22.0346px average disparity.
[ INFO] [1408385938.113605691]: Init: KLT tracked 152 features
[ INFO] [1408385938.113708891]: Init: KLT 24.4132px average disparity.
[ INFO] [1408385938.146724196]: Init: KLT tracked 152 features
[ INFO] [1408385938.146831114]: Init: KLT 26.7626px average disparity.
[ INFO] [1408385938.178929212]: Init: KLT tracked 152 features
[ INFO] [1408385938.179039399]: Init: KLT 29.2039px average disparity.
[ INFO] [1408385938.213374268]: Init: KLT tracked 152 features
[ INFO] [1408385938.213464169]: Init: KLT 32.4877px average disparity.
[ INFO] [1408385938.246350280]: Init: KLT tracked 151 features
[ INFO] [1408385938.246463664]: Init: KLT 34.8486px average disparity.
[ INFO] [1408385938.281356933]: Init: KLT tracked 151 features
[ INFO] [1408385938.281473083]: Init: KLT 37.478px average disparity.
[ INFO] [1408385938.318044763]: Init: KLT tracked 151 features
[ INFO] [1408385938.318131262]: Init: KLT 39.7248px average disparity.
[ INFO] [1408385938.353391090]: Init: KLT tracked 150 features
[ INFO] [1408385938.353481325]: Init: KLT 42.2828px average disparity.
[ INFO] [1408385938.388702374]: Init: KLT tracked 149 features
[ INFO] [1408385938.388796639]: Init: KLT 43.6611px average disparity.
[ INFO] [1408385938.426909316]: Init: KLT tracked 149 features
[ INFO] [1408385938.427001615]: Init: KLT 45.9261px average disparity.
[ INFO] [1408385938.463848922]: Init: KLT tracked 149 features
[ INFO] [1408385938.463943371]: Init: KLT 48.003px average disparity.
[ INFO] [1408385938.503028784]: Init: KLT tracked 149 features
[ INFO] [1408385938.503118707]: Init: KLT 49.7809px average disparity.
[ INFO] [1408385938.541865836]: Init: KLT tracked 149 features
[ INFO] [1408385938.541955263]: Init: KLT 51.3536px average disparity.
[ INFO] [1408385938.549990443]: Init: Homography RANSAC 143 inliers.
2-View BA: Error before/after = 0.000691 / 0.000691
2-View BA: Wrong edges = 0
[ INFO] [1408385938.551716596]: Init: Selected second frame, triangulated initial map.

And here SVO breaks.

Could you help me please?

I have Intel NUC DC3217IYE, Ubuntu 14.04, ROS Indigo.

Thank in advanced.

Bug in rpg_svo/svo/src/frame.cpp

Hello,
Looking through svo/src/frame.cpp it seems there might be a bug in the function checkKeyPoints() on lines 99,107,115 and 113.

Am I wrong or would it make more sense to have "px[1]-cv" instead of "px[0]-cv" in the last term?

Regards,
Jon

question about variable "ref_ftr_"

I am reading the second step of tracking thread - feature location refinement

in function reprojectMap, I think the code firstly calls reprojectPoint twice (with close keyframes and later map point candidates)

after this, the grid (consistint of cells) is assigned

then the code goes through all the cells, calling reprojectCell with each one

in function reprojectCell, the code goes through all the candidates and calls findMatchDirect with each candidate

in function findMatchDirect, the information of variable "ref_ftr_" is used again and again.

Based on my understanding of the paper, "ref_ftr_" refers to the 2d feature point/patch in earlier key frames, which is realated to the candidate.

So, I think "ref_ftr_" should be different for different candidate

HERE COMES THE QUESTION


I type grep -r "ref_ftr_" * under the directory rpg_svo

the output is:


svo/test/test_matcher.cpp: ref_ftr_ = new svo::Feature(frame_ref_, Eigen::Vector2d(300, 260), 0);
svo/test/test_matcher.cpp: delete ref_ftr_;
svo/test/test_matcher.cpp: svo::Feature* ref_ftr_;
svo/test/test_matcher.cpp: Eigen::Vector2d px_cur(frame_cur_->cam_->world2cam(T_cur_ref_(ref_ftr_->f_depth)));
svo/test/test_matcher.cpp: cam, *cam_, ref_ftr_->px, ref_ftr_->f, 1.0, T_cur_ref, ref_ftr_->level, A_cur_ref);
svo/test/test_matcher.cpp: A_cur_ref, ref_ftr_->frame->img_pyr_[ref_ftr_->level], ref_ftr_->px,
svo/test/test_matcher.cpp: ref_ftr_->level, level_cur, matcher.halfpatch_size_+1, matcher.patch_with_border_);
svo/test/test_matcher.cpp: cv::circle(frame_ref_->img_pyr_[ref_ftr_->level],
svo/test/test_matcher.cpp: cv::Point2f(ref_ftr_->px[0]/(1<<ref_ftr_->level), ref_ftr_->px[1]/(1<<ref_ftr_->level)),
svo/test/test_matcher.cpp: cv::imshow("ref_img", frame_ref_->img_pyr_[ref_ftr_->level]);
svo/src/matcher.cpp: if(!pt.getCloseViewObs(cur_frame.pos(), ref_ftr_))
svo/src/matcher.cpp: if(!ref_ftr_->frame->cam_->isInFrame(
svo/src/matcher.cpp: ref_ftr_->px.cast()/(1<<ref_ftr_->level), halfpatch_size_+2, ref_ftr_->level))
svo/src/matcher.cpp: *ref_ftr_->frame->cam_, *cur_frame.cam_, ref_ftr_->px, ref_ftr_->f,
svo/src/matcher.cpp: (ref_ftr_->frame->pos() - pt.pos_).norm(),
svo/src/matcher.cpp: cur_frame.T_f_w_ * ref_ftr_->frame->T_f_w_.inverse(), ref_ftr_->level, A_cur_ref_);
svo/src/matcher.cpp: warp::warpAffine(A_cur_ref_, ref_ftr_->frame->img_pyr_[ref_ftr_->level], ref_ftr_->px,
svo/src/matcher.cpp: ref_ftr_->level, search_level_, halfpatch_size_+1, patch_with_border_);
svo/src/matcher.cpp: if(ref_ftr_->type == Feature::EDGELET)
svo/src/matcher.cpp: Vector2d dir_cur(A_cur_ref__ref_ftr_->grad);
svo/src/reprojector.cpp: if(matcher_.ref_ftr_->type == Feature::EDGELET)
svo/src/reprojector.cpp: new_feature->grad = matcher_.A_cur_ref__matcher_.ref_ftr_->grad;
svo/include/svo/matcher.h: Feature_ ref_ftr_;


So "ref_ftr_" is a member of class matcher, and "matcher_" is declared in "reprojector.h" without initialization.

That's what I cannot understand:

"ref_ftr_" is not initialized nor changed according to different candidate.

I don't know which feature is used for feature_alignment in later part or how to modify this.


Hope anyone could help me, THX in advance!

SVO loses track after initialization

I am using a Logitech webcam, with about 90 deg Field of View (FOV), so less than the 110 deg suggested in https://github.com/uzh-rpg/rpg_svo/wiki/Obtaining-Best-Performance, to test SVO.

I have calibrated the camera using the Pinhole Camera Model (http://wiki.ros.org/camera_calibration) as I was not able to get the Atan model (https://github.com/ethz-asl/ethzasl_ptam) from the PTAM framework working on ROS Hydro (the camera calibrator node starts, but there is no GUI appearing and nothing else seems to happen).

I am pointing the camera at the floor with lots of surfaces (to prevent degenerate solutions: I keep boxes at various angles as shown in the video from the demo bag file) and with lots of texture.

I have verified that SVO is getting the video stream correctly as I can see the video stream and the tracked points in RViz.

I try and move the camera so that there is mainly translation parallel to the floor and no pure rotations.

When the program starts, I get "KLT tracked x features" (130-150 features tracked), and then triangulation of an initial map, but then as soon as I start moving the camera a bit, it loses track ("Lost x features") and then it can't localize again ("Not enough matched features").

Even if I return the camera to a point of view / perspective that as close as the initial view as possible, it doesn't seem to be able to relocalize.

What am I doing wrong?
-Camera with too narrow a FOV?
-Pinhole camera calibration not adequate : really need to get Atan going?
-something else?

Reprojection of candidate points

The list of candidate points can grow quite a lot. Sometimes more than 1500 points. They are all reprojected at every frame. There is potential to make the reprojection more efficient.

roslaunch crash when launch rosbag play svo

Hello, I try to simulate airground_rig_s3_2013-03-18_21-38-48.bag svo like explain in [http://wiki.ros.org/indigo/Installation/Ubuntu ] but I get the next error: [svo-2] process has died [pid 7539, exit code -4, cmd /home/user/catkin_ws/devel/lib/svo_ros/vo __name:=svo __log:=/home/user/.ros/log/9579035c-6bfe-11e4-850f-0013d4fa172d/svo-2.log]. log file: /home/user/.ros/log/9579035c-6bfe-11e4-850f-0013d4fa172d/svo-2.log.* I have installed ros indigo.

Tried with Microsoft HD5000 usb webcam but crashed at first frame

Hello and sorry for my english.
I'm new to ROS.
For now I'm able to run SVO with ROS using the data bag file.
But I dont have a matrix-vision camera to test with live camera stream.
So will it work with a uvc usb webcam like HD5000 which I have now?
And what image format will it support ?
What else should I take care of ?
Thank you so much.

libvkit_common Undefined Reference

I am having these errors during the compilation process, any ideas?

/home/bvibhav/catkin_ws/devel/lib/libvikit_common.so: undefined reference to Sophus::SE3::exp(Eigen::Matrix<double, 6, 1, 0, 6, 1> const&)' /home/bvibhav/catkin_ws/devel/lib/libvikit_common.so: undefined reference toSophus::SE3::operator=(Sophus::SE3 const&)'
/home/bvibhav/catkin_ws/devel/lib/libvikit_common.so: undefined reference to Sophus::SE3::SE3()' /home/bvibhav/catkin_ws/devel/lib/libvikit_common.so: undefined reference toSophus::SE3::SE3(Sophus::SE3 const&)'
/home/bvibhav/catkin_ws/devel/lib/libvikit_common.so: undefined reference to Sophus::SE3::operator*(Sophus::SE3 const&) const' /home/bvibhav/catkin_ws/devel/lib/libvikit_common.so: undefined reference toSophus::SO3::matrix() const'
/home/bvibhav/catkin_ws/devel/lib/libvikit_common.so: undefined reference to Sophus::SE3::SE3(Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 3, 1, 0, 3, 1> const&)' /home/bvibhav/catkin_ws/devel/lib/libvikit_common.so: undefined reference toSophus::SE3::operator_(Eigen::Matrix<double, 3, 1, 0, 3, 1> const&) const'
collect2: ld returned 1 exit status
make[2]: ** [/home/bvibhav/catkin_ws/devel/lib/vikit_common/test_vk_common_camera] Error 1
make[1]: *** [rpg_vikit/vikit_common/CMakeFiles/test_vk_common_camera.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
/home/bvibhav/catkin_ws/devel/lib/libvikit_common.so: undefined reference to Sophus::SE3::exp(Eigen::Matrix<double, 6, 1, 0, 6, 1> const&)' /home/bvibhav/catkin_ws/devel/lib/libvikit_common.so: undefined reference toSophus::SE3::operator=(Sophus::SE3 const&)'
/home/bvibhav/catkin_ws/devel/lib/libvikit_common.so: undefined reference to Sophus::SE3::SE3()' /home/bvibhav/catkin_ws/devel/lib/libvikit_common.so: undefined reference toSophus::SE3::SE3(Sophus::SE3 const&)'
/home/bvibhav/catkin_ws/devel/lib/libvikit_common.so: undefined reference to Sophus::SE3::operator*(Sophus::SE3 const&) const' /home/bvibhav/catkin_ws/devel/lib/libvikit_common.so: undefined reference toSophus::SO3::matrix() const'
/home/bvibhav/catkin_ws/devel/lib/libvikit_common.so: undefined reference to Sophus::SE3::SE3(Eigen::Matrix<double, 3, 3, 0, 3, 3> const&, Eigen::Matrix<double, 3, 1, 0, 3, 1> const&)' /home/bvibhav/catkin_ws/devel/lib/libvikit_common.so: undefined reference toSophus::SE3::operator
(Eigen::Matrix<double, 3, 1, 0, 3, 1> const&) const'
collect2: ld returned 1 exit status
make[2]: *_* [/home/bvibhav/catkin_ws/devel/lib/vikit_common/test_vk_common_triangulation] Error 1
make[1]: *** [rpg_vikit/vikit_common/CMakeFiles/test_vk_common_triangulation.dir/all] Error 2
make: *** [all] Error 2
Invoking "make" failed

Cannot run example (with or without G2O)

I followed the instructions and everything seemed to compile correctly (also G2O). I am running Ubuntu 12.04 and ROS Hydro. When I run the example with HAVE_G2O FALSE in CMakeLists.txt, I get:

"roslaunch svo_ros test_rig3.launch"
[...]
[ WARN] [1402480296.121485241]: Cannot find value for parameter: svo/quality_max_drop_fts, assigning default: 40
[ INFO] [1402480296.121617539]: SVO initialized
vo: /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:69: Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions, 16>::plain_array() [with T = double, int Size = 4, int MatrixOrArrayOptions = 0]: Assertion `(reinterpret_cast<size_t>(array) & 0xf) == 0 && "this assertion is explained here: " "http://eigen.tuxfamily.org/dox-devel/TopicUnalignedArrayAssert.html" " **** READ THIS WEB PAGE !!! ****"' failed.
[svo-1] process has died [pid 20700, exit code -6

Not sure what is going on here...

Running the same thing with HAVE_G2O TRUE results in:
[...]
core service [/rosout] found
process[svo-1]: started with pid [23552]
/home/ketill/robotics/rosbook/devel/lib/svo_ros/vo: error while loading shared libraries: libg2o_core.so: cannot open shared object file: No such file or directory
[svo-1] process has died [pid 23552, exit code 127

Why is it not finding the shared library? How can I fix it?
Thanks for any help or tips!

Calibration with Kinect

Hello,
I am trying to get this running with an Xbox 360 Kinect.
The camera_pinhole.yaml calibration file requests the fields "d0, d1, d2, d3" which confuses me. If I echo camera/rgb/camera_info to get the kinect's default calibration, I get:
height: 480
width: 640
distortion_model: plumb_bob
D: [0.0, 0.0, 0.0, 0.0, 0.0]
K: [525.0, 0.0, 319.5, 0.0, 525.0, 239.5, 0.0, 0.0, 1.0]
R: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
P: [525.0, 0.0, 319.5, 0.0, 0.0, 525.0, 239.5, 0.0, 0.0, 0.0, 1.0, 0.0]
binning_x: 0
binning_y: 0
roi:
x_offset: 0
y_offset: 0
height: 0
width: 0
do_rectify: False

Do the parameters d0 - d3 refer to the first four entries in the "D" array here? If I run live.launch as such, I get a very sporadic and inaccurate estimation of cam_pos. It just jumps around everywhere. This incited me to try calibrating the kinect with the ATAN model. After calibrating it as per the Ethzasl_ptam tutorial, I use the parameters:
cam_model: ATAN
cam_width: 640
cam_height: 480
Cam_fx: 0.829
Cam_fy: 1.092
Cam_cx: 0.493
Cam_cy: 0.532
cam_d0: 0.012

Using camera_atan.yaml, I get the following error after I move the kinect slightly post-launching live.launch:
FATAL Homography Initialization: This motion case is not implemented or is degenerate. Try again. [ INFO] [1403818021.436454722]: Init: Homography RANSAC 97 inliers.
[ WARN] [1403818021.436507071]: Cannot set scene depth. Frame has no point-observations!
[ INFO] [1403818021.437437814]: Init: Selected second frame, triangulated initial map.
[ WARN] [1403818021.448152442]: SparseImgAlign: no features to track!
[ WARN] [1403818021.448262984]: Not enough matched features.
[ WARN] [1403818021.480226048]: Relocalizing frame

I am very new to this. Has anyone gotten this to work on a Kinect before? There must be something I'm doing very incorrectly.

catkin_make errors on vikit_common

Hi,

       Thank you so much for contributing the open source package! 
       Currently I am using ubuntu 12.04 with ros hydro, and I have installed the package following the instructions (https://github.com/uzh-rpg/rpg_svo/wiki/Installation:-ROS)
        Everything goes well before the last step $catkin_make. After the $catkin_make, the following errors occurred: 

camera.cpp.o
[ 45%] cc1plus: error: unrecognized command line option ‘-mfpu=neon’
cc1plus: error: unrecognized command line option ‘-mfpu=neon’
/home/lili/catkin_ws/src/rpg_vikit/vikit_common/src/atan_camera.cpp:1:0: error: bad value (armv7-a) for -march= switch
make[2]: *** [rpg_vikit/vikit_common/CMakeFiles/vikit_common.dir/src/atan_camera.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
Building CXX object rpg_vikit/vikit_common/CMakeFiles/vikit_common.dir/src/omni_camera.cpp.o
cc1plus: error: unrecognized command line option ‘-mfpu=neon’
cc1plus: error: unrecognized command line option ‘-mfpu=neon’
/home/lili/catkin_ws/src/rpg_vikit/vikit_common/src/omni_camera.cpp:1:0: error: bad value (armv7-a) for -march= switch
make[2]: *** [rpg_vikit/vikit_common/CMakeFiles/vikit_common.dir/src/omni_camera.cpp.o] Error 1
make[1]: *** [rpg_vikit/vikit_common/CMakeFiles/vikit_common.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 46%] Built target bundleAdjust
[ 47%] Built target featureTracking
[ 47%] Built target processDepthmap
make: *** [all] Error 2
Invoking "make" failed

Could anyone provide some suggestions? Many thanks in advance!

Throttle debug messages

Can you please throttle the debug messages.
ex: [ WARN] [1404130776.260120883]: Relocalizing frame

Compilation errors on ARM system

I have been trying to run SVO on ODROID-X2 and after 90%, catkin_make gives out the following error:

/home/odroid/catkin_ws/devel/lib/libvikit_common.so: undefined reference to boost::this_thread::hiden::sleep_until(timespec const&)' /home/odroid/catkin_ws/devel/lib/libvikit_common.so: undefined reference toboost::thread::start_thread_noexcept()'
/home/odroid/catkin_ws/devel/lib/libvikit_common.so: undefined reference to boost::thread::join_noexcept()' collect2: error: ld returned 1 exit status /home/odroid/catkin_ws/devel/lib/libvikit_common.so: undefined reference toboost::this_thread::hiden::sleep_until(timespec const&)'
/home/odroid/catkin_ws/devel/lib/libvikit_common.so: undefined reference to boost::thread::start_thread_noexcept()' /home/odroid/catkin_ws/devel/lib/libvikit_common.so: undefined reference toboost::thread::join_noexcept()'
collect2: error: ld returned 1 exit status
make[2]: *** [/home/odroid/catkin_ws/devel/lib/vikit_common/test_vk_common_camera] Error 1
make[1]: *** [rpg_vikit/vikit_common/CMakeFiles/test_vk_common_camera.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[2]: *** [/home/odroid/catkin_ws/devel/lib/vikit_common/test_vk_common_triangulation] Error 1
make[1]: *** [rpg_vikit/vikit_common/CMakeFiles/test_vk_common_triangulation.dir/all] Error 2

Haven't seen any new features added onto the map

I launch the live stream file with the setting as

grid_size 20
max_n_kfs 0
loba_num_iter 10
max_fts 300

and point the camera (60fps, wide angle, global shutter) at a wall with a lot of portraits hanging on it .

Initialization result is great .

tracking around the initialization location is great too.

But when i move the camera away from the initial location, I cannot see any new feature points added onto the map. New areas are covered with portraits similar to the initial place.

In the packed bag and video, new feature points are added instantly when the camera translate or move away from the scene.

I wonder if the parameter setting is wrong ?
max_n_kfs set to 0 means infinite key frame ?

Hope anyone could help me out of this !

Live camera for non-ROS build

This is probably a fundamental issues, I am wondering that is it possible to run a live camera with SVO that built without ROS? and how can I modify the code to do so? Many thanks

the pose of camera in rviz

After this commit, the pose of camera is totally opposite in rviz. It seems it publishes camera pose(down-looking) in the world frame. I found out this issue is related to

<param name="init_rx" value="3.14" />

Does that mean I need to rotate 180 degrees w.r.t x axis? If I want to see the camera in world frame. Moreover, does rpy2dcm generate the dcm by Euler angles(Roll, Pitch, Yaw)?

camera position + camera normal + up direction

I got a very silly problem... I suppose that SVO could give me the camera position + camera normal + up direction but the only related code here (from test_pipeline.cpp):

vo_->lastFrame()->T_f_w_

gives me a 1X6 matrix, says transform from world. It does not make much sense to me. Could you tell me how to get the info (camera position + camera normal + up direction) I need? Many thanks.

Update:

Sorry, just go through the Sophus lib, that should be a 2X3 matrix. I don't really know what does it mean... Is there any way to get something like 4X4 extrinsic matrix? Thanks for this.

Roslaunch error: can't locate node [vo] in package [svo_ros]

I'm getting the following error while launching the test_rig3 launch file:

$ roslaunch svo_ros test_rig3.launch
... logging to /home/jay/.ros/log/de1af706-01ef-11e4-ba97-bcee7beb3767/roslaunch-jay-Alienware-17-19627.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://jay-Alienware-17:43991/

SUMMARY

CLEAR PARAMETERS

  • /svo/

PARAMETERS

  • /rosdistro
  • /rosversion
  • /svo/cam_cx
  • /svo/cam_cy
  • /svo/cam_d0
  • /svo/cam_fx
  • /svo/cam_fy
  • /svo/cam_height
  • /svo/cam_model
  • /svo/cam_topic
  • /svo/cam_width
  • /svo/grid_size
  • /svo/init_rx
  • /svo/init_ry
  • /svo/init_rz
  • /svo/loba_num_iter
  • /svo/max_n_kfs

NODES
/
svo (svo_ros/vo)

ROS_MASTER_URI=http://localhost:11311

core service [/rosout] found
ERROR: cannot launch node of type [svo_ros/vo]: can't locate node [vo] in package [svo_ros]

test_pipeline terminates after exception

I installed svo without ROS on Archlinux x86_64. The only thing I had to change during the installation process was disabling -Werror when compiling Sophus because there is a warning in the eigen library.

When I try running the test_pipeline example I get the following output:

[INFO] SVO initialized
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct null not valid
Aborted (core dumped)

EDIT: Closed as I had mistyped the SVO_DATASET_DIR environment variable.

Compiling error: G2O_SOLVER_CHOLMOD

Compilation with ROS error:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
G2O_SOLVER_CHOLMOD
linked by target "svo" in directory /home/jay/catkin_ws/src/rpg_svo/svo

-- Configuring incomplete, errors occurred!
Invoking "cmake" failed

If I compile with SET(HAVE_G2O FALSE), then the error disappears.
This is inspite of the fact that I have previously built g2o.

Compiling errors (without ROS)

I am trying to compile the software on Ubuntu 12.04 without ROS and I get the following errors:

In file included from /home/glunghi/workspace/VO/rpg_svo/svo/src/frame_handler_mono.cpp:18:0:
/home/glunghi/workspace/VO/rpg_svo/svo/include/svo/frame_handler_mono.h:46:9: error: ‘set’ does not name a type
/home/glunghi/workspace/VO/rpg_svo/svo/include/svo/frame_handler_mono.h:67:3: error: ‘set’ does not name a type
/home/glunghi/workspace/VO/rpg_svo/svo/src/frame_handler_mono.cpp: In member function ‘void svo::FrameHandlerMono::addImage(const cv::Mat&, double)’:
/home/glunghi/workspace/VO/rpg_svo/svo/src/frame_handler_mono.cpp:64:3: error: ‘core_kfs_’ was not declared in this scope
/home/glunghi/workspace/VO/rpg_svo/svo/src/frame_handler_mono.cpp: In member function ‘virtual svo::FrameHandlerBase::UpdateResult svo::FrameHandlerMono::processFrame()’:
/home/glunghi/workspace/VO/rpg_svo/svo/src/frame_handler_mono.cpp:180:3: error: ‘core_kfs_’ was not declared in this scope
/home/glunghi/workspace/VO/rpg_svo/svo/src/frame_handler_mono.cpp: In member function ‘virtual void svo::FrameHandlerMono::resetAll()’:
/home/glunghi/workspace/VO/rpg_svo/svo/src/frame_handler_mono.cpp:286:3: error: ‘core_kfs_’ was not declared in this scope
/home/glunghi/workspace/VO/rpg_svo/svo/src/frame_handler_mono.cpp: In lambda function:
/home/glunghi/workspace/VO/rpg_svo/svo/src/frame_handler_mono.cpp:319:90: error: ‘core_kfs_’ was not declared in this scope

Can someone help me?

Crash on initialization ROS Hydro

SVO keeps crashing after initializing the second frame. I've tried in many different conditions, etc, but to no avail. Similar error messages after every try :

[ INFO] [1404217959.253454495]: Init: KLT tracked 444 features
[ INFO] [1404217959.253844787]: Init: KLT 25.2628px average disparity.
[ INFO] [1404217959.799453704]: Init: KLT tracked 442 features
[ INFO] [1404217959.799883995]: Init: KLT 37.5631px average disparity.
[ INFO] [1404217960.310339496]: Init: KLT tracked 435 features
[ INFO] [1404217960.310761079]: Init: KLT 52.1456px average disparity.
[ INFO] [1404217960.315831996]: Init: Homography RANSAC 357 inliers.
[ INFO] [1404217960.317715079]: Init: Selected second frame, triangulated initial map.
*** Error in `/home/odroid/catkin_ws/devel/lib/svo_ros/vo': free(): invalid pointer: 0xaef034e0 ***
[New Thread 0xb2aff420 (LWP 23175)]

I'm using a Logitech C270 @ 800x600 monochrome 30fps. Camera is calibrated using ATAN model. Onboard computer is an Odroid U3 on Linaro 13.05 , ROS Hydro. I'm on latest master.

Metric scale estimation in SVO itself

Hi,

What would be the steps required to use IMU data in SVO itself to do the metric scale estimation? I want to keep the scale estimation separate from the sensor fusion framework as it will allow us to try out different ones and different filters.

IMU data can also be used for the tracking itself, which should make it more robust. I'd be willing to give this a try if you guys help.

Kabir

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.