Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi-Robot Support #365

Open
wants to merge 79 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
a68cd0e
Updated blue.repos to use the correct ros_gz branch
evan-palmer Jun 29, 2023
6852546
Updated devcontainer configuration to use Iron
evan-palmer Jun 29, 2023
9d6fb26
Merge remote-tracking branch 'origin/main' into iron
evan-palmer Jul 17, 2023
04fd8a9
Backport main into iron
evan-palmer Jul 26, 2023
754dc68
Backport rolling into iron
evan-palmer Jul 26, 2023
b051627
Backport Rolling into Iron
evan-palmer Jul 30, 2023
d146436
Forgot to fix one more conflict
evan-palmer Jul 30, 2023
40214a4
Backport Rolling into Iron
evan-palmer Jul 31, 2023
597cd92
Backport Rolling into Iron
evan-palmer Aug 3, 2023
3f12599
Backport Rolling to Iron
evan-palmer Aug 5, 2023
9ab4ba0
Backport rolling into main
evan-palmer Aug 30, 2023
1df4ca9
Fixed home position timer (#104) (#105)
mergify[bot] Sep 1, 2023
cc2ff0b
Cleaned up Docker pipelines (backport #121) (#122)
mergify[bot] Oct 12, 2023
6a68571
Fixed missing backport items
evan-palmer Oct 13, 2023
74a88dc
Bump actions/checkout from 3 to 4 (#109) (#124)
mergify[bot] Oct 13, 2023
da6b8b5
Bump docker/setup-buildx-action from 2 to 3 (#128) (#133)
mergify[bot] Oct 18, 2023
031aa82
Bump docker/setup-qemu-action from 2.2.0 to 3.0.0 (#129) (#135)
mergify[bot] Oct 18, 2023
6596e8f
Bump docker/build-push-action from 4.1.1 to 5.0.0 (#130) (#137)
mergify[bot] Oct 18, 2023
c5abd6d
Bump docker/login-action from 2.2.0 to 3.0.0 (#131) (#139)
mergify[bot] Oct 18, 2023
d00a374
Allowing gazebo_world_file arg to be passed in (#148) (#149)
mergify[bot] Jan 14, 2024
3ca4684
Merged upstream changes
evan-palmer Apr 24, 2024
b4a8d32
Fixed missing keys
evan-palmer Apr 24, 2024
1230173
Bump docker/login-action from 3.1.0 to 3.2.0 (#172) (#173)
mergify[bot] Jun 6, 2024
da2185d
Bump docker/build-push-action from 5.3.0 to 5.4.0 (#175) (#177)
mergify[bot] Jun 20, 2024
3906733
Bump braces from 3.0.2 to 3.0.3 in /docs (#182) (#184)
mergify[bot] Jun 22, 2024
86529c3
Bump docker/build-push-action from 5.4.0 to 6.0.0 (#179) (#186)
mergify[bot] Jun 24, 2024
4a0de68
Added upstream changes and fixes to docker install (#190)
evan-palmer Jun 24, 2024
c3f7d75
Updated controller manager launch in demo
evan-palmer Jun 25, 2024
2dcecb2
Resolved bug in BlueROV2 Heavy and Heavy Reach launch configurations …
mergify[bot] Jun 25, 2024
86d3b77
Added additional resources for USB/IP tutorial (#196) (#198)
mergify[bot] Jun 26, 2024
2cb7212
Bump docker/build-push-action from 6.1.0 to 6.2.0 (#200) (#202)
mergify[bot] Jul 2, 2024
42c6a48
Add xacro as an exec_depend for blue_description (#215) (#219)
mergify[bot] Jul 26, 2024
3e5c964
Style: Upcase "as" in Dockerfile (backport #214) (#217)
mergify[bot] Jul 26, 2024
da4a996
Add "robot" container (backport #221) (#225)
mergify[bot] Aug 5, 2024
5f7f740
Use Gazebo Harmonic (#223) (#231)
mergify[bot] Aug 8, 2024
0e297bc
Install ros_gz from binary package (iron, humble) (#228)
amarburg Aug 9, 2024
ffa217b
Bump docker/build-push-action from 6.5.0 to 6.6.1 (#239) (#246)
mergify[bot] Aug 17, 2024
1001914
Fix ENVs to use "key=value" format (#234) (#251)
mergify[bot] Aug 19, 2024
98d5ad5
Bump docker/build-push-action from 6.6.1 to 6.7.0 (#247) (#254)
mergify[bot] Aug 19, 2024
356f608
Remove sim.sh, insert contents into .bashrc in Dockerfile (#227) (#258)
mergify[bot] Aug 19, 2024
058c277
Update and remove stale project configurations (backport #256) (#260)
mergify[bot] Aug 19, 2024
addbd77
Replaced instances of Gazebo Garden with Gazebo Harmonic (#238) (#263)
mergify[bot] Aug 19, 2024
46bf8e0
Add Docker BuildX config (backport #266) (#268)
mergify[bot] Aug 22, 2024
25bfbd7
Fix organization casing in docker workflow (#271) (#272)
mergify[bot] Aug 23, 2024
c594625
Add related projects to documentation (#237) (#275)
mergify[bot] Aug 23, 2024
62e5b67
Bump docker/bake-action from 5.5.0 to 5.7.0 (#279) (#280)
mergify[bot] Aug 27, 2024
7ebcbec
Bump micromatch from 4.0.7 to 4.0.8 in /docs (#282) (#284)
mergify[bot] Sep 4, 2024
d3e5146
Bump webpack from 5.93.0 to 5.94.0 in /docs (#287) (#289)
mergify[bot] Sep 5, 2024
eefc465
Added ament hooks to track blue description files (#296) (#300)
mergify[bot] Sep 14, 2024
652f5ee
Consolidated worlds into a single file (#298) (#303)
mergify[bot] Sep 14, 2024
b15be8b
Add water and sky textures to underwater Gazebo world (#299) (#306)
mergify[bot] Sep 14, 2024
4a64479
Bump express from 4.19.2 to 4.21.0 in /docs (#311) (#313)
mergify[bot] Sep 22, 2024
8772c8a
Integrate latest mobile_to_maritime API (#316) (#317)
mergify[bot] Sep 24, 2024
8b202aa
Modified blue.repos to use correct auv_controllers branch
evan-palmer Sep 24, 2024
cbb7ebf
Fixed instances where mobile_to_maritime API wasn't updated (#320) (#…
mergify[bot] Sep 25, 2024
774ec3b
Bump docker/bake-action from 5.7.0 to 5.9.0 (#325) (#326)
mergify[bot] Sep 30, 2024
31771d1
Bump docker/bake-action from 5.9.0 to 5.10.0 (#329) (#330)
mergify[bot] Oct 9, 2024
6160f54
Bump cookie and express in /docs (#331) (#334)
mergify[bot] Oct 10, 2024
9a85bae
mount volume
JBVAkshaya Oct 11, 2024
2964f3d
install ompl pinocchio rqt update
JBVAkshaya Oct 23, 2024
9442d8d
mount additional volume
JBVAkshaya Oct 23, 2024
d220d68
working dockerfile
JBVAkshaya Oct 23, 2024
af2653f
Bump mermaid from 10.9.1 to 10.9.3 in /docs (#337) (#338)
mergify[bot] Oct 24, 2024
9781629
Bump http-proxy-middleware from 2.0.6 to 2.0.7 in /docs (#340) (#343)
mergify[bot] Oct 24, 2024
949702b
Merge pull request #1 from Robotic-Decision-Making-Lab/iron
JBVAkshaya Oct 24, 2024
6446798
tf2 dependencies
JBVAkshaya Oct 30, 2024
1dcb9af
get docker image from jbvakshaya ghcr
JBVAkshaya Nov 26, 2024
5033652
enable adding odom topic specific state interface
JBVAkshaya Nov 27, 2024
be87ef4
add joint trajectory controller as precedence controller to chainable…
JBVAkshaya Nov 27, 2024
0f8d9ef
execute a joint trajectory on jtc controller
JBVAkshaya Nov 27, 2024
4e85046
launch files to include namespaces and obstacles in env
JBVAkshaya Jan 15, 2025
90fc26c
config files for mavros, localization and ardusub with ns
JBVAkshaya Jan 15, 2025
fcbb383
modified files to include ns
JBVAkshaya Jan 15, 2025
9f0320f
modified localization code to include ns
JBVAkshaya Jan 15, 2025
3848669
launch file with ns and world file for including obstacles
JBVAkshaya Jan 15, 2025
3d6c022
refactored
JBVAkshaya Feb 19, 2025
2f96408
compatible with prefixes and namespaces
JBVAkshaya Feb 19, 2025
6abfd46
Multi robot teleop demo
JBVAkshaya Feb 19, 2025
d440679
Merge branch 'main' into iron-mp
JBVAkshaya Feb 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .devcontainer/nouveau/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ghcr.io/robotic-decision-making-lab/blue:rolling-desktop
FROM ghcr.io/robotic-decision-making-lab/blue:iron-desktop

# Install ROS dependencies
# This is done in a previous stage, but we include it again here in case anyone wants to
Expand Down
31 changes: 30 additions & 1 deletion .devcontainer/nvidia/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
FROM ghcr.io/robotic-decision-making-lab/blue:rolling-desktop-nvidia
FROM ghcr.io/jbvakshaya/blue:iron-nvidia-ompl
# FROM ghcr.io/robotic-decision-making-lab/blue:iron-desktop-nvidia

# Install ROS dependencies
# This is done in a previous stage, but we include it again here in case anyone wants to
Expand All @@ -16,6 +17,34 @@ RUN sudo apt-get -q update \
&& sudo apt-get clean -y \
&& sudo rm -rf /var/lib/apt/lists/*

# Install OMPL with ROS2
RUN curl http://repo.ros2.org/repos.key | sudo apt-key add -\
&& sudo apt-get update \
&& sudo apt-get install -y nano \
&& sudo apt-get install -y ros-iron-ompl

# RUN cd ${USER_WORKSPACE}/src/learn_ros2 \
# && echo "Check me" \
# && echo ls -d -- */

# Install pinocchio
RUN sudo apt update && sudo apt install -y ros-${ROS_DISTRO}-pinocchio

# Update rqt to find plugins work with ROS2
RUN sudo apt update \
&& sudo apt install -y ros-${ROS_DISTRO}-rqt*

# tf2 depedencies
# RUN sudo apt-get install ros-${ROS_DISTRO}-rviz2 ros-${ROS_DISTRO}-turtle-tf2-py ros-${ROS_DISTRO}-tf2-ros ros-${ROS_DISTRO}-tf2-tools ros-${ROS_DISTRO}-turtlesim

# Install the learn_ros2 package
# RUN cd ${USER_WORKSPACE} \
# && echo "Check me" \
# && pwd \
# && colcon build --packages-select learn_ros2 \
# && . install/setup.bash

RUN echo 'nvidia' > ${USER_WORKSPACE}/nvidia.txt
# Install debugging/linting Python packages
RUN python3 -m pip install \
pre-commit \
Expand Down
1 change: 1 addition & 0 deletions .devcontainer/nvidia/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"--privileged",
"--volume=/tmp/.X11-unix:/tmp/.X11-unix",
"--volume=/mnt/wslg:/mnt/wslg",
"--volume=/home/akshaya/Research/doc_vol/learn_ros2:/home/blue/ws_blue/src/learn_ros2",
"--gpus=all"
],
"containerEnv": {
Expand Down
32 changes: 30 additions & 2 deletions .docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
ARG ROS_DISTRO=rolling
FROM ros:$ROS_DISTRO-ros-base AS ci

FROM ros:$ROS_DISTRO-ros-base AS ci
ARG USERNAME
ARG USER_UID
ARG USER_GID
ENV DEBIAN_FRONTEND=noninteractive

WORKDIR /root/ws_blue
COPY . src/blue
RUN echo 'ompl' > ompl.txt

# Install apt packages needed for CI
RUN apt-get -q update \
Expand Down Expand Up @@ -53,7 +58,7 @@ FROM ci AS robot
# jazzy and rolling images, now includes a user "ubuntu" at UID 1000
ARG USERNAME=ubuntu
ARG USER_UID=1000
ARG USER_GID=$USER_UID
ARG USER_GID=1000

RUN echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
&& chmod 0440 /etc/sudoers.d/$USERNAME \
Expand Down Expand Up @@ -89,6 +94,8 @@ COPY --chown=$USER_UID:$USER_GID . src/blue
# Install the Python requirements that aren't available as rosdeps
RUN python3 -m pip install -r $(pwd)/src/blue/requirements-build.txt

RUN sudo apt-get -q update && sudo apt-get install nano

# Install gstreamer
RUN sudo apt-get -q update \
&& sudo apt-get -q -y upgrade \
Expand Down Expand Up @@ -206,7 +213,7 @@ RUN sudo apt-get -q update \
&& sudo apt-get -q -y upgrade \
&& vcs import src < src/blue/sim.repos \
&& rosdep update \
&& rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} \
&& rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} --skip-keys="gz-transport12 gz-sim7 gz-math7 gz-msgs9 gz-plugin2" \
&& sudo apt-get autoremove -y \
&& sudo apt-get clean -y \
&& sudo rm -rf /var/lib/apt/lists/*
Expand All @@ -217,6 +224,12 @@ RUN sudo apt-get -q update \
RUN . "/opt/ros/${ROS_DISTRO}/setup.sh" \
&& colcon build

# Install OMPL with ROS2
RUN curl http://repo.ros2.org/repos.key | sudo apt-key add -\
&& sudo apt-get update \
&& sudo apt-get install -y nano \
&& sudo apt-get install -y ros-iron-ompl

# Setup the simulation environment variables
RUN <<EOT cat >> /home/$USERNAME/.bashrc

Expand All @@ -235,6 +248,17 @@ EOT

FROM desktop AS desktop-nvidia

# Add ardupilot_gazebo plugin
export GZ_SIM_SYSTEM_PLUGIN_PATH=\$HOME/ardupilot_gazebo/build:\$GZ_SIM_SYSTEM_PLUGIN_PATH

# Add ardupilot_gazebo models and worlds
export GZ_SIM_RESOURCE_PATH=\$HOME/ardupilot_gazebo/models:\$HOME/ardupilot_gazebo/worlds:\$GZ_SIM_RESOURCE_PATH
EOT

FROM desktop AS desktop-nvidia
ARG USERNAME
ARG USER_UID
ARG USER_GID
# Install NVIDIA software
RUN sudo apt-get update \
&& sudo apt-get -q -y upgrade \
Expand All @@ -249,6 +273,10 @@ RUN sudo apt-get update \
&& sudo apt-get clean -y \
&& sudo rm -rf /var/lib/apt/lists/*

#Install nano
RUN sudo apt-get update \
&& sudo apt-get install -y nano

# Env vars for the nvidia-container-runtime.
ENV NVIDIA_VISIBLE_DEVICES=all
ENV NVIDIA_DRIVER_CAPABILITIES=graphics,utility,compute
Expand Down
2 changes: 1 addition & 1 deletion .docker/compose/nouveau-desktop.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
services:
blue:
image: ghcr.io/robotic-decision-making-lab/blue:rolling-desktop
image: ghcr.io/robotic-decision-making-lab/blue:iron-desktop
environment:
- DISPLAY=${DISPLAY}
- XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR}
Expand Down
2 changes: 1 addition & 1 deletion .docker/compose/nvidia-desktop.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
services:
blue:
image: ghcr.io/robotic-decision-making-lab/blue:rolling-desktop-nvidia
image: ghcr.io/robotic-decision-making-lab/blue:iron-desktop-nvidia
environment:
- DISPLAY=${DISPLAY}
- XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR}
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Check Implementation
on:
push:
branches:
- main
- iron
pull_request:
workflow_dispatch:

Expand All @@ -19,8 +19,8 @@ jobs:
fail-fast: false
matrix:
env:
- IMAGE: rolling-ci
ROS_DISTRO: rolling
- IMAGE: iron-ci
ROS_DISTRO: iron
steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/docker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
- cron: "0 17 * * 6"
push:
branches:
- main
- iron
pull_request:
paths:
- .docker/**
Expand All @@ -22,7 +22,7 @@ jobs:
strategy:
fail-fast: false
matrix:
ROS_DISTRO: [rolling]
ROS_DISTRO: [iron]
runs-on: ubuntu-latest
permissions:
packages: write
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/format.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
pull_request:
push:
branches:
- main
- iron
workflow_dispatch:

jobs:
Expand Down
2 changes: 1 addition & 1 deletion blue.repos
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ repositories:
auv_controllers:
type: git
url: https://github.com/Robotic-Decision-Making-Lab/auv_controllers.git
version: main
version: iron

ardusub_driver:
type: git
Expand Down
168 changes: 168 additions & 0 deletions blue_bringup/launch/bluerov2_heavy/ns_bluerov2_heavy.launch.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
launch:

- let:
name: model_name
value: bluerov2_heavy

# Arguments
- arg:
name: use_camera
default: "false"

- arg:
name: use_mocap
default: "false"

- arg:
name: localization_source
default: gazebo
choice:
- value: gazebo
- value: mocap
- value: camera

- arg:
name: use_sim
default: "false"

- arg:
name: prefix
default: ""

- arg:
name: use_rviz
default: "false"

- arg:
name: use_manager
default: "true"

- arg:
name: rviz_config
default: $(find-pkg-share blue_description)/rviz/$(var model_name).rviz

- arg:
name: mavros_file
default: $(find-pkg-share blue_description)/config/ardusub/ns_mavros.yaml

- arg:
name: manager_file
default: $(find-pkg-share blue_description)/config/ardusub/ns_ardusub_manager.yaml

- arg:
name: ardusub_params_file
default: $(find-pkg-share blue_description)/config/$(var model_name)/ardusub.parm

- arg:
name: localization_file
default: $(find-pkg-share blue_description)/config/$(var model_name)/ns_localization.yaml

# Load the description file
- let:
name: description_file
value: $(find-pkg-share blue_description)/description/$(var model_name)/config.xacro

- arg:
name: robot_description
default: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim)')

- arg:
name: sitl_file
default: $(find-pkg-share ardusub_bringup)/launch/sitl_multi_robot.launch.yaml

- arg:
name: ardusub_instance
default: "0"

- arg:
name: sysid_thismav
default: "1"

- arg:
name: rob_x
default: "0.0"

- arg:
name: rob_y
default: "0.0"

- arg:
name: rob_z
default: "0.0"

# Nodes

- node:
pkg: robot_state_publisher
exec: robot_state_publisher
param:
- name: robot_description
value: $(var robot_description)
- name: use_sim_time
value: $(var use_sim)
- name: tf_prefix
value: $(var prefix)

- node:
pkg: rviz2
exec: rviz2
if: $(var use_rviz)
args: -d $(var rviz_config)
param:
- name: robot_description
value: $(var robot_description)

# Includes
- include:
file: $(find-pkg-share ardusub_bringup)/launch/ns_ardusub.launch.yaml
arg:
- name: mavros_file
value: $(var mavros_file)
- name: ardusub_params_file
value: $(var ardusub_params_file)
- name: manager_file
value: $(var manager_file)
- name: model_name
value: $(var model_name)
- name: use_sim
value: $(var use_sim)
- name: use_manager
value: $(var use_manager)
- name: sitl_file
value: $(var sitl_file)
- name: ardusub_instance
value: $(var ardusub_instance)
- name: sysid_thismav
value: $(var sysid_thismav)
- name: rob_x
value: $(var rob_x)
- name: rob_y
value: $(var rob_y)
- name: rob_z
value: $(var rob_z)

- include:
file: $(find-pkg-share blue_localization)/localization.launch.py
arg:
- name: localization_source
value: $(var localization_source)
- name: use_camera
value: $(var use_camera)
- name: use_mocap
value: $(var use_mocap)
- name: use_sim_time
value: $(var use_sim)
- name: config_filepath
value: $(var localization_file)

- include:
file: $(find-pkg-share blue_bringup)/launch/$(var model_name)/thrusters.launch.yaml
arg:
- name: prefix
value: $(var prefix)

- include:
file: $(find-pkg-share message_transforms)/launch/tf.launch.yaml
arg:
- name: prefix
value: $(var prefix)
Loading
Loading