Overview & Mission Context
This project focuses on automating civil infrastructure inspections using a Multi-Robot System (MRS) to overcome the limitations of single-robot deployments, such as limited battery life, restricted range, and the risk of complete mission failure. The primary objective was to develop a modular and scalable Multi-Robot Task Planning (MRTP) framework using Behavior Trees (BTs) to coordinate multiple quadruped robots ("IDOGs") autonomously in a shared environment.
System Architecture & Methodology
To manage complex and concurrent inspection missions, the system architecture transitioned from traditional Finite State Machines (FSMs), which scale poorly, to a flexible Behavior Tree architecture.
- Skill Subtrees: Core robot capabilities, including autonomous navigation and visual inspection, were designed as modular, reusable BT subtrees.
- Task Assignment GUI: A custom graphical user interface was developed using PyQt5 to allow operators to easily assign specific tasks to individual robots dynamically.
- Shared Localization: Implemented a centralized communication system using a gRPC protocol (Cartographer gRPC) to enable real-time localization and shared mapping across the multi-robot fleet.
ROS Integration & Validation
The software stack heavily utilized ROS and the ros_bt_py library for execution, which was then validated on physical hardware.
- Namespace Isolation: Achieved scalable and isolated task execution by running independent BTs within specific ROS namespaces for each robot.
- Programmatic Execution: Engineered custom Python functions that utilized ROS services to programmatically load, add, and execute BT nodes and subtrees based on instructions from the GUI.
- Real-World Testing: Successfully validated the framework using Unitree IDOG quadruped robots in an indoor office environment, proving the system's ability to navigate and perform visual inspections, such as detecting electrical sockets.
Challenges & Implementation
Deploying the multi-robot system on physical hardware revealed several technical hurdles that required targeted engineering solutions.
- Network Latency: Running multi-robot localization via Cartographer gRPC introduced latency and timing conflicts, which negatively impacted the effectiveness of real-time collision avoidance between the robots.
- State Management Limits: Because the ros_bt_py library lacked a native "blackboard" feature for sharing variables between nodes, we had to engineer a workaround utilizing the ROS parameter server.
- Topic Collisions: Running multiple autonomous agents simultaneously required incredibly strict namespace management to prevent ROS topic collisions.