From 346d31735cd5e0140920ca6bef8418fc7ac72245 Mon Sep 17 00:00:00 2001 From: Alexey Kamenev Date: Wed, 20 Sep 2017 14:32:10 -0700 Subject: [PATCH] 1. Added RC override-based APM rover sample. 2. Added Redtail Docker image for simulation. 3. Added Erle Rover Docker simulation files. --- README.md | 8 +- .../include/px4_controller/px4_controller.h | 25 ++- .../px4_controller/src/px4_controller.cpp | 74 +++++++ ros/scripts/jetson_ros_install.sh | 1 - .../platforms/erle/erle-sim/Dockerfile.indigo | 89 +++++++++ tools/platforms/erle/erle-sim/README.MD | 54 +++++ .../platforms/erle/erle-sim/images/gazebo.png | Bin 0 -> 87764 bytes tools/platforms/erle/erle-sim/run_erle_sim.sh | 20 ++ .../erle/erle-sim/scripts/init_workspace.bash | 44 ++++ tools/simulation/docker/Dockerfile.kinetic | 188 ++++++++++++++++++ .../simulation/docker/build_redtail_image.sh | 17 ++ .../docker/scripts/build_redtail.sh | 29 +++ .../docker/scripts/init_workspace.sh | 51 +++++ tools/simulation/run_redtail_docker.sh | 42 ++++ 14 files changed, 638 insertions(+), 4 deletions(-) create mode 100644 tools/platforms/erle/erle-sim/Dockerfile.indigo create mode 100644 tools/platforms/erle/erle-sim/README.MD create mode 100644 tools/platforms/erle/erle-sim/images/gazebo.png create mode 100755 tools/platforms/erle/erle-sim/run_erle_sim.sh create mode 100644 tools/platforms/erle/erle-sim/scripts/init_workspace.bash create mode 100644 tools/simulation/docker/Dockerfile.kinetic create mode 100755 tools/simulation/docker/build_redtail_image.sh create mode 100755 tools/simulation/docker/scripts/build_redtail.sh create mode 100755 tools/simulation/docker/scripts/init_workspace.sh create mode 100755 tools/simulation/run_redtail_docker.sh diff --git a/README.md b/README.md index f4993ab..4a439b3 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,14 @@ # NVIDIA Redtail project -Autonomous drone navigation using deep learning. Refer to [wiki](https://github.com/NVIDIA-Jetson/redtail/wiki) for more information on how to get started. +Autonomous navigation for drones and ground vehicles using deep learning. Refer to [wiki](https://github.com/NVIDIA-Jetson/redtail/wiki) for more information on how to get started. # News +* **2017-10-12**: added full simulation Docker image, experimental support for APM Rover and support for MAVROS v0.21+. + + * Redtail simulation Docker image contains all the components required to run full Redtail simulation in Docker. Refer to [wiki](../../wiki/Testing-in-Simulator) for more information. + * Experimental support for APM Rover. Refer to [wiki](../../wiki#platforms) for more information. + * Several other changes including support for MAVROS v0.21+, updated Jetson install script and few bug fixes. + * **2017-09-07**: NVIDIA Redtail project is released as an open source project. Redtail's AI modules allow building autonomous drones and mobile robots based on Deep Learning and NVIDIA Jetson TX1 and TX2 embedded systems. diff --git a/ros/packages/px4_controller/include/px4_controller/px4_controller.h b/ros/packages/px4_controller/include/px4_controller/px4_controller.h index 9fce958..c55acf9 100644 --- a/ros/packages/px4_controller/include/px4_controller/px4_controller.h +++ b/ros/packages/px4_controller/include/px4_controller/px4_controller.h @@ -79,6 +79,27 @@ class PX4Controller float /*linear_control_val*/, float /*angular_control_val*/, bool /*has_command*/) override; }; + class APMRover: public Vehicle + { + std::string getName() override { return "APMRover"; } + std::string getOffboardModeName() override { return "MANUAL"; } + bool init(ros::NodeHandle& nh) override; + void printArgs() override; + void executeCommand(const PX4Controller& ctl, const geometry_msgs::PoseStamped& goto_pose, + float linear_control_val, float angular_control_val, bool has_command) override; + private: + float turn_angle_scale_ = 1; + ros::Publisher rc_pub_; + int rc_steer_trim_ = 1500; + int rc_steer_dz_ = 30; + int rc_steer_min_ = 1100; + int rc_steer_max_ = 1900; + int rc_throttle_trim_ = 1500; + int rc_throttle_dz_ = 30; + int rc_throttle_min_ = 1100; + int rc_throttle_max_ = 1900; + }; + private: const int QUEUE_SIZE = 5; const int DNN_FRAME_WIDTH = 320; @@ -101,8 +122,8 @@ class PX4Controller float doExpSmoothing(float cur, float prev, float factor) const; float getPoseDistance(geometry_msgs::PoseStamped& pose1, geometry_msgs::PoseStamped& pose2) const; geometry_msgs::Quaternion getRotationTo(geometry_msgs::Point& position, geometry_msgs::Point& target_position) const; - geometry_msgs::Point computeNextWaypoint( geometry_msgs::PoseStamped& current_pose, - float linear_control_val, float angular_control_val, float linear_speed) const; + geometry_msgs::Point computeNextWaypoint(geometry_msgs::PoseStamped& current_pose, + float linear_control_val, float angular_control_val, float linear_speed) const; private: std::unique_ptr vehicle_; diff --git a/ros/packages/px4_controller/src/px4_controller.cpp b/ros/packages/px4_controller/src/px4_controller.cpp index b765d05..af42800 100644 --- a/ros/packages/px4_controller/src/px4_controller.cpp +++ b/ros/packages/px4_controller/src/px4_controller.cpp @@ -39,6 +39,78 @@ void PX4Controller::Drone::executeCommand(const PX4Controller& ctl, const geomet ctl.local_pose_pub_.publish(goto_pose); } +bool PX4Controller::APMRover::init(ros::NodeHandle& nh) +{ + nh.param("turn_angle_scale", turn_angle_scale_, 1.0f); + + const int QUEUE_SIZE = 1; + rc_pub_ = nh.advertise("/mavros/rc/override", QUEUE_SIZE); + if(!rc_pub_) + { + ROS_INFO("Could not advertise to /mavros/rc/override"); + return false; + } + + auto get_param_client = nh.serviceClient("/mavros/param/get"); + mavros_msgs::ParamGet param_get; + param_get.request.param_id = "RC1_TRIM"; + if (get_param_client.call(param_get) && param_get.response.success) + rc_steer_trim_ = (int)param_get.response.value.integer; + nh.param("rc_steer_trim", rc_steer_trim_, rc_steer_trim_); + + param_get.request.param_id = "RC1_DZ"; + if (get_param_client.call(param_get) && param_get.response.success) + rc_steer_dz_ = (int)param_get.response.value.integer; + nh.param("rc_steer_dz", rc_steer_dz_, rc_steer_dz_); + + param_get.request.param_id = "RC3_TRIM"; + if (get_param_client.call(param_get) && param_get.response.success) + rc_throttle_trim_ = (int)param_get.response.value.integer; + nh.param("rc_throttle_trim", rc_throttle_trim_, rc_throttle_trim_); + + param_get.request.param_id = "RC3_DZ"; + if (get_param_client.call(param_get) && param_get.response.success) + rc_throttle_dz_ = (int)param_get.response.value.integer; + nh.param("rc_throttle_dz", rc_throttle_dz_, rc_throttle_dz_); + + return true; +} + +void PX4Controller::APMRover::printArgs() +{ + ROS_INFO("(%s) Turn angle scale : %.1f", getName().c_str(), turn_angle_scale_); + ROS_INFO("(%s) Steer trim : %d", getName().c_str(), rc_steer_trim_); + ROS_INFO("(%s) Steer deadzone : %d", getName().c_str(), rc_steer_dz_); + ROS_INFO("(%s) Steer min : %d", getName().c_str(), rc_steer_min_); + ROS_INFO("(%s) Steer max : %d", getName().c_str(), rc_steer_max_); + ROS_INFO("(%s) Throttle trim : %d", getName().c_str(), rc_throttle_trim_); + ROS_INFO("(%s) Throttle deadzone: %d", getName().c_str(), rc_throttle_dz_); + ROS_INFO("(%s) Throttle min : %d", getName().c_str(), rc_throttle_min_); + ROS_INFO("(%s) Throttle max : %d", getName().c_str(), rc_throttle_max_); +} + +void PX4Controller::APMRover::executeCommand(const PX4Controller& ctl, const geometry_msgs::PoseStamped& goto_pose, + float linear_control_val, float angular_control_val, bool has_command) +{ + ROS_ASSERT(is_initialized_); + + // REVIEW alexeyk: should not use RC override. + mavros_msgs::OverrideRCIn rc_override; + for (int c = 0; c < 8; c++) + rc_override.channels[c] = mavros_msgs::OverrideRCIn::CHAN_NOCHANGE; + int steer_delta = turn_angle_scale_ * angular_control_val; + int steer_dz = steer_delta != 0 ? copysign(rc_steer_dz_, steer_delta) : 0; + rc_override.channels[0] = rc_steer_trim_ + steer_dz + steer_delta; + int throttle_delta = ctl.linear_speed_ * linear_control_val; + int throttle_dz = throttle_delta != 0 ? copysign(rc_throttle_dz_, throttle_delta) : 0; + rc_override.channels[2] = rc_throttle_trim_ + throttle_dz + throttle_delta; + if(has_command) + { + ROS_DEBUG("APMRover::executeCommand: %d, %d (%.2f, %.2f)", (int)rc_override.channels[0], (int)rc_override.channels[2], linear_control_val, angular_control_val); + rc_pub_.publish(rc_override); + } +} + void PX4Controller::px4StateCallback(const mavros_msgs::State::ConstPtr &msg) { fcu_state_ = *msg; @@ -285,6 +357,8 @@ bool PX4Controller::parseArguments(const ros::NodeHandle& nh) nh.param("vehicle_type", vehicle_type, "drone"); if (vehicle_type == "drone") vehicle_ = std::make_unique(); + else if (vehicle_type == "apmrover") + vehicle_ = std::make_unique(); else { ROS_ERROR("Unknown vehicle type: %s", vehicle_type.c_str()); diff --git a/ros/scripts/jetson_ros_install.sh b/ros/scripts/jetson_ros_install.sh index d96eb01..1d036bc 100755 --- a/ros/scripts/jetson_ros_install.sh +++ b/ros/scripts/jetson_ros_install.sh @@ -129,7 +129,6 @@ catkin_make -DGSTREAMER_VERSION_1_x=On # Installing caffe_ros ROS package and its dependencies. echo "${green}Starting installation of caffe_ros and px4_controller ROS packages...${reset}" cd $HOME -# REVIEW alexeyk: update with GitHub URL. if [ ! -d "$HOME/redtail" ]; then echo "Cloning caffe_ros sources..." git clone https://github.com/NVIDIA-Jetson/redtail diff --git a/tools/platforms/erle/erle-sim/Dockerfile.indigo b/tools/platforms/erle/erle-sim/Dockerfile.indigo new file mode 100644 index 0000000..a99a64e --- /dev/null +++ b/tools/platforms/erle/erle-sim/Dockerfile.indigo @@ -0,0 +1,89 @@ +FROM ubuntu:14.04 + +# Build with: +# docker build -t erle-sim:indigo -f Dockerfile.indigo . + +ENV HOME /root + +COPY scripts/* $HOME/scripts/ +RUN chmod +x -R $HOME/scripts/* +RUN chown -R root:root $HOME/scripts/* + +WORKDIR $HOME +# Add repos: +# ROS +# Gazebo +# DRC +RUN apt-get update && apt-get install -y --no-install-recommends wget && \ + sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' && \ + apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 0xB01FA116 && \ + sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -sc) main" > /etc/apt/sources.list.d/gazebo-stable.list' && \ + wget http://packages.osrfoundation.org/gazebo.key -O - | apt-key add - && \ + sh -c 'echo "deb http://packages.osrfoundation.org/drc/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/drc-latest.list' && \ + wget http://packages.osrfoundation.org/drc.key -O - | apt-key add - && \ + apt-get update + +# Install required components first. +RUN apt-get install -y --no-install-recommends \ + gawk make git curl cmake g++ \ + python-dev python-pip python-matplotlib \ + python-serial python-wxgtk2.8 python-scipy \ + python-opencv python-numpy python-pyparsing \ + python-setuptools ccache realpath \ + libopencv-dev libxml2-dev libxslt1-dev \ + lsb-release unzip libgl1-mesa-dri + +# Python packages and MAVProxy +RUN pip install wheel && \ + pip install future && \ + pip install pymavlink catkin_pkg --upgrade && \ + pip install MAVProxy==1.5.2 + +# ArUco +RUN wget "https://downloads.sourceforge.net/project/aruco/OldVersions/aruco-1.3.0.tgz?ts=1494024608&use_mirror=cytranet" -O aruco-1.3.0.tgz && \ + tar -xvzf aruco-1.3.0.tgz && \ + cd aruco-1.3.0/ && \ + mkdir build && cd build && \ + cmake .. && \ + make -j `nproc` && \ + make install + +# APM +WORKDIR $HOME +RUN mkdir -p simulation && \ + cd simulation && \ + git clone https://github.com/erlerobot/ardupilot -b gazebo + +# ROS +# Install and init ROS base and MAVROS +RUN apt-get install -y ros-indigo-ros-base ros-indigo-mavros ros-indigo-mavros-extras && \ + rosdep init && \ + rosdep update && \ + echo "source /opt/ros/indigo/setup.bash" >> $HOME/.bashrc + +# Install ROS packages +RUN apt-get install -y --no-install-recommends python-rosinstall \ + ros-indigo-octomap-msgs \ + ros-indigo-joy \ + ros-indigo-geodesy \ + ros-indigo-octomap-ros \ + ros-indigo-mavlink \ + ros-indigo-control-toolbox \ + ros-indigo-transmission-interface \ + ros-indigo-joint-limits-interface \ + ros-indigo-image-transport \ + ros-indigo-cv-bridge \ + ros-indigo-angles \ + ros-indigo-polled-camera \ + ros-indigo-camera-info-manager \ + ros-indigo-controller-manager + +# Install Gazebo +WORKDIR $HOME +RUN apt-get install -y --no-install-recommends gazebo7 libgazebo7-dev drcsim7 + +# Create ROS workspace +WORKDIR $HOME +RUN bash $HOME/scripts/init_workspace.bash + +WORKDIR $HOME/simulation diff --git a/tools/platforms/erle/erle-sim/README.MD b/tools/platforms/erle/erle-sim/README.MD new file mode 100644 index 0000000..47cf4c6 --- /dev/null +++ b/tools/platforms/erle/erle-sim/README.MD @@ -0,0 +1,54 @@ +# Running simulation in Docker for Erle Robotics vehicles + +This repository contains scripts and instructions on building Docker container for the purpose of running simulations with [Erle Robotics](http://erlerobotics.com/) vehicles. It is essentially dockerized instructions provided on the official [Erle Robotics website](http://docs.erlerobotics.com/simulation). Currently only ROS Indigo is supported and tested, Kinetic is in the works. + +## Building Docker image +To build a Docker container, run the following command from this directory: +```sh +docker build -t erle-sim:indigo -f Dockerfile.indigo . +``` +This command will create a Docker image with the tag ```erle-sim:indigo```. Once the build is finished, you can verify that the image is built by running ```docker images``` command. + +## Creating Docker container +In order to be able to run Gazebo from the Docker container, you need to connect host's X server to the Docker container. A good tutorial on various methods is documented on the [ROS Wiki](http://wiki.ros.org/docker/Tutorials/GUI), here we use the most simple (and insecure!) way. +1. Create Docker container: + ```sh + docker run -it --network=host -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix${DISPLAY} --name=erle-sim erle-sim:indigo bash + ``` + This command will create a container named ```erle-sim``` from the image with the same name (```erle-sim```) and enable executing GUI programs. +2. Exit the container and restart/attach the container granting the permissions to xhost first: + ```sh + xhost +local:`docker ps -aqf "name=erle-sim"` + docker start erle-sim && docker attach erle-sim + ``` + Replace ```erle-sim``` with your container name if needed. +3. Run Gazebo to make sure everything is working: + ```sh + gazebo + ``` + You should see Gazebo window. +### Troubleshooting +In case you see messages like ```failed to load driver``` while executing step 3 **and** no Gazebo window opens up, you might be missing drivers. The current Docker script already contains command that installs Mesa drivers (```libgl1-mesa-dri```) but that might not be enough so try googling for more information. +## Testing +Once the container is created, try running simulator. For example, to run Rover simulator, run the following commands from the container: +```sh +source ~/simulation/ros_catkin_ws/devel/setup.bash +cd ~/simulation/ardupilot/APMrover2/ +../Tools/autotest/sim_vehicle.sh -j 4 -f Gazebo +# once MAVProxy has launched completely, load the parameters +param load /[full_path_to_your_home_directory]/simulation/ardupilot/Tools/Frame_params/3DR_Rover.param +# For example: param load /root/simulation/ardupilot/Tools/Frame_params/3DR_Rover.param +``` +Now connect another terminal to the currently running Docker container: +```sh +docker exec -it erle-sim bash +``` +and run the following commands: +```sh +source ~/simulation/ros_catkin_ws/devel/setup.bash +roslaunch ardupilot_sitl_gazebo_plugin rover_spawn.launch +``` +If everything was setup correctly, you should see Gazebo window with Rover model that you can control from the first terminal using MAVProxy commands: +![Gazebo Erle Rover](./images/gazebo.png) +Some of the MAVProxy commands are described [here](http://docs.erlerobotics.com/simulation/vehicles/erle_rover/tutorial_1). +You can also use ```run_erle_sim.sh``` script to create new container or attach to a running container. \ No newline at end of file diff --git a/tools/platforms/erle/erle-sim/images/gazebo.png b/tools/platforms/erle/erle-sim/images/gazebo.png new file mode 100644 index 0000000000000000000000000000000000000000..abbc153bbe04b0d74cf65af8c4c1685e94b5b195 GIT binary patch literal 87764 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 z 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 U=cDHhoobO3l@loy();j#0NHhe2LJ#7 literal 0 HcmV?d00001 diff --git a/tools/platforms/erle/erle-sim/run_erle_sim.sh b/tools/platforms/erle/erle-sim/run_erle_sim.sh new file mode 100755 index 0000000..7b779d9 --- /dev/null +++ b/tools/platforms/erle/erle-sim/run_erle_sim.sh @@ -0,0 +1,20 @@ +ERLE_SIM_NAME=erle-sim +ERLE_SIM_ID=`docker ps -aqf "name=^/${ERLE_SIM_NAME}$"` +ERLE_SIM_HOST_DATA_DIR=/data/ +if [ -z "${ERLE_SIM_ID}" ]; then + echo "Creating new Erle Sim container." + docker run -it --network=host -v ${ERLE_SIM_HOST_DATA_DIR}:/data/:rw -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix${DISPLAY} --name=${ERLE_SIM_NAME} erle-sim:indigo bash +else + echo "Found Erle Sim container: ${ERLE_SIM_ID}." + # Check if the container is already running and start if necessary. + if [ -z `docker ps -qf "name=^/${ERLE_SIM_NAME}$"` ]; then + xhost +local:${ERLE_SIM_ID} + echo "Starting and attaching to Erle Sim container..." + docker start ${ERLE_SIM_ID} + docker attach ${ERLE_SIM_ID} + else + echo "Found running Erle Sim container, attaching bash to it..." + docker exec -it --privileged ${ERLE_SIM_ID} bash + fi +fi + diff --git a/tools/platforms/erle/erle-sim/scripts/init_workspace.bash b/tools/platforms/erle/erle-sim/scripts/init_workspace.bash new file mode 100644 index 0000000..8230285 --- /dev/null +++ b/tools/platforms/erle/erle-sim/scripts/init_workspace.bash @@ -0,0 +1,44 @@ +#!/bin/bash +# + +# Stop in case of any error +set -e + +source /opt/ros/indigo/setup.bash + +WDIR=`pwd` + +# Create catkin workspace +mkdir -p simulation/ros_catkin_ws/src +cd simulation/ros_catkin_ws/src +catkin_init_workspace +cd .. +catkin_make +source devel/setup.bash + +# Get packages +cd $WDIR/simulation/ros_catkin_ws/src + +git clone https://github.com/ros-drivers/driver_common +git clone https://github.com/erlerobot/ardupilot_sitl_gazebo_plugin +git clone https://github.com/erlerobot/rotors_simulator -b sonar_plugin +git clone https://github.com/PX4/mav_comm.git +git clone https://github.com/ethz-asl/glog_catkin.git +git clone https://github.com/catkin/catkin_simple.git +git clone https://github.com/erlerobot/mavros.git +git clone https://github.com/ros-simulation/gazebo_ros_pkgs.git -b indigo-devel +git clone https://github.com/erlerobot/gazebo_python_examples +#git clone https://github.com/erlerobot/gazebo_cpp_examples +#git clone https://github.com/tu-darmstadt-ros-pkg/hector_gazebo/ + +# Make packages +cd .. +catkin_make --pkg mav_msgs mavros_msgs gazebo_msgs +source devel/setup.bash +catkin_make -j `nproc` + +# Gazebo models +cd $WDIR +mkdir -p .gazebo/models +cd .gazebo/models +git clone https://github.com/erlerobot/erle_gazebo_models diff --git a/tools/simulation/docker/Dockerfile.kinetic b/tools/simulation/docker/Dockerfile.kinetic new file mode 100644 index 0000000..772f41a --- /dev/null +++ b/tools/simulation/docker/Dockerfile.kinetic @@ -0,0 +1,188 @@ +FROM nvidia/cuda:8.0-cudnn6-devel-ubuntu16.04 + +# Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved. +# Full license terms provided in LICENSE.md file. + +# Build with: +# docker build -t nvidia-redtail-sim:kinetic --build-arg TENSORRT_TAR_FILE= -f Dockerfile.kinetic . + +ENV HOME /root + +ARG TENSORRT_TAR_FILE + +WORKDIR ${HOME} + +RUN apt-get update && apt-get -y --no-install-recommends install software-properties-common \ + && add-apt-repository ppa:ubuntu-toolchain-r/test + +RUN apt-get update && apt-get -y --no-install-recommends install \ + ant \ + bzip2 \ + ca-certificates \ + ccache \ + cmake \ + curl \ + gcc-5 \ + g++-5 \ + genromfs \ + git \ + gosu \ + iproute \ + iputils-ping \ + less \ + lcov \ + libeigen3-dev \ + libopencv-dev \ + make \ + nano \ + net-tools \ + ninja-build \ + openjdk-8-jdk \ + patch \ + pkg-config \ + protobuf-compiler \ + python-argparse \ + python-dev \ + python-empy \ + python-numpy \ + python-pip \ + python-serial \ + python-software-properties \ + rsync \ + s3cmd \ + software-properties-common \ + sudo \ + unzip \ + vim-common \ + xsltproc \ + wget \ + zip \ + && apt-get -y autoremove \ + && apt-get clean autoclean \ + # Make GCC 5 default + && update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60 --slave /usr/bin/g++ g++ /usr/bin/g++-5 \ + # pip + && pip install --upgrade pip \ + && pip install setuptools \ + # coveralls code coverage reporting + && pip install cpp-coveralls \ + # jinja template generation + && pip install jinja2 \ + # cleanup + && rm -rf /var/lib/apt/lists/{apt,dpkg,cache,log} /tmp/* /var/tmp/* \ + # Add Fast-RTPS + && cd /opt && curl http://www.eprosima.com/index.php/component/ars/repository/eprosima-fast-rtps/eprosima-fast-rtps-1-5-0/eprosima_fastrtps-1-5-0-linux-tar-gz?format=raw | tar xz eProsima_FastRTPS-1.5.0-Linux/share/fastrtps/fastrtpsgen.jar eProsima_FastRTPS-1.5.0-Linux/bin/fastrtpsgen \ + && ln -s /opt/eProsima_FastRTPS-1.5.0-Linux/bin/fastrtpsgen /usr/local/bin/fastrtpsgen \ + && mkdir -p /usr/local/share/fastrtps && ln -s /opt/eProsima_FastRTPS-1.5.0-Linux/share/fastrtps/fastrtpsgen.jar /usr/local/share/fastrtps/fastrtpsgen.jar + +# GStreamer +RUN apt-get -y --no-install-recommends install \ + gstreamer1.0-plugins-base \ + gstreamer1.0-plugins-bad \ + gstreamer1.0-plugins-ugly \ + gstreamer1.0-plugins-base-apps \ + gstreamer1.0-plugins-good \ + gstreamer1.0-tools \ + libgstreamer1.0-dev \ + libgstreamer-plugins-base1.0-dev \ + libgstreamer-plugins-good1.0-dev \ + libyaml-cpp-dev \ + v4l-utils + +# Gazebo +WORKDIR ${HOME} +RUN wget --quiet http://packages.osrfoundation.org/gazebo.key -O - | apt-key add - \ + && sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable xenial main" > /etc/apt/sources.list.d/gazebo-stable.list' \ + && apt-get update && apt-get -y --no-install-recommends install \ + gazebo7 \ + libgazebo7-dev \ + # px4tools + && pip install px4tools \ + # dronekit latest + && git clone https://github.com/dronekit/dronekit-python.git \ + && (cd dronekit-python && pip install -r requirements.txt) && rm -rf dronekit-python \ + # pymavlink latest + && git clone https://github.com/ArduPilot/pymavlink.git && cd pymavlink \ + && git clone git://github.com/mavlink/mavlink.git && ln -s ${PWD}/mavlink/message_definitions ../ \ + && pip install . && cd .. && rm -rf pymavlink && rm -rf message_definitions + +# PX4 firmware +WORKDIR ${HOME} +RUN mkdir ./px4/ && cd ./px4/ \ + && git clone https://github.com/PX4/Firmware.git && cd Firmware/ \ + && git checkout v1.4.4 + +# ROS Kinetic +WORKDIR ${HOME} +RUN apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 \ + && sh -c 'echo "deb http://packages.ros.org/ros/ubuntu xenial main" > /etc/apt/sources.list.d/ros-latest.list' \ + && sh -c 'echo "deb http://packages.ros.org/ros-shadow-fixed/ubuntu/ xenial main" > /etc/apt/sources.list.d/ros-shadow.list' \ + && apt-get update && apt-get -y --no-install-recommends install \ + ros-kinetic-gazebo-ros-pkgs \ + ros-kinetic-mavros \ + ros-kinetic-mavros-extras \ + ros-kinetic-ros-base \ + ros-kinetic-joy \ + && apt-get -y autoremove \ + && apt-get clean autoclean \ + && rm -rf /var/lib/apt/lists/{apt,dpkg,cache,log} /tmp/* /var/tmp/* + +# Initialize ROS +RUN geographiclib-get-geoids egm96-5 \ + && rosdep init \ + && rosdep update + +RUN echo 'source /opt/ros/kinetic/setup.bash' >> ${HOME}/.bashrc + +# Install OpenCV with CUDA support. +WORKDIR ${HOME} +RUN git clone https://github.com/opencv/opencv.git && cd opencv \ + && git checkout 2.4.13.2 \ + && mkdir build && cd build \ + && cmake -D CMAKE_BUILD_TYPE=RELEASE \ + -D CMAKE_INSTALL_PREFIX=/usr/local \ + -D WITH_CUDA=ON \ + -D WITH_OPENCL=OFF \ + -D ENABLE_FAST_MATH=1 \ + -D CUDA_FAST_MATH=1 \ + -D WITH_CUBLAS=1 \ + -D BUILD_DOCS=OFF \ + -D BUILD_PERF_TESTS=OFF \ + -D BUILD_TESTS=OFF \ + .. \ + && make -j `nproc` \ + && make install \ + && cd ${HOME} && rm -rf ./opencv/ + +# Install TensorRT +WORKDIR ${HOME} +COPY ${TENSORRT_TAR_FILE} ${HOME} + +ENV TENSORRT_BASE_DIR /opt/tensorrt +ENV TENSORRT_DIR ${TENSORRT_BASE_DIR}/TensorRT-2.1.2 + +RUN mkdir ${TENSORRT_BASE_DIR} \ + && tar -xf ${TENSORRT_TAR_FILE} -C ${TENSORRT_BASE_DIR} \ + && echo "export LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:${TENSORRT_DIR}/lib" >> ${HOME}/.bashrc \ + && echo "export LIBRARY_PATH=\${LIBRARY_PATH}:${TENSORRT_DIR}/lib" >> ${HOME}/.bashrc \ + && echo "export CPATH=\${CPATH}:${TENSORRT_DIR}/include" >> ${HOME}/.bashrc + +# Setup catkin workspace +ENV CATKIN_WS ${HOME}/ws +COPY ./scripts/init_workspace.sh ${HOME} +RUN ${HOME}/init_workspace.sh + +# To be run by a user after creating a container. +COPY ./scripts/build_redtail.sh ${HOME} + +ENV CCACHE_CPP2=1 +ENV CCACHE_MAXSIZE=1G +ENV DISPLAY :0 +#ENV PATH "/usr/lib/ccache:$PATH" +ENV TERM=xterm +# Some QT-Apps/Gazebo don't not show controls without this +ENV QT_X11_NO_MITSHM 1 + +# SITL UDP PORTS +EXPOSE 14556/udp +EXPOSE 14557/udp diff --git a/tools/simulation/docker/build_redtail_image.sh b/tools/simulation/docker/build_redtail_image.sh new file mode 100755 index 0000000..834913b --- /dev/null +++ b/tools/simulation/docker/build_redtail_image.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved. +# Full license terms provided in LICENSE.md file. + +TENSORRT_TAR_FILE=$1 +if [[ -z "${TENSORRT_TAR_FILE}" ]]; then + echo "First argument is missing." + echo "Usage : build_redtail_image.sh " + echo "Example: build_redtail_image.sh /data/downloads/NVIDIA/TensorRT-2.1.2.x86_64.cuda-8.0-14-04.tar.bz2" + exit 1 +fi + +# Copy the file to Docker context first. +cp ${TENSORRT_TAR_FILE} . +# Build the image. +docker build -t nvidia-redtail-sim:kinetic --build-arg TENSORRT_TAR_FILE=`basename ${TENSORRT_TAR_FILE}` -f Dockerfile.kinetic . diff --git a/tools/simulation/docker/scripts/build_redtail.sh b/tools/simulation/docker/scripts/build_redtail.sh new file mode 100755 index 0000000..2d827b0 --- /dev/null +++ b/tools/simulation/docker/scripts/build_redtail.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +# Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved. +# Full license terms provided in LICENSE.md file. + +REDTAIL_PATH=$1 +if [[ -z "${REDTAIL_PATH}" ]]; then + echo "First argument is missing." + echo "Usage : build_redtail.sh " + echo "Example: build_redtail.sh /data/src/redtail" + exit 1 +fi + +cd ${CATKIN_WS} + +if [[ ! -L "${CATKIN_WS}/src/caffe_ros" ]]; then + ln -s ${REDTAIL_PATH}/ros/packages/caffe_ros ${CATKIN_WS}/src/ + catkin_make caffe_ros_node -DCUDA_USE_STATIC_CUDA_RUNTIME=OFF +fi + +if [[ ! -L "${CATKIN_WS}/src/image_pub" ]]; then + ln -s ${REDTAIL_PATH}/ros/packages/image_pub ${CATKIN_WS}/src/ +fi + +if [[ ! -L "${CATKIN_WS}/src/px4_controller" ]]; then + ln -s ${REDTAIL_PATH}/ros/packages/px4_controller ${CATKIN_WS}/src/ +fi + +catkin_make diff --git a/tools/simulation/docker/scripts/init_workspace.sh b/tools/simulation/docker/scripts/init_workspace.sh new file mode 100755 index 0000000..bb33b88 --- /dev/null +++ b/tools/simulation/docker/scripts/init_workspace.sh @@ -0,0 +1,51 @@ +#!/bin/bash +# + +# Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved. +# Full license terms provided in LICENSE.md file. + +# Stop in case of any error. +set -e + +source /opt/ros/kinetic/setup.bash + +# Create catkin workspace. +mkdir -p ${CATKIN_WS}/src +cd ${CATKIN_WS}/src +catkin_init_workspace +cd .. +catkin_make +source devel/setup.bash + +# Install gscam ROS package and its dependencies. +cd ${HOME} +git clone https://github.com/ros-perception/image_common.git +ln -s ${HOME}/image_common/camera_calibration_parsers ${CATKIN_WS}/src/ +ln -s ${HOME}/image_common/camera_info_manager ${CATKIN_WS}/src/ +ln -s ${HOME}/image_common/image_transport ${CATKIN_WS}/src/ + +cd ${HOME} +git clone https://github.com/ros-drivers/gscam.git +cd gscam +# At present, master branch does not support GStreamer 1.0 so need to switch to gstreamer-1-0-support branch. +git checkout gstreamer-1-0-support +# Currently you get a build error in gscam (‘scoped_ptr’ in namespace ‘boost’ does not name a template type). +sed -i '9i\#include ' ./include/gscam/gscam_nodelet.h +# Create symlink to catkin workspace. +ln -s ${HOME}/gscam ${CATKIN_WS}/src/ + +cd ${CATKIN_WS} +catkin_make -DGSTREAMER_VERSION_1_x=On + +# angles package used in px4 controller. +cd ${HOME} +git clone https://github.com/ros/angles.git +# Create symlink to catkin workspace. +ln -s ${HOME}/angles/angles ${CATKIN_WS}/src/ + +# Not getting Redtail sources to give an option to use mapped volume when creating a container. +# caffe_ros ROS node might need to be built with this: +# catkin_make caffe_ros_node -DCUDA_USE_STATIC_CUDA_RUNTIME=OFF +# otherwise it might fail duing linking with: cannot find -lopencv_dep_cudart + +echo 'source ${CATKIN_WS}/devel/setup.bash' >> ${HOME}/.bashrc diff --git a/tools/simulation/run_redtail_docker.sh b/tools/simulation/run_redtail_docker.sh new file mode 100755 index 0000000..729b25c --- /dev/null +++ b/tools/simulation/run_redtail_docker.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved. +# Full license terms provided in LICENSE.md file. + +REDTAIL_NAME=$1 +if [[ -z "${REDTAIL_NAME}" ]]; then + REDTAIL_NAME=redtail-sim +fi + +HOST_DATA_DIR=$2 +if [[ -z "${HOST_DATA_DIR}" ]]; then + HOST_DATA_DIR=/data/ +fi + +CONTAINER_DATA_DIR=$3 +if [[ -z "${CONTAINER_DATA_DIR}" ]]; then + CONTAINER_DATA_DIR=/data/ +fi + +echo "Container name : ${REDTAIL_NAME}" +echo "Host data dir : ${HOST_DATA_DIR}" +echo "Container data dir: ${CONTAINER_DATA_DIR}" +REDTAIL_ID=`docker ps -aqf "name=^/${REDTAIL_NAME}$"` +if [ -z "${REDTAIL_ID}" ]; then + echo "Creating new redtail container." + xhost + + nvidia-docker run -it --privileged --network=host -v ${HOST_DATA_DIR}:${CONTAINER_DATA_DIR}:rw -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix${DISPLAY} -p 14556:14556/udp --name=${REDTAIL_NAME} nvidia-redtail-sim:kinetic bash +else + echo "Found redtail container: ${REDTAIL_ID}." + # Check if the container is already running and start if necessary. + if [ -z `docker ps -qf "name=^/${REDTAIL_NAME}$"` ]; then + xhost +local:${REDTAIL_ID} + echo "Starting and attaching to ${REDTAIL_NAME} container..." + docker start ${REDTAIL_ID} + docker attach ${REDTAIL_ID} + else + echo "Found running ${REDTAIL_NAME} container, attaching bash..." + docker exec -it ${REDTAIL_ID} bash + fi +fi +