So we are trying to implement a receptionist robot application using the magni silver base. We have installed the RPLidar A1 and created a map of the area. However when using move_basic OR move_base + sonar_detector, we are getting very inconsistent results.
Move_Basic package
When using move_basic and magni_lidar_maprunner_amcl, the robot can avoid obstacles but it is very inconsistent, and tends to hit obstacles if they are towards the side. The robot will also go out of control randomly, instead of stopping at the spot marked on RVIZ, it will start bouncing around on the map losing its location and will ram full speed into walls/obstacles and keep driving.
Move_base + sonar_detector
When using these 2 packages the robot refuses to move, sometimes it will respond to the move instruction, but most of the time it does not respond at all.
Please advise on how we can implement obstacle avoidance while running a map solution.
Hello. I can comment on the 2nd configuration using sonar_detector.
Sonar_detector is not meant to be used with move_base. Move_base is a much more powerful but also confusing nav stack that uses the concept of a ‘local cost map’ to force re-route planning.
sonar_detector is a fairly simple node that is meant to add simple collision avoidance when users are driving the robot around with a joystick or other form of cmd_vel messages that the motor_node will act upon. sonar_detector is not part of a full navigation stack, it is more a safety feature to stop the robot if you unintentionally drive it right into a wall or other object. sonar_detector directly tells the motor node to stop or allow it to start again after something that is in front is finally removed.
sonar_detector and move basic (not mentioned by you) together would be both thinking they are responsible for avoiding colliding with things so yes, it will be a very confused system.
As far as the first point for move_basic package it is called ‘basic’ because it is a point to point sort of navigation that does not have object avoidance built in. move_basic does from what i recall try to stop if something is put in front. In order for proper re-route planning to happen you need a full move_base stack that includes the usage of what is called the ‘local cost map’. A local cost map is often created using data from the sonars.
I don’t think we have a full demo that shows fully move_base combined with a local cost map generated from our sonar system. That is an advanced form of navigation that we have not fully shown how to implement to date.
Hopefully one of the more experienced navigation experts may chime in to add more information.
Hello,
Thanks for your Quick response. so is there a method using move_base that will allow for advanced navigation (Dynamically avoiding obstacles while running amcl) that will be useful in this application? As in do you suggest we proceed with the move_base option and see where it gets us?
Im confused about move_base in the fact that it does show the sonar readings, but it does not act on it at all. It will ram into obstacles full speed (we use cushioned stuff to prevent damage to the robot). Will it work as it is or will modifications be required?
Also for AMCL the robot gets ‘confused’ very quickly and is unable to properly find its surroundings at times, do you have suggestions to smoothen out the process here?
Any update on this? I’ve been struggling with the same error and the robot’s movement is very random, please let me know if you’ve been able to solve this issue.