Optitrack Motion Capture system and robot localization in Nav2 stack
Hello,
I'm looking for some tutorials, documentation, code/configuration snippets, example projects and other sources with information on how I can incorporate an external Motion Capture System (Optitrack + Motive 3.0.1 cameras) as a really reliable (99% of time) localization source in a Nav2-based Turtlebot 2 motion control (upgraded to ROS 2 Galactic at the moment).
For connection of Motive and ROS2 I am using this project:
I can get the location of the markers through the /markers
topic as in this Getting Started tutorial,
but I'm not sure how to combine this information in the robot's Nav2 stack.
Some mentions of it are here and (maybe) here (as in a fused and locally accurate smooth odometry information from the data provided by N
odometry sensor inputs).
This tutorial is a bit hard to follow, but maybe it could be the base of a solution for MoCap-supported localization?
I think it should be somethink similar to this Q&A, this or this "Integrating GPS Data" in robot_localization
, but for ROS2. I would like some guidance here, though.
Other related things I found:
- https://answers.ros.org/question/2767...
- https://answers.ros.org/question/2231...
- https://answers.ros.org/question/3104...
- https://answers.ros.org/question/2808...
- https://answers.ros.org/question/3517...
Please advise, any hints are welcome!
Best
Łukasz Janiec
Is it generating pose or just x,y,z location? Approximately how often does this system generate a current pose estimate? What do you think the accuracy is?
It uses this
RigidBody.msg
, that's it:Optitrack gave me in a rosbag of 20 s 2350 frames, so it is probably ~100-120 Hz? Correct me if I am wrong. For my supervisor controller for multiple AMRs I need a current pose estimate on the level around 10-20 Hz. I am not sure how often should it be sent in Nav2
robot_localization
. After calibration, Motive 3 shows an error of 0.5 mm per marker, I'm not sure how strongly this will correlate to the robot's overall localization error (each robot has 4 markers).