neo_docking is an exclusive package for docking of all the Neobotix robots 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.


Currently neo_docking only supports ROS-1


For the purpose of docking, we use the Ar tags provided by the ar_track_alvar ROS package.

  1. 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, or the camera which you have decided to use.

  2. Supported ROS-DISTROS: melodic and noetic.

  3. Install the rgbd-launch

    sudo apt install ros-$ROS_DISTRO-rgbd-launch
  4. Clone the ar_track_alvar ROS package


    Please change the branch according to your pre-existing ROS-Distro

    cd to_your_workspace/src/
    git clone
  5. In your workspace, clone the neo_docking package

    cd to_your_workspace/src/
    git clone
    cd ..


There are a set of parameters that could be configured for the docking service in folder configs:

  1. ar_track_alvar_single.yaml

    Parmeters Default Value Description Options
    markers 2, 8, 10 A vector that defines which markers are included. Anything coded in a marker(see

Setup server

  1. Start up the robot(or simulator) and launch navigation_basic_neo from package neo_mpo_700:

    roslaunch neo_mpo_700 navigation_basic_neo.launch
  2. Run neo_docking with launch file:

    roslaunch neo_docking dock_with_individual_marker_mb.launch

Docking Process

  1. Bring robot to a position and orientation where it can detect the marker with its camera via remote controller.

  2. Call neo_docking service by running the following command, and its argument is the station number:

    rosservice call /auto_docking 10
  3. After it docked to the station, the terminal would print the accuracy of docking process.

  4. Now in order for the robot to start the process of charging, (for the simulation you can skip this step)

    rosservice call /relayboard_v2/start_charging
  5. In order to stop the charging

    rosservice call /relayboard_v2/stop_charging
  6. Now in order for the robot to start the process of charging, (for the simulation you can skip this step)

    rosservice call /auto_undocking 10

Video demo