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.bashroslaunch drone_automation iris_empty_world.launch
rosrun drone_automation waypoint.pyModels 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.pyThe 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_velocitywith proportional control - Incorporate obstacle detection using LIDAR / Camera
- GAAS (Generalized Autonomy Aviation System) Guide
- PX4 Development Guide MAVROS Example