Items with no label
3335 Discussions

Have any document or sample code for using relocalization to correct odometry drift?

AAll
Beginner
2,321 Views

Hi,

I refer this developer guide https://software.intel.com/sites/products/realsense/slam/developer_guide.html Intel® RealSense™ for Linux - SLAM Library: Developer's Guide, but have no idea for using relocalization.

Have any document or sample code to describe detail?

Thanks very much.

0 Kudos
9 Replies
MartyG
Honored Contributor III
348 Views

Would the link below be of use to you?

http://wiki.ros.org/rtabmap_ros/Tutorials/HandHeldMapping# Localization_mode rtabmap_ros/Tutorials/HandHeldMapping - ROS Wiki

0 Kudos
AAll
Beginner
348 Views

Hi MartyG,

Thanks your kindly reply, but I means relocalization in RealSense SLAM library.

0 Kudos
MartyG
Honored Contributor III
348 Views

I apologize. I was not able to find any scripting relating to activating a reset in the SLAM library in the RealSense SDK for Linux. Reading the manual that you did, I get the impression that it is an automated process.

A reset becomes possible when the same conditions are met as those required to start the SLAM (e.g being motionless), and if the tracking senses that it may have become lost then it uses what it has already learned during its travels to correct itself, consulting its map to find a point to re-orient itself to. It can correct drift by consulting its map when returning to the first room that it started in after having visited another room (as the potential for drift increases as it travels further from its origin location).

0 Kudos
AAll
Beginner
348 Views

Hi MartyG,

I appreciate your help very much. Sorry for reply lately.

https://software.intel.com/sites/products/realsense/slam/classrs_1_1slam_1_1slam.html# af2f5f9900ea56a556d0e8a6f32324b58 Intel® RealSense™ for Linux - SLAM Library Version 1.0 mentions the function get_relocalization_pose(), but I have no idea about when to use it and why it do not work.

I clone this version code https://github.com/robojay/realsense_sp GitHub - robojay/realsense_sp: ROS package for the RealSense SP middleware under Intel Euclid. and reveal the odom data on RViz and get not good result. The odom data drift.

0 Kudos
MartyG
Honored Contributor III
348 Views

There is a script called Slam.h for the Intel RealSense For Linux that may be helpful in learning how get_relocalization_pose() is used. Lines 238 to 243 and line 283 refer to the instruction.

https://software.intel.com/sites/products/realsense/slam/slam_8h_source.html Intel® RealSense™ for Linux - SLAM Library: /Users/mcurfman/ws/Linux_SDK/realsense_documentation/realsense_slam/sdk/incl…

0 Kudos
AAll
Beginner
348 Views

Hi MartyG,

Thanks your information.

0 Kudos
Tsahi_M_Intel
Employee
348 Views

Hi Allring ,

First there is a flag to enable/ disable re-localization.

Now for mode detailed code..

You can look in the https://software.intel.com/sites/products/realsense/slam/slam__core_8h_source.html SLAM API here the 'get_relocalization_pose' return bool indication if frame was relocalized. (Also you can see header under Euclid device at 'usr/include/librealsense/slam/slam_core.h')

Now please look also on the http://https//github.com/IntelEuclid/realsense_sp/blob/master/src/ Euclid code sample for realsense_sp Inside there is a call for 'get_camera_pose'.

You can replace that call with the 'https://software.intel.com/sites/products/realsense/slam/slam__core_8h_source.html get_relocalization_pose'.

Hope this helps,

Tsahi.

Intel Euclid Development Team

0 Kudos
AAll
Beginner
348 Views

Hi Tsahi,

I clone this version code https://github.com/robojay/realsense_sp GitHub - robojay/realsense_sp: ROS and it looks the flag enable_relocalization is default true according to the launch file.

The function get_relocalization_pose() always return false if which replaces call for get_camera_pose in code.

I have no idea what the problem is.

0 Kudos
XCres
Beginner
348 Views

Hi Allring,

I'm experiencing the same issue here. Relocalization is enabled but I hardly ever get a valid pose. My guess is that the lack of the processing ASIC in the Euclid (with respect to the ZR300) makes processing all the required data really difficult. Did you manage to do it?

Best regards,

Crespum.

0 Kudos
Reply