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 asdrone_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