Coder Social home page Coder Social logo

ruslanagishev / quadrotor_simulator Goto Github PK

View Code? Open in Web Editor NEW
14.0 1.0 3.0 28.76 MB

Quadrotor simulator based on Coursera Aerial Robotics course from University of Pennsylvania

MATLAB 88.35% M 0.45% CMake 8.32% Python 2.88%
uavsimulation trajectory-generation kalman-tracking matlab ros

quadrotor_simulator's Introduction

Quadrotor simulator

Thesis EnT-MIPT

Package description

Quadrotor simulation writen in Matlab with ROS communication. The package is written based on wonderful course from University of Pennsylvania on Coursera.

Fig. 1. Minimum snap trajectory via waypoints

Running the simulation

Clone the repository:

git clone https://github.com/RuslanAgishev/quadrotor_simulator.git
cd quadrotor_simulator/3D

From your Matlab command prompt run:

runsim.m

You would see a quadrotor executing a min-jerk trajectory via sequence of spiral waypoints around a pointcloud object.

ROS integration

During the fligt the drone's state is published as a ROS nav_msgs/Odometry message. You could also access quadrotor's controller commands published as array std_msgs/Float32MultiArray message. Connect to the master in order to see the topics:

export ROS_MASTER_URI=http://YOUR_COMPUTER_NAME_HERE:11311/
rostopic list

It is also possible to look at the prerecorder rosbag file from the simulation. Follow the next steps to do this.

  1. Download the bagfile and place it in the launch directory.

  2. Build the workspace:

cd quadrotor_simulator/ros_ws
catkin_make
source devel/setup.bash
  1. Adjust the poitcloud file path here and play recorded data:
roslaunch quadrotor_sim quadrotor_sim.launch

As an output you should see in Rviz: Trajectory publisher node provides quadrotor path (nav_msgs/Path message) from a sequence of odometry messages.

Implementation details

Minimum jerk and minimum snap trajectories generation implementation is available here. Reference: Daniel Mellinger and Vijay Kumar, 2011.

Quadrotor controller is implemented here. Reference: Coursera lecture from Prof. Vijay Kumar.

Refer to my Bachelor Thesis for more details (in Russian).

Citation

The package was used in the publication. Feel free to cite it if you find it relevant to your recearch.

@INPROCEEDINGS{8757477,
  author={Kalinov, Ivan and Agishev, Ruslan},
  booktitle={2018 Engineering and Telecommunication (EnT-MIPT)}, 
  title={Effective Detection of Real Trajectories of Highly Maneuverable UAVs Under Strong Noise Conditions}, 
  year={2018},
  volume={},
  number={},
  pages={193-196},
  keywords={Kalman filters;Trajectory;Filtration;Radar tracking;Filtering algorithms;Tracking;Drones;UAV;DSP;Kalman filter;trajectory analysis},
  doi={10.1109/EnT-MIPT.2018.00050}}

quadrotor_simulator's People

Contributors

ruslanagishev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

quadrotor_simulator's Issues

how to plot the Control Output F and M?

Dear Ruslan, do you know how to plot the control output (F and M)?
I need to observe the control input/output response for the output.
I have tried to plot it on the simulation_3d.m file but, it's not working
I appreciate your help.

Thank You

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.