This ROS package is used to test our implementation for autonomous detection of helipad and then landing by visual servoing.
Required libraries are OpenCV 3 with contrib modules and Eigen 3.3+
The camera callibration parameters are saved in src/ibvs.cpp
To use, clone this repo into your ros workspace src folder and then run "catkin_make" or "catkin build".
Before starting the visual servoying, you will have to connect to the bebop driver, also will have to takeoff the drone. Also, make sure that your camera is facing downwards using the command :
rostopic pub ---once bebop/camera_control geometry_msgs/Twist "{angular: [0,-90,0]}"
After this, launch using "rosrun bebop_precision_landing ibvs_test" to start the visual servoing process.
Visual servoing works by having a series of 12 points in their intended positions as explained in our paper. The final location of these 12 points are saved in src/ros.cpp
You may need to modify the reference location if using a helipad design different from the one included in this repo.
To find the location of these 12 reference points for a different helipad design, simply run "rosrun bebop_precision_landing ibvs_point". As the program runs, it continously prints the location of the 12 points in order that it detects. Hold the drone over the intended final location and press Ctrl+C to end the execution. Use the points printed at the end and add them in the same order to ros.cpp