Skip to content

Autonomous precision drone landing using ArUco markers with PX4 and ROS2. Provides vision-based search, approach, and descent, with configurable controllers, NED transforms, and spiral waypoint generation for robust target acquisition.

License

Notifications You must be signed in to change notification settings

SpaceMaster85/precision_landing

Repository files navigation

Precision Landing with ROS2, PX4, and Pose Messages

This project demonstrates autonomous precision landing of a drone using Pose Messages, leveraging ROS2 and PX4. It provides vision-based target search, approach, and landing with configurable controllers, NED transformations, and spiral waypoint generation for robust target acquisition.

🚀 Features

  • Vision-Based Target Detection: Use of ArUco markers for precise landing target identification.
  • Autonomous Landing: Integration with ROS2 and PX4 for autonomous marker-based landing.
  • Configurable Controllers: Adjustable PID controllers for fine landing control.
  • Spiral Waypoints: Generates spiral waypoints for safe target approach.
  • NED Transformations: Converts between local and global coordinate systems for precise navigation.

📦 Prerequisites

  • PX4 Autopilot: Installed and configured on the drone.
  • ROS2 Foxy Fitzroy or later: For communication and control.
  • Git: For cloning the repository and managing submodules.

🔧 Installation

1. Setup Enviroment

For detailed setup instructions, refer to the following resources:

2. Clone the Repository

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/SpaceMaster85/precision_landing.git
cd precision_landing

3. Build the Workspace

cd ~/ros2_ws
colcon build --symlink-install
source install/setup.bash

🚀 Usage

1. Launch PX4 Simulation

Launch PX4 Simulation

make px4_sitl gz_x500_mono_cam_down_aruco

Launch MicroXRCEAgent

micro-xrce-dds-agent udp4 -p 8888

Launch the ros_gz_bridge to bridge the camera image topic from Gazebo to ROS2

ros2 run ros_gz_bridge parameter_bridge /world/aruco/model/x500_mono_cam_down_0/link/camera_link/sensor/imager/image@sensor_msgs/msg/Image@gz.msgs.Image

Launch the ros_gz_bridge to bridge the camera info topic from Gazebo to ROS2 (this is how we get camera intrinsics)

ros2 run ros_gz_bridge parameter_bridge /world/aruco/model/x500_mono_cam_down_0/link/camera_link/sensor/imager/camera_info@sensor_msgs/msg/CameraInfo@gz.msgs.CameraInfo

2. Start ROS2 Node

ros2 run precision_landing landing_node

3. Provide Pose Messages

Ensure that the Pose Messages are provided to the ROS topic /target_pose I recommend to use ARUCO markers. See https://github.com/SpaceMaster85/aruco_id_checker and https://github.com/namo-robotics/aruco_markers


🧪 Testing

Use the provided launch files to test the system with simulated data.


📄 License

This project is licensed under the BSD-3-Clause License.

Thank you

https://github.com/ARK-Electronics/tracktor-beam

About

Autonomous precision drone landing using ArUco markers with PX4 and ROS2. Provides vision-based search, approach, and descent, with configurable controllers, NED transforms, and spiral waypoint generation for robust target acquisition.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published