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.
For the vision data, we need a depth camera. For this particular application, we developed the entire package using the Realsense D435i . Please follow the installation steps for the Realsense camera in  or the camera which you have decided to use.
Clone the ar_track_alvar ROS package (branch: kinetic-devel, it also works for Melodic)
In your workspace, clone the neo_docking package
/auto_docking - Call it for docking the robot
/auto_undocking - Call it for un-docking the robot
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.16, y: 0, theta: 0 (meters) It describes the geometric size of a station, and decides where exactly the connection would happen w.r.t. the camera_link of the robot. Any value of float type. Please use the company specified value for your robot. undocking_pose 0.5 (meters) When un-docking service is called, the robot moves backwards uptil the specified distance from the Ar-tags. Any value of float type. Depending on the width of the robot, please decide your safety region. max_vel_limit 0.035 (meters/second) Maximum velocity, when the robot is in the final stage of docking. Any value of float type. Please consult us before setting a value on the real robot. differential_drive True in case if you have a differential drive robot False for omni-directional robot. functionality 'Charging' A string describes the functionality of a station, in case of further movements needed. ...