Skip to the content.

top

ConveyorBot Navigation Stack

ConveyorBot_nav is the main ROS package that consist of:

Node Details

You can skip that part if you are not interested in the internals.

Phantom planner

Phantom planner node handles planning of navigation goals, sending them forward to move_smooth. We are using phantom_planner node to plan two different types of goal: Fiducial goal and Phantom goal.

Correspondingly there are two ROS Services:

In practical terms, the two goals are equal, our idea was to distinguish the two since the both serve for a different purpose. In case of ConveyorBot, the purpose of phantom goal is for the robot to blindly drive in the direction in which marker points (planning in Fiducial frame), until it detects a new marker. When it detects a new marker it preempts the phantom goal and removes it from the Queue on the Action Server and sends a pair of Fiducial goal and a new Phantom goal according to this new detected marker.

Move Smooth

Move smooth is a navigation node that receives a maximum of two goals at a time in an arbitrary frame and executes navigation maneuvers to arrive to the goals. If more than two goals are send, the QueuedActionServer(Custom ROS Action Server running in parallel to move_smooth) preempts the first goal send, starts executing the next(second) goal in the queue and adds the new goal to the queue.

Collision Avoidance

If data from a laser scanner or sonars is available, collision avoidance can be performed. If an obstacle is detected, it will slow or stop in an attempt to avoid a collision.

Dynamically Reconfigure Navigation parameters

While ConveyorBot is running, you can modify its velocity or change the stopping distance of the robot in order to prevent collision etc. Before proceeding you should make sure ConveyorBot is connected to the network (https://learn.ubiquityrobotics.com/connect_network) and your workstation synced with ConveyorBot (https://learn.ubiquityrobotics.com/workstation_setup). In order to do so, open a terminal on your workstation and run:

rosrun rqt_reconfigure rqt_reconfigure

This will open up a UI where on the left side you choose move_smooth. Then you can choose to modify multiple parameters: