I am currently working on a mobile robot using ROS2 Jazzy with the Navigation2 docking server, along with Ros_ArUco_Opencv for ARTag pose recognition. I am seeing a delay between movement of the ARTag and the detected pose, but only in specific ways.
When the robot is stationary, and the tag is moving, the detected pose has almost no delay, and keeps up with the laser data, as shown here: Tag Moving VideoTag Moving Video
When the reference frame is base_link, and the robot is moving while the tag is stationary, there is also no delay.
But, when the reference frame is either odom or map, and the robot moves with a stationary tag, there is significant delay between the movement of the tag in the camera and the detected pose, shown here: Robot Moving Video
This causes issues with docking as when the robot approaches the dock tag, it constantly over-corrects, reacting to the delayed dock pose.
When running tf2_monitor
, I am seeing that the average delay for the marker publish is ~0.8-1.3 seconds. Full output here, as the ~3000 second delay readings are also strange, this number increases as the nodes continue to run.
RESULTS: for all Frames
Frames:
Frame: base_footprint, published by <no authority available>, Average Delay: 3165.24, Max Delay: 3165.24
Frame: base_link, published by <no authority available>, Average Delay: 0.00892203, Max Delay: 0.0240092
Frame: base_link_offset, published by <no authority available>, Average Delay: 3165.24, Max Delay: 3165.24
Frame: camera, published by <no authority available>, Average Delay: 3165.24, Max Delay: 3165.24
Frame: drivewhl_l_link, published by <no authority available>, Average Delay: 0.00492064, Max Delay: 0.482618
Frame: drivewhl_r_link, published by <no authority available>, Average Delay: 0.00492276, Max Delay: 0.482621
Frame: laser, published by <no authority available>, Average Delay: 3165.24, Max Delay: 3165.24
Frame: laser2, published by <no authority available>, Average Delay: 3165.24, Max Delay: 3165.24
Frame: marker_1, published by <no authority available>, Average Delay: 0.803176, Max Delay: 0.834151
Frame: odom, published by <no authority available>, Average Delay: -0.183419, Max Delay: 0
My questions are as follows:
- Is there any way to reduce the delay shown in the transform between the detected tags and the odom frame?
- Are there other options for dock pose detection that would not have this delay? I have tried the apriltags ros package as well as another aruco tag detector.
Any help is greatly appreciated!