About the package
Currently this package is used for docking an omnidirectional robot with visual feedback to a charging station.
This package is modular and can be extended for other docking applications as well. Example: Docking with a supply cart for industrial purpose.
User will demand the robot to dock to a desired station.
For the purpose of docking, we use the Ar tags  provided by the ar_track_alvar ROS package.
Clone the ar_track_alvar ROS package (branch: kinetic-devel, it also works for Melodic)
In your workspace, clone the neo_docking package
There are a set of parameters that could be configured for the docking service in folder configs:
Parameter Default Value Description Options markers 2, 8, 10 A vector that defines which markers are included. Anything coded in a marker(see http://wiki.ros.org/ar_track_alvar).
Parameter Default Value Description Options offset x: 0.409, y: 0, theta: 0 It describes the geometric size of a station, and decides where exactly the connection would happen w.r.t. the base_link of robot. Any value of float type. functionality 'Charging' A string describes the functionality of a station, in case of further movements needed. ...
Start up the robot(or simulator) and launch navigation_basic_neo from package neo_mpo_700:
Run neo_docking with launch file:
- Bring robot to a position and orientation where it can detect the marker with its camera via remote controller.
Call neo_docking service by running the following command, and its argument is the station number:
- After it docked to the station, the terminal would print the accuracy of docking process.