introlab / rtabmap

RTAB-Map library and standalone application
https://introlab.github.io/rtabmap
Other
2.75k stars 785 forks source link

Illegal instruction when start rtabmap #20

Open matlabbe opened 9 years ago

matlabbe commented 9 years ago

From @GoogleCodeExporter on May 26, 2015 18:56


What steps will reproduce the problem?
1. I followed the installation instruction in the wiki page: 
https://code.google.com/p/rtabmap/wiki/Installation.
2. All the compilation went smoothly without any major error pop-up.

What is the expected output? What do you see instead?
But when I try to run the program, following issue curred when rtabmap start...
[output]
[ INFO] (2014-06-15 05:55:16.281) main.cpp:38::main() Program started...
Illegal instruction

and following is what I got when debug in gdb...
[output]
Reading symbols from /home/nhuang/Documents/RTAB-Map/bin/rtabmap...(no 
debugging symbols found)...done.
(gdb) run
Starting program: /home/nhuang/Documents/RTAB-Map/bin/rtabmap 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[ INFO] (2014-06-15 05:59:24.372) main.cpp:38::main() Program started...

Program received signal SIGILL, Illegal instruction.
0x00007ffff7a89291 in rtabmap::Transform::Transform(float, float, float, float, 
float, float, float, float, float, float, float, float) () from 
/home/usrname/Documents/RTAB-Map/bin/librtabmap_core.so

What version of the product are you using? On what operating system?
Ubuntu 12.04 / ROS hydro

Please provide any additional information below.
I have no idea with this issue, but when I attempted with same installation on 
another computer it works fine somehow.

Original issue reported on code.google.com by originHo...@gmail.com on 14 Jun 2014 at 9:08

Copied from original issue: matlabbe/rtabmap#9

matlabbe commented 9 years ago

From @GoogleCodeExporter on May 26, 2015 18:56


-If you are using the version from SVN, try update the code 'svn update', then 
rebuild (I did some changes today about other stuff).

-Do you have warnings like "warning: cannot pass objects of non-POD type" when 
building the code? May be related to 
http://peeterjoot.wordpress.com/2010/05/26/a-fun-and-curious-dig-gcc-generation-
of-a-ud2a-instruction-sigill/

-Is it an English version of Ubuntu?

My build machine is also Ubuntu 12.04 / ROS hydro. I don't know if it could be 
the Graphics driver. When RTAB-Map opens, there some OpenGL interfaces created.

Original comment by matla...@gmail.com on 15 Jun 2014 at 4:16

matlabbe commented 9 years ago

From @GoogleCodeExporter on May 26, 2015 18:56

Thanks for your prompt reply, I am running on English version of Ubuntu, also I 
think the graphic driver is the most possible reason, because my graphic card 
is slightly old, of Quadro FX 570.
but I re-compiled the updated RTAB-map (standalone without ROS), but strange 
errors during compilation

1. Not sure whether it affects or not, if I re-install the ros to fuerte?
[Error]
In file included from ~/rtabmap/corelib/src/Features2d.cpp:32:0:
/usr/local/include/opencv2/nonfree/gpu.hpp:54:18: error: redefinition of 
‘class cv::gpu::SURF_GPU’
/opt/ros/fuerte/include/opencv2/gpu/gpu.hpp:1426:18: error: previous definition 
of ‘class cv::gpu::SURF_GPU’

2. I have no idea where this error come from? or it shouldn't be an error?
[Error]
/home/nhuang/Documents/rtabmap/corelib/src/Odometry.cpp:210:89: error: 
‘FLANN_DIST_HAMMING’ is not a member of ‘cvflann’

Possibly I will try to build it again with ros hydro installed

Original comment by originHo...@gmail.com on 16 Jun 2014 at 1:17

matlabbe commented 9 years ago

From @GoogleCodeExporter on May 26, 2015 18:56

1. RTAB-Map doesn't work with Fuerte or Groovy. Hydro minimum is required. The 
error here seems that the two directories /usr/local/include/opencv2/nonfree 
and /opt/ros/fuerte/include/opencv2 are included somehow, which conflict with 
each other. You must already have RTAB-Map standalone installed if you tried 
the ros-pkg of RTAB-Map on Hydro previously 
(https://code.google.com/p/rtabmap/wiki/ROS#Installation). These lines build 
the standalone and install in your devel folder of your catkin workspace:
{{{
$ svn checkout http://rtabmap.googlecode.com/svn/trunk/rtabmap rtabmaplib
$ cd rtabmaplib/build
$ cmake -DCMAKE_INSTALL_PREFIX=~/<YOUR_CATKIN_WORKSPACE>/devel ..  [<---double 
dots included]
$ make -j4
$ make install
}}}

2. There may be also a conflict with the installed OpenCV versions. You may 
want to clear the build directory of RTAB-Map (or delete build/CMakeCache.txt) 
before trying to rebuild it when changing from ROS versions (to make sure that 
CMake finds only one version of OpenCV).

I updated the installation instructions to build the standalone version along 
with already installed ROS Hydro on the machine. See 
https://code.google.com/p/rtabmap/wiki/Installation?ts=1402931612&updated=Instal
lation#If_ROS_Hydro_is_already_installed .

Original comment by matla...@gmail.com on 16 Jun 2014 at 3:14

matlabbe commented 9 years ago

From @GoogleCodeExporter on May 26, 2015 18:56

Many thanks for pointing out, indeed it only compiles under ros hydro or above 
installed. RTAB-map is rebuilt smoothly without error, however still have 
problem of running the program with error "Illegal Instruction", and I try to 
debug with gdb, and back-tracing the place where it died, it shows no stack, 
does that means the program died before it actually starts? or some other 
reason?
[GDB]
Starting program: ~/hydro_workspace/devel/rtabmaplib/bin/rtabmap 
[ INFO] (2014-06-17 05:07:09.668) main.cpp:38::main() Program started...
During startup program terminated with signal SIGILL, Illegal instruction.
(gdb) bt
No stack.
(gdb) where
No stack.
(gdb) c
The program is not being run.

As a note, I didn't get any warning such as "warning: cannot pass objects of 
non-POD type". Also I have updated graphic driver.
[INFO]
Graphics:  Card: NVIDIA G84GL [Quadro FX 570] bus-ID: 07:00.0 
           X.Org: 1.11.3 drivers: nvidia (unloaded: nouveau,vesa,fbdev) Resolution: 1920x1080@60.0hz 
           GLX Renderer: Quadro FX 570/PCIe/SSE2 GLX Version: 3.3.0 NVIDIA 331.20 Direct Rendering: Yes

What I can think of is the problem with OpenGL interfaces mentioned previously? 
Now I can only use other computer instead to test RTAB-Map. 

Original comment by originHo...@gmail.com on 16 Jun 2014 at 8:19

matlabbe commented 9 years ago

From @GoogleCodeExporter on May 26, 2015 18:56

I don't if it is related to SIGILL problem in Transform, but I just fixed a 
warning (which is in reality a bug!) in Transform. See 
https://code.google.com/p/rtabmap/source/diff?spec=svn1436&r=1436&format=side&pa
th=/trunk/rtabmap/corelib/src/Transform.cpp

Original comment by matla...@gmail.com on 23 Jun 2014 at 3:21

matlabbe commented 9 years ago

From @GoogleCodeExporter on May 26, 2015 18:56

Thanks for the updates, but I still couldn't get the program to run on this 
'specific' PC. Fortunately, I got a PC that work nicely with RTAB-Map now at 
least. I think the Illegal instruction really somehow caused by hardware 
specs(?).

By the way, recently through further dig into the working RTAB-Map, I am trying 
to integrate RTAB-Map with my robotic project, however I don't really know how 
to deal with lost odometry when the map turns RED, sometimes I couldn't track 
back, so the map is completely lost, so I have to start over(?). I have seen 
demos which run very smoothly, can I possible reproduce the similar results, 
should I change some parameters to optimize the result?  

Original comment by originHo...@gmail.com on 24 Jun 2014 at 1:53

matlabbe commented 9 years ago

From @GoogleCodeExporter on May 26, 2015 18:56


-If you want to use RTAB-Map with a robot that provides his own odometry, I 
recommend to use his odometry instead of the one computed by the 
"visual_odometry" node of rtabmap ros package. The large-scale demos shown here 
are done using odometry from the robot. 

You said "sometimes I couldn't track back, so the map is completely lost, so I 
have to start over(?).":
- The map is not completely lost, you could do "Edit->Reset the odometry" to 
reset the odometry: A new map will be created, and if you return to an area of 
the previous map and a loop closure occurs, the old map will be merged with the 
new one.

"I have seen demos which run very smoothly, can I possible reproduce the 
similar results, should I change some parameters to optimize the result?"
- The demos shown here: https://code.google.com/p/rtabmap/wiki/ROS#Demos are 
done with Robot odometry instead of visual odometry (computed with Kinect 
images), it is why no RED screens happen.

- This video https://www.youtube.com/watch?v=Nm2ggyAW4rw is what you would 
expect when using Kinect-only. Some RED screens will happen.

- Here another example where the odometry is reset, a new map is created and 
merged when looping back to the first map.
https://www.youtube.com/watch?v=xbKVhZQFKgA

Original comment by matla...@gmail.com on 25 Jun 2014 at 7:23

matlabbe commented 9 years ago

From @GoogleCodeExporter on May 26, 2015 18:56

Issue 19 has been merged into this issue.

What steps will reproduce the problem?

I followed the below installation instruction.

If ROS Hydro is installed, dependencies should already be satisfied.

System dependencies
  $ sudo apt-get install libsqlite3-dev libpcl-1.7-all libfreenect-dev ros-hydro-opencv2
Download RTAB-Map source: SVN
  $ svn checkout http://rtabmap.googlecode.com/svn/trunk/rtabmap rtabmap
  $ cd rtabmap/build
  $ cmake ..
  $ make -j4
  $ sudo make install

Execute the application (named "rtabmap").
See Tutorials for a simple example of usage.

What is the expected output? What do you see instead?

When I enter "rtabmap", i got the following error.

main.cpp : 46::main() Program started...
Illegal instruction (core dumped)

What version of the product are you using? On what operating system?

Ubuntu 12.04 / ROS Hydro

Please provide any additional information below.

Original comment by matla...@gmail.com on 8 Nov 2014 at 8:20

matlabbe commented 9 years ago

From @GoogleCodeExporter on May 26, 2015 18:56

Issue 21 has been merged into this issue.

When I try to run this :

$ rtabmap-rgbd_camera 0

I got the same error as before.

[ INFO] (2014-11-13 13:59:13.372) main.cpp:62::main() Using driver 0
Illegal instruction (core dumped)

When I try to run this :

$ gdb rtabmap-odometryViewer

GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04
Copyright (C) 2012 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 "i686-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /home/mirlab/catkin_ws/devel/bin/rtabmap-odometryViewer...(no debugging symbols found)...done.
(gdb) run

Starting program: /home/mirlab/catkin_ws/devel/bin/rtabmap-odometryViewer 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
[ INFO] (2014-11-13 14:06:11.691) main.cpp:584::main() Using OpenNI camera
[ INFO] (2014-11-13 14:06:11.692) main.cpp:653::main() Odometry used =           GFTT+BRIEF
[ INFO] (2014-11-13 14:06:11.692) main.cpp:654::main() Camera rate =             0.000000 Hz
[ INFO] (2014-11-13 14:06:11.692) main.cpp:655::main() Maximum clouds shown =    10
[ INFO] (2014-11-13 14:06:11.692) main.cpp:656::main() Delay =                   0.000000 s
[ INFO] (2014-11-13 14:06:11.692) main.cpp:657::main() Max depth =               5.000000
[ INFO] (2014-11-13 14:06:11.692) main.cpp:658::main() Linear update =           0.000000
[ INFO] (2014-11-13 14:06:11.692) main.cpp:659::main() Angular update =          0.000000
[ INFO] (2014-11-13 14:06:11.692) main.cpp:660::main() Reset odometry coutdown = 0
[ INFO] (2014-11-13 14:06:11.692) main.cpp:661::main() Local history =           1000
[New Thread 0xaaaefb40 (LWP 2928)]
[New Thread 0xaa0ffb40 (LWP 2929)]
[New Thread 0xa96ffb40 (LWP 2930)]
[ INFO] (2014-11-13 14:06:12.607) main.cpp:692::main() Nearest neighbor =         kNNBruteForce
[ INFO] (2014-11-13 14:06:12.607) main.cpp:693::main() Nearest neighbor ratio =  0.700000
[ INFO] (2014-11-13 14:06:12.607) main.cpp:694::main() Max features =            0
[ INFO] (2014-11-13 14:06:12.607) main.cpp:695::main() Min inliers =             20
[ INFO] (2014-11-13 14:06:12.607) main.cpp:696::main() Words ratio =             0.500000
[ INFO] (2014-11-13 14:06:12.607) main.cpp:697::main() Inlier maximum correspondences distance = 0.010000
[ INFO] (2014-11-13 14:06:12.607) main.cpp:698::main() RANSAC iterations =       30
[ INFO] (2014-11-13 14:06:12.607) main.cpp:699::main() GPU =                     false
[ INFO] (2014-11-13 14:06:12.607) main.cpp:724::main() BRIEF bytes =             32

Program received signal SIGILL, Illegal instruction.
0xb7e673a4 in rtabmap::Transform::Transform(float, float, float, float, float, float, float, float, float, float, float, float) () from /home/mirlab/catkin_ws/devel/lib/rtabmap-0.7/librtabmap_core.so
(gdb)

I also got Illegal instruction.

Original comment by matla...@gmail.com on 13 Nov 2014 at 7:25

matlabbe commented 9 years ago

From @GoogleCodeExporter on May 26, 2015 18:56

Issue 21 has shown that the "Illegal instruction" error happens also on the 
"rtabmap-rgbd_camera" and "rtabmap-odometryViewer" examples. The error seems to 
happen when an object instantiating a "rtabmap::Transform" is created, or maybe 
when an object from the librtabmap_core library is created?

Original comment by matla...@gmail.com on 13 Nov 2014 at 7:48

matlabbe commented 9 years ago

Similar error here: http://official-rtab-map-forum.206.s1.nabble.com/Rtabmap-error-in-process-rtabmap-rgbd-odometry-1-ubuntu-on-raspberry-pi-td444.html

matlabbe commented 9 years ago

Building in debug mode helped on a computer having this error.

$  cd rtabmap/build
$ cmake -DCMAKE_BUILD_TYPE=Debug ..
$ make