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

Add "robot" container #221

Conversation

amarburg
Copy link
Collaborator

@amarburg amarburg commented Aug 1, 2024

Changes Made

The existing Dockerfile defines a "robot" stage which contains the Blue source and some deps but no other dependency repos from blue.repos. This means "robot" is not runnable "out of the box," requires multiple manual stages (vcs import ..., rosdep ..., colcon build ..., etc ) to make it runnable.

This PR:

  • Renames the "robot" stage as "blue_src_and_deps"
  • Updates "robot" to include all dependencies of "blue" and "colcon build"

The PR is opinionated:

  • That a "robot" stage should exist
  • That blue.repos should be split into separate blue_robot.repos (no ros_gz) and blue_sim.repos (adds ros_gz). Might be another way to solve this problem.

Testing

Ongoing.

@amarburg
Copy link
Collaborator Author

amarburg commented Aug 1, 2024

Building for Rolling / CI is broken on this until #220 (Rolling is now based on Noble) is resolved.

I'm testing locally by explicitly building for iron:

docker buildx build --build-arg ROS_DISTRO=iron -f .docker/Dockerfile . --pull

@evan-palmer
Copy link
Collaborator

I like the idea of adding making robot usable out-of-the-box. We probably don't need to split the two into separate stages, though. That leaves the blue_src_and_deps as unusable. Regarding splitting the .repos files up, that was actually what I used to do, before merging them; Angler still does that. I named them blue.repos and sim.repos. I merged them to help reduce the number of files to maintain, but I'm open to splitting them up for branches that don't have supported binaries. I do also like the idea of a robot devcontainer. Maybe we could add the remote development extension by default to that version?

Renamed *.repos --> blue.repos and sim.repos
@amarburg
Copy link
Collaborator Author

amarburg commented Aug 2, 2024

  • I preserved blue_src_and_deps as I didn't know if it was used. Sounds like no ... I've removed it
  • Renamed to .repos --> blue.repos and sim.repos. Sim.repos may be changed or disappear depending on how this Gazebo realignment goes.
Maybe we could add the remote development extension by default to that version?
  • Don't know enough about VSCode development containers to know what this means.

Getting clean builds for all of the different branches requires #220 and #223

@amarburg amarburg marked this pull request as ready for review August 2, 2024 21:50
Copy link
Collaborator

@evan-palmer evan-palmer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! Thanks for adding this

@@ -36,6 +37,14 @@ RUN apt-get -q update \
&& apt-get clean -y \
&& rm -rf /var/lib/apt/lists/*

# This stage includes
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for adding these docs. This is helpful.

@evan-palmer evan-palmer merged commit ba77c25 into Robotic-Decision-Making-Lab:main Aug 5, 2024
4 of 7 checks passed
@evan-palmer
Copy link
Collaborator

@mergify backport humble iron

Copy link

mergify bot commented Aug 5, 2024

backport humble iron

✅ Backports have been created

mergify bot pushed a commit that referenced this pull request Aug 5, 2024
* Initial commit of _robot container and devcontainer

* Add xacro as an exec_depend for blue_description

* Update comments

* Remove unused Docker stage "blue_src_and_deps"

Renamed *.repos --> blue.repos and sim.repos

---------

Co-authored-by: Aaron Marburg <amarburg@uw.edu>
(cherry picked from commit ba77c25)

# Conflicts:
#	blue.repos
mergify bot pushed a commit that referenced this pull request Aug 5, 2024
* Initial commit of _robot container and devcontainer

* Add xacro as an exec_depend for blue_description

* Update comments

* Remove unused Docker stage "blue_src_and_deps"

Renamed *.repos --> blue.repos and sim.repos

---------

Co-authored-by: Aaron Marburg <amarburg@uw.edu>
(cherry picked from commit ba77c25)

# Conflicts:
#	blue.repos
evan-palmer added a commit that referenced this pull request Aug 5, 2024
* Add "robot" container (#221)

* Initial commit of _robot container and devcontainer

* Add xacro as an exec_depend for blue_description

* Update comments

* Remove unused Docker stage "blue_src_and_deps"

Renamed *.repos --> blue.repos and sim.repos

---------

Co-authored-by: Aaron Marburg <amarburg@uw.edu>
(cherry picked from commit ba77c25)

# Conflicts:
#	blue.repos

* Fixed merge conflict from mergify

* Use "humble" branch of ros_gz.

---------

Co-authored-by: Aaron Marburg <amarburg@apl.washington.edu>
Co-authored-by: Evan Palmer <evanp922@gmail.com>
Co-authored-by: Aaron Marburg <amarburg@uw.edu>
evan-palmer added a commit that referenced this pull request Aug 5, 2024
* Add "robot" container (#221)

* Initial commit of _robot container and devcontainer

* Add xacro as an exec_depend for blue_description

* Update comments

* Remove unused Docker stage "blue_src_and_deps"

Renamed *.repos --> blue.repos and sim.repos

---------

Co-authored-by: Aaron Marburg <amarburg@uw.edu>
(cherry picked from commit ba77c25)

# Conflicts:
#	blue.repos

* Fixed merge conflict from mergify

* Use "iron" branch of ros_gz

---------

Co-authored-by: Aaron Marburg <amarburg@apl.washington.edu>
Co-authored-by: Evan Palmer <evanp922@gmail.com>
Co-authored-by: Aaron Marburg <amarburg@uw.edu>
evan-palmer added a commit that referenced this pull request Aug 9, 2024
* Updated controller manager launch in demo

* Resolved bug in BlueROV2 Heavy and Heavy Reach launch configurations (#193) (#194)

* Fixed ardusub_gazebo install and mavros configurations

* Remapped controller manager topic to robot state publisher topic

* Added missing gstreamer dependency

(cherry picked from commit 9ddb154)

Co-authored-by: Evan Palmer <evanp922@gmail.com>

* Added additional resources for USB/IP tutorial (#196) (#198)

(cherry picked from commit 531ed83)

Co-authored-by: Evan Palmer <evanp922@gmail.com>

* Bump docker/build-push-action from 6.1.0 to 6.2.0 (#200) (#202)

Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@v6.1.0...v6.2.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 8639c41)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add xacro as an exec_depend for blue_description (#215) (#219)

Co-authored-by: Aaron Marburg <amarburg@uw.edu>
(cherry picked from commit 506be06)

Co-authored-by: Aaron Marburg <amarburg@apl.washington.edu>

* Style: Upcase  "as" in Dockerfile (backport #214) (#217)

* Fix case on "as" in Dockerfile (#214)

Co-authored-by: Aaron Marburg <amarburg@uw.edu>
(cherry picked from commit 8bbb19e)

# Conflicts:
#	.docker/Dockerfile

* Resolved merge conflicts

* Bump build versions

---------

Co-authored-by: Aaron Marburg <amarburg@apl.washington.edu>
Co-authored-by: Evan Palmer <evanp922@gmail.com>

* Add "robot" container (backport #221) (#225)

* Add "robot" container (#221)

* Initial commit of _robot container and devcontainer

* Add xacro as an exec_depend for blue_description

* Update comments

* Remove unused Docker stage "blue_src_and_deps"

Renamed *.repos --> blue.repos and sim.repos

---------

Co-authored-by: Aaron Marburg <amarburg@uw.edu>
(cherry picked from commit ba77c25)

# Conflicts:
#	blue.repos

* Fixed merge conflict from mergify

* Use "iron" branch of ros_gz

---------

Co-authored-by: Aaron Marburg <amarburg@apl.washington.edu>
Co-authored-by: Evan Palmer <evanp922@gmail.com>
Co-authored-by: Aaron Marburg <amarburg@uw.edu>

* Use Gazebo Harmonic (#223) (#231)

* Update to use Harmonic

* Add "third-party" rosdep from OSRF for gazebo deps.

* Added comment on "user ROOT" rather than sudo, joined two adjacent apt-get install steps.

* Correct error in comment

---------

Co-authored-by: Aaron Marburg <amarburg@uw.edu>
(cherry picked from commit 8a4e05a)

Co-authored-by: Aaron Marburg <amarburg@apl.washington.edu>

* Install ros_gz from binary package (iron, humble) (#228)

* Install ros_gz from package, not from source, remove sim.repos

* Removed additional apt-get lines from cherry-pick

---------

Co-authored-by: Aaron Marburg <amarburg@uw.edu>

* Install ros_gz from binary package (iron, humble) (#228)

* Install ros_gz from package, not from source, remove sim.repos

* Removed additional apt-get lines from cherry-pick

---------

Co-authored-by: Aaron Marburg <amarburg@uw.edu>
(cherry picked from commit 0e297bc)

# Conflicts:
#	sim.repos

---------

Co-authored-by: Evan Palmer <evanp922@gmail.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aaron Marburg <amarburg@apl.washington.edu>
Co-authored-by: Aaron Marburg <amarburg@uw.edu>
evan-palmer added a commit that referenced this pull request Aug 17, 2024
* Bump docker/login-action from 3.1.0 to 3.2.0 (#172)

Bumps [docker/login-action](https://github.com/docker/login-action) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](docker/login-action@v3.1.0...v3.2.0)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump docker/build-push-action from 5.3.0 to 5.4.0 (#175)

Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.3.0 to 5.4.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@v5.3.0...v5.4.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump braces from 3.0.2 to 3.0.3 in /docs (#182)

Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](micromatch/braces@3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump docker/build-push-action from 5.4.0 to 6.0.0 (#179)

Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.4.0 to 6.0.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@v5.4.0...v6.0.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump docker/build-push-action from 6.0.0 to 6.1.0 (#187)

Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@v6.0.0...v6.1.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Resolved bug in BlueROV2 Heavy and Heavy Reach launch configurations (#193)

* Fixed ardusub_gazebo install and mavros configurations

* Remapped controller manager topic to robot state publisher topic

* Added missing gstreamer dependency

* Added additional resources for USB/IP tutorial (#196)

* Bump docker/build-push-action from 6.1.0 to 6.2.0 (#200)

Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@v6.1.0...v6.2.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump docker/build-push-action from 6.2.0 to 6.3.0 (#203)

Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@v6.2.0...v6.3.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump docker/setup-qemu-action from 3.0.0 to 3.1.0 (#204)

Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](docker/setup-qemu-action@v3.0.0...v3.1.0)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump docker/setup-qemu-action from 3.1.0 to 3.2.0 (#205)

Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](docker/setup-qemu-action@v3.1.0...v3.2.0)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump docker/build-push-action from 6.3.0 to 6.5.0 (#206)

Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.3.0 to 6.5.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@v6.3.0...v6.5.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump docker/login-action from 3.2.0 to 3.3.0 (#207)

Bumps [docker/login-action](https://github.com/docker/login-action) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](docker/login-action@v3.2.0...v3.3.0)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix case on "as" in Dockerfile (#214)

Co-authored-by: Aaron Marburg <amarburg@uw.edu>

* Add xacro as an exec_depend for blue_description (#215)

Co-authored-by: Aaron Marburg <amarburg@uw.edu>

* Add "robot" container (#221)

* Initial commit of _robot container and devcontainer

* Add xacro as an exec_depend for blue_description

* Update comments

* Remove unused Docker stage "blue_src_and_deps"

Renamed *.repos --> blue.repos and sim.repos

---------

Co-authored-by: Aaron Marburg <amarburg@uw.edu>

* Use Gazebo Harmonic (#223)

* Update to use Harmonic

* Add "third-party" rosdep from OSRF for gazebo deps.

* Added comment on "user ROOT" rather than sudo, joined two adjacent apt-get install steps.

* Correct error in comment

---------

Co-authored-by: Aaron Marburg <amarburg@uw.edu>

* Rolling ROS image is now based on "noble" (#220)

* Update to use Harmonic

* Update main Dockerfile for "noble" base images:

- Use the provided user "ubuntu" at UID 1000
- Use a venv for user-installed python packages

* Add "third-party" rosdep from OSRF for gazebo deps.

* Install cppzmq-dev for Gazebo

* Allow pushing to apl-ocean-engineering

* Build mavros from source.

* Build mavros from source, with patch to fix yaml-cpp linkage

* ardupilot script should not activate venv by default.  Activate blue venv instead.

* Reverse change in docker.yaml action.

* Insert comment before arduplot additions to .bashrc

* Update username in .devcontainer/

* Replace patches for mavros/mavlink with sed one-liners.

* Extend Docker build timeout in github actions to allow for extended arm64 build times.

* timeout_minutes should be at job level?

* Disabled arm64 build for "robot"

Also:

* Set python in venv as default Python in dev container
* Remove build timeout in github action (which was ignored)

* Correctly disable arm64 build.

---------

Co-authored-by: Aaron Marburg <amarburg@uw.edu>

* Backport #220 into Jazzy

* Removed testing image from nvidia-desktop compose script

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aaron Marburg <amarburg@apl.washington.edu>
Co-authored-by: Aaron Marburg <amarburg@uw.edu>
@amarburg amarburg deleted the dev/robot_container branch August 23, 2024 16:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants