diff --git a/px4_setup/px4setup.sh b/px4_setup/px4setup.sh index 6129142..fa8d2fd 100644 --- a/px4_setup/px4setup.sh +++ b/px4_setup/px4setup.sh @@ -1,149 +1,7 @@ -#!/bin/bash - -# -# Setup script for PX4 firmware and sitl development eco-system -# Author: Tarek Taha, Mohamed Abdelkader -# References: http://dev.px4.io/master/en/setup/dev_env_linux_ubuntu.html#sim_nuttx -# - -if [ -z "$1" ]; then - ARROW_HOME=$HOME -else - ARROW_HOME=$1 -fi - -if [ -f /.dockerenv ]; then - pass=arrow - echo "Running within docker, installing initial dependencies"; - echo $pass | sudo -S apt-get --quiet -y update && DEBIAN_FRONTEND=noninteractive apt-get --quiet -y install \ - ca-certificates \ - gnupg \ - lsb-core \ - sudo \ - wget \ - ; -else - read -p "Enter user password please (for sudo): " -s pass -fi - -# script directory -DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) - -# check requirements.txt exists (script not run in source tree) -REQUIREMENTS_FILE="px4_requirements.txt" -if [[ ! -f "${DIR}/${REQUIREMENTS_FILE}" ]]; then - echo "FAILED: ${REQUIREMENTS_FILE} needed in same directory as setup_px4.sh (${DIR})." - return 1 -fi - -echo "Installing PX4 general dependencies" - -echo $pass | sudo -S apt-get update -y --quiet -echo $pass | sudo -S DEBIAN_FRONTEND=noninteractive apt-get -y --quiet --no-install-recommends install \ - astyle \ - build-essential \ - ccache \ - clang \ - clang-tidy \ - cmake \ - cppcheck \ - doxygen \ - file \ - g++ \ - gcc \ - gdb \ - git \ - lcov \ - make \ - ninja-build \ - python3 \ - python3-dev \ - python3-pip \ - python3-setuptools \ - python3-wheel \ - rsync \ - shellcheck \ - unzip \ - xsltproc \ - zip \ - ; - -# Python3 dependencies -echo -echo "Installing PX4 Python3 dependencies" -pip3 install --user -r ${DIR}/px4_requirements.txt - -# Simulation dependencies -echo $pass | sudo -S DEBIAN_FRONTEND=noninteractive apt-get -y --quiet --no-install-recommends install \ - ant \ - openjdk-11-jre \ - openjdk-11-jdk \ - libvecmath-java \ - xmlstarlet \ - ; - -echo $pass | sudo -S DEBIAN_FRONTEND=noninteractive apt-get -y --quiet --no-install-recommends install \ - gstreamer1.0-plugins-bad \ - gstreamer1.0-plugins-base \ - gstreamer1.0-plugins-good \ - gstreamer1.0-plugins-ugly \ - gstreamer1.0-libav \ - libeigen3-dev \ - libgazebo9-dev \ - libgstreamer-plugins-base1.0-dev \ - libimage-exiftool-perl \ - libopencv-dev \ - libxml2-utils \ - pkg-config \ - protobuf-compiler \ - dmidecode \ - bc \ - ; - -echo $pass | sudo -S update-alternatives --set java $(update-alternatives --list java | grep "java-11") - -#Setting up PX4 Firmware -if [ ! -d "${HOME}/Firmware" ]; then - cd ${HOME} - git clone https://github.com/PX4/PX4-Autopilot.git --recursive -else - echo "Firmware already exists. Just pulling latest upstream...." - cd ${HOME}/Firmware - git pull -fi -cd ${HOME}/PX4-Autopilot -make clean && make distclean -#git checkout v1.10.1 && git submodule update --recursive -#git checkout v1.11.2 && git submodule update --recursive -git submodule update --recursive - -#cd ${HOME}/Firmware/Tools/sitl_gazebo/external/OpticalFlow && git submodule update --recursive # this is needed for PX4 v1.10.1 -# cd ${HOME}/Firmware/Tools/sitl_gazebo/external/OpticalFlow/external/klt_feature_tracker && git submodule update --recursive # this is needed for PX4 v1.10.1 -#### NOTE: in PX4 v1.10.1, there is a bug in Firmware/Tools/sitl_gazebo/include/gazebo_opticalflow_plugin.h:43:18 -#### NOTE: #define HAS_GYRO TRUE needs to be replaced by #define HAS_GYRO true -# sed -i 's/#define HAS_GYRO.*/#define HAS_GYRO true/' ${HOME}/Firmware/Tools/sitl_gazebo/include/gazebo_opticalflow_plugin.h # this is needed for PX4 v1.10.1 - -cd ${HOME}/Firmware -DONT_RUN=1 make px4_sitl gazebo - -#Copying this to .bashrc file -grep -xF 'source ~/Firmware/Tools/setup_gazebo.bash ~/Firmware ~/Firmware/build/px4_sitl_default' ${HOME}/.bashrc || echo "source ~/Firmware/Tools/setup_gazebo.bash ~/Firmware ~/Firmware/build/px4_sitl_default" >> ${HOME}/.bashrc -grep -xF 'export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/Firmware' ${HOME}/.bashrc || echo "export ROS_PACKAGE_PATH=\$ROS_PACKAGE_PATH:~/Firmware" >> ${HOME}/.bashrc -grep -xF 'export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/Firmware/Tools/sitl_gazebo' ${HOME}/.bashrc || echo "export ROS_PACKAGE_PATH=\$ROS_PACKAGE_PATH:~/Firmware/Tools/sitl_gazebo" >> ${HOME}/.bashrc +grep -xF 'source ~/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4-Autopilot ~/PX4-Autopilot/build/px4_sitl_default' ${HOME}/.bashrc || echo "source ~/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4-Autopilot ~/PX4-Autopilot/build/px4_sitl_default" >> ${HOME}/.bashrc +grep -xF 'export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot' ${HOME}/.bashrc || echo "export ROS_PACKAGE_PATH=\$ROS_PACKAGE_PATH:~/PX4-Autopilot" >> ${HOME}/.bashrc +grep -xF 'export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/sitl_gazebo' ${HOME}/.bashrc || echo "export ROS_PACKAGE_PATH=\$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/sitl_gazebo" >> ${HOME}/.bashrc #grep -xF 'export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/home/aaal/catkin_ws/src/swarm_sim/models' ${HOME}/.bashrc || echo "export GAZEBO_MODEL_PATH=\$GAZEBO_MODEL_PATH:/home/aaal/catkin_ws/src/swarm_sim/models" >> ${HOME}/.bashrc grep -xF 'export GAZEBO_PLUGIN_PATH=$GAZEBO_PLUGIN_PATH:/usr/lib/x86_64-linux-gnu/gazebo-9/plugins' ${HOME}/.bashrc || echo "export GAZEBO_PLUGIN_PATH=\$GAZEBO_PLUGIN_PATH:/usr/lib/x86_64-linux-gnu/gazebo-9/plugins" >> ${HOME}/.bashrc -source ${HOME}/.bashrc - -# Install QGroundControl -###### Not working yet!!! -echo $pass | sudo -S usermod -a -G dialout $USER -echo $pass | sudo -S apt-get remove modemmanager -y -echo $pass | sudo -S apt-get install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y -echo $pass | sudo -S apt-get install fuse libpulse-mainloop-glib0 -y - -cd ${HOME} -wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/latest/QGroundControl.AppImage -chmod +x ./QGroundControl.AppImage - -echo "**** Make sure to logout and login again ****" +source ${HOME}/.bashrc \ No newline at end of file