1
$\begingroup$

I have a car like robot that runs on ROS1 Noetic. It has a four wheel differential drive configuration. My robot has two LiDAR and a depth camera. The path planning and collision avoidance are primarily done using LiDAR sensors and I use the move_base package for this. Hector SLAM is used to create the map of a room using LiDAR scans which is later used for navigation. However, I also want to dock my robot into a docking box. The above mentioned algorithm does not provide me the required precision and accuracy for this docking procedure since I need an accuracy close 3-4cm or better. Does anyone know if there is any package or methodology that can be utilised just for the docking part?

$\endgroup$

2 Answers 2

1
$\begingroup$

I worked on "docking" problem for a time, with a RGBD camera (Intel Realsense L515). I suggest using Aruco or AR markers for detecting/obtaining a reference point. There are packages that does that part for you (a few examples):

I got the best results by using 2 aruco markers by the way.

Second part is all about motion planning. Planning a trajectory first and then tracking it as precise as you can, in the shortest time possible for an optimum approach.

Path/trajectory planning by itself is not super important (I think), if the docking area is obstacle-free. A cubic polynomial plan did good enough for me. If initial cross-track error is too much, you could try quintic poly. too. Their implementations, and many more planning approaches on Python explained very well below:

And for control, I think you should try a very primitive PID controller first. It is very easy to create and modify. Accuracy of 3-4 cm could be achieved with it.

On LiDAR part, I agree with @michael-jonathan.

Lastly, if you are planning docking just with a camera, you should be careful about not losing your reference marker(s) while moving-turning. Getting the pose info. from your reference continuously will keep your accuracy high, but due to the motion and other factors, there will be noise and your marker(s) might get out of your camera's FOV. If you don't want to deal with all these, you could obtain it's position just once and move according to that - but that pose value obtained initially will likely be worse.

Edit: You may also start by excluding the path planning phase. That will work best if your localization is really good and your initial cross-track error is low. Just get the pose info from your reference and move according to it's pose (control).

$\endgroup$
0
$\begingroup$

You need to define first what kind of unique feature in the docking area that you would like to use as a reference. Then you could decide on using kind of clustering / classification technique to detect those features. I my self used to use euclidean cluster extraction algorithm for my lidar data to get specific features that I use for docking.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.