Repo symbol

flock2 repository

swarm drones ros2 ryze tello
Repo symbol

flock2 repository

swarm drones ros2 ryze tello
Repo symbol

flock2 repository

swarm drones ros2 ryze tello
Repo symbol

flock2 repository

swarm drones ros2 ryze tello
Repo symbol

flock2 repository

swarm drones ros2 ryze tello flock2

Repository Summary

Description ROS2 swarm controller for DJI Tello drones
Checkout URI https://github.com/clydemcqueen/flock2.git
VCS Type git
VCS Version master
Last Updated 2021-11-15
Dev Status UNKNOWN
Released UNRELEASED
Tags swarm drones ros2 ryze tello
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
flock2 0.1.0

README

flock2

flock2 can fly a swarm of DJI Tello drones. flock2 is built on top of ROS2, fiducial_vlam, and tello_ros.

Installation

1. Set up your Linux environment

Set up a Ubuntu 20.04 box or VM.

2. Set up your Python environment

Use your favorite Python package manager to set up Python 3.6+ and the following packages:

  • numpy 1.15.2
  • transformations 2018.9.5

3. Set up your ROS environment

Install ROS2 Foxy with the ros-foxy-desktop option.

If you install binaries, be sure to also install the development tools and ROS tools from the source installation instructions.

Install these additional packages:

sudo apt install ros-foxy-cv-bridge ros-foxy-camera-calibration-parsers ros-foxy-gazebo-ros

4. Install dependencies

Download, compile and install the following packages:

mkdir -p ~/flock2_ws/src
cd ~/flock2_ws/src
git clone https://github.com/clydemcqueen/flock2.git
git clone https://github.com/clydemcqueen/tello_ros.git
git clone https://github.com/ptrmu/fiducial_vlam.git
git clone https://github.com/ptrmu/ros2_shared.git
cd ..
source /opt/ros/foxy/setup.bash
# If you didn't install Gazebo, avoid building tello_gazebo:
colcon build --event-handlers console_direct+ --packages-skip tello_gazebo

Running

Flying a single drone

launch_one.py will allow you to fly a drone using a wired XBox One gamepad.

Turn on the drone, connect to TELLO-XXXXX via wifi, and launch ROS2:

cd ~/flock2_ws
source install/setup.bash
ros2 launch flock2 launch_one.py

Gamepad controls:

  • menu button to take off
  • view button to land
  • B to start mission
  • A to stop mission

Flying multiple drones

launch_two.py provides an example for flying multiple drones.

Key elements of multi-drone missions:

  • All drones must be networked together. One way to do this is to connect to each drone’s wifi using a Raspberry Pi 3 or similar device, and forward all UDP packets from the Pi to the host computer. See udp_forward for an example using 2 Tello drones.
  • Global nodes such as flock_base should have exactly 1 instance running. Per-drone nodes such as drone_base should have 1 instance running per drone.
  • Each drone has it’s own ROS topic namespace. The default namespace for 1 drone is solo.
  • Each drone must have it’s own URDF file with the appropriate coordinate frames.
  • The joystick controls one drone at a time. Hit the right bumper to select a different drone.
  • All drones participate in the mission.

Design

Coordinate frames

ROS world coordinate frames are ENU (East, North, Up).

There are 3 significant coordinate frames in flock2:

  • The world frame is map
  • Each drone has a base coordinate frame. The default for 1 drone is base_link
  • Each drone has a camera coordinate frame. The default for 1 drone is camera_frame

The arena

An arena is a right rectangular prism defined by 2 points: (x1=0, y1=0, z1=0) and (x2, y2, z2). z1 defines the ground, so z2 must be positive. The ground must be flat.

File truncated at 100 lines see the full file

Repo symbol

flock2 repository

swarm drones ros2 ryze tello
Repo symbol

flock2 repository

swarm drones ros2 ryze tello
Repo symbol

flock2 repository

swarm drones ros2 ryze tello
Repo symbol

flock2 repository

swarm drones ros2 ryze tello