Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
297 commits
Select commit Hold shift + click to select a range
f42785b
docker build error fix attempt
woensug-choi Jun 5, 2024
dd21d5d
docker build error fix attempt
woensug-choi Jun 5, 2024
d37a686
apple silicon docker tag to be ros2-arm-rdp
woensug-choi Jun 5, 2024
e7d26de
apple silicon docker tag to be ros2-arm-rdp
woensug-choi Jun 5, 2024
f9aafcc
apple silicon docker fix attempt
woensug-choi Jun 5, 2024
8ebae8b
apple silicon docker fix attempt
woensug-choi Jun 5, 2024
2618973
apple silicon docker fix attempt
woensug-choi Jun 5, 2024
5f8e963
shorten compile time and add bashrc
woensug-choi Jun 5, 2024
3d409a2
shorten compile time and add bashrc
woensug-choi Jun 5, 2024
3ade630
faster docker hub image for ci build
woensug-choi Jun 6, 2024
74a353e
faster docker hub image for ci build fix attempt
woensug-choi Jun 6, 2024
3353df3
remove doc for now
woensug-choi Jun 10, 2024
486a61f
changing docker hub repository
woensug-choi Jun 10, 2024
5972ff2
not tagging correctly fix
woensug-choi Jun 11, 2024
e8edbe2
not tagging correctly fix2
woensug-choi Jun 11, 2024
af720f4
not tagging correctly fix3
woensug-choi Jun 11, 2024
757435c
Added examples for launching models from fuel
rakeshv24 Jun 13, 2024
b3fc217
converted yaml to python files and added a hook for setting gazebo va…
rakeshv24 Jun 20, 2024
0bc6b25
universal trial
woensug-choi Jun 20, 2024
ff7746a
nop we need hooks
woensug-choi Jun 20, 2024
1c27b13
typo fix
woensug-choi Jun 20, 2024
8e4df54
updated README and minor code refactoring
rakeshv24 Jun 20, 2024
06b2c3a
Merge pull request #2 from IOES-Lab/fuel-models
rakeshv24 Jun 20, 2024
bfb1138
linting fixes
rakeshv24 Jun 20, 2024
1ee0b98
add special background
woensug-choi Jun 21, 2024
b685391
add background image
woensug-choi Jun 21, 2024
2d66b57
line change fix
woensug-choi Jun 21, 2024
9ce1b99
add env variable and welcome
woensug-choi Jun 21, 2024
1aedcf4
Restructuring of ROS 2 packages to follow the original dave repo
rakeshv24 Jun 24, 2024
13c02f6
package rename
rakeshv24 Jun 24, 2024
50b4752
Merge pull request #3 from IOES-Lab/restructure
rakeshv24 Jun 25, 2024
f4e45d1
add dave worlds and launch files
hmoyen Jun 25, 2024
6b1ac31
remove LICENSE
hmoyen Jun 25, 2024
ca9706b
WIP: added a package for dave_robot_models.
rakeshv24 Jun 25, 2024
7950f6f
add universal launch file and README
hmoyen Jun 26, 2024
42c95bd
rdp opengl error fix
woensug-choi Jun 26, 2024
db639af
move to host directory at start
woensug-choi Jun 26, 2024
d47d52b
clean up and mod
woensug-choi Jun 27, 2024
cb3eebe
added rexrov model with hydrodynamic, buoyancy, and thruster plugins
rakeshv24 Jun 27, 2024
8e96c30
Added Readme and minor fixes
rakeshv24 Jun 27, 2024
585101d
Merge pull request #4 from IOES-Lab/worlds
hmoyen Jun 27, 2024
553a7f0
rdp opengl error fix
woensug-choi Jun 26, 2024
aff413c
move to host directory at start
woensug-choi Jun 26, 2024
de9ac85
add dave worlds and launch files
hmoyen Jun 25, 2024
0bf5e27
remove LICENSE
hmoyen Jun 25, 2024
06f3d88
add universal launch file and README
hmoyen Jun 26, 2024
91d387f
clean up and mod
woensug-choi Jun 27, 2024
77cb4f8
rebased with ros2 branch, removed redudant code, applied pre-commit a…
rakeshv24 Jun 27, 2024
56badf6
Merge branch 'ros2' into robot-models
rakeshv24 Jun 27, 2024
61bf21b
Remove sudo message at beginning
woensug-choi Jun 28, 2024
b265572
pre-commit lint fixes
woensug-choi Jun 28, 2024
2f04a8a
revive pre-commit with fixes
woensug-choi Jun 28, 2024
6aa3b71
xml pre-commit fix
woensug-choi Jun 28, 2024
a65a39c
dockerfile lint remove (temp)
woensug-choi Jun 28, 2024
02817a6
Merge branch 'ros2' into robot-models
rakeshv24 Jun 28, 2024
0ebded4
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 28, 2024
4c583f7
Changed added mass values, moved sensor tag within base_link, suppres…
rakeshv24 Jun 28, 2024
8bbf5b7
workflow lint check fix
woensug-choi Jun 28, 2024
7c8baba
yaml lint fix
woensug-choi Jun 28, 2024
045f11f
Merge branch 'ros2' into robot-models
woensug-choi Jun 28, 2024
a5bf461
Merge pull request #5 from IOES-Lab/robot-models
rakeshv24 Jun 28, 2024
fb82008
Moved dvl sensor to a dave_sensor_model package, added model.config f…
rakeshv24 Jun 28, 2024
2ee418e
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 28, 2024
fb27cf8
WIP: added glider_slocum model; TODO: fix buoyancy, battery plugin, a…
rakeshv24 Jun 28, 2024
a07a1d7
Merge pull request #6 from IOES-Lab/dave-sensor
rakeshv24 Jun 29, 2024
753d7ce
Added buoyancy plugin to the world files
rakeshv24 Jul 1, 2024
8fbe7d8
changes to battery plugin
rakeshv24 Jul 2, 2024
428846f
Updated:
rakeshv24 Jul 3, 2024
174c238
initial position mod
woensug-choi Jul 6, 2024
9c171b0
Merge pull request #7 from IOES-Lab/buoyancy
rakeshv24 Jul 6, 2024
731e3db
Moved dvl sensor to a dave_sensor_model package, added model.config f…
rakeshv24 Jun 28, 2024
cbd21ed
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 28, 2024
011c831
Added buoyancy plugin to the world files
rakeshv24 Jul 1, 2024
9d64ee7
Merge pull request #8 from IOES-Lab/glider-slocum
rakeshv24 Jul 6, 2024
a9f2309
add usbl plugins
hmoyen Jul 8, 2024
3b77631
remove -testing
woensug-choi Jul 8, 2024
199f6e5
add user argument
woensug-choi Jul 8, 2024
910b053
key conflit avoidance
woensug-choi Jul 8, 2024
5b015fd
usbl transponder working
hmoyen Jul 8, 2024
35cacfc
usbl transceiver working
hmoyen Jul 12, 2024
3861066
usbl transceiver working
hmoyen Jul 12, 2024
fc92e36
fix entity bug
hmoyen Jul 12, 2024
a23edad
corrections
hmoyen Jul 12, 2024
04f10ee
change package name
hmoyen Jul 12, 2024
1e14e88
change package name to sensors
hmoyen Jul 12, 2024
99dd3ab
change cmake minimum
hmoyen Jul 12, 2024
9748c5a
add parameters
hmoyen Jul 13, 2024
4242030
delete install in cmake
hmoyen Jul 15, 2024
f4d2a75
testing
woensug-choi Jul 15, 2024
3d9fc58
ament precommit fix attempt
woensug-choi Jul 15, 2024
40b471f
remove test file
woensug-choi Jul 15, 2024
6598717
add custom location message and mode conditions
hmoyen Jul 15, 2024
1743eb5
new sc branch
hmoyen Jul 17, 2024
ddb5f26
add interfaces
hmoyen Jul 19, 2024
954c965
change launch to add verbose
hmoyen Jul 19, 2024
1cd7702
fix set origin sc
hmoyen Jul 19, 2024
950969d
fix transform from sc to local
hmoyen Jul 19, 2024
b0801ba
fix tabs and set default ping to true
hmoyen Jul 19, 2024
0f1378e
Merge pull request #11 from IOES-Lab/usbl-plugins
hmoyen Jul 19, 2024
b01c36f
add usbl plugins
hmoyen Jul 8, 2024
598ce3f
usbl transponder working
hmoyen Jul 8, 2024
22a5258
usbl transceiver working
hmoyen Jul 12, 2024
bd73bfe
usbl transceiver working
hmoyen Jul 12, 2024
4ea1171
fix entity bug
hmoyen Jul 12, 2024
3db68e4
corrections
hmoyen Jul 12, 2024
3a99656
change package name
hmoyen Jul 12, 2024
effd089
change package name to sensors
hmoyen Jul 12, 2024
7882bec
change cmake minimum
hmoyen Jul 12, 2024
18e1f62
add parameters
hmoyen Jul 13, 2024
6c1ec08
testing
woensug-choi Jul 15, 2024
8b446c6
ament precommit fix attempt
woensug-choi Jul 15, 2024
e109afb
remove test file
woensug-choi Jul 15, 2024
227a97b
add custom location message and mode conditions
hmoyen Jul 15, 2024
1560aad
fix tabs and set default ping to true
hmoyen Jul 19, 2024
010a7d2
usbl transponder working
hmoyen Jul 8, 2024
d287b95
fix entity bug
hmoyen Jul 12, 2024
aab676d
delete old package
hmoyen Jul 19, 2024
2195ea9
linting fix and minor change to installation script
rakeshv24 Jul 19, 2024
06bee06
Removed redundant package installation
rakeshv24 Jul 19, 2024
f02e4fa
add cppzmq-dev
hmoyen Jul 19, 2024
8604b2f
desktop -> desktop-full
rakeshv24 Jul 19, 2024
9f1680f
Merge branch 'ros2' into sc-plugin
hmoyen Jul 19, 2024
79749bd
Merge pull request #12 from IOES-Lab/sc-plugin
hmoyen Jul 19, 2024
edfed6b
Update CMakeLists.txt
hmoyen Jul 19, 2024
cc7a1ef
added sub_sea_pressure_sensor_plugin
GauravKumar9920 Jul 24, 2024
0abb291
added support for proto
GauravKumar9920 Jul 24, 2024
16e7a5d
add dvl sensor example
hmoyen Jul 25, 2024
ecee25d
updated cmake for review
GauravKumar9920 Jul 25, 2024
cda34c5
fix include issue
hmoyen Jul 25, 2024
58beeb6
fix material issues
hmoyen Jul 25, 2024
58f5708
fix material issues
hmoyen Jul 25, 2024
6e871ef
removed duplicates
GauravKumar9920 Jul 26, 2024
3cbe0e3
Successfully compiling code
GauravKumar9920 Jul 27, 2024
a5ab8e2
Pre-Final fixes
GauravKumar9920 Aug 4, 2024
6c3b0b1
Added a custom ros-gz bridge for DVL messages
rakeshv24 Aug 5, 2024
95c7eb0
Moved DVLBridge plugin to model.sdf and added a feature of importing …
rakeshv24 Aug 5, 2024
4bdc531
fix material issues
hmoyen Jul 25, 2024
f20510b
Final code for Sea_Pressure_sensor_plugin
GauravKumar9920 Aug 6, 2024
36d1898
minor Update
GauravKumar9920 Aug 6, 2024
3179fd4
source install test
woensug-choi Aug 7, 2024
22941bc
amd
woensug-choi Aug 7, 2024
c4a86a5
clean up
woensug-choi Aug 7, 2024
22864c1
add entry and pythonpath
woensug-choi Aug 7, 2024
4be7c2b
gazebo source install script
woensug-choi Aug 7, 2024
b9dd381
minor fix
woensug-choi Aug 7, 2024
f99c972
finalize
woensug-choi Aug 7, 2024
a4627f9
specify gz-physics version
woensug-choi Aug 7, 2024
13b44aa
specify gz-phyics version
woensug-choi Aug 7, 2024
9c61da3
testing self-hosted runner
woensug-choi Aug 7, 2024
d5ae9af
Update README.md
woensug-choi Aug 8, 2024
550f7d9
arm build takes longer than 6 hours
woensug-choi Aug 8, 2024
33435db
updated code with reccomended changes
GauravKumar9920 Aug 8, 2024
d405d4a
Minor changes
GauravKumar9920 Aug 8, 2024
d28a1f6
Removed Proto
GauravKumar9920 Aug 9, 2024
3df20aa
Merge branch 'dockertest' into ros2
woensug-choi Aug 9, 2024
363a7c7
Merge pull request #13 from IOES-Lab/sea_pressure_plugin
GauravKumar9920 Aug 9, 2024
de0ca62
remove empty file
woensug-choi Aug 9, 2024
f22dad4
add lints and build checks for PR too
woensug-choi Aug 9, 2024
803a43e
added dvl plugin to nortek500. TODO: fix water_tracking
rakeshv24 Aug 16, 2024
18e0cf1
Added multiple dvl sensors and modified top-level launch files
rakeshv24 Aug 18, 2024
4c347aa
added mutex lock
rakeshv24 Aug 18, 2024
66e20f7
1. Fixed reference frame conversion: East-North-Up -> Forward-Starboa…
rakeshv24 Aug 18, 2024
8da8463
precommit changes
rakeshv24 Aug 18, 2024
588eba5
updated contact sensor plugin from ignition
rakeshv24 Aug 18, 2024
1c073e1
Update roll, pitch, yaw arguements and DVL types in the code
rakeshv24 Aug 19, 2024
4c2c9dc
Updated DVL to stay static in the environment
rakeshv24 Aug 19, 2024
07cc5fa
updated example in README
rakeshv24 Aug 19, 2024
f3b7176
adjust initial camera position
woensug-choi Aug 19, 2024
98d4849
Merge pull request #14 from IOES-Lab/dvl
rakeshv24 Aug 19, 2024
7e0f089
Initial commit for underwater camera
rakeshv24 Aug 19, 2024
d057573
WIP: fixed CV dep errors and changed base camera to RGBD over Depth c…
rakeshv24 Aug 26, 2024
1aef35a
added more objects to camera_tutorial.world
rakeshv24 Aug 29, 2024
09e2f01
fixed range issue with the camera plugin
rakeshv24 Aug 30, 2024
3c44496
updated configure function and description files
rakeshv24 Sep 1, 2024
cc295ad
added dvl, magnetometer to rexrov and required ros_gz bridges to the …
rakeshv24 Aug 27, 2024
82c6a02
added sensor plugins to robot models, created separate launch files f…
rakeshv24 Aug 29, 2024
c293aa4
added sensor and dvl plugins to all world files
rakeshv24 Aug 29, 2024
40cd903
minor changes to launch arguments and renamed robot launch file
rakeshv24 Aug 30, 2024
07add59
combined dave_robot_launch package with dave_demos package for consis…
rakeshv24 Aug 30, 2024
0def1a9
linting error fix
rakeshv24 Sep 1, 2024
997c402
Merge pull request #17 from IOES-Lab/camera
rakeshv24 Sep 4, 2024
fc2882d
linting fix
rakeshv24 Sep 4, 2024
c1c00f1
Moved ros_gz_bridge to config folder
rakeshv24 Sep 6, 2024
9aeb452
Added bluerov2 models (regular and heavy) and modified ros_gz_bridges…
rakeshv24 Sep 6, 2024
ec61238
fixed camera pose
rakeshv24 Sep 6, 2024
8e82bc2
draft
woensug-choi Sep 9, 2024
fdc2c2e
add
woensug-choi Sep 9, 2024
48f7894
mac protobuff problem when compiling
woensug-choi Sep 9, 2024
46a2681
amd wrap up
woensug-choi Sep 9, 2024
e4ba69f
draft for arm
woensug-choi Sep 9, 2024
430fa3e
fix typo
woensug-choi Sep 9, 2024
c386d8e
add pexpect
woensug-choi Sep 9, 2024
7b7268e
add pexpect
woensug-choi Sep 9, 2024
5c3f74b
add sudo if not sufficient
woensug-choi Sep 9, 2024
5fbdadf
add prereq
woensug-choi Sep 10, 2024
2dfd17d
wrap up
woensug-choi Sep 10, 2024
21eacff
add gpg key
woensug-choi Sep 10, 2024
b0ab2f2
wget not found fix
woensug-choi Sep 10, 2024
7ff02a0
drafting for mavros
woensug-choi Sep 10, 2024
ab3fc36
typo fix
woensug-choi Sep 10, 2024
6767f1c
mavros drafted
woensug-choi Sep 10, 2024
5bebd8c
mavros drafted
woensug-choi Sep 10, 2024
9b4336c
temp change
woensug-choi Sep 10, 2024
c1325d8
sitl typo fix
woensug-choi Sep 10, 2024
cdb6a25
attempt for mavros
woensug-choi Sep 10, 2024
8894b6f
no sudo
woensug-choi Sep 10, 2024
b1c54ec
add libasio
woensug-choi Sep 10, 2024
4dc197f
supress dev msg
woensug-choi Sep 10, 2024
79c6ec1
link geographilclib
woensug-choi Sep 10, 2024
da3e9dc
fix geographiclib path
woensug-choi Sep 10, 2024
f91e807
minor typo
woensug-choi Sep 10, 2024
564300f
use current branch name
woensug-choi Sep 11, 2024
77b1579
add geoid path
woensug-choi Sep 11, 2024
dcf50bd
-j flag fix
woensug-choi Sep 12, 2024
400ebb2
-j flag fix
woensug-choi Sep 12, 2024
70768d2
Added bluerov2 config files and support for ardusub, mavros
rakeshv24 Sep 16, 2024
a026bee
fix ardupilot install path attempt
woensug-choi Sep 18, 2024
4950c7a
amd update
woensug-choi Sep 18, 2024
f533ff0
amd update
woensug-choi Sep 18, 2024
254f3f8
arm update
woensug-choi Sep 18, 2024
35f05f3
fix ardupilot install path attempt
woensug-choi Sep 18, 2024
a2c76df
amd update
woensug-choi Sep 18, 2024
efa4120
amd update
woensug-choi Sep 18, 2024
1919ca7
arm update
woensug-choi Sep 18, 2024
485ccc0
-j flag fix
woensug-choi Sep 12, 2024
e7c0879
fix rosdep
woensug-choi Sep 18, 2024
ca9a23a
Merge branch 'ardusub_install' into dockertest
woensug-choi Sep 18, 2024
7829b01
add ascii art for arm rdp
woensug-choi Sep 18, 2024
18a2c94
testing ascii art for amd
woensug-choi Sep 18, 2024
3f69b2b
amd image ascii art and coloring
woensug-choi Sep 18, 2024
100c71a
wip
rakeshv24 Sep 19, 2024
98b39e0
commenting out ardusub_manager
rakeshv24 Sep 19, 2024
8c2f58d
typo fix
woensug-choi Sep 19, 2024
b77235d
yaml fix for mavros-extras
woensug-choi Sep 19, 2024
b933ee0
modified ardusub process to use -M gazebo instead of JSON
rakeshv24 Oct 4, 2024
9a07f9c
added underwater_camera plugin to the robots
rakeshv24 Oct 4, 2024
055dd6e
minor fixes to camera config
rakeshv24 Oct 4, 2024
8e0d8bd
Update README.md
woensug-choi Oct 6, 2024
870a1de
removed ardusub_manager deps
rakeshv24 Oct 11, 2024
33e2068
Added OGRE2 render engine to sensor plugin
rakeshv24 Oct 22, 2024
105fa19
Merge pull request #21 from IOES-Lab/robot_launch
rakeshv24 Oct 23, 2024
98cc9a9
finalize
woensug-choi Oct 23, 2024
ab6935c
Merge pull request #20 from IOES-Lab/ardusub_install
woensug-choi Oct 23, 2024
9345bd9
link fix
woensug-choi Oct 23, 2024
8095517
remove sudo for arm dockerfile
woensug-choi Oct 24, 2024
2bd7cce
sudo prev fix attempt
woensug-choi Oct 24, 2024
0525456
fix for glider slocum drift issue
GauravKumar9920 Oct 27, 2024
5a12f08
Merge pull request #22 from IOES-Lab/glider_slocum
woensug-choi Nov 4, 2024
751637d
save
woensug-choi Jul 7, 2025
9110941
save
woensug-choi Jul 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
16 changes: 16 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
Language: Cpp
BasedOnStyle: Google

ColumnLimit: 100
AccessModifierOffset: -2
AlignAfterOpenBracket: AlwaysBreak
BreakBeforeBraces: Allman
ConstructorInitializerIndentWidth: 0
ContinuationIndentWidth: 2
DerivePointerAlignment: false
PointerAlignment: Middle
ReflowComments: true
IncludeBlocks: Preserve
InsertBraces: true
...
3 changes: 3 additions & 0 deletions .codespellrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[codespell]
skip = *.json
ignore-words-list = parm,ned,sitl
30 changes: 30 additions & 0 deletions .docker/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# ROS2 Control Docker Containers

Meant to provide basic docker containers for CI or development purposes. To use them, make sure you have [Docker](https://docs.docker.com/get-docker/) installed. You then can pull the latest source or build image or build any version and run the image by following tag specific commands as described below:

## Source folder and tag
Downloads and builds daves into a workspace for development use exactly as is found [here](https://control.ros.org/master/doc/getting_started/getting_started.html#building-from-source). This is primarily used for development and CI of dave and related packages.

You can pull a prebuilt image with this docker tag: `ghcr.io/ros-controls/dave_source`.

To build and run the container, execute the following code in a terminal:
```
docker build --tag dave:source --file .docker/jazzy.dockerfile .
docker run -it dave:source
```

If you are not familiar with docker, you'll want to consider how you want to maintain persistent data across container sessions. The above commands with start a **new** container and that container will persist as long as you don't remove it. If you want to return to it, you'll have to use the `docker start` command with the container id.

A better way to maintain your code changes across coding sessions is to use docker volumes or bind mounts. Web search those terms for more documentation but a simple example is provided below. First, you must build the container as shown in the first command above, then:

Bind mount example:
```
docker run -it --mount type=bind,source=/local/path/to/repo,destination=/root/ws_dave/src/<path to repo you want replaced> dave:source
```
Note: the above example replaces the containers contents with whatever you mount.

Volume example:
```
docker run -it --mount type=volume,source=name-of-volume,destination=/root/ws_dave/src/ dave:source
```
Note: this is probably the preferred solution as changes persist across rebuilds of container and doesn't require you to pull all repositories that you want to edit as they'll already be in the container.
137 changes: 137 additions & 0 deletions .docker/jazzy.amd64.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
ARG ROS_DISTRO="jazzy"
FROM osrf/ros:$ROS_DISTRO-desktop-full
ARG BRANCH="ros2"

# Install Utilities
# hadolint ignore=DL3008
RUN apt-get update && \
apt-get install -y --no-install-recommends \
sudo xterm init systemd snapd vim net-tools \
curl wget git build-essential cmake cppcheck \
gnupg libeigen3-dev libgles2-mesa-dev \
lsb-release pkg-config protobuf-compiler \
python3-dbg python3-pip python3-venv python3-pexpect \
python-is-python3 python3-future python3-wxgtk4.0 \
qtbase5-dev ruby dirmngr gnupg2 nano xauth \
software-properties-common htop libtool \
x11-apps mesa-utils bison flex automake \
&& rm -rf /var/lib/apt/lists/

# Prereqs for Ardupilot - Ardusub
ADD --chown=root:root --chmod=0644 https://raw.githubusercontent.com/osrf/osrf-rosdep/master/gz/00-gazebo.list /etc/ros/rosdep/sources.list.d/00-gazebo.list
RUN wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null \
&& apt-get update && apt-get install -y --no-install-recommends \
libgz-sim8-dev rapidjson-dev libopencv-dev \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl \
&& rm -rf /var/lib/apt/lists/

# Locale for UTF-8
RUN truncate -s0 /tmp/preseed.cfg && \
(echo "tzdata tzdata/Areas select Etc" >> /tmp/preseed.cfg) && \
(echo "tzdata tzdata/Zones/Etc select UTC" >> /tmp/preseed.cfg) && \
debconf-set-selections /tmp/preseed.cfg && \
rm -f /etc/timezone && \
dpkg-reconfigure -f noninteractive tzdata
# hadolint ignore=DL3008
RUN apt-get update && \
apt-get -y install --no-install-recommends locales tzdata \
&& rm -rf /tmp/*
RUN locale-gen en_US en_US.UTF-8 && update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \
export LANG=en_US.UTF-8

# Make user (assume host user has 1000:1000 permission)
ARG USER=docker
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN adduser --shell /bin/bash --disabled-password --gecos '' $USER \
&& echo "$USER:$USER" | chpasswd && adduser $USER sudo \
&& echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

# Install ROS-Gazebo framework
ADD https://raw.githubusercontent.com/IOES-Lab/dave/$BRANCH/\
extras/ros-jazzy-binary-gz-harmonic-source-install.sh install.sh
RUN bash install.sh

# Install Ardupilot - Ardusub
ADD https://raw.githubusercontent.com/IOES-Lab/dave/$BRANCH/\
extras/ardusub-ubuntu-install.sh install.sh
RUN bash install.sh
# Install mavros
ADD https://raw.githubusercontent.com/IOES-Lab/dave/$BRANCH/\
extras/mavros-ubuntu-install.sh install.sh
RUN bash install.sh

# Set up Dave workspace
ENV DAVE_WS=/opt/dave_ws
WORKDIR $DAVE_WS/src

ADD https://raw.githubusercontent.com/IOES-Lab/dave/$BRANCH/\
extras/repos/dave.$ROS_DISTRO.repos $DAVE_WS/dave.repos
RUN vcs import --shallow --input $DAVE_WS/dave.repos

# Install dave dependencies
RUN apt-get update && rosdep update && \
rosdep install -iy --from-paths . && \
rm -rf /var/lib/apt/lists/

# Compile Dave
WORKDIR $DAVE_WS
RUN . "/opt/ros/${ROS_DISTRO}/setup.sh" && \
colcon build

# source entrypoint setup
RUN touch /ros_entrypoint.sh && sed --in-place --expression \
'$i source "/opt/dave_ws/install/setup.bash"' /ros_entrypoint.sh \
&& sed --in-place --expression \
'$i cd /root' /ros_entrypoint.sh

RUN cp /home/docker/.bashrc ~/.bashrc

# Source ROS and Gazebo
RUN sed --in-place --expression \
'$i source "/opt/ros/jazzy/setup.bash"' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i source "/opt/gazebo/install/setup.bash"' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i source "/opt/mavros/install/setup.bash"' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i export GEOGRAPHICLIB_GEOID_PATH=/usr/local/share/GeographicLib/geoids' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i export PYTHONPATH=\$PYTHONPATH:/opt/gazebo/install/lib/python' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i export PATH=/opt/ardupilot_dave/ardupilot/build/sitl/bin:\$PATH' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i export PATH=/opt/ardupilot_dave/ardupilot/Tools/autotest:\$PATH' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i export GZ_SIM_SYSTEM_PLUGIN_PATH=/opt/ardupilot_dave/ardupilot_gazebo/build:\$GZ_SIM_SYSTEM_PLUGIN_PATH' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i export GZ_SIM_RESOURCE_PATH=/opt/ardupilot_dave/ardupilot_gazebo/models:/opt/ardupilot_dave/ardupilot_gazebo/worlds:\$GZ_SIM_RESOURCE_PATH' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i printf '\''\\033[1;37m \n=====\n'\'' ' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i printf '\'' ____ ___ _______ _ _ _ \n'\'' ' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i printf '\'' | _ \\ / \\ \\ / | ____| / \\ __ _ _ _ __ _| |_(_) ___ \n'\'' ' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i printf '\'' | | | |/ _ \\ \\ / /| _| / _ \\ / _` | | | |/ _` | __| |/ __|\n'\'' ' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i printf '\'' | |_| / ___ \\ V / | |___ / ___ \\ (_| | |_| | (_| | |_| | (__ \n'\'' ' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i printf '\'' |____/_/ \\_\\_/ |_____| /_/ \\_\\__, |\\__,_|\\__,_|\\__|_|\\___|\n'\'' ' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i printf '\'' __ ___ _ _ _____ _ \n'\'' ' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i printf '\'' \\ \\ / (_)_ __| |_ _ _ __ _| | | ____|_ ____ _(_)_ __ \n'\'' ' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i printf '\'' \\ \\ / /| | `__| __| | | |/ _` | | | _| | `_ \\ \\ / | | `__| \n'\'' ' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i printf '\'' \\ V / | | | | |_| |_| | (_| | | | |___| | | \\ V /| | |_ \n'\'' ' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i printf '\'' \\_/ |_|_| \\__|\\__,_|\\__,_|_| |_____|_| |_|\\_/ |_|_(_) \n\\033[0m'\'' ' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i printf '\''\\033[1;32m\n =====\\033[0m\n'\'' ' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i printf '\''\\033[1;32m 👋 Hi! This is Docker virtual environment for DAVE\n\\033[0m'\'' ' /ros_entrypoint.sh && \
sed --in-place --expression \
'$i printf '\''\\033[1;33m\tROS2 Jazzy - Gazebo Harmonic (w ardupilot(ardusub) + mavros)\n\n\\033[0m'\'' ' /ros_entrypoint.sh
196 changes: 196 additions & 0 deletions .docker/jazzy.arm64v8.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
# FROM arm64v8/ubuntu:24.04
# # Set RDP and SSH environments
# ARG X11Forwarding=true
# # hadolint ignore=DL3008,DL3015,DL3009
# RUN DEBIAN_FRONTEND=noninteractive apt-get update && \
# apt-get install -y ubuntu-desktop-minimal dbus-x11 xrdp sudo; \
# [ $X11Forwarding = 'true' ] && apt-get install -y openssh-server; \
# apt-get autoremove --purge; \
# apt-get clean; \
# rm /run/reboot-required*

# ARG USER=docker
# ARG PASS=docker

# RUN useradd -s /bin/bash -m $USER -p "$(openssl passwd "$PASS")"; \
# usermod -aG sudo $USER; echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers; \
# adduser xrdp ssl-cert; \
# # Setting the required environment variables
# echo 'LANG=en_US.UTF-8' >> /etc/default/locale; \
# echo 'export GNOME_SHELL_SESSION_MODE=ubuntu' > /home/$USER/.xsessionrc; \
# echo 'export XDG_CURRENT_DESKTOP=ubuntu:GNOME' >> /home/$USER/.xsessionrc; \
# echo 'export XDG_SESSION_TYPE=x11' >> /home/$USER/.xsessionrc; \
# # Enabling log to the stdout
# sed -i "s/#EnableConsole=false/EnableConsole=true/g" /etc/xrdp/xrdp.ini; \
# # Disabling system animations and reducing the
# # image quality to improve the performance
# sed -i 's/max_bpp=32/max_bpp=16/g' /etc/xrdp/xrdp.ini; \
# gsettings set org.gnome.desktop.interface enable-animations true; \
# # Listening on wildcard address for X forwarding
# [ $X11Forwarding = 'true' ] && \
# sed -i 's/#X11UseLocalhost yes/X11UseLocalhost no/g' /etc/ssh/sshd_config || \
# sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/g' /etc/ssh/sshd_config || \
# :;

# # Disable initial welcome window
# RUN echo "X-GNOME-Autostart-enabled=false" >> /etc/xdg/autostart/gnome-initial-setup-first-login.desktop

# # Install basics
# ENV DEBIAN_FRONTEND noninteractive
# ENV DEBCONF_NONINTERACTIVE_SEEN=true
# # hadolint ignore=DL3008
# RUN apt-get update && \
# apt-get install -y --no-install-recommends \
# sudo xterm init systemd snapd vim net-tools \
# curl wget git build-essential cmake cppcheck \
# gnupg libeigen3-dev libgles2-mesa-dev \
# lsb-release pkg-config protobuf-compiler \
# python3-dbg python3-pip python3-venv \
# qtbase5-dev ruby dirmngr gnupg2 nano xauth \
# software-properties-common htop libtool \
# x11-apps mesa-utils bison flex automake && \
# rm -rf /var/lib/apt/lists/

# Locale for UTF-8
# RUN truncate -s0 /tmp/preseed.cfg && \
# (echo "tzdata tzdata/Areas select Etc" >> /tmp/preseed.cfg) && \
# (echo "tzdata tzdata/Zones/Etc select UTC" >> /tmp/preseed.cfg) && \
# debconf-set-selections /tmp/preseed.cfg && \
# rm -f /etc/timezone && \
# dpkg-reconfigure -f noninteractive tzdata
# # hadolint ignore=DL3008
# RUN apt-get update && \
# apt-get -y install --no-install-recommends locales tzdata \
# && rm -rf /tmp/*
# RUN locale-gen en_US en_US.UTF-8 && update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \
# export LANG=en_US.UTF-8

# # Run
# EXPOSE 3389/tcp
# EXPOSE 22/tcp
# # hadolint ignore=DL3025
# CMD sudo rm -f /var/run/xrdp/xrdp*.pid >/dev/null 2>&1; \
# sudo service dbus restart >/dev/null 2>&1; \
# sudo /usr/lib/systemd/systemd-logind >/dev/null 2>&1 & \
# [ -f /usr/sbin/sshd ] && sudo /usr/sbin/sshd; \
# sudo xrdp-sesman --config /etc/xrdp/sesman.ini; \
# sudo xrdp --nodaemon --config /etc/xrdp/xrdp.ini

# Using the pre-built image for above commented out dockerfile code lines
# hadolint ignore=DL3007
FROM woensugchoi/ubuntu-arm-rdp-base:latest
ARG USER=docker

# ROS-Gazebo arg
ARG BRANCH="ros2"
ARG ROS_DISTRO="jazzy"

# Install ROS-Gazebo framework
ADD https://raw.githubusercontent.com/IOES-Lab/dave/$BRANCH/\
extras/ros-jazzy-binary-gz-harmonic-source-install.sh install.sh
RUN bash install.sh

# Prereqs for Ardupilot - Ardusub
ENV DEBIAN_FRONTEND=noninteractive
ENV DEBCONF_NONINTERACTIVE_SEEN=true
# hadolint ignore=DL3008
ADD --chown=root:root --chmod=0644 https://raw.githubusercontent.com/osrf/osrf-rosdep/master/gz/00-gazebo.list /etc/ros/rosdep/sources.list.d/00-gazebo.list
RUN wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null \
&& apt-get -q update && \
apt-get install -y --no-install-recommends \
python-is-python3 python3-future python3-wxgtk4.0 python3-pexpect \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
libgz-sim8-dev rapidjson-dev libopencv-dev libasio-dev \
gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl \
&& rm -rf /var/lib/apt/lists/
# Install mavros
ADD https://raw.githubusercontent.com/IOES-Lab/dave/$BRANCH/\
extras/mavros-ubuntu-install.sh install.sh
RUN bash install.sh

# Download the background image from GitHub raw content URL
# hadolint ignore=DL3047
RUN wget -O /usr/share/backgrounds/custom-background.png -q \
https://raw.githubusercontent.com/IOES-Lab/dave/$BRANCH/\
extras/background.png && \
mv /usr/share/backgrounds/warty-final-ubuntu.png \
/usr/share/backgrounds/warty-final-ubuntu.png.bak && \
mv /usr/share/backgrounds/custom-background.png \
/usr/share/backgrounds/warty-final-ubuntu.png && \
cp /usr/share/backgrounds/warty-final-ubuntu.png \
/usr/share/backgrounds/ubuntu-wallpaper-d.png

# Install Ardupilot - Ardusub
USER docker
RUN wget -O /tmp/install.sh https://raw.githubusercontent.com/IOES-Lab/dave/$BRANCH/extras/ardusub-ubuntu-install-local.sh
RUN chmod +x /tmp/install.sh && bash /tmp/install.sh

# Set up Dave workspace
ENV DAVE_UNDERLAY=/home/$USER/dave_ws
WORKDIR $DAVE_UNDERLAY/src
RUN wget -O /home/$USER/dave_ws/dave.repos -q https://raw.githubusercontent.com/IOES-Lab/dave/$BRANCH/\
extras/repos/dave.$ROS_DISTRO.repos
RUN vcs import --shallow --input "/home/$USER/dave_ws/dave.repos"

USER root
# hadolint ignore=DL3027
RUN apt update && apt --fix-broken install && \
rosdep init && rosdep update --rosdistro $ROS_DISTRO && \
rosdep install --rosdistro $ROS_DISTRO -iy --from-paths . && \
rm -rf /var/lib/apt/lists/
USER docker

# Build dave workspace
WORKDIR $DAVE_UNDERLAY
RUN . "/opt/ros/${ROS_DISTRO}/setup.sh" && colcon build

# Set User as user
USER docker
RUN echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc && \
echo "source /opt/gazebo/install/setup.bash" >> ~/.bashrc && \
echo "source /opt/mavros/install/setup.bash" >> ~/.bashrc && \
echo "source $DAVE_UNDERLAY/install/setup.bash" >> ~/.bashrc && \
echo "export GEOGRAPHICLIB_GEOID_PATH=/usr/local/share/GeographicLib/geoids" >> ~/.bashrc && \
echo "export PYTHONPATH=\$PYTHONPATH:/opt/gazebo/install/lib/python" >> ~/.bashrc && \
echo "export PATH=/home/$USER/ardupilot_dave/ardupilot/Tools/autotest:\$PATH" >> ~/.bashrc && \
echo "export PATH=/home/$USER/ardupilot_dave/ardupilot/build/sitl/bin:\$PATH" >> ~/.bashrc && \
echo "export GZ_SIM_SYSTEM_PLUGIN_PATH=/home/$USER/ardupilot_dave/ardupilot_gazebo/build:\$GZ_SIM_SYSTEM_PLUGIN_PATH" >> ~/.bashrc && \
echo "export GZ_SIM_RESOURCE_PATH=/home/$USER/ardupilot_dave/ardupilot_gazebo/models:/home/$USER/ardupilot_dave/ardupilot_gazebo/worlds:\$GZ_SIM_RESOURCE_PATH" >> ~/.bashrc && \
echo "\n\n" >> ~/.bashrc && echo "if [ -d ~/HOST ]; then chown $USER:$USER ~/HOST; fi" >> ~/.bashrc && \
echo "\n\n" >> ~/.bashrc

# Other environment variables
RUN echo "export XDG_RUNTIME_DIR=~/.xdg_log" >> ~/.bashrc && \
echo "unset SESSION_MANAGER" >> ~/.bashrc

# Create and write the welcome message to a new file
RUN mkdir -p /home/docker/.config/autostart && \
printf '\033[1;37m =====\n' >> ~/.hi && \
printf ' ____ ___ _______ _ _ _ \n' >> ~/.hi && \
printf ' | _ \ / \ \ / | ____| / \ __ _ _ _ __ _| |_(_) ___ \n' >> ~/.hi && \
printf ' | | | |/ _ \ \ / /| _| / _ \ / _` | | | |/ _` | __| |/ __|\n' >> ~/.hi && \
printf ' | |_| / ___ \ V / | |___ / ___ | (_| | |_| | (_| | |_| | (__ \n' >> ~/.hi && \
printf ' |____/_/ \_\_/ |_____| /_/ \_\__, |\__,_|\__,_|\__|_|\___|\n' >> ~/.hi && \
printf ' __ ___ _ _ _____ _ \n' >> ~/.hi && \
printf ' \ \ / (_)_ __| |_ _ _ __ _| | | ____|_ ____ _(_)_ __ \n' >> ~/.hi && \
printf ' \ \ / /| | `__| __| | | |/ _` | | | _| | `_ \ \ / | | `__| \n' >> ~/.hi && \
printf ' \ V / | | | | |_| |_| | (_| | | | |___| | | \ V /| | |_ \n' >> ~/.hi && \
printf ' \_/ |_|_| \__|\__,_|\__,_|_| |_____|_| |_|\_/ |_|_(_) \n\033[0m' >> ~/.hi && \
printf '\033[1;32m\n =====\n\033[0m' >> ~/.hi && \
printf "\\033[1;32m 👋 Hi! This is Docker virtual environment for DAVE\n\\033[0m" \
>> ~/.hi && \
printf "\\033[1;33m\tROS2 Jazzy - Gazebo Harmonic (w ardupilot(ardusub) + mavros)\n\n\n\\033[0m" \
>> ~/.hi

# Remove sudo message
RUN touch /home/docker/.sudo_as_admin_successful

# Autostart terminal
# hadolint ignore=SC3037
RUN echo "[Desktop Entry]\nType=Application" \
> /home/docker/.config/autostart/terminal.desktop && \
echo "Exec=gnome-terminal -- bash -c 'cat ~/.hi; cd ~/HOST; exec bash'" \
>> /home/docker/.config/autostart/terminal.desktop && \
echo -e "X-GNOME-Autostart-enabled=true" \
>> /home/docker/.config/autostart/terminal.desktop
Loading
Loading