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.
- 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.
- 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.
For detailed setup instructions, refer to the following resources:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/SpaceMaster85/precision_landing.git
cd precision_landingcd ~/ros2_ws
colcon build --symlink-install
source install/setup.bashLaunch PX4 Simulation
make px4_sitl gz_x500_mono_cam_down_arucoLaunch MicroXRCEAgent
micro-xrce-dds-agent udp4 -p 8888Launch 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.ImageLaunch 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.CameraInforos2 run precision_landing landing_nodeEnsure 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
Use the provided launch files to test the system with simulated data.
This project is licensed under the BSD-3-Clause License.