Hi there,
This proposal outlines the plan to introduce Behavior Tree (BT) support to ArduPilot using ROS2 AP-DDS interface. @Ryanf55 suggested this framework to allow users to have a modular and flexible interface. This is inspired by how Nav2 in ROS 2 uses BTs to handle planning, failsafes, and advanced integrations.
Overview
The idea is to use BTs to manage tasks like planning, failsafes, and mission execution in a more intuitive way. This would also simplify integrating advanced features like SLAM modules, depth estimators, external planners and even external systems like Nav2. It will also make it easy to allow users integrate existing features like cartographer SLAM to their systems and have flexible control over the system. Users would benefit from a drag-and-drop approach to behavior design, using tools like Groot to build and debug BTs visually.
Here’s the rough plan:
- Start with some groundwork; explore BehaviorTree.CPP or similar libraries and experiment with a basic integration and controlling the vehicle.
- Create BT nodes for common ArduPilot tasks like waypoints, failsafe triggers, or high-level planning.
- Integrate with Groot so users can visually design and debug trees.
- Test with real-world scenarios (e.g., mission planning or obstacle avoidance, etc).
This is just the starting point, and I'm happy to refine or adjust the plan based on feedback.
Looking forward to your feedbacks!
Hi there,
This proposal outlines the plan to introduce Behavior Tree (BT) support to ArduPilot using ROS2 AP-DDS interface. @Ryanf55 suggested this framework to allow users to have a modular and flexible interface. This is inspired by how Nav2 in ROS 2 uses BTs to handle planning, failsafes, and advanced integrations.
Overview
The idea is to use BTs to manage tasks like planning, failsafes, and mission execution in a more intuitive way. This would also simplify integrating advanced features like SLAM modules, depth estimators, external planners and even external systems like Nav2. It will also make it easy to allow users integrate existing features like cartographer SLAM to their systems and have flexible control over the system. Users would benefit from a drag-and-drop approach to behavior design, using tools like Groot to build and debug BTs visually.
Here’s the rough plan:
This is just the starting point, and I'm happy to refine or adjust the plan based on feedback.
Looking forward to your feedbacks!