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.
Small white boxes rapresents the DWM1001 waypoints, these were placed around my lounge creating a "square" like shape.
This project currently works for 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.
Follow this short tutorial to create a ROS workspace http://wiki.ros.org/catkin/Tutorials/create_a_workspace
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
Navigate to your workspace ~/catkin_ws/
and run:
catkin_make
We have created an interface between DWM1001 and ROS, which allowed us to visualize all the waypoints from Rviz.
In this project we used 4 of those as anchor(waypoint) and one as the master(tag), which will be attached into the drone
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)
In this package we want to be able to change some variable from ground station, while the drone is flying.
- 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