-
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.
Prots the ROS1 version of [av_dbw_ros1](https://github.com/ipab-rad/av_dbw_ros1) to ROS 2 Humble - Cyclone DDS ROS RMW is used + configured for high msg thorughput
- Loading branch information
Showing
11 changed files
with
518 additions
and
1 deletion.
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,52 @@ | ||
name: Create and publish a Docker image | ||
|
||
on: | ||
push: | ||
tags: ["*"] | ||
|
||
env: | ||
REGISTRY: ghcr.io | ||
IMAGE_NAME: ${{ github.repository }} | ||
ROS_DISTRO: humble | ||
|
||
jobs: | ||
build-and-push-image: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: read | ||
packages: write | ||
|
||
steps: | ||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
|
||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Log in to the Container registry | ||
uses: docker/login-action@v3 | ||
with: | ||
registry: ${{ env.REGISTRY }} | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Docker meta | ||
id: meta | ||
uses: docker/metadata-action@v5 | ||
with: | ||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | ||
tags: | | ||
type=ref,event=branch | ||
type=semver,pattern={{version}} | ||
type=semver,pattern={{major}}.{{minor}} | ||
- name: Build and push Docker image | ||
uses: docker/build-push-action@v5 | ||
with: | ||
context: . | ||
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} | ||
file: Dockerfile | ||
target: runtime | ||
build-args: ROS_DISTRO=${{ env.ROS_DISTRO }} |
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,160 @@ | ||
|
||
# To use: | ||
# | ||
# pre-commit run -a | ||
# | ||
# Or: | ||
# | ||
# pre-commit install # (runs every time you commit in git) | ||
# | ||
# To update this file: | ||
# | ||
# pre-commit autoupdate | ||
# | ||
# See https://github.com/pre-commit/pre-commit | ||
|
||
repos: | ||
# Standard hooks | ||
- repo: https://github.com/pre-commit/pre-commit-hooks | ||
rev: v4.6.0 | ||
hooks: | ||
- id: check-added-large-files | ||
- id: check-ast | ||
- id: check-case-conflict | ||
- id: check-docstring-first | ||
- id: check-merge-conflict | ||
- id: check-symlinks | ||
- id: check-xml | ||
- id: check-yaml | ||
- id: debug-statements | ||
- id: end-of-file-fixer | ||
- id: mixed-line-ending | ||
- id: trailing-whitespace | ||
exclude_types: [rst] | ||
- id: fix-byte-order-marker | ||
|
||
# Python hooks | ||
- repo: https://github.com/asottile/pyupgrade | ||
rev: v3.15.2 | ||
hooks: | ||
- id: pyupgrade | ||
args: [--py36-plus] | ||
|
||
- repo: https://github.com/psf/black | ||
rev: 24.4.2 | ||
hooks: | ||
- id: black | ||
args: ["--line-length=79", -S] | ||
|
||
# CPP hooks | ||
- repo: https://github.com/pre-commit/mirrors-clang-format | ||
rev: v18.1.4 | ||
hooks: | ||
- id: clang-format | ||
args: ['-fallback-style=none', '-i'] | ||
|
||
- repo: local | ||
hooks: | ||
- id: ament_cppcheck | ||
name: ament_cppcheck | ||
description: Static code analysis of C/C++ files. | ||
entry: env AMENT_CPPCHECK_ALLOW_SLOW_VERSIONS=1 ament_cppcheck | ||
language: system | ||
files: \.(h\+\+|h|hh|hxx|hpp|cuh|c|cc|cpp|cu|c\+\+|cxx|tpp|txx)$ | ||
|
||
- repo: local | ||
hooks: | ||
- id: ament_cpplint | ||
name: ament_cpplint | ||
description: Static code analysis of C/C++ files. | ||
entry: ament_cpplint | ||
language: system | ||
files: \.(h\+\+|h|hh|hxx|hpp|cuh|c|cc|cpp|cu|c\+\+|cxx|tpp|txx)$ | ||
args: ["--linelength=100", "--filter=-legal/copyright,-build/include_order"] | ||
|
||
# Cmake hooks | ||
- repo: local | ||
hooks: | ||
- id: ament_lint_cmake | ||
name: ament_lint_cmake | ||
description: Check format of CMakeLists.txt files. | ||
entry: ament_lint_cmake | ||
language: system | ||
files: CMakeLists\.txt$ | ||
|
||
- repo: https://github.com/cheshirekow/cmake-format-precommit | ||
rev: v0.6.13 | ||
hooks: | ||
- id: cmake-format | ||
|
||
# Docs - RestructuredText hooks | ||
- repo: https://github.com/PyCQA/doc8 | ||
rev: v1.1.1 | ||
hooks: | ||
- id: doc8 | ||
args: ['--max-line-length=100', '--ignore=D001'] | ||
exclude: CHANGELOG\.rst$ | ||
|
||
- repo: https://github.com/pre-commit/pygrep-hooks | ||
rev: v1.10.0 | ||
hooks: | ||
- id: rst-backticks | ||
exclude: CHANGELOG\.rst$ | ||
- id: rst-directive-colons | ||
- id: rst-inline-touching-normal | ||
|
||
# Spellcheck in comments and docs | ||
# skipping of *.svg files is not working... | ||
- repo: https://github.com/codespell-project/codespell | ||
rev: v2.2.6 | ||
hooks: | ||
- id: codespell | ||
args: ['--write-changes', '--uri-ignore-words-list=ist', '-L manuel'] | ||
exclude: CHANGELOG\.rst|\.(svg|pyc|drawio|dae)$ | ||
|
||
# Check Github files | ||
- repo: https://github.com/python-jsonschema/check-jsonschema | ||
rev: 0.28.2 | ||
hooks: | ||
- id: check-github-workflows | ||
args: ["--verbose"] | ||
- id: check-github-actions | ||
args: ["--verbose"] | ||
- id: check-dependabot | ||
args: ["--verbose"] | ||
|
||
# Bash prettify | ||
- repo: https://github.com/lovesegfault/beautysh | ||
rev: v6.2.1 | ||
hooks: | ||
- id: beautysh | ||
|
||
# ROS checks | ||
- repo: https://github.com/tier4/pre-commit-hooks-ros | ||
rev: v0.8.0 | ||
hooks: | ||
- id: flake8-ros | ||
- id: prettier-xacro | ||
- id: prettier-launch-xml | ||
- id: prettier-package-xml | ||
- id: ros-include-guard | ||
- id: sort-package-xml | ||
|
||
# Dockerfiles | ||
- repo: https://github.com/AleksaC/hadolint-py | ||
rev: v2.12.1b3 | ||
hooks: | ||
- id: hadolint | ||
args: ['--ignore=DL3008'] | ||
|
||
ci: | ||
autofix_commit_msg: | | ||
[pre-commit.ci] auto fixes from pre-commit.com hooks | ||
for more information, see https://pre-commit.ci | ||
autofix_prs: false | ||
autoupdate_branch: '' | ||
autoupdate_commit_msg: '[pre-commit.ci] pre-commit autoupdate' | ||
autoupdate_schedule: weekly | ||
skip: [ament_cppcheck, ament_cpplint, ament_lint_cmake] | ||
submodules: false |
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,98 @@ | ||
FROM ros:humble-ros-base-jammy AS base | ||
|
||
# Install basic dev tools (And clean apt cache afterwards) | ||
RUN apt-get update \ | ||
&& DEBIAN_FRONTEND=noninteractive \ | ||
apt-get -y --quiet --no-install-recommends install \ | ||
# Download tool | ||
curl \ | ||
# Install Cyclone DDS ROS RMW | ||
ros-"$ROS_DISTRO"-rmw-cyclonedds-cpp \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
# Setup Dataspeed apt | ||
RUN curl -sSL https://bitbucket.org/DataspeedInc/ros_binaries/raw/master/dataspeed.key -o /usr/share/keyrings/dataspeed-archive-keyring.gpg \ | ||
&& sh -c 'echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/dataspeed-archive-keyring.gpg] http://packages.dataspeedinc.com/ros2/ubuntu \ | ||
$(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2-dataspeed-public.list > /dev/null' | ||
|
||
# Setup Dataspeed rosdep | ||
RUN sh -c "echo \"yaml http://packages.dataspeedinc.com/ros2/ros-public-\$ROS_DISTRO.yaml \$ROS_DISTRO\" \ | ||
> /etc/ros/rosdep/sources.list.d/30-dataspeed-public-\$ROS_DISTRO.list" | ||
|
||
|
||
# Install Dataspeed Ford Drive-By-Wire ROS driver | ||
RUN apt-get update \ | ||
&& rosdep update \ | ||
&& DEBIAN_FRONTEND=noninteractive \ | ||
apt-get -y --quiet --no-install-recommends install \ | ||
ros-"$ROS_DISTRO"-dbw-ford \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
# Setup ROS workspace folder | ||
ENV ROS_WS /opt/ros_ws | ||
WORKDIR $ROS_WS | ||
|
||
# Set cyclone DDS ROS RMW | ||
ENV RMW_IMPLEMENTATION=rmw_cyclonedds_cpp | ||
|
||
COPY ./cyclone_dds.xml $ROS_WS/ | ||
|
||
# Configure Cyclone cfg file | ||
ENV CYCLONEDDS_URI=file://${ROS_WS}/cyclone_dds.xml | ||
|
||
# Enable ROS log colorised output | ||
ENV RCUTILS_COLORIZED_OUTPUT=1 | ||
|
||
# ----------------------------------------------------------------------- | ||
|
||
FROM base AS prebuilt | ||
|
||
# Import Five DBW code into docker image | ||
COPY av_dbw_launch $ROS_WS/src/ | ||
|
||
# Source ROS setup for dependencies and build our code | ||
RUN . /opt/ros/"$ROS_DISTRO"/setup.sh \ | ||
&& colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release | ||
|
||
# ----------------------------------------------------------------------- | ||
|
||
FROM base AS dev | ||
|
||
# Install basic dev tools (And clean apt cache afterwards) | ||
RUN apt-get update \ | ||
&& DEBIAN_FRONTEND=noninteractive \ | ||
apt-get -y --quiet --no-install-recommends install \ | ||
# Dbw joystick controller | ||
ros-"$ROS_DISTRO"-dbw-ford-joystick-demo \ | ||
# Command-line editor | ||
nano \ | ||
# Ping network tools | ||
inetutils-ping \ | ||
# Bash auto-completion for convenience | ||
bash-completion \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
# Add sourcing local workspace command to bashrc when running interactively | ||
# Add colcon build alias for convenience | ||
RUN echo "source /opt/ros/$ROS_DISTRO/setup.bash" >> /root/.bashrc && \ | ||
echo 'alias colcon_build="colcon build --symlink-install \ | ||
--cmake-args -DCMAKE_BUILD_TYPE=Release && \ | ||
source install/setup.bash"' >> /root/.bashrc | ||
|
||
# Enter bash for development | ||
CMD ["bash"] | ||
|
||
# ----------------------------------------------------------------------- | ||
|
||
FROM base AS runtime | ||
|
||
# Copy artifacts/binaries from prebuilt | ||
COPY --from=prebuilt $ROS_WS/install $ROS_WS/install | ||
|
||
# Add command to docker entrypoint to source newly compiled code in container | ||
RUN sed --in-place --expression \ | ||
"\$isource \"$ROS_WS/install/setup.bash\" " \ | ||
/ros_entrypoint.sh | ||
|
||
# Launch Five DBW launchfile | ||
CMD ["ros2", "launch", "av_dbw_launch", "av_dbw.launch.xml"] |
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 |
---|---|---|
@@ -1,2 +1,27 @@ | ||
# av_dbw | ||
This repository hosts the required enviorment to run the Dataspeed Ford drive-by-wire ROS 2 driver. | ||
Drive-by-wire interface between ROS 2 and usb-CANbus Dataspeed tool for a FORD Mondeo | ||
|
||
## Usage | ||
|
||
This repository is designed to be used alongside a Docker container. Quickly build and run the Docker container using `runtime.sh` for runtime or debugging, and `dev.sh` for a convenient development setup. | ||
|
||
### Runtime or Debugging | ||
|
||
Execute the drive-by-wire ROS nodes in runtime mode or start an interactive bash session for detailed debugging: | ||
|
||
```bash | ||
./runtime.sh [bash] | ||
``` | ||
|
||
- **Without arguments**: Activates the container in runtime mode. | ||
- **With `bash`**: Opens an interactive bash session for debugging. | ||
|
||
### Development | ||
|
||
Prepare a development setting that reflects local code modifications and simplifies the build process: | ||
|
||
```bash | ||
./dev.sh | ||
``` | ||
|
||
- **Live Code Synchronization**: Mounts local `av_dbw_launch` directory with the container. |
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,16 @@ | ||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
Changelog for package av_dbw_launch | ||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
Forthcoming | ||
----------- | ||
* Add Cyclone DDS ROS RMW | ||
- Configure DDS for high msg throughput | ||
* Add docker build github workflow | ||
* Add pre-commit support | ||
* Add ROS 2 av_dbw_launch cfg to run dataspeed FORD dbw ROS driver | ||
- Dockefile based on ubuntu 22.04 | ||
ROS 2 Humble | ||
- dev.sh and runtime.sh scrips are added | ||
- Docker container is synchronised with host time | ||
* Contributors: Hector Cruz, hect95 |
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,7 @@ | ||
cmake_minimum_required(VERSION 3.8) | ||
project(av_dbw_launch) | ||
find_package(ament_cmake REQUIRED) | ||
|
||
install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) | ||
|
||
ament_package() |
Oops, something went wrong.