Skip to content

Latest commit

 

History

History

andino_fleet

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Andino Fleet Package

This package consists of the implementation of a controller server and a fleet manager for Andino robots.

Controller Server

Summary

The goal of a controller server is to move an Andino robot from position A to B considering a feedback control loop. By specifying a goal position (x, y, yaw), the robot is able to move to that position. The theory behind this controller is obtained from Introduction to Autonomous Mobile Robots by Roland Siegwart and Illah R. Nourbakhsh

Implementation

The controller is implemented as a ROS2 node that creates an action server for a specific andino bot. This action server takes clients requests that specify a Pose as it's goal, send the position information as the action feedback and returns True or False whether the bot arrived at the goal or not due to it's movement being completed or a goal being canceled. controller diagram

In order for a controller to function properly, the following functionalities are implemented.

Fleet Manager

Summary

The goal of a fleet manager is to manage multiple robots so that it is able to send commands and receive information from each robot.

Implementation

The manager is implemented as a ROS2 node that contains multiple services to control the andino fleet and monitor the robot states. These services include

  • add a goal to the manager
  • send a goal to the manager
  • cancel a current goal
  • remove all goals in queue
  • read a robot position

Each service requires a robot name in order to manage individual robots.

fleet manager diagram

The fleet manager node have the following features implemented.

  • Be able to implement relevant services to manage the andino fleet
  • Use custom service messages for service interface
  • Be able to get states of each robot

Usage

To launch multiple robots with corresponding controller servers,

ros2 launch andino_fleet spawn_multiple_robot.launch.py

Multi-robot simulation

Note: To add/remove robot(s), edit spawn_robots.yaml under andino_fleet/config folder. There are two robots by default.

To run the implemented fleet manager,

ros2 run andino_fleet fleet_manager

After the fleet manager node is running, it allows users to interact with the robot fleet as the following.

Add a goal

Add a goal to the manager for a specific robot, given the robot name and the final pose,

ros2 service call /add_goal_server andino_fleet_msg/srv/RobotControl "{robot_name: 'andino2', final_pose: [0.1,0,0]}"

Send a goal

Start moving a robot by sending a goal to the manager, assuming that the goal is already added,

ros2 service call /send_goal_server andino_fleet_msg/srv/SendGoal "{robot_name: 'andino2'}"

Cancel a goal

Once a goal is being executed, users can cancel the goal given a robot name by,

ros2 service call /cancel_goal_server andino_fleet_msg/srv/CancelGoal "{robot_name: 'andino2'}"

Remove all goals

Users can remove all goals in fleet manager that belong to a specified robot,

ros2 service call /remove_goal_server andino_fleet_msg/srv/RemoveAllGoals "{robot_name: 'andino2'}"

Request for current states

Users can retrieve a robot states as the following

  • robot position defined by [x, y, yaw]
  • robot connectivity
  • navigation status
ros2 service call /robot_pose_server andino_fleet_msg/srv/RequestRobotPosition "{robot_name: 'andino2'}"