Git Product home page Git Product logo

mission8_outofcontrols's Introduction

Texas Aerial Robotics ROS package

In this repository are the files nessary to build our ROS (Robot Operating System) package.

We use Ubuntu 18.04 and ROS Melodic

This package is loaded and runs on our Nvidia Jetson TX2 onboard the quadcopter.

It then feeds commands to the Pixhawk 2 using MAVROS.

Note that there is a Troubleshooting section at the bottom of this page.

Code blocks are meant to be typed in Terminal windows. "Control+Alt+T" opens a new Terminal window.

1. Install ROS

  • Do Desktop Install
  • Follow until Step 1.7 at the end of the page

First, install ROS Melodic using the following instructions: http://wiki.ros.org/melodic/Installation/Ubuntu

2. Set Up Catkin workspace

We use catkin build instead of catkin_make. Please install the following:

sudo apt-get install python-wstool python-rosinstall-generator python-catkin-tools

Then, initialize the catkin workspace:

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin init

3. Dependencies installation

Install mavros and mavlink from source:

cd ~/catkin_ws
wstool init ~/catkin_ws/src

rosinstall_generator --upstream mavros | tee /tmp/mavros.rosinstall
rosinstall_generator mavlink | tee -a /tmp/mavros.rosinstall
wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src
rosdep install --from-paths src --ignore-src --rosdistro `echo $ROS_DISTRO` -y

catkin build

Open your ~/.bashrc for editing:

gedit ~/.bashrc

Add this line to end of ~/.bashrc:

source ~/catkin_ws/devel/setup.bash

Save and exit. Then run:

source ~/.bashrc

4. Clone our ROS package repository

cd ~/catkin_ws/src
git clone https://github.com/Texas-Aerial-Robotics/Mission8_OutOfControls.git

Our repository should now be copied to ~/catkin_ws/src/Mission8_OutOfControls/ (don't run this line. This is just saying that if you browse in the file manager, you will see those folders).

5. Build instructions

Inside catkin_ws, run catkin build:

cd ~/catkin_ws
catkin build

6. Install Ardupilot

In home directory:

cd ~
git clone https://github.com/ArduPilot/ardupilot.git
cd ardupilot
git checkout Copter-3.6
git submodule update --init --recursive

Install some packages:

sudo apt install python-matplotlib python-serial python-wxgtk3.0 python-wxtools python-lxml python-scipy python-opencv ccache gawk git python-pip python-pexpect

Use pip (Python package installer) for some other packages:

sudo pip2 install future pymavlink MAVProxy

Open ~/.bashrc for editing:

gedit ~/.bashrc

Add these lines to end of ~/.bashrc (the file open in the text editor):

export PATH=$PATH:$HOME/ardupilot/Tools/autotest
export PATH=/usr/lib/ccache:$PATH

Save and close the text editor.

Reload ~/.bashrc:

. ~/.bashrc

Run SITL (Software In The Loop) once to set params:

cd ~/ardupilot/ArduCopter
sim_vehicle.py -w

Once the new Terminal window pops up and you see the ArduPilot software say "READY TO FLY," you can kill the process by hitting "Control+C" in the Terminal it is running out of.

7. Install Gazebo

Setup your computer to accept software from http://packages.osrfoundation.org:

sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'

Setup keys:

wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -

Reload software list:

sudo apt update

Install Gazebo:

sudo apt install gazebo9 libgazebo9-dev

Install ROS plugins:

sudo apt install ros-melodic-gazebo-ros ros-melodic-gazebo-plugins

Get Gazebo plugin for APM (ArduPilot Master):

cd ~
git clone https://github.com/SwiftGust/ardupilot_gazebo
cd ardupilot_gazebo
git checkout gazebo9
mkdir build
cd build
cmake ..
make -j4
sudo make install

Set paths for models:

echo 'export GAZEBO_MODEL_PATH=~/ardupilot_gazebo/gazebo_models' >> ~/.bashrc
. ~/.bashrc

Add Gazebo Models:

hg clone https://bitbucket.org/osrf/gazebo_models ~/gazebo_ws/gazebo_models
cd ~/gazebo_ws/gazebo_models
echo 'export GAZEBO_MODEL_PATH=~/gazebo_ws/gazebo_models:${GAZEBO_MODEL_PATH}' >> ~/.bashrc
source ~/.bashrc

8. Run Simulator

In one Terminal (Terminal 1), run SITL:

cd ~/ardupilot/ArduCopter/
sim_vehicle.py -j4 -f Gazebo --console

In another Terminal (Terminal 2), run Gazebo:

gazebo --verbose ~/ardupilot_gazebo/gazebo_worlds/iris_irlock_demo.world

Set parameters for sim in the same window after you run the sim_vehicle.py script. Do this by using command param load <filename> Example params can be found in the Controls-Other repo: https://github.com/Texas-Aerial-Robotics/Controls-Other

To load our parameters, clone our Controls-Other repository (Terminal 3):

cd ~
git clone https://github.com/Texas-Aerial-Robotics/Controls-Other

In the Ardupilot simulator Terminal (Terminal 1) run:

param load ../../Controls-Other/Params/Sim_master.param

Play around, then close by "Control+C" in the Terminal windows.

9. Install Mission 8 Simulator

In order to use the Ardupilot simulator with the Mission 8 field - as well as other plugins such as cameras - you need to add ROS packages to Gazebo. Install the following dependencies:

 sudo apt install ros-melodic-gazebo-ros ros-melodic-gazebo-plugins

Clone in the mission8_sim repository into your catkin_ws:

cd ~/catkin_ws/src
git clone https://github.com/Texas-Aerial-Robotics/mission8_sim.git

Add the following to your ~/.bashrc to help Gazebo find the mission8_sim models:

export GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:~/catkin_ws/src/mission8_sim/models

Build the ROS packages you just downloaded:

cd ~/catkin_ws/
catkin build

Reload ~/.bashrc so the Terminal knows where the packages are located:

source ~/.bashrc

Run a 3 drone sim with roslaunch

In one Terminal (Terminal 1):

roslaunch mission8_sim multiDrone.launch

In another Terminal (Terminal 2), run the following command to start and connect a Ardupilot simulator to Gazebo:

cd ~/ardupilot/ArduCopter/ && sim_vehicle.py -j4 -f Gazebo --console --location=HOME -I0

In another Terminal (Terminal 3), run the following command to start and connect a Ardupilot simulator to Gazebo:

cd ~/ardupilot/ArduCopter/ && sim_vehicle.py -j4 -f Gazebo --console --location=HOME -I1

In another Terminal (Terminal 4), run the following command to start and connect a Ardupilot simulator to Gazebo:

cd ~/ardupilot/ArduCopter/ && sim_vehicle.py -j4 -f Gazebo --console --location=HOME -I2

As you can see, the command above can be modified for any number of drones desired. Play around, then close by "Control+C" in the Terminal windows.

To view camera plugin

Install image view:

sudo apt install ros-melodic-image-view

To see camera view:

rosrun image_view image_view image:=/webcam/image_raw

10. Run Mavros Scripts from Controls-Ros package

Launch the sim via roslaunch (Terminal 1):

roslaunch mission8_sim droneOnly.launch

In another Terminal (Terminal 2) run the following command to start and connect the Ardupilot sim to Gazebo:

cd ~/ardupilot/ArduCopter/ && sim_vehicle.py -f gazebo-iris --console -I0

In another Terminal (Terminal 3) run:

cd ~/Controls-Other/Launch/
roslaunch apm.launch

Be sure to wait for the drone to go throught the full initialization process. The drone will be ready to fly once the console reads Optical Flow now aiding and origin set to GPS. For the competition we will not use GPS to home the drone, but for introduction sake let the drone use GPS

In another Terminal (Terminal 4) run:

rosrun flight_pkg staple

Then in MavProxy (Terminal 2) switch the mode into guided:

mode GUIDED

you did it! ๐ŸŽ‰


Troubleshooting and Common Problems:

During Catkin Build:

Complains about "GeographicLib"

cd ~/catkin_ws/src/mavros/mavros/scripts
sudo ./install_geographiclib_datasets.sh

Complains about "Geometry Msgs"

sudo apt install ros-melodic-geometry-msgs

References:

mission8_outofcontrols's People

Contributors

ericjohnson97 avatar texasaerialrobotics avatar kshah123 avatar umer936 avatar pramukap avatar brian-menezes avatar rkoripalli avatar

Watchers

James Cloos 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.