Autodocking package discussion #13
Replies: 1 comment
-
Auto-docking package — simulation testing reportWanted to share what I've been working on the past few days. I set up a full Gazebo Harmonic simulation of the The setupUbuntu 24.04, ROS 2 Jazzy, Gazebo Harmonic. A 10×10 m room with the OMR differential-drive robot, a 0.40 m AprilTag 36h11 mounted on a panel against the north wall, and the full pipeline running: One thing worth flagging upfront: on Jazzy I had to switch from FastDDS to CycloneDDS. The default FastDDS has a Python-side bug that makes Why I ended up writing a custom sequencerI started with So I replaced the single DockRobot action with a 7-phase sequence in
The advance phase is the part I'm most happy with — it auto-calibrates as it goes, so even if the alignment from phase 6 leaves a small error, the robot converges to the true perpendicular by the time it reaches the dock. How it performsEnd-to-end works: spawn in the south-west corner, navigate to staging, snap to the parallel spot, align, advance, stop cleanly at 0.60 m from the tag. The trajectory is now a sequence of clean straight lines and rotations, not a curve. The residual error at the final position is a few centimetres laterally and a few degrees in yaw. After looking at it for a while I'm convinced this is dominated by AprilTag detection noise rather than anything in the controller — the 20-sample filtering in phase 3 helps, and bumping the tag from 0.25 m to 0.40 m made a big difference (~125 px per side at 1.5 m distance, which is comfortably in sub-pixel solvePnP territory). Things that broke along the wayA few problems I hit that aren't obvious from the docs, in case they save someone time:
DocumentationI also wrote up the whole thing in 14 markdown files under To reproducesudo apt install ros-jazzy-rmw-cyclonedds-cpp
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
cd ~/Downloads/openamrobot-docking-main
colcon build --packages-select openamrobot_docking
source install/setup.bash
ros2 launch openamrobot_docking simulation.launch.py
# in another terminal (with CycloneDDS exported there too):
ros2 topic pub /dock_trigger std_msgs/msg/Bool "{data: true}" --onceSince I don't have write access to the upstream repo, I pushed the work to my own fork: https://github.com/SHuttooo/openamrobot-docking. Everything is on branch |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
🚀 Autodocking Architecture Discussion (Linorobot2 / OpenAMR)
We are opening this thread to discuss the new autodocking plan for the OpenAMR / Linorobot2 platform running ROS 2 on Raspberry Pi 5. The objective is to finalize a reliable docking workflow integrating Nav2, AprilTag-based detection, and automated charging logic.
📌 Summary of the Proposed System
🧩 Core Components
opennav_docking).apriltag_ros).detected_dock_pose.camera_link→camera_optical_frame.🔌📥 Docking sequence
🛠 Workflow Overview
🔧 Implementation Tasks
dock_pose_bridge(filter tag by ID, compute pose, publish).charge_monitor(battery full detection, optional GPIO sensing).twist_muxwith priority switching.✔ Topics for Discussion
Please share comments and improvements so we can finalize the autodocking implementation.
🔍📝 More detailed description:
Autodocking_Linorobot2_ROS2_RPi.pdf
Beta Was this translation helpful? Give feedback.
All reactions