Giter Site home page Giter Site logo

projet_p5_trousseau_camba's Introduction

Projet_P5_Trousseau_Camba

Introduction

The goal of this 4-week project is to make a state of the art of the simulator available on the drone market and try out some solutions.

For this project, the Software In the Loop method must be priviledged as it "characterizes a numerical simulation of the operation of the software of an embedded system during which the entire environment, including the hardware part of the embedded system, is simulated." from wikidictionnary. The focus will be on ROS friendly simulators. Mostly using Melodic, as well as Kinetic if needed.

The previous project found solutions using ROS, Gazebo and :

  • RotorS, in ROS Kinetic with various drones,
  • BebopS, a fork of RotorS which works with Parrot 2 only and on Melodic,
  • TUM simulator, only with A.R. Drone 2, on ROS Melodic,
  • SJTU drone, fork of TUM Simulator on Melodic, Parrot ARDrone,
  • ArduPilot and SITL simulator, no need of ROS nor Gazebo but compatible, very handy and widespread.

We have looked for the more widespread simulators that could be used along with ROS.

Comparison :

Comparison of exiting simulator :

Simulators Gazebo DJI Assistant DJI flight simulator jMAVsim New Paparazzi Simulator
Type Simulator 3D Software with embedded simulator Simulator 3D with flight controller and FDM Simulator 3D of drones (not worlds) Simulator 3D
ROS version All Kinetic (and Melodic with plugins) Not compatible Melodic Under developpement
Works on Linux Yes DJI's simulation supports only Windows/Mac, need to add the dji_m100 package below on the OSDK to make it run on Linux No only Windows 10 Yes Yes
Drones available Multirotors (1 to 8) All DJI Many DJI Quadrotors Rotorcrafts
Sensors Many (create and modify) Many Many No incorporation of sensors Depending on the vizualisation mode
Obstacles Yes None Yes and avoidance No No
Physical impact on the drone Yes (wind ...) No Yes (wind, crash, floor effect...) Some (crash...)
Worlds Many and customisable One Many Not made for this
SITL Yes No No Yes Yes
Compatibility Many Gazebo Can use various UAV controller Use MAVLink protocol, Java3D library, works with PX4, SITL simulator, interfaced to ROS With all the Paparazzi suite and others tools
Multi-vehicle simulation Yes but can only simulate a single type of vehicle at a time No No Recommended if you need to support a lot of quadcopters, and the simulation only needs to be approximate Possible but need some troubleshooting
Links Official website Link to download the assistant, only empty world available by itself Official web site, free for some drone but need a dji account With SITL, and more Wiki
More Most complete and used Only for DJI, poor versatility Mostly for training, need at least a DJI controller Multi drone

Added to the simulator, ROS packages are here to complete the simulation according to our needs.

Packages useful :

Package dji_m100 suite Hector quadrotor SJTU ROS Quadrotor Simulator BebopS
Type Package Metapackage Package Package Package, forked from RotorS
ROS version Kinetic and Melodic Kinetic and Melodic Melodic Indigo (maybe Kinetic) Kinetic and Melodic
Simulator Gazebo 7 or 8 Gazebo 7 or more Gazebo 7 Gazebo 7 Gazebo 7 or more
Cmake version 2.8.3 or newer 2.8.3 or newer 3.2.2 2.8.3 2.3.8
Drones DJI M100 only Generic quadrotor Parrot AR Drone AsTec and others multirotors Parot Bebop 2
Sensors Camera, GPS, mission Forward camera, laser, sonar, many more... Forward/backward camera, laser, sonar, IMU Camera, sonar IMU, camera, laser 1D
Topics uav1/... same as before Odom, attitude, cmd_vel Topics related to sensors or use RQT GUI
Navigation Joysticks Joysticks, can add keyboard Joystick, keyboard or waypoints Xbox joysticks, waypoints, autonomous Waypoints in a text file
Worlds Some (collision etc) Complex, indoor and Outdoor Some Many, indoor and outdoor Some, outside
Physical impact on the drone None Wind Wind Wind Wind
GUI Rviz or rqt_gui Rviz rqt_gui or GZcliebnt from Gazebo Rviz Rviz
Compatibility Gazebo pluging and a modifiable URDF file, used with the OSDK Generic modifiable quadrortor URDF file, interface with Gazebo, cannot support MAVLinks and hardware platforms like Pixhawk. Can be interfaced with MoveIt! Many Gazebo plugins Use mav comm package from PX4, MoveIt! and RotorS Modifiable URDF files,
More Need the drone. Collision free Kinect, multiple plugins, demos, flight dynamics Simulate a race. May need Gazebo 9 and Ubuntu 18.04. Fork of tum_simulator Path planning, obstacle avoidance, ~2 and 3D mapping Choose your own FDM backends
Links See branch ROS_Kinetic_Gazebo Package, tutorial, more explanations and possibilities See previous work or here See here Tutorial

If we want to use more advanced flight fonctionalities, flight controllers can also be used. They require a more complicated structure, with often several softwares that have to be interfaced together.

Flight controller :

Flight controller PX4 Ardupilot Paparazzi
ROS version Melodic Melodic Under developpement
Simulator Gazebo, jMAVsim SITL, Gazebo Gazebo or its own simulator New Paparazzi Simulator using JSBSim (FDM)
Compatibility Plugin Gazebo 9 Plugin Gazebo, use SITLsimulator and MavProxy, however ROS with SITL in Gazebo is under creation Gazebo, JBSim, FlightGear
Drones Multirotors Wide range, can use package ArduCopter, multirotors ready to use here Multirotors (choice limited by hardware)
Multi-vehicle simulation Possible with Gazebo, FlightGear and JMAVSim Tools in development Possible
Navigation GPS (waypoints and position hold), stereo vision GPS, mission planner, follow me and click on the simulation (with SITL) GPS (waypoints and position hold), stereo vision
Communication MAV Link MAV Link or MAVRos (see note 2) MAV Link
More Flight stack and autopilot DO not need ROS and Gazebo to work properly but compatible (see note 1), use Linux Ubuntu 18.04 Automated take off and landing
Links Official github Wiki Wiki

Notes :

  1. "We will be using a standard version of ArduPilot but with a custom plugin for Gazebo, until the gazebo plugin gets merged into Gazebo-master. This plugin can be used with or without ROS integration."
  2. "MAVROS is a ROS β€œnode” that can convert between ROS topics and MAVLink messages allowing ArduPilot vehicles to communicate with ROS."
  3. About SITL : SITL allows you to run ArduPilot on your PC directly, without any special hardware. It takes advantage of the fact that ArduPilot is a portable autopilot that can run on a very wide variety of platforms. When running in SITL the sensor data come from a flight dynamics model in a flight simulator. Is only in 2D but has many sensors : GPS, wind, barometer, avoidance, fence, vibrations...

More projects :

Name OSDK for DJI Paparazzi Project
Type Development toolkit for developing applications, which could run on the onboard computer. Needs to be used with the DJI assistant. UAV multiple software
ROS version Kinetic, Cmake 2.8.3 or newer Paparazzi Project
Simulator Got is own with the DJI assistant, compatible with Gazebo 7 or more through dji_m100 package NPS or Gazebo
Drones All DJI Rotorcrafts
Sensors Camera, GPS, mission, IMU Depending on the vizualisation mode
Navigation With the assistant, use joysticks
Physical impact on the drone None
GUI From the assistant
More Need the drone, runs on Linux and ROS
Links Package

To summarize :

Our project group found out that Gazebo was the best simulator to be used regarding its ROS compatibility, sensors emulated and modifiability/compatibility as it uses plugins to accept custom inputs, output custom data, and perform custom control in simulation. The former group project tried out :

  • BebopsS, worked well but needed to change the waypoints directly onto the waypoints.txt
  • SJTU_drone, no issues noted
  • ArduPilot and SITL, the most advanced tutorial with the most capacities, but did not try with Gazebo.

Hence, we choose to test out 2 different solutions : continue with the Ardupilot with Gazebo and/or ROS, look at the possibilites given by the Hector Quadrotor metapackage. We will also be looking for informations about DJI assistant because the ALPAGA team already has a M600.

Conclusion :

We tried out 3 solutions, working very differently from one to another :

  • Hector quadrotor, which is a meta package,
  • DJI assistant and flight simulator, a full suite of software to use with a DJI drone, unfortunatly we couldn't try it by ourselves,
  • Ardupilot flight controller paired with Gazebo or ROS.

Hector had the advantage of being very user friendly : everthing comes with the package, no need to install many softwares and it is low level so pretty easy to modify.
DJI was very complete and accurate but would only work using the DJI hardware.
Ardupilot was the most complete but it was a bit hard to understand its architecture with ROS or Gazebo.

Yet, from what we tried, we would recommend PX4 with ROS and Gazebo for your project regarding our work and the previous one. In fact, it is the same architecture as Ardupilot but with ROS dependencies "built in" (PX4 and ROS are working together to give us this solution). Even though the documentation, examples and community is bigger for Ardupilot, we think that PX4 open source documentation would me enough.
The hector package is not to put away because of its versatility and utility with other solutions (such as ArduPilot); and DJI Assistant should be tried as you have the chance to already got the Hardware.

How to use this repo :

There are two branch that have been created depending on which ROS version is used (Kinetic or Melodic).

  • In the kinetic branch there are the explanation about the DJI assistant test along with the installation file.

  • In the melodic branch there are one markdown file for each method we tried : hector_quadrotor package and ArduPilot

We also created a folder with all the pictures that illustrate our markdown files and some extra graph.

projet_p5_trousseau_camba's People

Contributors

lazarius2160 avatar orann78 avatar lozenguez avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.