For my task I have chosen Ardupilot to get started with, the reason being easy to follow documentation on integrating it with ros using the Mavros package, also having some experience with ROS is easy to get started with communicating with Ardupilot and Gazebo at the same time . Below is a diagram showing the relationship among them.
Video demo of the setup environment: The drone takes off at an altitude of 10 mtrs, mob=ves forward in y axis at a speed of 10 mtrs/s towards its destination at 30 mtrs from launch, then finally lands. The script for this maneuver is given in src\set_wp.cpp
Task1.mp4
The script src\spiral_trajectory.cpp shows the implementation of a spiral path using auto mode. auto mode accepts a list of waypoints in global coordinates (latitude, longitude and altitude) as ‘missions’ and automatically traces through each waypoint as a spline curve. Note that in guided mode the velocity reaches 0 before heading to the next waypoint, in auto mode the velocity slows down but does not tend to 0, resulting in a smoother trajectory.
Spiral Path parallel to y-axis:
Task2.mp4
This is the demo of the script src\precision_landing.cpp. The drone takes off at an attitude of 3 meters, simultaneously the camera looks for an aruco marker, if the marker is detected it hovers over the marker at an attitude of 0.1 meters while waiting for land command.