Example for AUAV 2022 with obstacle avoidance.

Overview

AUAV 2022 Sample

This is a sample PX4 based quadrotor path planning framework based on Ubuntu 20.04 and ROS noetic for the IEEE Autonomous UAS 2022 competition.

You will need to install xterm and the standard PX4/gazebo requirements.

sudo apt install xterm

Build the catkin workspace.

pip3 install pymavlink --user
mkidr ~/catkin
cd ~/catkin
mkdir src
cd src
git clone https://github.com/jgoppert/auav_2022_sample.git
git submodule update --init --recursive
catkin build

Run the simulation for each trial.

Note: To fly PX4 you will need to have QGroundControl running and manually arm it and put it in offboard mode. For the competition we do not want your scirpts to do this automatically. For testing and in simulation, you can have a script that manually arms the drone and puts it in offboard mode.

We are following this safety procedure so that the pilot will have the only authority to arm the drone and switch the mode to offboard from the RC transmitter.

cd ~/catkin
. ./devel/setup.bash
roslaunch auav_2022_sample sim.launch world:=worlds/trial_1.world 
roslaunch auav_2022_sample sim.launch world:=worlds/trial_2.world 
roslaunch auav_2022_sample sim.launch world:=worlds/trial_3.world 
roslaunch auav_2022_sample sim.launch world:=worlds/trial_4.world 

Please adapt your code to work with this framework, we expect to launch each drone with the command:

roslaunch auav_2022_sample live.launch

Path Planning

Two examples of path planning libraries are included that use the depth camera information:

  • PX4 avoidance: Uses VFH3D+ approach, simple approach, not very robust
  • path planning: Uses octomap and OMPL library for (RRT), could be improved to use Quadrotor dynamics
You might also like...
Example repository for custom C++/CUDA operators for TorchScript

Custom TorchScript Operators Example This repository contains examples for writing, compiling and using custom TorchScript operators. See here for the

In this project we investigate the performance of the SetCon model on realistic video footage. Therefore, we implemented the model in PyTorch and tested the model on two example videos.
In this project we investigate the performance of the SetCon model on realistic video footage. Therefore, we implemented the model in PyTorch and tested the model on two example videos.

Contrastive Learning of Object Representations Supervisor: Prof. Dr. Gemma Roig Institutions: Goethe University CVAI - Computational Vision & Artifici

Example scripts for the detection of lanes using the ultra fast lane detection model in ONNX.
Example scripts for the detection of lanes using the ultra fast lane detection model in ONNX.

Example scripts for the detection of lanes using the ultra fast lane detection model in ONNX.

Example scripts for the detection of lanes using the ultra fast lane detection model in Tensorflow Lite.
Example scripts for the detection of lanes using the ultra fast lane detection model in Tensorflow Lite.

TFlite Ultra Fast Lane Detection Inference Example scripts for the detection of lanes using the ultra fast lane detection model in Tensorflow Lite. So

This is an example of object detection on Micro bacterium tuberculosis using Mask-RCNN
This is an example of object detection on Micro bacterium tuberculosis using Mask-RCNN

Mask-RCNN on Mycobacterium tuberculosis This is an example of object detection on Mycobacterium Tuberculosis using Mask RCNN. Implement of Mask R-CNN

This is an example of object detection on Micro bacterium tuberculosis using Mask-RCNN
This is an example of object detection on Micro bacterium tuberculosis using Mask-RCNN

Mask-RCNN on Mycobacterium tuberculosis This is an example of object detection on Mycobacterium Tuberculosis using Mask RCNN. Implement of Mask R-CNN

Example Of Fine-Tuning BERT For Named-Entity Recognition Task And Preparing For Cloud Deployment Using Flask, React, And Docker
Example Of Fine-Tuning BERT For Named-Entity Recognition Task And Preparing For Cloud Deployment Using Flask, React, And Docker

Example Of Fine-Tuning BERT For Named-Entity Recognition Task And Preparing For Cloud Deployment Using Flask, React, And Docker This repository contai

An example showing how to use jax to train resnet50 on multi-node multi-GPU

jax-multi-gpu-resnet50-example This repo shows how to use jax for multi-node multi-GPU training. The example is adapted from the resnet50 example in d

Quantile Regression DQN a Minimal Working Example, Distributional Reinforcement Learning with Quantile Regression
Quantile Regression DQN a Minimal Working Example, Distributional Reinforcement Learning with Quantile Regression

Quantile Regression DQN Quantile Regression DQN a Minimal Working Example, Distributional Reinforcement Learning with Quantile Regression (https://arx

Comments
  • mavlink_sitl_gazebo error

    mavlink_sitl_gazebo error

    Hi,

    I have a problem building your packages due to error with mavlink_sitl_gazebo. The output, when executing catkin build is as below.

    Errors     << mavlink_sitl_gazebo:make /home/hf/src/auav_2022_ws/logs/mavlink_sitl_gazebo/build.make.003.log
    /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/mavlink_interface.cpp: In member function ‘void MavlinkInterface::SendSensorMessages(uint64_t, HILData&)’:
    /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/mavlink_interface.cpp:208:14: error: ‘mavlink_hil_sensor_t’ {aka ‘struct __mavlink_hil_sensor_t’} has no member named ‘id’
      208 |   sensor_msg.id = data->id;
          |              ^~
    make[2]: *** [CMakeFiles/gazebo_mavlink_interface.dir/build.make:76: CMakeFiles/gazebo_mavlink_interface.dir/src/mavlink_interface.cpp.o] Error 1
    make[2]: *** Waiting for unfinished jobs....
    /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/gazebo_gimbal_controller_plugin.cpp: In member function ‘void gazebo::GimbalControllerPlugin::SendGimbalDeviceInformation()’:
    /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/gazebo_gimbal_controller_plugin.cpp:657:5: error: invalid conversion from ‘const char*’ to ‘const uint8_t*’ {aka ‘const unsigned char*’} [-fpermissive]
      657 |     "PX4",
          |     ^~~~~
          |     |
          |     const char*
    /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/gazebo_gimbal_controller_plugin.cpp:658:5: error: invalid conversion from ‘const char*’ to ‘const uint8_t*’ {aka ‘const unsigned char*’} [-fpermissive]
      658 |     "Gazebo SITL",
          |     ^~~~~~~~~~~~~
          |     |
          |     const char*
    /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/gazebo_gimbal_controller_plugin.cpp:659:5: error: invalid conversion from ‘const char*’ to ‘uint32_t’ {aka ‘unsigned int’} [-fpermissive]
      659 |     "", // custom_name
          |     ^~
          |     |
          |     const char*
    /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/gazebo_gimbal_controller_plugin.cpp:670:11: error: too many arguments to function ‘uint16_t mavlink_msg_gimbal_device_information_pack_chan(uint8_t, uint8_t, uint8_t, mavlink_message_t*, uint32_t, const uint8_t*, const uint8_t*, uint32_t, uint16_t, float, float, float, float, float, float)’
      670 |     yawMax);
          |           ^
    In file included from /usr/local/include/mavlink/v2.0/common/common.h:2332,
                     from /usr/local/include/mavlink/v2.0/common/mavlink.h:32,
                     from /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/include/gazebo_gimbal_controller_plugin.hh:39,
                     from /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/gazebo_gimbal_controller_plugin.cpp:21:
    /usr/local/include/mavlink/v2.0/common/mavlink_msg_gimbal_device_information.h:144:24: note: declared here
      144 | static inline uint16_t mavlink_msg_gimbal_device_information_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
          |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/gazebo_gimbal_controller_plugin.cpp: In member function ‘void gazebo::GimbalControllerPlugin::SendGimbalDeviceAttitudeStatus()’:
    /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/gazebo_gimbal_controller_plugin.cpp:705:5: error: invalid conversion from ‘uint32_t’ {aka ‘unsigned int’} to ‘const float*’ [-fpermissive]
      705 |     timeMs,
          |     ^~~~~~
          |     |
          |     uint32_t {aka unsigned int}
    /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/gazebo_gimbal_controller_plugin.cpp:707:5: error: cannot convert ‘const float*’ to ‘float’
      707 |     qArr,
          |     ^~~~
          |     |
          |     const float*
    In file included from /usr/local/include/mavlink/v2.0/common/common.h:2334,
                     from /usr/local/include/mavlink/v2.0/common/mavlink.h:32,
                     from /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/include/gazebo_gimbal_controller_plugin.hh:39,
                     from /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/gazebo_gimbal_controller_plugin.cpp:21:
    /usr/local/include/mavlink/v2.0/common/mavlink_msg_gimbal_device_attitude_status.h:117:119: note:   initializing argument 9 of ‘uint16_t mavlink_msg_gimbal_device_attitude_status_pack_chan(uint8_t, uint8_t, uint8_t, mavlink_message_t*, uint32_t, uint16_t, const float*, float, float, float, uint32_t)’
      117 |                                    uint32_t time_boot_ms,uint16_t flags,const float *q,float angular_velocity_x,float angular_velocity_y,float angular_velocity_z,uint32_t failure_flags)
          |                                                                                                                 ~~~~~~^~~~~~~~~~~~~~~~~~
    make[2]: *** [CMakeFiles/gazebo_gimbal_controller_plugin.dir/build.make:63: CMakeFiles/gazebo_gimbal_controller_plugin.dir/src/gazebo_gimbal_controller_plugin.cpp.o] Error 1
    make[1]: *** [CMakeFiles/Makefile2:1510: CMakeFiles/gazebo_gimbal_controller_plugin.dir/all] Error 2
    make[1]: *** Waiting for unfinished jobs....
    /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/gazebo_mavlink_interface.cpp: In member function ‘void gazebo::GazeboMavlinkInterface::LidarCallback(gazebo::LidarPtr&, const int&)’:
    /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/gazebo_mavlink_interface.cpp:824:14: error: ‘mavlink_distance_sensor_t’ {aka ‘struct __mavlink_distance_sensor_t’} has no member named ‘signal_quality’
      824 |   sensor_msg.signal_quality = lidar_message->signal_quality();
          |              ^~~~~~~~~~~~~~
    /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/gazebo_mavlink_interface.cpp: In member function ‘void gazebo::GazeboMavlinkInterface::SonarCallback(gazebo::SonarPtr&, const int&)’:
    /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/gazebo_mavlink_interface.cpp:896:14: error: ‘mavlink_distance_sensor_t’ {aka ‘struct __mavlink_distance_sensor_t’} has no member named ‘signal_quality’
      896 |   sensor_msg.signal_quality = sonar_message->signal_quality();
          |              ^~~~~~~~~~~~~~
    make[2]: *** [CMakeFiles/gazebo_mavlink_interface.dir/build.make:63: CMakeFiles/gazebo_mavlink_interface.dir/src/gazebo_mavlink_interface.cpp.o] Error 1
    make[1]: *** [CMakeFiles/Makefile2:1630: CMakeFiles/gazebo_mavlink_interface.dir/all] Error 2
    /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/gazebo_camera_manager_plugin.cpp: In member function ‘void gazebo::CameraManagerPlugin::_handle_storage_info(const mavlink_message_t*, sockaddr*)’:
    /home/hf/src/auav_2022_ws/src/auav_2022_sample/catkin_purt/mavlink_sitl_gazebo/src/gazebo_camera_manager_plugin.cpp:777:9: error: ‘STORAGE_TYPE_OTHER’ was not declared in this scope; did you mean ‘AIS_TYPE_OTHER’?
      777 |         STORAGE_TYPE_OTHER,                 // storage type
          |         ^~~~~~~~~~~~~~~~~~
          |         AIS_TYPE_OTHER
    make[2]: *** [CMakeFiles/gazebo_camera_manager_plugin.dir/build.make:63: CMakeFiles/gazebo_camera_manager_plugin.dir/src/gazebo_camera_manager_plugin.cpp.o] Error 1
    make[1]: *** [CMakeFiles/Makefile2:843: CMakeFiles/gazebo_camera_manager_plugin.dir/all] Error 2
    make: *** [Makefile:163: all] Error 2
    

    System: Ubuntu 20.04 with ROS noetic

    In process of trying to build the workspace, I got errors that were related to missing packages. Also, I saw that you added a new install script recently, but it does not resolve the problem completely. So, I probably miss some dependencies, and if that is the case I would be glad to have a script, which would install all of them.

    Looking forward to directions.

    Best Regards, Kuba

    opened by RocketFan 5
Owner
James Goppert
James Goppert
Neon-erc20-example - Example of creating SPL token and wrapping it with ERC20 interface in Neon EVM

Example of wrapping SPL token by ERC2-20 interface in Neon Requirements Install

null 7 Mar 28, 2022
Example-custom-ml-block-keras - Custom Keras ML block example for Edge Impulse

Custom Keras ML block example for Edge Impulse This repository is an example on

Edge Impulse 8 Nov 2, 2022
Python-kafka-reset-consumergroup-offset-example - Python Kafka reset consumergroup offset example

Python Kafka reset consumergroup offset example This is a simple example of how

Willi Carlsen 1 Feb 16, 2022
The 7th edition of NTIRE: New Trends in Image Restoration and Enhancement workshop will be held on June 2022 in conjunction with CVPR 2022.

NTIRE 2022 - Image Inpainting Challenge Important dates 2022.02.01: Release of train data (input and output images) and validation data (only input) 2

Andrés Romero 37 Nov 27, 2022
[CVPR 2022] CoTTA Code for our CVPR 2022 paper Continual Test-Time Domain Adaptation

CoTTA Code for our CVPR 2022 paper Continual Test-Time Domain Adaptation Prerequisite Please create and activate the following conda envrionment. To r

Qin Wang 87 Jan 8, 2023
"MST++: Multi-stage Spectral-wise Transformer for Efficient Spectral Reconstruction" (CVPRW 2022) & (Winner of NTIRE 2022 Challenge on Spectral Reconstruction from RGB)

MST++: Multi-stage Spectral-wise Transformer for Efficient Spectral Reconstruction (CVPRW 2022) Yuanhao Cai, Jing Lin, Zudi Lin, Haoqian Wang, Yulun Z

Yuanhao Cai 274 Jan 5, 2023
A compendium of useful, interesting, inspirational usage of pandas functions, each example will be an ipynb file

Pandas_by_examples A compendium of useful/interesting/inspirational usage of pandas functions, each example will be an ipynb file What is this reposit

Guangyuan(Frank) Li 32 Nov 20, 2022
An automated algorithm to extract the linear blend skinning (LBS) from a set of example poses

Dem Bones This repository contains an implementation of Smooth Skinning Decomposition with Rigid Bones, an automated algorithm to extract the Linear B

Electronic Arts 684 Dec 26, 2022
Instant Real-Time Example-Based Style Transfer to Facial Videos

FaceBlit: Instant Real-Time Example-Based Style Transfer to Facial Videos The official implementation of FaceBlit: Instant Real-Time Example-Based Sty

Aneta Texler 131 Dec 19, 2022
A repo that contains all the mesh keys needed for mesh backend, along with a code example of how to use them in python

Mesh-Keys A repo that contains all the mesh keys needed for mesh backend, along with a code example of how to use them in python Have been seeing alot

Joseph 53 Dec 13, 2022