shiva16 / rtabmap

Automatically exported from code.google.com/p/rtabmap
0 stars 0 forks source link

Illegal instruction when start rtabmap #9

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago

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

GoogleCodeExporter commented 9 years ago

-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

GoogleCodeExporter commented 9 years ago
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

GoogleCodeExporter commented 9 years ago
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

GoogleCodeExporter commented 9 years ago
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

GoogleCodeExporter commented 9 years ago
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

GoogleCodeExporter commented 9 years ago
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

GoogleCodeExporter commented 9 years ago

-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

GoogleCodeExporter commented 9 years ago
Issue 19 has been merged into this issue.

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

GoogleCodeExporter commented 9 years ago
Issue 21 has been merged into this issue.

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

GoogleCodeExporter commented 9 years ago
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