Skip to content

Final year project, autonomus indoor drone developed in ROS using DWM1001 dev-board

Notifications You must be signed in to change notification settings

20chix/Autonomus_Indoor_Drone

Repository files navigation

Build Status HitCount HitCount Contributions welcome HitCount

Intro

The aim of this project is to provide a solution for autonomous indoor drone (AID). AID involves localization, control, path planning and autonomous landing/take-off. A robust localization method was used, using GPS-like device called DWM1001 provided by Decawave . This device is especially useful for indoor applications as it a has a high accuracy and can only be used in confined spaces.

Simulation results in Gazebo

Small white boxes rapresents the DWM1001 waypoints, these were placed around my lounge creating a "square" like shape.

alt text

Installation

This project currently works for Kinetic.

Install ROS Kinetic

Install ROS from this link into your PC http://wiki.ros.org/kinetic/Installation/Ubuntu and all the dependencies

NOTE: if you install kinetic you need have ubuntu 16.04, if you want to install the latest ROS which is Meldic then you need to have uybuntu 18.04.

Create a ROS workspace

Follow this short tutorial to create a ROS workspace http://wiki.ros.org/catkin/Tutorials/create_a_workspace

Download current GitHub project

Navigate to your workspace ~/catkin_ws/ and run:

git clone https://github.com/20chix/Autonomus_Indoor_Drone.git

Delete the src folder when you created the workspace and rename Autonomus_Indoor_Drone to src

Build the workspace

Navigate to your workspace ~/catkin_ws/ and run:

catkin_make

DWM1001 network Rviz visualization

We have created an interface between DWM1001 and ROS, which allowed us to visualize all the waypoints from Rviz.

alt text

DWM1001 dev-boards used as waypoints

In this project we used 4 of those as anchor(waypoint) and one as the master(tag), which will be attached into the drone

alt text

Packages

localizer_dwm1001 This package is responsible on getting the network coordinates (tag and anchors) from dwm1001 dev board via USB, and pubblish in coordinates in topics.

fyp This package is responsible on controlling the drone, reading waypoints from xml file, process joystick input, land and takeoff the drone.

ardrone_simulator This package is responsible on simulating the ardrone on gazebo7.

joy This package is responsible on interfacing joystick.

generate_map This package is responsible on creating markers in Rviz.

Other packages were made for testing(I will remove them once I get a working prototype on the real drone)

Dynamic reconfigure of DWM1001

In this package we want to be able to change some variable from ground station, while the drone is flying.

alt text

ROS Topic monitor

alt text

Roadmap

  • Create RTLS network from Android App
  • Access DWM1001 API via UART
  • Get Anchor coordinates in Python
  • Get Tag position in Python
  • Display Anchors in RViz
  • Display Tag in RViz
  • Calculate shortest path from Tag to a Anchor using A* Algorithm
  • Display shortest path in RViz
  • Display actual path in RViz
  • Dynamic configuration for DWM1001 dev board
  • Dynamic configuration for drone
  • Joystick controls for emergency takeoff and land
  • Setup continuos integration for simulation
  • Neural Network/AI that will manage flight controller after couple of laps
  • Statistics for each lap
  • Statistics for Neural Network/AI
  • BOM for hardware components
  • Get all hardware components
  • Document or video wiring
  • First test flight
  • Rework from test flight
  • Setup continuos integration for hardware
  • Cloud statics for continuos improvment