Giter VIP home page Giter VIP logo

maplab's Introduction

Ubuntu 18.04+ROS melodic: Build Status Documentation Status

News

  • November 2022: maplab 2.0 initial release with new features and sensors. Paper.
  • July 2018: Check out our release candidate with improved localization and lots of new features! Release 1.3.
  • May 2018: maplab was presented at ICRA in Brisbane. Paper / Initial Release.

Description

This repository contains maplab 2.0, an open research-oriented mapping framework, written in C++, for multi-session and multi-robot mapping. For the original maplab release from 2018 the source code and documentation is available here.

For documentation, tutorials and datasets, please visit the wiki.

Features

Robust visual-inertial odometry with localization

Large-scale multisession mapping and optimization

Multi-robot mapping and online operation

Dense reconstruction

A research platform extensively tested on real robots

Installation and getting started

The following articles help you with getting started with maplab and ROVIOLI:

More detailed information can be found in the wiki pages.

Research Results

The maplab framework has been used as an experimental platform for numerous scientific publications. For a complete list of publications please refer to Research based on maplab.

Citing

Please cite the following papers maplab and maplab 2.0 when using our framework for your research:

@article{schneider2018maplab,
  title={{maplab: An Open Framework for Research in Visual-inertial Mapping and Localization}},
  author={T. Schneider and M. T. Dymczyk and M. Fehr and K. Egger and S. Lynen and I. Gilitschenski and R. Siegwart},
  journal={IEEE Robotics and Automation Letters},
  volume={3},
  number={3},
  pages={1418--1425},
  year={2018},
  doi={10.1109/LRA.2018.2800113}
}
@article{cramariuc2022maplab,
  title={{maplab 2.0 – A Modular and Multi-Modal Mapping Framework}},
  author={A. Cramariuc and L. Bernreiter and F. Tschopp and M. Fehr and V. Reijgwart and J. Nieto and R. Siegwart and C. Cadena},
  journal={IEEE Robotics and Automation Letters},
  volume={8},
  number={2},
  pages={520-527},
  year={2023},
  doi={10.1109/LRA.2022.3227865}
}

Additional Citations

Certain components of maplab are directly based on other publications.

Credits

  • Thomas Schneider
  • Marcin Dymczyk
  • Marius Fehr
  • Kevin Egger
  • Simon Lynen
  • Mathias Bürki
  • Titus Cieslewski
  • Timo Hinzmann
  • Mathias Gehrig
  • Florian Tschopp
  • Andrei Cramariuc
  • Lukas Bernreiter

For a complete list of contributors, have a look at CONTRIBUTORS.md

maplab's People

Contributors

alabate avatar b-hahn avatar benjaminkrummenacher avatar dymczykm avatar fabianbl avatar floriantschopp avatar gasserl avatar helenol avatar hermannsblum avatar hitimo avatar huannguyenarl avatar jzhuai0108 avatar lbern avatar mfehr avatar migvega avatar multiagent-mapping-sheep avatar patripfr avatar smauq avatar timonh avatar tricephalous avatar victorreijgwart avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

maplab's Issues

Error before core dumped: "Check failed: camID < RovioStateImpl<FILTER>::kNumCameras (1 vs. 1) "

Hi guys,

I'm trying the pre-release candidate #38 and at the moment when I run rovioli in LOC mode with any map built by using this same release I get the following error before rovioli dies:

F0306 13:36:01.399945 11136 RovioInterfaceImplInl.hpp:294] Check failed: camID < RovioStateImpl::kNumCameras (1 vs. 1)
*** Check failure stack trace: ***
@ 0x7f39cc5b526d google::LogMessage::Fail()
@ 0x7f39cc5b7083 google::LogMessage::SendToLog()
@ 0x7f39cc5b4dfb google::LogMessage::Flush()
@ 0x7f39cc5b7a6e google::LogMessageFatal::~LogMessageFatal()
@ 0x7f39cbc696eb rovio::RovioInterfaceImpl<>::processLocalizationLandmarkUpdates()
@ 0x7f39cbc9303a rovioli::RovioLocalizationHandler::processAsUpdate()
@ 0x7f39cbc9336c rovioli::RovioLocalizationHandler::processLocalizationResult()
@ 0x7f39cbb0a73b message_flow::MessageDeliveryQueue<>::deliverOldestMessage()
@ 0x40c71c std::_Function_handler<>::_M_invoke()
@ 0x40cbb9 std::__future_base::_State_baseV2::_M_do_set()
@ 0x7f39cbf19a99 __pthread_once_slow
@ 0x40ce33 _ZNSt17_Function_handlerIFvvEZN5aslam10ThreadPool14enqueueOrderedISt5_BindIFSt7_Mem_fnIMN12message_flow24MessageDeliveryQueueBaseEFvvEEPS7_EEJEEESt6futureINSt9result_ofIFT_DpT0_EE4typeEEmOSG_DpOSH_EUlvE_E9_M_invokeERKSt9_Any_data
@ 0x7f39cca0e628 aslam::ThreadPool::run()
@ 0x7f39cb730c80 (unknown)
@ 0x7f39cbf126ba start_thread
@ 0x7f39cb19f41d clone
./rovioli_loc_maplab_candidate_release.sh: line 28: 11113 Aborted (core dumped) rosrun rovioli rovioli --alsologtostderr=1 --v=2 --ncamera_calibration=$NCAMERA_CALIBRATION --imu_parameters_maplab=$IMU_PARAMETERS_MAPLAB --publish_debug_markers --datasource_type="rosbag" --optimize_map_to_localization_map=false --vio_localization_map_folder=$LOCALIZATION_MAP_INPUT --save_map_folder=$LOCALIZATION_MAP_OUTPUT --map_builder_save_image_as_resources=false --rovioli_descriptor_rotation_invariance=false --rovioli_enable_health_checking=false --datasource_rosbag=$ROSBAG $REST

Rovioli dies after a few seconds the bag is opened.

Extra info:

  • Running Ubutu 16.04 ROS Kinetic
  • catkin config

Profile: default
Extending: [explicit] /opt/ros/kinetic
Workspace: /home/marco/maplab_candidate_release_ws

Source Space: [exists] /home/marco/maplab_candidate_release_ws/src
Log Space: [exists] /home/marco/maplab_candidate_release_ws/logs
Build Space: [exists] /home/marco/maplab_candidate_release_ws/build
Devel Space: [exists] /home/marco/maplab_candidate_release_ws/devel
Install Space: [unused] /home/marco/maplab_candidate_release_ws/install
DESTDIR: [unused] None

Devel Space Layout: merged
Install Space Layout: None

Additional CMake Args: -DCMAKE_BUILD_TYPE=Release
Additional Make Args: None
Additional catkin Make Args: None
Internal Make Job Server: True
Cache Job Environments: False

Whitelisted Packages: None
Blacklisted Packages: None

Workspace configuration appears valid.

  • Screen shot
    screenshot_2018-03-06_13-54-28

I'm not sure if the

E0306 12:44:11.424502 9077 localization-summary-map.cc:104] No summary map could be found under "/home/marco/Documents/maplab_data/2018-02-27-LEE-H-Bear/opt_maps_maplab_release_candidate/lee_h"

obtained as first response when launching rovioli in loc mode should be considered fishy or not.
Any suggestions about this?

Cheers,
Marco.

How to rewrite IMU optimization component?

VIO with rotation only

The Running ROVIOLI in VIO mode optimize visual odometry by "rotation" and "translation" data from IMU. However, I want to modify this part to use "rotation" only to optimize visual odometry.

Could you give me some suggestion that how can I do this (how can I modify the code)?

Incorporating GPS signal

In addition, I also want to incorporate GPS into maplab, I aware that "How to integrate a new sensor: coming soon (IMU-Sigmas - Janosch's tutorial)" might be a relative topic (although it's not yet available). How can I do? (same process with the question above?)

How do I stop and save the recorded data when I Running ROVIOLI in VIO mode ???

Question: How do I stop and save the recorded data when I Running ROVIOLI in VIO mode ???

My question is simple:

My maplab is run well, and My question is when I Running ROVIOLI in VIO mode follow https://github.com/ethz-asl/maplab/wiki/Running-ROVIOLI-in-VIO-mode,

when I use rosbag model, after run the MH_01.bag, it have save the map in the aim path, but when I use the rostopic model to run the rosbag and run the realsense ZR300 , after the terminal0 was stop, the terminal2 always shows " No IMU messages ", " No camera messages ". And the aim path just have a empty file folder named "source", the two terminal 2 can't stop and can't save the map in the aim path.

SO, My question is :

  1. When I Running ROVIOLI in VIO mode , How do I save the record data of terminal 2 ?
  2. When I Running ROVIOLI in VIO mode , How do I stop terminal 2 instead of ctrl + C ?

What should I do? which did I wrong?
very thank you!

my command is:

<1> ###from a rostopic:

#terminal0:
roscore&
#termina1:
rosbag play /home/turtle/DataSet/EuRoC_datasets/Rosbag/MH_01_easy.bag
#terminal2:
source ~/maplab_ws/devel/setup.bash
rosrun rovioli tutorial_euroc_live /home/turtle/maplab_ws/output/

<2> ###from realsense ZR300:

#terminal1:
source ~/maplab_ws/devel/setup.bash
sudo modprobe uvcvideo
roslaunch maplab_realsense maplab_realsense.launch
#terminal2:
source ~/maplab_ws/devel/setup.bash
rosrun rovioli tutorial_realsense_live /home/turtle/maplab_ws/output

System:
- i5-3210, GT635, 4 core, lenovo M490
- Operating System: 64bit, 16.04
- Eigen: 3.2
- ROS: kinetic

Error when Running ROVIOLI in VIO mode with Building from a rostopic

system -- ubuntu 14.04.5

when i Running ROVIOLI in VIO mode: building from a rostopic, i follow the command:
source ~/maplab_ws/devel/setup.bash
roscore&
rosrun rovioli tutorial_euroc_live save_folder
then i got the error show bellow:

zhuzunjie@ubuntu14045:~/maplab_ws$ rosrun rovioli tutorial_euroc_live save_folder
I0109 16:56:04.857854 128866 rovio-factory.cc:169] Loading ROVIO configuration template: /home/zhuzunjie/maplab_ws/src/maplab/applications/rovioli/share//rovio_default_config.info
Set distortion parameters (Radtan) to: k1(-0.283408), k2(0.0739591), k3(0), p1(0.000193595), p2(1.76187e-05)
*** Aborted at 1515488164 (unix time) try "date -d @1515488164" if you are using GNU date ***
PC: @     0x7fc35e7f108f std::string::_Rep::_M_dispose()
*** SIGSEGV (@0xfffffffffffffff8) received by PID 128866 (TID 0x7fc3611beb80) from PID 18446744073709551608; stack trace: ***
    @     0x7fc35eeba330 (unknown)
    @     0x7fc35e7f108f std::string::_Rep::_M_dispose()
    @     0x7fc3603e7621 aslam::NCamera::~NCamera()
    @     0x7fc35ec3ca9f rovioli::RovioFlow::RovioFlow()
    @     0x7fc35ec42019 rovioli::RovioliNode::RovioliNode()
    @           0x40bf7f main
    @     0x7fc35e16df45 __libc_start_main
    @           0x40c83d (unknown)
/home/zhuzunjie/maplab_ws/src/maplab/applications/rovioli/scripts/tutorials/tutorial_euroc_live: line 20: 128866 Segmentation fault      (core dumped) rosrun rovioli rovioli --alsologtostderr=1 --v=2 --ncamera_calibration=$NCAMERA_CALIBRATION --imu_parameters_maplab=$IMU_PARAMETERS_MAPLAB --imu_parameters_rovio=$IMU_PARAMETERS_ROVIO --datasource_type="rostopic" --save_map_folder="$LOCALIZATION_MAP_OUTPUT" --map_builder_save_image_as_resources=false --optimize_map_to_localization_map=false $REST

what i supposed to do?
thanks in advance!

Build maplab on ARMv7-A (32bit)

First of all, thank you for this awesome project.

I'd like to use the online part of maplab on an embedded 32bit ARM cpu. I didn't find any way to build only the online part, so I tried to build the whole project and it fails on those errors:

  • maplab_common assert 64bit systems:
Errors     << maplab_common:make /home/balyo/maplab/logs/maplab_common/build.make.001.log                                                                                                    
/home/balyo/maplab/src/maplab/common/maplab-common/src/unique-id.cc: In function 'void common::internal::generateUnique128BitHash(uint64_t*)':
/home/balyo/maplab/src/maplab/common/maplab-common/src/unique-id.cc:9:3: error: static assertion failed: Please adapt the below to your non-64-bit system.
   static_assert(
   ^
make[2]: *** [CMakeFiles/maplab_common.dir/src/unique-id.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/maplab_common.dir/all] Error 2
make: *** [all] Error 2
cd /home/balyo/maplab/build/maplab_common; catkin build --get-env maplab_common | catkin env -si  /usr/bin/make --jobserver-fds=6,7 -j; cd -
  • rovio use x86-specific option:
Errors     << rovio:make /home/balyo/maplab/logs/rovio/build.make.000.log                                                                                                                    
c++: error: unrecognized command line option '-mssse3'
make[2]: *** [CMakeFiles/rovio.dir/src/CameraCalibration.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....

How much work would be required to make it compatible with this architecture ?

Only an empty resource folder in save_folder after running ROVIOLI ?

Hi, @schneith
Thandk you for sharing this great slam framework !
When I run rovioli according to the toturial ( https://github.com/ethz-asl/maplab/wiki/Running-ROVIOLI-in-VIO-mode )using rosrun, only an empty folder named resource can be found after the rosbag MH_01_easy.bag finish, and the rovioli can not exit from terminal. Is there someone meet the same situation?

9.21 - count : 1.
I1214 12:05:52.735507 1293 OutlierDetection.hpp:47] Detected outlier - mahalanobis (d / threshold):30.8664 > 9.21 - count : 1.
I1214 12:05:52.735666 1293 OutlierDetection.hpp:47] Detected outlier - mahalanobis (d / threshold):30.8664 > 9.21 - count : 1.
I1214 12:05:52.735836 1293 OutlierDetection.hpp:47] Detected outlier - mahalanobis (d / threshold):30.8664 > 9.21 - count : 1.
I1214 12:05:52.736001 1293 OutlierDetection.hpp:47] Detected outlier - mahalanobis (d / threshold):30.8664 > 9.21 - count : 1.
I1214 12:05:52.736196 1293 OutlierDetection.hpp:47] Detected outlier - mahalanobis (d / threshold):30.8664 > 9.21 - count : 1.
I1214 12:05:52.736395 1293 OutlierDetection.hpp:47] Detected outlier - mahalanobis (d / threshold):30.8664 > 9.21 - count : 1.
I1214 12:05:52.882935 1321 datasource-rosbag.cc:194] Rosbag playback finished!
I1214 12:05:53.603274 1266 rovioli-node.cc:110] Closing data source...
I1214 12:05:53.603322 1266 map-builder-flow.cc:111] Initializing landmarks of created map.
I1214 12:05:54.525544 1266 landmark-triangulation.cc:248] Getting vertices of mission: 7fe6..0000
I1214 12:05:54.531450 1266 landmark-triangulation.cc:253] Retriangulating landmarks of 1827 vertices
.
W1214 12:06:00.423387 1301 imu-camera-synchronizer.cc:103] No IMU messages have been received in the last 5 seconds. Check for measurement drops or if the topic is properly set in the maplab IMU configuration file
W1214 12:06:00.423663 1301 imu-camera-synchronizer.cc:111] No camera messages have been received in the last 5 seconds. Check for measurement drops or if the topic is properly set in the camera configuration file
W1214 12:06:05.423918 1301 imu-camera-synchronizer.cc:103] No IMU messages have been received in the last 5 seconds. Check for measurement drops or if the topic is properly set in the maplab IMU configuration file
W1214 12:06:05.424181 1301 imu-camera-synchronizer.cc:111] No camera messages have been received in the last 5 seconds. Check for measurement drops or if the topic is properly set in the camera configuration file
W1214 12:06:10.424419 1301 imu-camera-synchronizer.cc:103] No IMU messages have been received in the last 5 seconds. Check for measurement drops or if the topic is properly set in the maplab IMU configuration file
W1214 12:06:10.425138 1301 imu-camera-synchronizer.cc:111] No camera messages have been received in the last 5 seconds. Check for measurement drops or if the topic is properly set in the camera configuration file
W1214 12:06:15.426257 1301 imu-camera-synchronizer.cc:103] No IMU messages have been received in the last 5 seconds. Check for measurement drops or if the topic is properly set in the maplab IMU configuration file
W1214 12:06:15.426343 1301 imu-camera-synchronizer.cc:111] No camera messages have been received in the last 5 seconds. Check for measurement drops or if the topic is properly set in the camera configuration file
W1214 12:06:20.426757 1301 imu-camera-synchronizer.cc:103] No IMU messages have been received in the last 5 seconds. Check for measurement drops or if the topic is properly set in the maplab IMU configuration file

Can you help me for some advice?
Thank you!

Build Error: build opencv3_catkin failed

Hi,
I met a problem when execute catkin build maplap. The following error occurs:
make[2]: *** [opencv3_contrib-prefix/src/opencv3_contrib-stamp/opencv3_contrib-download] Error 1 make[1]: *** [CMakeFiles/opencv3_contrib.dir/all] Error 2 make: *** [all] Error 2 cd /home/xuqw/maplab_ws/build/opencv3_catkin; catkin build --get-env opencv3_catkin | catkin env -si /usr/bin/make --jobserver-fds=6,7 -j; cd -
I found that there is an answer on FAQ:
https://github.com/ethz-asl/maplab/wiki/FAQ#q-why-is-my-opencv3_catkin-build-freezing,
but I didn't installed matlab.
Could you tell me other possible reasons?
Best wishes
Qingwen

build error

Using Ubuntu 16.04, ROS Kinetic, with opencv 3.2 already installed.

Getting this error while it is trying to build its own opencv:
fatal error: LAPACKE_H_PATH-NOTFOUND/lapacke.h: No such file or directory

Realsense ZR300 rosnode: IR & RGB are not timestamped properly

I'm follow the https://github.com/IntelRealSense/librealsense/blob/v1.12.0/doc/installation.md and https://github.com/ethz-asl/maplab_realsense/blob/master/README.md to install the realsense ZR300, and use it to Running ROVIOLI in VIO mode, it works well besides the timestamp.
Does Some one could give me some solve advice ?
thank you!

my terminal command is:

terminal1:

source ~/maplab_ws/devel/setup.bash
rosrun rovioli tutorial_realsense_live /home/turtle/maplab_ws/output

terminal2

source ~/maplab_ws/devel/setup.bash
sudo modprobe uvcvideo
roslaunch maplab_realsense maplab_realsense.launch

the error is:

E0312 21:25:33.540139 24448 zr300.cc:490] The timestamp of frame 3 of type INFRARED did not originate from the motion tracking microcontroller. The timestamp domain is set to: 0 (camera = 0, microcontroller = 1). Skipping frame!
E0312 21:25:33.572222 24448 zr300.cc:490] The timestamp of frame 4 of type INFRARED did not originate from the motion tracking microcontroller. The timestamp domain is set to: 0 (camera = 0, microcontroller = 1). Skipping frame!
E0312 21:25:33.593979 24448 zr300.cc:490] The timestamp of frame 5 of type COLOR did not originate from the motion tracking microcontroller. The timestamp domain is set to: 0 (camera = 0, microcontroller = 1). Skipping frame!
E0312 21:25:33.626953 24448 zr300.cc:490] The timestamp of frame 7 of type COLOR did not originate from the motion tracking microcontroller. The timestamp domain is set to: 0 (camera = 0, microcontroller = 1). Skipping frame!
E0312 21:25:33.660995 24448 zr300.cc:490] The timestamp of frame 9 of type COLOR did not originate from the motion tracking microcontroller. The timestamp domain is set to: 0 (camera = 0, microcontroller = 1). Skipping frame!
E0312 21:25:33.692926 24448 zr300.cc:490] The timestamp of frame 11 of type COLOR did not originate from the motion tracking microcontroller. The timestamp domain is set to: 0 (camera = 0, microcontroller = 1). Skipping frame!
E0312 21:25:33.733770 24448 zr300.cc:490] The timestamp of frame 9 of type INFRARED did not originate from the motion tracking microcontroller. The timestamp domain is set to: 0 (camera = 0, microcontroller = 1). Skipping frame!
E0312 21:25:33.733849 24448 zr300.cc:490] The timestamp of frame 9 of type INFRARED2 did not originate from the motion tracking microcontroller. The timestamp domain is set to: 0 (camera = 0, microcontroller = 1). Skipping frame!
E0312 21:25:33.760748 24448 zr300.cc:490] The timestamp of frame 13 of type COLOR did not originate from the motion tracking microcontroller. The timestamp domain is set to: 0 (camera = 0, microcontroller = 1). Skipping frame!

Doxygen failed

Actions as follow:

  1. cd src/maplab/maplab
  2. doxygen-catkin-filegen -h maplab
  3. change some options in Doxyfile.in
  4. add add_doxygen(REQUIRED) in CMakeList.txt
  5. build as readme.

But got nothing in devel/share/maplab/doc

So, I think there must be something wrong with my step, but after I tried to reproduce the similar steps into different module's folders CMakeList.txt, still shown nothing.

That may not a Issue, but I got no way out...

Thanks if could give any tips. And Feel free to close this issue if you are not interested in reply.

Yusen QIN

Source of code in for algorithms/imu-integrator-rk4?

Hi,

I am wondering if there is any publication that the code in
algorithms/imu-integrator-rk4
is based on? It looks very similar to

Leutenegger, S., Lynen, S., Bosse, M., Siegwart, R., & Furgale, P. (2015). Keyframe-based visual–inertial odometry using nonlinear optimization. The International Journal of Robotics Research, 34(3), 314-334.

However it is not quite the same (for example the paper has a bounded random walk for the accelerometer bias, which the code doesn't have). Which publication should be cited when using the mentioned code?

I already checked the list of publications and did not find it there.

Thanks

How to read and develop the code?

Hi,
This whole package is really complicated and it will take me a long time for me to read through the code. But I don't know how to import such catkin_tools to an IDE. So I wonder using what tool you are developing the catkin_tools code? I had been using catkin make based package previously, so please forgive my ignorance of this experience. Thank you!

rovioli node can not run on the ubuntu without the desktop environment

Hi, I'm trying to rosrun rovioli on an Ubuntu server platform and use another computer to operate it. But the node will die after "cannot open display" error. I did not experience this kind of issue when I used the desktop version Ubuntu. And I have tried set MAKE_SCENE and DMAKE_SCENE to 0 in the maplab_dependencies/internal/maplab_rovio/CMakeLists.txt, which doesn't solve this problem. Could anyone help me with this? Thanks!
screenshot from 2018-03-01 10-23-07

Recommanded devices

Hi,
I tried to use Rovioli with low cost devices (oCam 1MGN-U Global shutter camera and MPU-6050), and here is the best result I got for two simple loop in my building:

screenshot from 2017-12-20 10-32-51

I guess that the main problem is my IMU which may be too cheap. So, I would like to know what devices do you use ? It could be nice to add a wiki page with recommanded devices that you or other people tried (+ the associated imu calibration).

Failure to compile in Nvidia TX2 (ARM)

Hi,
I tried to compile the maplab following the standard steps in wiki.
My environment is Nvidia TX2, running ubuntu 16.04 (flashed using Jetpack 3.1), ROS Kinetic.
It failed with the error:

cd /home/nvidia/ws_maplab/build/opengv; catkin build --get-env opengv | catkin env -si  /usr/bin/cmake /home/nvidia/ws_maplab/src/maplab_dependencies/3rdparty/opengv --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/nvidia/ws_maplab/devel -DCMAKE_INSTALL_PREFIX=/home/nvidia/ws_maplab/install -DCMAKE_BUILD_TYPE=Release; cd -
...............................................................................
_______________________________________________________________________________
Errors     << glog_catkin:make /home/nvidia/ws_maplab/logs/glog_catkin/build.make.000.log
/home/nvidia/ws_maplab/build/glog_catkin/glog_src-prefix/src/glog_src/missing: Unknown `--is-lightweight' option
Try `/home/nvidia/ws_maplab/build/glog_catkin/glog_src-prefix/src/glog_src/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
./config.guess: unable to guess system type

This script, last modified 2007-07-22, has failed to recognize
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from

  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
and
  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub

If the version you run (./config.guess) is already up to date, please
send the following data and any information you think might be
pertinent to <[email protected]> in order to provide the needed
information to handle your system.

config.guess timestamp = 2007-07-22

uname -m = aarch64
uname -r = 4.4.38+
uname -s = Linux
uname -v = #7 SMP PREEMPT Tue Nov 7 12:35:49 EST 2017

/usr/bin/uname -p = 
/bin/uname -X     = 

hostinfo               = 
/bin/universe          = 
/usr/bin/arch -k       = 
/bin/arch              = 
/usr/bin/oslevel       = 
/usr/convex/getsysinfo = 

UNAME_MACHINE = aarch64
UNAME_RELEASE = 4.4.38+
UNAME_SYSTEM  = Linux
UNAME_VERSION = #7 SMP PREEMPT Tue Nov 7 12:35:49 EST 2017
configure: error: cannot guess build type; you must specify one
make[2]: *** [glog_src-prefix/src/glog_src-stamp/glog_src-configure] Error 1
make[1]: *** [CMakeFiles/glog_src.dir/all] Error 2
make: *** [all] Error 2

The compilation on i5 ubuntu16.04-kinetic works perfectly.
Seems the arm architecture is completely not supported?
Or is there anyway to only compile ROVIOLI on the arm?

Thank you in advance.
Kind Regards,
Chang

Online localization seldom succeeded

Hi, I'm testing the ROVIOLI in Localization mode using an optimized loop-close map generated by maplab. But online localization seldom achieved (please check the video: https://www.dropbox.com/s/ob0f0fbz9etmb7a/online_localization_seldom_succeed.mp4?dl=0, and when I did this test, the scene and lighting conditions did not change comparing to the data that I used to generated the map). Should I try to tune those vi_map_landmark_quality parameters to get more landmarks? And parameters described in https://github.com/ethz-asl/maplab/wiki/Understanding-loop-closure have nothing to do with online localization, right? I would be really grateful if anyone could help me with this issue. Thanks.

ROVIOLI crashing at start with Tango device

Hi Maplab team;

I calibrated a Lenovo Phab 2 Pro Tango device with kalibr using fov distortion model, but after recording a rosbag and use rovioli, or trying to execute rovioli from a rostopic I got error every time. It seem start preview the image of the camera and features (I'm using the fisheye camera of the device) for a second but after that it crashes with the following log (I hightlighted in bold the error message ). I'm using usb thetering for improving the bandwitch and I got 30hz in camera and 200Hz in IMU and using Tango ROS Streamer for publishing the topics. Could you see any clue here? Thanks in advance

`E0305 10:09:21.436723 32714 yaml-serialization.h:43] Key "id" does not exist
W0305 10:09:21.437057 32714 sensor.cc:49] Unable to find an ID field. Generating a new random id.
I0305 10:09:21.475286 32714 rovio-factory.cc:178] Loading ROVIO configuration template: /home/innovae/Escritorio/maplab_enero_2018_ws/src/maplab/applications/rovioli/share//rovio_default_config.info
Set distortion parameters (fov) to: w(0.926948)
I0305 10:09:21.628355 32714 rovio-localization-handler.cc:92] Localization mode: structure constraints.
Registered filter state update callback.
I0305 10:09:21.700196 32714 map-builder-flow.cc:31] Set VIMap folder to: save_folder_32
I0305 10:09:21.714289 32714 rovioli-node.cc:99] Starting data source...
I0305 10:09:21.714375 32714 rovioli-app.cc:140]
Message delivery queues:
subscriber-node queue-topic queue-id num elements
MapBuilderFlow ROVIO_ESTIMATES d6df..0000 0
MapBuilderFlow VIO_UPDATES 45a8..0000 0
RovioFlow LOCALIZATION_RESULT d606..0000 0
DataPublisherFlow ROVIO_ESTIMATES 23e7..0000 0
RovioFlow IMAGE_MEASUREMENTS 1cf3..0000 0
FeatureTrackingFlow ROVIO_ESTIMATES a527..0000 0
DataPublisherFlow LOCALIZATION_RESULT 64d4..0000 0
ImuCameraSynchronizerFlow IMAGE_MEASUREMENTS 1f91..0000 0
RovioFlow IMU_MEASUREMENTS a3b6..0000 0
MapBuilderFlow LOCALIZATION_RESULT cbe5..0000 0
MapBuilderFlow TRACKED_NFRAMES_AND_IMU 95d4..0000 0
DataPublisherFlow RAW_VIMAP 9ca2..0000 0
ImuCameraSynchronizerFlow IMU_MEASUREMENTS 759b..0000 0
FeatureTrackingFlow SYNCED_NFRAMES_AND_IMU e60a..0000 0
-- Filter: Initializing using accel. measurement ...
-- Filter: Initialized at t = 1
[FilterBase::addUpdateMeas] Warning: included measurements at time 0.966738007 before safeTime 1

W0305 10:09:21.951208 32732 rovio-flow.cc:148] ROVIO rejected image measurement. Latency is too large.
F0305 10:09:22.006186 32732 imu-measurements-buffer-inl.h:11] Check failed: timestamp_nanoseconds > last_value.timestamp (1520240962222000000 vs. 1520240962222000000) Timestamps not strictly increasing.

*** Check failure stack trace: ***
F0305 10:09:22.006188 32734 FilterBase.hpp:34] Check failed: measMap_.count(t) == 0u (1 vs. 0)
*** Check failure stack trace: ***
@ 0x7f8b728df26d google::LogMessage::Fail()
@ 0x7f8b728df26d google::LogMessage::Fail()
@ 0x7f8b728e1083 google::LogMessage::SendToLog()
@ 0x7f8b728e1083 google::LogMessage::SendToLog()
@ 0x7f8b728dedfb google::LogMessage::Flush()
@ 0x7f8b728dedfb google::LogMessage::Flush()
@ 0x7f8b728e1a6e google::LogMessageFatal::~LogMessageFatal()
@ 0x7f8b728e1a6e google::LogMessageFatal::~LogMessageFatal()
@ 0x7f8b71e59fc8 vio_common::ImuMeasurementBuffer::addMeasurements()
@ 0x7f8b71efb8ad LWF::MeasurementTimeline<>::addMeas()
@ 0x7f8b71e588b3 rovioli::ImuCameraSynchronizer::addImuMeasurements()
@ 0x7f8b71f937a3 rovio::RovioInterfaceImpl<>::processImuUpdate()
@ 0x7f8b71fc38d1 ZNSt17_Function_handlerIFvRKSt10shared_ptrIN3vio14ImuMeasurementEEEZN7rovioli25ImuCameraSynchronizerFlow19attachToMessageFlowEPN12message_flow11MessageFlowEEUlS5_E0_E9_M_invokeERKSt9_Any_dataS5
@ 0x7f8b71fb2e82 ZNSt17_Function_handlerIFvRKSt10shared_ptrIN3vio14ImuMeasurementEEEZN7rovioli9RovioFlow19attachToMessageFlowEPN12message_flow11MessageFlowEEUlRKS0_IKS2_EE_E9_M_invokeERKSt9_Any_dataS5
@ 0x7f8b71fb67eb message_flow::MessageDeliveryQueue<>::deliverOldestMessage()
@ 0x40c72c std::_Function_handler<>::_M_invoke()
@ 0x40cbc9 std::__future_base::_State_baseV2::_M_do_set()
@ 0x7f8b71fb67eb message_flow::MessageDeliveryQueue<>::deliverOldestMessage()
@ 0x40c72c std::_Function_handler<>::_M_invoke()
@ 0x40cbc9 std::__future_base::_State_baseV2::_M_do_set()
@ 0x7f8b72244a99 __pthread_once_slow
@ 0x40ce43 _ZNSt17_Function_handlerIFvvEZN5aslam10ThreadPool14enqueueOrderedISt5_BindIFSt7_Mem_fnIMN12message_flow24MessageDeliveryQueueBaseEFvvEEPS7_EEJEEESt6futureINSt9result_ofIFT_DpT0_EE4typeEEmOSG_DpOSH_EUlvE_E9_M_invokeERKSt9_Any_data
@ 0x7f8b72244a99 __pthread_once_slow
@ 0x40ce43 _ZNSt17_Function_handlerIFvvEZN5aslam10ThreadPool14enqueueOrderedISt5_BindIFSt7_Mem_fnIMN12message_flow24MessageDeliveryQueueBaseEFvvEEPS7_EEJEEESt6futureINSt9result_ofIFT_DpT0_EE4typeEEmOSG_DpOSH_EUlvE_E9_M_invokeERKSt9_Any_data
@ 0x7f8b72d38638 aslam::ThreadPool::run()
@ 0x7f8b72d38638 aslam::ThreadPool::run()
@ 0x7f8b71a5bc80 (unknown)
@ 0x7f8b71a5bc80 (unknown)
@ 0x7f8b7223d6ba start_thread
@ 0x7f8b7223d6ba start_thread
@ 0x7f8b714ca41d clone
/home/innovae/Escritorio/maplab_enero_2018_ws/src/maplab/applications/rovioli/share/rovioli_vio_lenovo_live: línea 18: 32714 Abortado (`core' generado) rosrun rovioli rovioli --alsologtostderr=1 --v=2 --ncamera_calibration=$NCAMERA_CALIBRATION --imu_parameters_maplab=$IMU_PARAMETERS_MAPLAB --datasource_type="rostopic" --save_map_folder="$LOCALIZATION_MAP_OUTPUT" --map_builder_save_image_as_resources=false --optimize_map_to_localization_map=false $REST'

Current configuration of Rovioli

ROVIOLI_configuration.tar.gz

Rosbag file for reproducing the issue:
(https://wetransfer.com/downloads/1e1a895708fa2eae27198f001230ffd420180305100553/68335b8e5118c69450ff75b0a158512b20180305100553/5a2f60)

error: static assertion failed: Voxblox 3D points and maplab 3D points are not the same!

Hi, when I run catkin build maplab,this error comes out, How should I do to solve it?
maplab/interfaces/voxblox_interface/src/integration.cc:291:3: error: static assertion failed: Voxblox 3D points and maplab 3D points are not the same!
static_assert(
^
/maplab/interfaces/voxblox_interface/src/integration.cc:294:3: error: static assertion failed: Voxblox 3D point vectors and maplab 3D point vectors are not the same!
static_assert(
^
/maplab/interfaces/voxblox_interface/src/integration.cc:297:3: error: static assertion failed: Voxblox transformations and maplab transformations are not the same!
static_assert(

Using ROVIOLI on a pan-tilt-zoom camera sensor dataset

Hello,
I am trying to use Rovioli (in VIO mode) on a dataset (rosbag) to create a VI map.
However, I'm not sure if I'm correctly utilizing Rovioli.
My dataset was acquired by an Autonomous Surface Vessel using a Pan-Tilt-Zoom camera surveying a lakeshore.
At the moment, I am using the default euroc calibration files.

Here are the topics of my rosbag:
image

Here is how I am calling rovioli, and its output:
image

Once I open the map folder created by rovioli, it contains an empty resources directory and that's it.

My main question is: Is rovioli not recognizing the topics of my dataset (such as imu measurements) due to incorrect calibration files, or due to me not utilizing rovioli correctly?
Please give me advice, and thank you!

NOTES:
Maplab is successfully installed on Ubuntu 14.04 with the following plugins:

  • anchoring
  • console
  • data_import_export
  • dense_reconstruction
  • landmark_manipulation
  • loopclosure
  • map-optimization
  • map-optimization-legacy
  • map_sparsification
  • mapping_workflows
  • posegraphmanipulation
  • statistics
  • summarization
  • vi_map_basic
  • visualization

Failed on CSV export

Hi,
when I try to export the CSV file from the map, an error appears and no data are exported:
"F1211 18:56:26.139300 6256 channel-definitions.h:21] Check failed: it != channels.end() Channelgroup does not contain channel VISUAL_KEYPOINT_SCALES".
Thank you for the help,
Michela

How to use realsenseZR300 with vio rostopic mode

I am really a new to ROS, the thing is that i want to use realsenseZR300 with vio rostopic mode.
all i have done is : change the label "cam0" to "camera/color"(realsenseZR300 color camera topic is /camera/color/image_raw), i change the other .yaml file as well.

but it feedback:

W0110 15:19:20.265130 90386 imu-camera-synchronizer.cc:103] No IMU messages have been received in the last 5 seconds. Check for measurement drops or if the topic is properly set in the maplab IMU configuration file
W0110 15:19:20.265285 90386 imu-camera-synchronizer.cc:111] No camera messages have been received in the last 5 seconds. Check for measurement drops or if the topic is properly set in the camera configuration file

is anywhere else i should change?

I know i should learn ROS first, then ask. But what i want to do is only do some experimemts, i.e. give maplab some input and see the results. I don't know how much cost will it be to learn ROS prior and whether its worth.

I sincerely wish someone could show me the path!
Thanks in advance.

Kalibr IMU/Camera Config Conversion

When using the kalibr_maplab_config exporter it does not properly convert the distortion type. Using radtan model kalibr by default will export a:

distortion_model: radtan

while rovioli expects "Unknown distortion model: "radtan". Valid values are {none, equidistant, fisheye, radial-tangential}.". It was simple to change, but it would be nice to have the converter actually convert it to the right format, or a note added to the wiki.

Attached is the file that I converted from (renamed to txt instead of yaml so it could be uploaded to github).
camchain-imucam-2017-11-15-11-05-41_0.txt

Also the IMU file on the wiki is missing the "id" and "sensor_type" fields.

catkin build maplab failed

Hi, I want to try maplab on my computer(Ubuntu16.04 + ROS kinetic),
but when I run _catkin build maplab_in the directory "catkin_ws", it is shown as below:
The build space at '/home/catkin_ws/build' was previously built by 'catkin_make'. Please remove the build space or pick a different build space.
How could I solve this problem?

JPL convention of Quaternions

Thanks for your hard work on maplab, which give me many great ideas. I have little experiences on JPL convention of Quaternions. So questions confuse me a lot.

1.Convert active Hamiltonian rotation (minkindr, Eigen) to passive JPL

This sentence comes from https://github.com/ethz-asl/maplab/blob/master/algorithms/map-optimization/src/optimization-state-buffer.cc#L266

But as I read Joan Sola's tech report before,

http://www.iri.upc.edu/people/jsola/JoanSola/objectes/notes/kinematics.pdf

where he said both Hamiton and JPL are passive on page 36

2. Quaternion inverse or not?

https://github.com/ethz-asl/maplab/blob/master/algorithms/map-optimization/src/optimization-state-buffer.cc#L196 has no inverse

https://github.com/ethz-asl/maplab/blob/master/algorithms/map-optimization/src/optimization-state-buffer.cc#L218 has an inverse

And what's the difference?

3.May be a typo?

https://github.com/ethz-asl/maplab/blob/master/algorithms/ceres-error-terms/include/ceres-error-terms/visual-error-term-inl.h#L186

Do we have a minus here?

No Unified Projection Support?

Hello,

I was about to test Rovioli in VIO mode using my dataset which consists of fisheye cameras and I have successfully translated my Kalibr camchain into a Rovioli ncamera yaml file.
I however receive the following error when I launch Rovioli:

F0130 16:38:04.192309 26766 rovio-factory.cc:52] Check failed: aslam_camera.getType() == aslam::Camera::Type::kPinhole (kUnifiedProjection vs. kPinhole) Only pinhole models supported.
*** Check failure stack trace: ***
    @     0x7f2e0e53f26d  google::LogMessage::Fail()
    @     0x7f2e0e541083  google::LogMessage::SendToLog()
    @     0x7f2e0e53edfb  google::LogMessage::Flush()
    @     0x7f2e0e541a6e  google::LogMessageFatal::~LogMessageFatal()
    @     0x7f2e0db10013  rovioli::constructAndConfigureRovio()
    @     0x7f2e0dc23fed  rovioli::RovioFlow::RovioFlow()
    @     0x7f2e0dc2aa02  rovioli::RovioliNode::RovioliNode()
    @           0x40b632  main
    @     0x7f2e0d0a2830  __libc_start_main
    @           0x40bf09  _start

In order to set the unified projection model, I set the following in the ncamera yaml file:

  type: unified-projection

Did I miss a parameter to let Rovioli know I am using the Unified Projection model? Or is it not supported at all for now and Rovioli can only accept Pinhole models?

Regards,

Audren

No ros version

Hi, will you release a no ros version for maplab? Is it possible to do this work for one person in two weeks?

Failure to compile in Nvidia TX2 (Aarch64)

First of all, thank you for this awesome project.

I'm tring to compile the maplab on Nvidia Jetson TX2 which's architecture is aarch64.

c++: error: unrecognized command line option ‘-mfpu=neon’



  • The next ,I checked out the feature/port-to-arm of the brisk,but it still failed when building brisk with following errors:
 c++: error: unrecognized command line option ‘-mssse3’
make[2]: *** [CMakeFiles/rovio.dir/src/CameraCalibration.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
c++: error: unrecognized command line option ‘-mssse3’
make[2]: *** [CMakeFiles/rovio.dir/src/Camera.cpp.o] Error 1
c++: error: unrecognized command line option ‘-mssse3’
make[2]: *** [CMakeFiles/rovio.dir/src/FeatureCoordinates.cpp.o] Error 1



  • Once again,I modified maplab_dependencies/internal/ethzasl_brisk/agast/cmake/export_flags.cmake to:
set(HAS_NEON TRUE)
add_definitions(-mfpu=neon)

It failed when building brisk with following errors:

c++: error: unrecognized command line option ‘-mfpu=neon’



  • Finally,I modified maplab_dependencies/internal/ethzasl_brisk/agast/cmake/export_flags.cmake to:
set(HAS_NEON OFF)
#add_definitions(-mfpu=neon) 

It failed when building brisk with following errors:

maplab_dependencies/internal/ethzasl_brisk/brisk/include/brisk/internal/image-down-sampling.h:44:23: fatal error: emmintrin.h: No such file or directory



  • My environment is :
$ uname -a
Linux CAR01-CU03 4.4.38 #1 SMP PREEMPT Tue Oct 10 15:24:32 CST 2017 aarch64 aarch64 aarch64 GNU/Linux

Plotter must be non NULL

so i followed the instructions to install and build maplab on ubuntu 16.04

then i tried to follow the "use basic console" instructions and got this error

F0103 14:11:54.528542 22025 console-plugin-base-with-plotter.h:23] Check failed: 'plotter' Must be non NULL
*** Check failure stack trace: ***
*** Aborted at 1514988714 (unix time) try "date -d @1514988714" if you are using GNU date ***
PC: @     0x7f439bbdf428 gsignal
*** SIGABRT (@0x3e800005609) received by PID 22025 (TID 0x7f439cd26b00) from PID 22025; stack trace: ***
    @     0x7f439bbdf4b0 (unknown)
    @     0x7f439bbdf428 gsignal
    @     0x7f439bbe102a abort
    @           0x402973 common::glogFailFunctionWithConsoleRecovery()
    @     0x7f439c72326d google::LogMessage::Fail()
    @     0x7f439c725083 google::LogMessage::SendToLog()
    @     0x7f439c722dfb google::LogMessage::Flush()
    @     0x7f439c725a6e google::LogMessageFatal::~LogMessageFatal()
    @     0x7f4386063c85 google::CheckNotNull<>()
    @     0x7f4386052475 vi_map::VIMapBasicPlugin::VIMapBasicPlugin()
    @     0x7f4386054c75 createConsolePlugin
    @     0x7f439c511e47 maplab::MapLabConsole::discoverAndInstallPlugins()
    @     0x7f439c5127c7 maplab::MapLabConsole::MapLabConsole()
    @           0x402694 main
    @     0x7f439bbca830 __libc_start_main
    @           0x402739 _start
runmaplab.sh: line 2: 22025 Aborted                 (core dumped) rosrun maplab_console maplab_console --ros_free

i even ran the build again and it said something about skipping 14 things, but no reason why. there were no failures

any idea what went wrong?

IMU update rate

I modified the IMU update rate to be same with the image frame rate(timestamp also same with each other). And create a rosbag for maplab.
Will "ROVIOLI in VIO mode" run correctly under this rate? If not, how can I correct this issue?

I got some related error:

-- Filter: Initialized at t = 1413393212.28
W0219 16:41:30.055050 28081 imu-measurements-buffer.cc:165] Timeout reached while trying to get the requested IMU data. Requested range: 1413393212255760500 to 1413393212355760500.
W0219 16:41:30.055414 28081 imu-measurements-buffer.cc:171] The relevant IMU data will never be available. Either the buffer is too small or a sync issue occurred.
E0219 16:41:30.055459 28081 imu-camera-synchronizer.cc:173] Camera/IMU data out-of-order. This might be okay during initialization.
I0219 16:41:30.208765 28073 OutlierDetection.hpp:47] Detected outlier - mahalanobis (d / threshold):12.5689 > 9.21 - count : 1.

Clarification of the Jacobians for the visual-error-term

Hi!
I have a question regarding the computation of the jacobians implemented in the file visual-error-term-inl.h at the following place:
screenshot_code
I fail to understand why there is a multiplication with 4.0 before the jacobian of the local parameterization. Could you give me an explanation where the term is coming from?
Kind regards,
Marco

ROS Bag Image Topics

Is there a way to remove the suffix from the camera topics?

For example when loading a bag the correct topic:
/bb2/left/image_color
Gets replaced with this incorrect one:
/bb2/left/image_color/image_raw
I just manually removed it here but I don't see a clear way to specify to use the correct topic in the config file.

Is there a way to publish real-time point cloud?

Hi,

I am trying to use only the front end of the framework and build a voxel map from generated point cloud in real time, but from my understanding of the framework it seems that publishing point cloud is not currently supported from provided WIKIs. If it is the case, is there a way to realize this function?

Thanks for your help
shr

Which visual inertial sensors are fully supported and work best with ROVIOLI ?

I am planning to work on ROVIOLI and our lab does not have any visual inertial sensors. We are trying to build large scale outdoor maps and perform online localization, specifically for self driving car applications.

Could you suggest which VI sensors are fully supported and give good results with ROVIOLI ?

Thank you!

Map recorded by ROVIOLI seems very sparse

I'm trying to do dense reconstruction of a room using maplab/ROVIOLI with a Intel Realsense ZR300.
ROVIOLI is running fine with the ZR300, but the map that is generated in the end only contains very few keyframes. Maplab fails to detect any loop closures and I don't see how this map could be used to reconstruct a dense map given that there are so few frames either.

This is the recoding I made (by walking up and down the corridor in our lab and doing a few circles in some of the offices)

$ rosbag info hallway3.bag
path:        hallway3.bag
version:     2.0
duration:    10:04s (604s)
start:       Feb 28 2018 17:03:22.89 (1519833802.89)
end:         Feb 28 2018 17:13:27.11 (1519834407.11)
size:        20.7 GB
messages:    341535
compression: none [17991/17991 chunks]
types:       cuckoo_time_translator/DeviceTimestamp [4e34c15f54cbfa3f64408fe764e59ff4]
             dynamic_reconfigure/Config             [958f16a05573709014982821e6822580]
             dynamic_reconfigure/ConfigDescription  [757ce9d44ba8ddd801bb30bc456f946f]
             sensor_msgs/CameraInfo                 [c9a58c1b0b154e0e6da7578cb991d214]
             sensor_msgs/Image                      [060021388200f6f0f447d0fcd9c64743]
             sensor_msgs/Imu                        [6a62c6daae103f4ff57a132d6f95cec2]
topics:      /zr300_node/color/camera_info                     17971 msgs    : sensor_msgs/CameraInfo                
             /zr300_node/color/image_raw                       17970 msgs    : sensor_msgs/Image                     
             /zr300_node/device_time                          120233 msgs    : cuckoo_time_translator/DeviceTimestamp
             /zr300_node/device_time/parameter_descriptions        1 msg     : dynamic_reconfigure/ConfigDescription 
             /zr300_node/device_time/parameter_updates             1 msg     : dynamic_reconfigure/Config            
             /zr300_node/fisheye/camera_info                   18025 msgs    : sensor_msgs/CameraInfo                
             /zr300_node/fisheye/image_raw                     18025 msgs    : sensor_msgs/Image                     
             /zr300_node/imu                                  149309 msgs    : sensor_msgs/Imu

Maplab tells me that there are only 140 nodes in the map:

maplab <hallway3>:/$ ms
Mission statistics: 

Mission 0:          		c3b971e3ffffffff0f00000000000000	Viwls
	NCamera Sensor:     	c6a6f6c779e1b09cf49f11629787945c
	IMU Sensor:         	c63aecb41babcabc7e1fac37c7cbe7bf
	Vertices:           	140                      
	Landmarks:          	7807                     
	Landmarks by first observer backlink:	                         
	Camera 0:           	4740 (g:66 b:4674 u:0)   
	Camera 1:           	3067 (g:22 b:3045 u:0)   
	Observations:       	32427                    
	Num edges by type:  	                         
	IMU:                	139                      
	Wheel-odometry:     	0                        
	Loop-closure:       	0                        
	Distance travelled [m]:	433.511871               
	Start to end time:  	2018_03_02_16_28_50 to 2018_03_02_16_28_50
	T_G_M               	unknown  

Also, there are only 280 frames in that map:

$ ls resources/raw_images | wc -l
280

This is the resulting track:
rovioli_hallway3_track

The command I used to run the odometry:

#!/usr/bin/env bash

my_config_dir="/home/samuel/calibrations/zr300/calib4_imu/maplab"

LOCALIZATION_MAP_OUTPUT="/home/samuel/maps/"
ROSBAG=$1
NCAMERA_CALIBRATION="$my_config_dir/ncamera.yaml"
IMU_PARAMETERS_MAPLAB="$my_config_dir/maplab_imu.yaml"
IMU_PARAMETERS_ROVIO="$my_config_dir/rovio_imu.yaml"
REST=$@

rosrun rovioli rovioli \
  --alsologtostderr=1 \
  --v=2 \
  --ncamera_calibration=$NCAMERA_CALIBRATION  \
  --imu_parameters_maplab=$IMU_PARAMETERS_MAPLAB \
  --imu_parameters_rovio=$IMU_PARAMETERS_ROVIO \
  --datasource_type="rosbag" \
  --save_map_folder="$LOCALIZATION_MAP_OUTPUT" \
  --optimize_map_to_localization_map=false \
  --map_builder_save_image_as_resources=true \
  --datasource_rosbag=$ROSBAG $REST

What am I doing wrong here? Do I have to change the parameters for ROVIO (in rovio_default_config.info)? Or am I supposed to record the /maplab_rovio/T_G_I topic myself?

Missing Dependencies

Had some trouble doing a fresh install on ubuntu 16.04 needed to clone these two repositories to successfully build all packages from maplab and maplab_dependencies.

Seems that hand_eye_calibration_batch_estimation depends on oomact, with oomact depending on those last four links.


Also the hand_eye_calibration is at ce88f43e655841ce609f8a0a5e7ec301d015e03d while the newest f75a8e8ffb791292e5fbb127298d8a4ed32677ec is needed to correct the calibration header includes. I assume it is because I am using the newest oomact as this was not included in the dependency repo.

stereo ROVIO

I set -DROVIO_NCAM=2 in cmakelist of rovio, but I cannot ensure it run as stereo. I can see the video using
visualize_raw_images, but nothing when using visualize_disparity_maps. Do I need to modify other parameters? I use Euroc dataset.

Protobuf Build Issue

Having a issue building this with catkin tools.
It seems that the protobuf_catkin library does not support isolated building?
Error I am getting on ubuntu 16.04 and related link:

make[2]: /home/xxxx/workspace/catkin_ws_maplab/devel/.private/maplab_common/bin/protoc: Command not found
make[2]: *** [compiled_proto/maplab-common/id.pb.cc] Error 127
make[2]: *** Waiting for unfinished jobs....
make[2]: /home/xxxx/workspace/catkin_ws_maplab/devel/.private/maplab_common/bin/protoc: Command not found
make[2]: *** [compiled_proto/maplab-common/eigen.pb.cc] Error 127
make[1]: *** [CMakeFiles/maplab_common.dir/all] Error 2
make: *** [all] Error 2

Camera IMU Sync Rovioli

I don't see a location where the system is handling a camera-imu time offset generated for kalibr. Is there an ideal location to add this? My thought is to simply subtract from the incoming ROS timestamp, but it could be incorporated into the imu-camera-synchronizer.cc, which one would be ideal?

Based on the warnings I get (camera/imu data out-of-order) I need to also look into if this impacts the syncing (I don't think it should from a quick glance).

could you please explain the math of ComputeProjectionMatrix?

my question is about the function in the file algorithm/loopclosure/descriptor-projection/src/build-projection-matrix.cc
void ComputeProjectionMatrix(const Eigen::MatrixXf& cov_matches, const Eigen::MatrixXf& cov_non_matches, Eigen::MatrixXf* A);
the paper "maplab: an open framework for research in visual-inertial mapping and localization" uses inverted multi-index[36] in the "loop closure/localization" module,
"[36]get out of my lab: large-scale, real-time visual-inertial localization" refers to "keypoint design and evaluation for place recognition in 2D lidar maps" to do the descriptor projection,
image
image
the function ComputeProjectionMatrix seems different to equations above, could you please explain the math? or give me some papers to understand it?

build failed with glog_catkin

I am trying to use maplab on a Jetson TX2, Unbunt 16.04, ROS kinetic. I noted the other thread for AMR devices:
#7

but I thought I'd see if a more recent try would work. Perhaps the best answer is to try the experimental build suggested at the end of that thread. I'll post what I got here, perhaps it will be useful.

I followed the installation steps but the build fails at glog_catkin, with this error:

Errors << glog_catkin:make /home/nvidia/maplab_ws/logs/glog_catkin/build.make.001.log
/home/nvidia/maplab_ws/build/glog_catkin/glog_src-prefix/src/glog_src/missing: Unknown --is-lightweight' option Try /home/nvidia/maplab_ws/build/glog_catkin/glog_src-prefix/src/glog_src/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
./config.guess: unable to guess system type

I tried the suggestion to look at the glog_missing --help output but it was not informative.

Here is the output of catkin config:

nvidia@tegra-ubuntu:~/maplab_ws$ catkin config

Profile: default
Extending: [explicit] /opt/ros/kinetic
Workspace: /home/nvidia/maplab_ws

Source Space: [exists] /home/nvidia/maplab_ws/src
Log Space: [exists] /home/nvidia/maplab_ws/logs
Build Space: [exists] /home/nvidia/maplab_ws/build
Devel Space: [exists] /home/nvidia/maplab_ws/devel
Install Space: [unused] /home/nvidia/maplab_ws/install
DESTDIR: [unused] None

Devel Space Layout: merged
Install Space Layout: None

Additional CMake Args: -DCMAKE_BUILD_TYPE=Release
Additional Make Args: None
Additional catkin Make Args: None
Internal Make Job Server: True
Cache Job Environments: False

Whitelisted Packages: None
Blacklisted Packages: None

Workspace configuration appears valid.
nvidia@tegra-ubuntu:~/maplab_ws$ catkin config

Profile: default
Extending: [explicit] /opt/ros/kinetic
Workspace: /home/nvidia/maplab_ws

Source Space: [exists] /home/nvidia/maplab_ws/src
Log Space: [exists] /home/nvidia/maplab_ws/logs
Build Space: [exists] /home/nvidia/maplab_ws/build
Devel Space: [exists] /home/nvidia/maplab_ws/devel
Install Space: [unused] /home/nvidia/maplab_ws/install
DESTDIR: [unused] None

Devel Space Layout: merged
Install Space Layout: None

Additional CMake Args: -DCMAKE_BUILD_TYPE=Release
Additional Make Args: None
Additional catkin Make Args: None
Internal Make Job Server: True
Cache Job Environments: False

Whitelisted Packages: None
Blacklisted Packages: None

Workspace configuration appears valid.


Before submitting this issue, please consider the following checklist:

  • Consult the FAQ and Known Issues pages.
  • Make sure maplab was installed using the proper installation instructions
  • For bugs and build problems please add (if applicable):
    • Version of:
      • Operating System (32/64bit, 14.04/16.04/...)
      • Eigen
      • ROS
    • A backtrace (if maplab crashed)
    • Run catkin config in your workspace and post it here.
    • Details about the commands/scripts used.
    • Details about special parameter values or manual changes to the system.
    • Pictures/screen recordings
  • For general questions:
    • Please elaborate, we are no mind readers :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.