From abb495275b071a37c77886d7461ba1ce16381885 Mon Sep 17 00:00:00 2001 From: Oleg Kalachev Date: Tue, 26 May 2020 06:54:42 +0300 Subject: [PATCH] docs: translate robocross-2019 article --- docs/en/SUMMARY.md | 1 + docs/en/robocross2019.md | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 docs/en/robocross2019.md diff --git a/docs/en/SUMMARY.md b/docs/en/SUMMARY.md index c7a5d484..87cddd7c 100644 --- a/docs/en/SUMMARY.md +++ b/docs/en/SUMMARY.md @@ -89,4 +89,5 @@ * [Copter Hack 2019](copterhack2019.md) * [Copter Hack 2018](copterhack2018.md) * [Copter Hack 2017](copterhack2017.md) + * [Robocross-2019](robocross2019.md) * [Camera calibration (legacy)](camera_calib.md) diff --git a/docs/en/robocross2019.md b/docs/en/robocross2019.md new file mode 100644 index 00000000..d05b50bb --- /dev/null +++ b/docs/en/robocross2019.md @@ -0,0 +1,25 @@ +# Robocross-2019 + +On July, 2019, for the fourth time in a row, the team Copter Express won the annual tests of unmanned vehicles "[Robocross](http://russianrobotics.ru/activities/robokross-2019/)". Tests are held at the GAZ test site near Nizhny Novgorod. + +The main objective of the tests in the UAV category was to localize and destroy the target - the red balloon - autonomously. + +## Video + + + +## Implementation + +The team used an F450 frame based quadcopter and [Clover software platform](https://github.com/CopterExpress/clover). The final source code is available [on GitHub](https://github.com/CopterExpress/robocross2019/). + +`robocross2019` ROS package is divided into two parts: `red_dead_detection` ROS nodelet recognizes the red ball, `ball.py` implements high-level flight logic. + +## red_dead_detection + +The `red_dead_detection` nodelet recognizes the red ball on the image from the forward looking quadcopter camera (`/front_camera/image_raw` and `/front_camera/camera_info` topics). The simplest method of filtering the image by color is applied. Then the nodelet calculates the geometric center of the detected segments, and performs camera distortion compensation (`cv::undistortPoints`). + +Using the known focal lengths of the camera (from `camera_info`), the nodelet calculates the vector directed towards the target. The resulting vector is published to the topic `/red_dead_detection/direction`; its coordinate system (`frame_id` is associated with the front camera `front_camera_optical`). + +## balloon.py + +To fly towards the ball, the direction vector `red_dead_detection/direction` is used, which is set as a setpoint for the velocity of the drone. The yaw angle is also set towards the ball. The target is considered destroyed when the total area of red pixels is less than the threshold for a certain amount of camera frames.