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.

5 comments on “Frequent questions and errors
  1. Sreejit says:

    In 2.1(b) , one must disable MRPT_AUTODETECT_SSE and then configure it again to have the entries DISABLE_SSE/SSE2/SSE3 to appear again.
    This thing took 5hrs to find and coorect.ahhhh!!!
    Anyways Thanks a lot…

    • Jose Luis Blanco says:

      Thanks! Instructions have been updated.

      • Sreejit says:

        Hi again!
        I have been getting *FATAL*: Signal SIGSEGV caught!” since almost two days and i tracked it down to something related to matrix: unit, dyn[float], 6×6.It follows from the output of mrpt-performance:

        Saving log to: ./mrpt-performance.html

        icp-slam (match points): Run with sample dataset 1.00 sec
        icp-slam (match grid): Run with sample dataset 1.00 sec
        poses: CPose3D (+) CPose3D 189.36 ns
        poses: CPose3D.composeFrom() 166.31 ns
        poses: CPose3D (+) CPoint3D 38.82 ns
        poses: CPose3D.composePoint() 71.77 ns
        poses: CPose3D.composePoint()+Jacobs 607.43 ns
        poses: CPoint3D (-) CPose3D 97.35 ns
        poses: CPose3D.inverseComposePoint() 110.50 ns
        poses: CPose2D (+) CPose2D 69.30 ns
        poses: CPose2D.composeFrom() 33.74 ns
        poses: CPose2D (+) CPoint2D 16.82 ns
        poses: CPose2D.composePoint() 27.93 ns
        poses: CPose3DQuat (+) CPose3DQuat 126.58 ns
        poses: CPose3DQuat.composeFrom() 107.02 ns
        poses: CPose3DQuat (+) CPoint3D 84.00 ns
        poses: CPose3DQuat.composePoint() 51.78 ns
        poses: CPoint3D (-) CPose3DQuat 83.24 ns
        poses: CPose3DQuat.invcomposePoint() 66.26 ns
        poses: Conv CPose3DQuat CPose3DQuat 444.57 ns
        poses: Conv CPose3DQuat Gauss <- CPose3D Gauss (DEF) 1.69 us
        poses: Conv CPose3DQuat Gauss <- CPose3D Gauss (Lin) 1.68 us
        poses: Conv CPose3DQuat Gauss <- CPose3D Gauss (SUT) 20.17 us
        poses: Conv CPose3D Gauss <- CPose3DQuat Gauss (DEF) 1.29 us
        poses: Conv CPose3D Gauss <- CPose3DQuat Gauss (Lin) 1.36 us
        poses: Conv CPose3D Gauss <- CPose3DQuat Gauss (SUT) 20.70 us
        matrix: unit, dyn[float], 3×3 64.19 ns
        matrix: unit, dyn[double], 3×3 54.73 ns
        matrix: unit, dyn[float], 6×6 *FATAL*: Signal SIGSEGV caught!

        output of cpuinfo:

        processor : 0
        vendor_id : GenuineIntel
        cpu family : 6
        model : 15
        model name : Intel(R) Pentium(R) Dual CPU T2330 @ 1.60GHz
        stepping : 13
        microcode : 0xa1
        cpu MHz : 1600.000
        cache size : 1024 KB
        physical id : 0
        siblings : 2
        core id : 0
        cpu cores : 2
        apicid : 0
        initial apicid : 0
        fdiv_bug : no
        f00f_bug : no
        coma_bug : no
        fpu : yes
        fpu_exception : yes
        cpuid level : 10
        wp : yes
        flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm dtherm
        bogomips : 3199.99
        clflush size : 64
        cache_alignment : 64
        address sizes : 36 bits physical, 48 bits virtual
        power management:

        processor : 1
        vendor_id : GenuineIntel
        cpu family : 6
        model : 15
        model name : Intel(R) Pentium(R) Dual CPU T2330 @ 1.60GHz
        stepping : 13
        microcode : 0xa1
        cpu MHz : 1600.000
        cache size : 1024 KB
        physical id : 0
        siblings : 2
        core id : 1
        cpu cores : 2
        apicid : 1
        initial apicid : 1
        fdiv_bug : no
        f00f_bug : no
        coma_bug : no
        fpu : yes
        fpu_exception : yes
        cpuid level : 10
        wp : yes
        flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm dtherm
        bogomips : 3199.99
        clflush size : 64
        cache_alignment : 64
        address sizes : 36 bits physical, 48 bits virtual
        power management:

        Could you suggest how to remove the error?

  2. Arturo says:

    Hi,

    i recieve the “could not find module FindMRPT.cmake or a configuration file for package MRPT” error while i am trying to run the samples.

    1. i successfully compiled it from sources. I ran make test and every looks ok.
    2. i have the two dir, one with the sources(~/IRMA/libs/mrpt-1.2.1)and the other with the buildings (~/IRMA/libs/mrpt_cmake).
    this is my MRPTConfig.cmake file where the directories are seted ok, i think.

    47 SET(MRPT_SOURCE_DIR “/home/irma/IRMA/libs/mrpt-1.2.1″)
    48 SET(MRPT_LIBS_INCL_DIR “/home/irma/IRMA/libs/mrpt-1.2.1/libs”)
    49
    50 # MRPT binary dir
    51 SET(MRPT_DIR “/home/irma/IRMA/libs/mrpt_cmake”)

    the MRPT_DIR are set and i dont know why the CMakeLists.txt doesn’t found it.

    Cand you help me? thanks!

  3. Arturo says:

    My Cmake MRPTConfig.cmake have seted the MRPT_DIR variable.

    46 # MRPT source dir
    47 SET(MRPT_SOURCE_DIR “/home/irma/IRMA/libs/mrpt-1.2.1″)
    48 SET(MRPT_LIBS_INCL_DIR “/home/irma/IRMA/libs/mrpt-1.2.1/libs”)
    49
    50 # MRPT binary dir
    51 SET(MRPT_DIR “/home/irma/IRMA/libs/mrpt_cmake”)

    so, they are seted ok. Also i ran make test and everything says ok. I still get the “could not find module FindMRPT.cmake or a configuration file for package MRPT“ error

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Search C++ API:

 

Share

Latest blog entries

Recent activity

Stats

stats
(more)

web stats