Frequent questions and errors

1. General

 

1.1. Can I run MRPT on Arduino?


MRPT could run on any 32 or 64 platform on which GCC is able to build it. Arduino uses Atmel’s 8bit AVR microcontrollers, so it’s not possible to run MRPT on it.

 

1.2. Can I run MRPT on other embedded systems?


It has been successfully built and seems to work (at least, all unit tests) under ARM, MIPS, S390, SPARC,… See the list of precompiled Debian packages for these platforms.

 

2. Common errors

 

2.1. I have errors like: “*FATAL*: Signal SIGSEGV caught!


This may be either a real bug or a compatibility issue. First, check if it’s the latter by running your program with:

gdb --args [PROGRAM_NAME [OPTIONAL ARGS] ]

Then enter the command “run” and wait for the error to occur, at which point gdb will stop. If you see something about SIGILL:

then the problem is probably that MRPT has been compiled with more optimizations than your CPU supports.

Solutions:

a) If MRPT was installed from an Ubuntu repository:

  • firstly remove the current mrpt PPA repository from aptitude (from example, from synaptics -> Software sources).
  • Next, use instead the alternative repository which is optimized only for processors that support SSE/SSE2 (which are all of them since many years ago). If your processor is still older than that, you’ll have to build from sources (see next point).

b) If MRPT was compiled by hand:

  • Disable MRPT_AUTODETECT_SSE and hit CMake “configure”,
  • then check the options DISABLE_SSE3 and DISABLE_SSE4 in the advanced view of CMake:

mrpt screenshot disable_SSE_fix_SIGSEGV (ccmake)

  •  select “configure”, “generate” and recompile the entire MRPT or the parts you need.

 

2.2. I have errors like “*FATAL*: Signal SIGSEGV caught!” and it’s not a CPU issue!


If after running your program with:

gdb --args [PROGRAM_NAME [OPTIONAL ARGS] ]

and then entering “run”, the program crashes with any signal different from  SIGILL, chances are that a real bug exists. Still within “gdb”, execute the command “bt” (backtrace) to determine where exactly occurred the error. If it happens to be within MRPT code, please consider filing a bug report.

2.3. CMake complains: “could not find module FindMRPT.cmake or a configuration file for package MRPT


If, while writing your own program that uses MRPT, CMake complains about it not finding MRPT:

  1. Make sure MRPT is: (a) installed in the system as binaries, or (b) you successfully compiled it from sources!!
  2. From CMake’s GUI, look for the variable MRPT_DIR and make sure it points (a) to /usr/share/mrpt/ or "c:/Program Files/mrpt", or (b) to the directory where you compiled MRPT (=the directory BINARY_DIR in CMake while compiling it).

In both cases, what CMake is really looking for is a configuration file named MRPTConfig.cmake which must be found in any of these paths.

 

 

2.4. I found the error: “fatal error C1083: Cannot open include file: ‘unordered_set’: No such file or directory


If you’re under Visual Studio 2008, this probably means you need installing the Visual Studio 2008 FeaturePack to provide support for C++11 new classes.