-
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.
Port original car_description pkg to ROS2 (#1)
Co-authored-by: hect95 <hector_cruz95@live.com>
- Loading branch information
1 parent
63412f5
commit 80dbc21
Showing
37 changed files
with
954,573 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,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.5.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.1 | ||
hooks: | ||
- id: pyupgrade | ||
args: [--py36-plus] | ||
|
||
- repo: https://github.com/psf/black | ||
rev: 24.2.0 | ||
hooks: | ||
- id: black | ||
args: ["--line-length=79", -S] | ||
|
||
# CPP hooks | ||
- repo: https://github.com/pre-commit/mirrors-clang-format | ||
rev: v18.1.0 | ||
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.0 | ||
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.1-beta | ||
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,73 @@ | ||
FROM ros:humble-ros-base-jammy AS base | ||
|
||
# Switch to much faster mirror for apt processes | ||
ENV OLD_MIRROR archive.ubuntu.com | ||
ENV SEC_MIRROR security.ubuntu.com | ||
ENV NEW_MIRROR mirror.bytemark.co.uk | ||
|
||
RUN sed -i "s/$OLD_MIRROR\|$SEC_MIRROR/$NEW_MIRROR/g" /etc/apt/sources.list | ||
|
||
# Install key dependencies | ||
RUN apt-get update \ | ||
&& DEBIAN_FRONTEND=noninteractive \ | ||
apt-get -y --quiet --no-install-recommends install \ | ||
ros-"$ROS_DISTRO"-xacro \ | ||
ros-"$ROS_DISTRO"-robot-state-publisher \ | ||
ros-"$ROS_DISTRO"-joint-state-publisher \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
# Setup ROS workspace folder | ||
ENV ROS_WS /opt/ros_ws | ||
WORKDIR $ROS_WS | ||
|
||
# ----------------------------------------------------------------------- | ||
|
||
FROM base AS prebuilt | ||
|
||
# Import code from repos | ||
COPY . 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 \ | ||
# 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 clvelopment | ||
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 ros package | ||
CMD ["ros2", "launch", "car_description", "car_description.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,28 @@ | ||
# car_description | ||
Car description including the URDF, xacro and mesh files for the UoE AV | ||
|
||
## Usage | ||
|
||
This repository is designed to be used alongside a Docker container. Quickly build and run the Docker container using `run.sh` for runtime or debugging, and `dev.sh` for a convenient development setup. | ||
|
||
### Runtime or Debugging | ||
|
||
Execute the ROS 2 nodes in runtime mode or start an interactive bash session for detailed debugging: | ||
|
||
```bash | ||
./run.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 `car_description` and `car_meshes` directories with the container. | ||
- **Convenience Alias**: The development container features a `colcon_build` alias, which simplifies the ROS2 build process. Executing `colcon_build` runs `colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release` and then sources the `setup.bash` to ensure the environment is updated with the latest build artifacts. This alias enhances productivity by combining build commands and environment setup into a single, easy command. |
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,14 @@ | ||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
Changelog for package av_car_description | ||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
Forthcoming | ||
----------- | ||
* Fix pre-commit linting, advice and suggestions | ||
* Fix pkg names, vers. and descriptions pre-release | ||
* Add Hector Cruz as maintainer | ||
* Updating mondeo mesh to match Univeristy vehicle colors | ||
* Add pre-commit config file and run it on repo | ||
* Update Readme, remove unnecessary ament test deps | ||
* Port original pkg to ROS2 | ||
* Contributors: Alejandro Bordallo, 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,18 @@ | ||
cmake_minimum_required(VERSION 3.5) | ||
project(av_car_description) | ||
|
||
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) | ||
set(CMAKE_BUILD_TYPE Release) | ||
endif() | ||
|
||
find_package(ament_cmake_ros REQUIRED) | ||
|
||
# Installation... | ||
|
||
install(DIRECTORY config DESTINATION share/${PROJECT_NAME}) | ||
|
||
install(DIRECTORY urdf DESTINATION share/${PROJECT_NAME}) | ||
|
||
install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) | ||
|
||
ament_package() |
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,22 @@ | ||
# Description | ||
|
||
In this package is included the physical description of the car and all of the hereby included transformations between links, joints and sensors. | ||
|
||
## Instructions | ||
|
||
After cloning the repo build the Docker image from the Dockerfile: | ||
`docker build -t car_description -f Dockerfile .` | ||
|
||
You should then be able to run a Docker container from the image: | ||
`docker run --rm --net host -v /dev/shm:/dev/shm car_description` | ||
|
||
The Docker container should automatically launch the relevant code. | ||
You should now be able to see the AV TF tree in Foxglove or RViz. | ||
|
||
--- | ||
|
||
However, you can run the docker container interactively to have a look: | ||
`docker run -it --rm --net host -v /dev/shm:/dev/shm car_description bash` | ||
|
||
Once inside, you can run the main launch file yourself: | ||
`ros2 launch car_description car_description.launch.xml` |
Oops, something went wrong.