i want to detect when the robot has moved one lap i have the odometry, but i noticed that when the robot complete one lap, and reach the point it started the odometry are not the same each lap they are changing, i have been tried many times for many day still i can not do it correctly
Hi @bazzouna98,
The value of the odometry when your robot has completed a turn is not exaclty the same but you could define a tolerence on the goal. For example consider that if the robot is around 0.5m of your initial distance, you can consider it a complete turn. You also need to define another condition to differentiate the case âInitial poseâ and âPose after 1 turnâ, you have multiple options to find it out.
yes i did defined an initial variable to sotre the odometry at starting
i will try this way.
Thank you for replying
i have a question why it is not exactly the same?
Hi @bazzouna98,
Iâm not totally sure about the way you test, but I would say:
- In your simulation, itâs quite possible that the odom is not âexactlyâ the same because 1) the robot is not reaching the same place 2) With the number of digits precision on each values, itâs not easy to have a the exact same values on each (and need to check your simulation but maybe because of covariance too)
- On real robot, the odometry is compute according to sensors (error of measurment and covariance) and has a growing uncertainty with linear and angular distance done.
So you canât do odom_t0 = odom_t1 after a turn but odom_t0 â odom_t1 ± pose_tolerence
I recommand you to compute an Euclidian distance with the initial point after a turn and define distance< distance_tolerence.
Hi @EnzoGhisoni
yes i test it in real time,
i am thinking about counting the number of the walls that the robot detect (if it detects 4 walls then it did complete one turn) then considering the distance from the wall to detect precisely the end of the lap
another time thank you for replying and the usefull informations
You can also just measure the distance it travels in one lab.
Then once tha distance is reached, you stop the robot
i think calculating the distance is the best solution
Another idea is to create a symbolic square of size X, with the start postion being in the centre. Then write a function to verify if the position of the robot is within that square. Making the side of the square bigger, youâll have a higher tolerance on the start and stop postions of the robot
This topic was automatically closed 5 days after the last reply. New replies are no longer allowed.