zanazakaryaie / arm-vo Goto Github PK
View Code? Open in Web Editor NEWEfficient monocular visual odometry for ground vehicles on ARM processors
License: MIT License
Efficient monocular visual odometry for ground vehicles on ARM processors
License: MIT License
Dear contributors,
Congratulations on your work and many thanks for sharing it!
However I couldn't find any information about license in this repo, a repo without license has ambiguous terms and could lead to law suits.....
Can I input raw images from camera to your library or the images have to be undistorted first before using your library?
On line 182 of the FAST_NEON.cpp,according to opencv fast.cpp, should it be m1 = vcgtq_u8(v1, x);
?
I would like to run this on python :)
We know that due to the scale indefiniteness problem, we cannot estimate the distance traveled by the camera without distance information.
However, we would like to get the relative travel distance.
Can you determine the relative travel distance of the monocular camera under the following conditions?
・Input is video image (or acceleration and gyro sensor values)
・No ground-truth
・No distance information
Im getting a segmenattion fault and then an abrupt exit after a random period of time, looks like this
I'm running it with ROS and it is producing some kind of output, but exits too fast to actually check if its sensible.
My setup:
Rpi 4 with ubuntu 16.04
ROS Kinetic
RGB image is from a Realsense d435i
attached to a mobile robot
my param file:
%YAML:1.0
#########################
### Camera Parameters ###
#########################
fx: 611.1327514648438
fy: 611.2852783203125
cx: 326.94580078125
cy: 250.05352783203125
height: 0.3
pitch_angle: -0.03
###########################
### Detector Parameters ###
###########################
# Maximum number of FAST features per image
nFeatures: 300
#Kepoints with corner response lower than threshold are ignored (lower it if your images have low contrast)
threshold: 15
# Image is divided to a nRows * nCols grid
nRows: 6
nCols: 12
##########################
### Tracker Parameters ###
##########################
window_size: 13
I am trying to get this visual odometry to work on this mobile robot with a camera stream provided in the following bag file:
subscribing to /camera/color/image_raw
As can be seen from image stream the robot is never purely rotating, there is always a bit of forward motion as well.
Thank you for your work, I love the concept of taking the height and pitch and extracting scale from it!
Laptop: Macbook Air M2
OS: Ubuntu 20.04 Docker
When I was runing cmake . , I got following error
-- The C compiler identification is GNU 9.4.0
-- The CXX compiler identification is GNU 9.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenCV: /usr/local (found version "4.5.0")
-- Found OpenMP_C: -fopenmp (found version "4.5")
CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES)
Call Stack (most recent call first):
/usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:393 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.16/Modules/FindOpenMP.cmake:511 (find_package_handle_standard_args)
CMakeLists.txt:13 (find_package)
-- Configuring incomplete, errors occurred!
See also "/ARM-VO/CMakeFiles/CMakeOutput.log".
See also "/ARM-VO/CMakeFiles/CMakeError.log".
Has anyone experienced this?
Thanks
build ARM-VO at Nvidia-NX
Using Kitti dataset data_odometry_color.zip
nvidia@nvidia-desktop:~/work/code/ARM-VO/build$ ./ARM_VO
Few input arguments!
Usage: ./exe pathToDataFolder paramsFile
Use default Param /home/nvidia/dataset/kitti/00/image_3/ ../params/Seq00-02.yaml
Processing image 000000.png: Initialized
Segmentation fault (core dumped)
nvidia@nvidia-desktop:~/work/code/ARM-VO/build$ gdb ARM_VO
GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "aarch64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ARM_VO...done.
(gdb) r
Starting program: /home/nvidia/work/code/ARM-VO/build/ARM_VO
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
Few input arguments!
Usage: ./exe pathToDataFolder paramsFile
Use default Param /home/nvidia/dataset/kitti/00/image_3/ ../params/Seq00-02.yaml
[New Thread 0x7fb5bb3f00 (LWP 10778)]
[New Thread 0x7fafffef00 (LWP 10779)]
[New Thread 0x7fb57b2f00 (LWP 10780)]
Processing image 000000.png: Initialized
Thread 1 "ARM_VO" received signal SIGSEGV, Segmentation fault.
tracker::calcSharrDeriv (this=this@entry=0x10c00000001, src=..., dst=...) at /home/nvidia/work/code/ARM-VO/src/tracker.cpp:110
110 int16x8_t q3 = vld1q_s16((const int16_t*)&trow1[x-cn]);
(gdb) bt
#0 0x0000005555573938 in tracker::calcSharrDeriv(cv::Mat const&, cv::Mat&) (this=this@entry=0x10c00000001, src=..., dst=...)
at /home/nvidia/work/code/ARM-VO/src/tracker.cpp:110
#1 0x000000555557435c in tracker::calc_OpticalFlowPyrLK(cv::_InputArray const&, cv::_InputArray const&, cv::_InputArray const&, cv::_InputOutputArray const&, cv::_OutputArray const&, cv::Size_<int>, int, cv::TermCriteria, int, double) (this=0x10c00000001,
this@entry=0x7fffffeda8, _prevImg=..., _nextImg=..., _prevPts=..., _nextPts=..., _status=..., winSize=..., maxLevel=1432072000,
maxLevel@entry=3, criteria=..., flags=<optimized out>, minEigThreshold=minEigThreshold@entry=0.001)
at /home/nvidia/work/code/ARM-VO/src/tracker.cpp:187
#2 0x0000005555574c70 in tracker::track(cv::Mat const&, cv::Mat const&, std::vector<cv::Point_<float>, std::allocator<cv::Point_<float> > >&, std::vector<cv::Point_<float>, std::allocator<cv::Point_<float> > >&) (this=this@entry=0x7fffffeda8, img_1=..., img_2=..., points1=std::vector of length 268, capacity 268 = {...}, points2=std::vector of length 268, capacity 268 = {...}) at /home/nvidia/work/code/ARM-VO/src/tracker.cpp:23
#3 0x0000005555561630 in ARM_VO::update(cv::Mat const&) (this=0x7fffffebc0, currentFrame=...) at /home/nvidia/work/code/ARM-VO/src/ARM_VO.cpp:77
#4 0x0000005555560654 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/nvidia/work/code/ARM-VO/src/main.cpp:59
When I compile the ROS option and run the command rosrun ARM_VO ARM_VO param_file, the error "[rosrun] Couldn't find executable named ARM_VO below /home/kerwin/workspace/ARM-VO/ROS/src" pops out.
I have to add catkin_package() to the CMakeLists.txt in ROS/src and then compile it again to successfully run the node.
Not sure it is my problem or the CMakeLists'.
The -mpfu flag produces a make error on my aarch64. Removing the flag fixes the issue.
Hi, thanks for your opening source such an amazing porject.
As the title, i was searching which way to implement BA, then i found that you choose quaternion, is that because a 4 DOF residual is smaller thus faster than a 9 DOF residual for computing?
Or, is it just a casual choise? : )
hi, first of all, great work!
I'm trying to test this code, but I'm getting an error "segmentation fault" on "parallel_for_(Range(0, npoints),..." in function calc_OpticalFlowPyrLK.
This is my configuration:
any advice appreciates, Thanks in advance.
@zanazakaryaie
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.