generated from Robotic-Decision-Making-Lab/ros-template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit f97c1ab
Showing
30 changed files
with
1,144 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
--- | ||
Language: Cpp | ||
BasedOnStyle: Google | ||
ColumnLimit: 100 | ||
MaxEmptyLinesToKeep: 1 | ||
|
||
IndentWidth: 2 | ||
TabWidth: 2 | ||
UseTab: Never | ||
AccessModifierOffset: -2 | ||
AlignAfterOpenBracket: AlwaysBreak | ||
ConstructorInitializerIndentWidth: 0 | ||
ContinuationIndentWidth: 2 | ||
DerivePointerAlignment: false | ||
PointerAlignment: Middle | ||
PackConstructorInitializers: Never | ||
|
||
# Configure brace wrapping cases | ||
BreakBeforeBraces: Custom | ||
BraceWrapping: | ||
AfterClass: true | ||
AfterEnum: true | ||
AfterFunction: true | ||
AfterNamespace: true | ||
AfterStruct: true | ||
AfterUnion: true | ||
BeforeCatch: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
--- | ||
Checks: > | ||
-*, | ||
abseil-*, | ||
bugprone-*, | ||
google-*, | ||
misc-*, | ||
modernize-*, | ||
performance-*, | ||
portability-*, | ||
readability-*, | ||
-google-readability-braces-around-statements, | ||
-google-readability-namespace-comments, | ||
-google-runtime-references, | ||
-misc-non-private-member-variables-in-classes, | ||
-modernize-return-braced-init-list, | ||
-modernize-use-trailing-return-type, | ||
-readability-braces-around-statements, | ||
-readability-identifier-length, | ||
-readability-magic-numbers, | ||
-readability-named-parameter, | ||
-readability-redundant-declaration, | ||
-readability-function-cognitive-complexity, | ||
-bugprone-narrowing-conversions, | ||
-bugprone-easily-swappable-parameters, | ||
-bugprone-implicit-widening-of-multiplication-result, | ||
-clang-diagnostic-error, | ||
-bugprone-exception-escape | ||
WarningsAsErrors: "*" | ||
CheckOptions: | ||
- key: readability-braces-around-statements.ShortStatementLines | ||
value: "2" | ||
- key: readability-identifier-naming.NamespaceCase | ||
value: lower_case | ||
- key: readability-identifier-naming.ClassCase | ||
value: CamelCase | ||
- key: readability-identifier-naming.StructCase | ||
value: CamelCase | ||
- key: readability-identifier-naming.TemplateParameterCase, | ||
value: CamelCase, | ||
- key: readability-identifier-naming.FunctionCase | ||
value: camelBack | ||
- key: readability-identifier-naming.MethodCase | ||
value: camelBack | ||
- key: readability-identifier-naming.VariableCase | ||
value: lower_case | ||
- key: readability-identifier-naming.ClassMemberCase | ||
value: lower_case | ||
- key: readability-identifier-naming.ClassMemberSuffix | ||
value: _ | ||
- key: readability-identifier-naming.PrivateMemberSuffix | ||
value: _ | ||
- key: readability-identifier-naming.ProtectedMemberSuffix | ||
value: _ | ||
- key: readability-identifier-naming.EnumConstantCase | ||
value: CamelCase | ||
- key: readability-identifier-naming.EnumConstantPrefix | ||
value: k | ||
- key: readability-identifier-naming.ConstexprVariableCase | ||
value: CamelCase | ||
- key: readability-identifier-naming.ConstexprVariablePrefix | ||
value: k | ||
- key: readability-identifier-naming.GlobalConstantCase | ||
value: CamelCase | ||
- key: readability-identifier-naming.GlobalConstantPrefix | ||
value: k | ||
- key: readability-identifier-naming.MemberConstantCase | ||
value: CamelCase | ||
- key: readability-identifier-naming.MemberConstantPrefix | ||
value: k | ||
- key: readability-identifier-naming.StaticConstantCase | ||
value: CamelCase | ||
- key: readability-identifier-naming.StaticConstantPrefix | ||
value: k | ||
- key: readability-implicit-bool-conversion.AllowIntegerConditions | ||
value: 1 | ||
- key: readability-implicit-bool-conversion.AllowPointerConditions | ||
value: 1 | ||
- key: readability-function-cognitive-complexity.IgnoreMacros | ||
value: 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
FROM ghcr.io/robotic-decision-making-lab/ros-template:noetic-desktop | ||
|
||
# Install ROS dependencies | ||
# This is done in a previous stage, but we include it again here in case anyone wants to | ||
# add new dependencies during development | ||
ENV USERNAME=ros | ||
ENV USER_WORKSPACE=/home/$USERNAME/ws_ros | ||
WORKDIR $USER_WORKSPACE | ||
|
||
COPY --chown=$USER_UID:$USER_GID . src/$PROJECT_NAME | ||
|
||
RUN ls src/$PROJECT_NAME | ||
|
||
RUN sudo apt-get -q update \ | ||
&& sudo apt-get -q -y upgrade \ | ||
&& rosdep update \ | ||
&& rosdep install -y --from-paths . --ignore-src -r --rosdistro ${ROS_DISTRO} \ | ||
&& sudo apt-get autoremove -y \ | ||
&& sudo apt-get clean -y \ | ||
&& sudo rm -rf /var/lib/apt/lists/* | ||
|
||
# Install debugging/linting Python packages | ||
COPY --chown=$USER_UID:$USER_GID requirements-dev.txt . | ||
RUN python3 -m pip install -r requirements-dev.txt \ | ||
&& rm -rf requirements-dev.txt | ||
|
||
# Disable the setuputils installation warning | ||
# This prevents us from needing to pin the setuputils version (which doesn't always work) | ||
ENV PYTHONWARNINGS="ignore" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
{ | ||
"name": "ROS Dev Container", | ||
"dockerFile": "Dockerfile", | ||
"context": "../..", | ||
"workspaceMount": "source=${localWorkspaceFolder},target=/home/ros/ws_ros/src/ros-template,type=bind", | ||
"workspaceFolder": "/home/ros/ws_ros/src/ros-template", | ||
"remoteUser": "ros", | ||
"runArgs": [ | ||
"--network=host", | ||
"--cap-add=SYS_PTRACE", | ||
"--security-opt=seccomp:unconfined", | ||
"--security-opt=apparmor:unconfined", | ||
"--volume=/dev:/dev", | ||
"--privileged", | ||
"--volume=/run/user/1000:/run/user/1000" | ||
], | ||
"containerEnv": { | ||
"DISPLAY": "${localEnv:DISPLAY}", | ||
"WAYLAND_DISPLAY": "${localEnv:WAYLAND_DISPLAY}", | ||
"XDG_RUNTIME_DIR": "${localEnv:XDG_RUNTIME_DIR}", | ||
"PULSE_SERVER": "${localEnv:PULSE_SERVER}" | ||
}, | ||
"customizations": { | ||
"vscode": { | ||
"extensions": [ | ||
"ms-azuretools.vscode-docker", | ||
"ms-python.python", | ||
"njpwerner.autodocstring", | ||
"ms-vscode.cpptools", | ||
"redhat.vscode-xml", | ||
"redhat.vscode-yaml", | ||
"smilerobotics.urdf", | ||
"DavidAnson.vscode-markdownlint", | ||
"esbenp.prettier-vscode", | ||
"xaver.clang-format", | ||
"charliermarsh.ruff", | ||
"ms-python.black-formatter" | ||
] | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
FROM ghcr.io/robotic-decision-making-lab/ros-template:noetic-desktop-nvidia | ||
|
||
# Install ROS dependencies | ||
# This is done in a previous stage, but we include it again here in case anyone wants to | ||
# add new dependencies during development | ||
ENV USERNAME=ros | ||
ENV USER_WORKSPACE=/home/$USERNAME/ws_ros | ||
WORKDIR $USER_WORKSPACE | ||
|
||
COPY --chown=$USER_UID:$USER_GID . src/$PROJECT_NAME | ||
|
||
RUN ls src/$PROJECT_NAME | ||
|
||
RUN sudo apt-get -q update \ | ||
&& sudo apt-get -q -y upgrade \ | ||
&& rosdep update \ | ||
&& rosdep install -y --from-paths . --ignore-src -r --rosdistro ${ROS_DISTRO} \ | ||
&& sudo apt-get autoremove -y \ | ||
&& sudo apt-get clean -y \ | ||
&& sudo rm -rf /var/lib/apt/lists/* | ||
|
||
# Install debugging/linting Python packages | ||
COPY --chown=$USER_UID:$USER_GID requirements-dev.txt . | ||
RUN python3 -m pip install -r requirements-dev.txt \ | ||
&& rm -rf requirements-dev.txt | ||
|
||
# Disable the setuputils installation warning | ||
# This prevents us from needing to pin the setuputils version (which doesn't always work) | ||
ENV PYTHONWARNINGS="ignore" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
{ | ||
"name": "ROS NVIDIA Dev Container", | ||
"dockerFile": "Dockerfile", | ||
"context": "../..", | ||
"workspaceMount": "source=${localWorkspaceFolder},target=/home/ros/ws_ros/src/ros-template,type=bind", | ||
"workspaceFolder": "/home/ros/ws_ros/src/ros-template", | ||
"remoteUser": "ros", | ||
"runArgs": [ | ||
"--network=host", | ||
"--cap-add=SYS_PTRACE", | ||
"--security-opt=seccomp:unconfined", | ||
"--security-opt=apparmor:unconfined", | ||
"--volume=/dev:/dev", | ||
"--privileged", | ||
"--volume=/tmp/.X11-unix:/tmp/.X11-unix", | ||
"--volume=/mnt/wslg:/mnt/wslg", | ||
"--gpus=all" | ||
], | ||
"containerEnv": { | ||
"DISPLAY": "${localEnv:DISPLAY}", | ||
"WAYLAND_DISPLAY": "${localEnv:WAYLAND_DISPLAY}", | ||
"XDG_RUNTIME_DIR": "${localEnv:XDG_RUNTIME_DIR}", | ||
"PULSE_SERVER": "${localEnv:PULSE_SERVER}", | ||
"LIBGL_ALWAYS_SOFTWARE": "1", | ||
"QT_X11_NO_MITSHM": "1" | ||
}, | ||
"customizations": { | ||
"vscode": { | ||
"extensions": [ | ||
"ms-azuretools.vscode-docker", | ||
"ms-python.python", | ||
"njpwerner.autodocstring", | ||
"ms-vscode.cpptools", | ||
"redhat.vscode-xml", | ||
"redhat.vscode-yaml", | ||
"smilerobotics.urdf", | ||
"DavidAnson.vscode-markdownlint", | ||
"esbenp.prettier-vscode", | ||
"xaver.clang-format", | ||
"charliermarsh.ruff", | ||
"ms-python.black-formatter" | ||
] | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
ARG ROS_DISTRO=noetic | ||
FROM ros:$ROS_DISTRO-ros-base as ci | ||
|
||
ENV DEBIAN_FRONTEND=noninteractive | ||
WORKDIR /root/ws_ros | ||
|
||
# Update to be your project's name | ||
ENV PROJECT_NAME=ros-template | ||
|
||
COPY . src/$PROJECT_NAME | ||
|
||
# Install apt packages | ||
RUN apt-get -q update \ | ||
&& apt-get -q -y upgrade \ | ||
&& apt-get -q install --no-install-recommends -y \ | ||
git \ | ||
sudo \ | ||
clang \ | ||
clang-format-12 \ | ||
clang-tidy \ | ||
clang-tools \ | ||
python3-pip \ | ||
python3-dev \ | ||
apt-utils \ | ||
software-properties-common \ | ||
&& apt-get autoremove -y \ | ||
&& apt-get clean -y \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
# Install all ROS dependencies needed for CI | ||
RUN apt-get -q update \ | ||
&& apt-get -q -y upgrade \ | ||
&& rosdep update \ | ||
&& rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} --as-root=apt:false \ | ||
&& rm -rf src \ | ||
&& apt-get autoremove -y \ | ||
&& apt-get clean -y \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
FROM ci as robot | ||
|
||
# Configure a new non-root user | ||
ARG USERNAME=ros | ||
ARG USER_UID=1000 | ||
ARG USER_GID=$USER_UID | ||
|
||
RUN groupadd --gid $USER_GID $USERNAME \ | ||
&& useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \ | ||
&& echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \ | ||
&& chmod 0440 /etc/sudoers.d/$USERNAME \ | ||
&& usermod -a -G dialout $USERNAME \ | ||
&& echo "source /usr/share/bash-completion/completions/git" >> /home/$USERNAME/.bashrc | ||
|
||
# Switch to the non-root user | ||
USER $USERNAME | ||
ENV USER=$USERNAME | ||
|
||
ENV DEBIAN_FRONTEND=noninteractive | ||
ENV USER_WORKSPACE=/home/$USERNAME/ws_ros | ||
WORKDIR $USER_WORKSPACE | ||
|
||
COPY --chown=$USER_UID:$USER_GID . src/$PROJECT_NAME | ||
|
||
# Uncomment to download and install external repos used by the project | ||
# RUN vcs import src < src/$PROJECT_NAME/ros2.repos | ||
|
||
# Install all ROS dependencies | ||
WORKDIR $USER_WORKSPACE | ||
RUN sudo apt-get -q update \ | ||
&& sudo apt-get -q -y upgrade \ | ||
&& rosdep update \ | ||
&& rosdep install -y --from-paths src --ignore-src -r --rosdistro ${ROS_DISTRO} \ | ||
&& sudo apt-get autoremove -y \ | ||
&& sudo apt-get clean -y \ | ||
&& sudo rm -rf /var/lib/apt/lists/* | ||
|
||
RUN . "/opt/ros/${ROS_DISTRO}/setup.sh" \ | ||
&& catkin_make \ | ||
&& sudo sed -i "s#/opt/ros/\$ROS_DISTRO/setup.bash#$USER_WORKSPACE/setup.sh#g" /ros_entrypoint.sh \ | ||
&& echo "source ${USER_WORKSPACE}/devel/setup.bash" >> /home/$USERNAME/.bashrc \ | ||
&& echo "if [ -f /opt/ros/${ROS_DISTRO}/setup.bash ]; then source /opt/ros/${ROS_DISTRO}/setup.bash; fi" >> /home/$USERNAME/.bashrc | ||
|
||
FROM robot as desktop | ||
|
||
ENV DEBIAN_FRONTEND=noninteractive | ||
ENV USER_WORKSPACE=/home/$USERNAME/ws_ros | ||
WORKDIR $USER_WORKSPACE | ||
|
||
# Install Gazebo packages | ||
RUN sudo apt-get update \ | ||
&& sudo apt-get -q -y upgrade \ | ||
&& curl -sSL http://get.gazebosim.org | sh \ | ||
&& sudo apt-get -q install --no-install-recommends -y \ | ||
ros-$ROS_DISTRO-gazebo-ros-pkgs \ | ||
ros-$ROS_DISTRO-gazebo-ros-control \ | ||
&& sudo apt-get autoremove -y \ | ||
&& sudo apt-get clean -y \ | ||
&& sudo rm -rf /var/lib/apt/lists/* | ||
|
||
FROM desktop as desktop-nvidia | ||
|
||
# Install NVIDIA software | ||
RUN sudo apt-get update \ | ||
&& sudo apt-get -q -y upgrade \ | ||
&& sudo apt-get install -y -qq --no-install-recommends \ | ||
libglvnd0 \ | ||
libgl1 \ | ||
libglx0 \ | ||
libegl1 \ | ||
libxext6 \ | ||
libx11-6 \ | ||
&& sudo apt-get autoremove -y \ | ||
&& sudo apt-get clean -y \ | ||
&& sudo rm -rf /var/lib/apt/lists/* | ||
|
||
# Env vars for the nvidia-container-runtime. | ||
ENV NVIDIA_VISIBLE_DEVICES all | ||
ENV NVIDIA_DRIVER_CAPABILITIES graphics,utility,compute | ||
ENV QT_X11_NO_MITSHM 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# ignore everything | ||
* | ||
|
||
# Except the following | ||
!requirements-dev.txt | ||
|
||
# Allow your ROS packages here, e.g.: | ||
!example_pkg |
Oops, something went wrong.