Controller for drone automation using MAVROS
controller.py
: Contains core controller classwaypoint.py
: Waypoint controller class for drone to traverse a list of pointsdepth_processor.py
: A node to process point cloud depth maputils.py
: A collection of utility functions for converversion, unwrapping etc.
- ROS
- MAVROS
- PX4 Firmware
- PX4 Gazebo for MAVLink
You can follow the steps given here for setting up your environment
cd catkin_ws/src
git clone https://github.com/threewisemonkeys-as/drone_automation.git
cd ..
catkin build
source devel/setup.bash
roslaunch drone_automation iris_empty_world.launch
rosrun drone_automation waypoint.py
Models for the iris quadcopter with either depth, fpv or rplidar have been included. You can demo them in the warehouse gazebo world. For example
roslaunch drone_automation iris_depth_warehouse.launch
rosrun drone_automation waypoint.py
The relevant topics should be displayed in RViz
controller.py
contains the core Controller
class. This can be used as follows
# Initialises controller object with its publishers, subscribers and clients
drone = DroneController()
# Drone takes off and lands
drone.takeoff(2)
drone.land()
waypoint.py
contains a WaypointController
class which inherits from Controller
. It can be used to traverse a path
# Initialises controller object with its publishers, subscribers and clients
wc = WaypointController()
# Drone takes off, traverses given points and lands
path = [(6, 0, 2), (6, 4, 2)]
wc.takeoff()
wc.traverse_path(path)
wc.land()
- Add waypoint controller
- Use
setpoint_velocity
with proportional control - Incorporate obstacle detection using LIDAR / Camera
- GAAS (Generalized Autonomy Aviation System) Guide
- PX4 Development Guide MAVROS Example