The whole PAIRS UAV system (CTU-MRS port) on ROS Noetic.
This image apt installs the system from the signed PAIRS apt
repo, so the container is ready to run with no build step. Your own packages go
in a mounted overlay workspace.
osrf/ros:noetic-desktop-fullbase (rviz, gazebo11, rqt …)ros-noetic-pairs-uav-system-full— the complete ~170-package closure (gazebo simulation, all SLAM cores, control, estimation, drivers)tmux+ the PAIRSwaitFor*shell helpers the session scripts rely on- an overlay catkin workspace at
/opt/pairs_ws(mount your code here)
# 1) build against your LOCAL pairs-apt/docs (works today, before publishing)
./build.sh
# 2) or, once pairs-apt/docs is pushed to GitHub Pages, build against the live repo
PAIRS_APT_SOURCE=live ./build.shThe image is tagged thanhnc19/pairs_system:noetic (and :latest) by default.
Override the account with HUB_NAMESPACE=<your-dockerhub-namespace> ./build.sh.
build.sh (local mode) serves ~/vin_dron_ws/pairs-apt/docs over a throwaway
docker network and installs from it, so it does not depend on the GitHub Pages
push. Override the location with APT_DOCS=/path/to/pairs-apt/docs.
Note: the published repo at
https://thanhnguyencanh.github.io/aptmust carry the current 102-deb index (incl.ros-noetic-pairs-uav-system-full) forPAIRS_APT_SOURCE=liveand for end users toapt installdirectly. Pushpairs-apt/docsfirst (seepairs-apt/README.md).
./run_pairs_system.shEdit the top of run_pairs_system.sh for your machine:
HUB_NAMESPACE/IMAGE— which image to runPAIRS_WS— host overlay workspace (default~/pairs_ws, mounted at/opt/pairs_ws)BAGS_DIR— host rosbags/data (default~/bags, mounted at/opt/bags)
It forwards X11 (rviz/gazebo GUI), uses --net host, and attaches the NVIDIA GPU
if available.
Inside the container:
roscd pairs_uav_gazebo_simulation/tmux/one_drone
./start.sh # plain-tmux session: gazebo + control + rviz, takeoff ready
# ./kill.sh # stop everythingDetach with Ctrl-b d; re-attach with tmux a -t simulation.
./push_docker.sh # docker login + push :noetic and :latest
TAG=v1.0 ./push_docker.sh # also push a version tag (refreshes :latest)push_docker.sh runs docker login -u thanhnc19 if you are not already
authenticated, then pushes thanhnc19/pairs_system:noetic and :latest. After
it finishes the image appears at
https://hub.docker.com/r/thanhnc19/pairs_system/tags. Override the account with
HUB_NAMESPACE=<your-dockerhub-namespace> ./push_docker.sh.
On another machine: docker pull thanhnc19/pairs_system:noetic.
- The gazebo session's final
layoutwindow calls~/.i3/layout_manager.sh(an i3 window-manager helper). Outside i3 that one window errors harmlessly; the rest of the session runs normally. - Set
UAV_NAME/UAV_TYPE/RUN_TYPEvia the run script's env if you need something other than theuav1/x500/simulationdefaults.