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

[Re-write] Free fleet adapter using easy-full-control fleet adapter and zenoh bridges #145

Open
wants to merge 35 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 28 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
5fb1270
Clean up
aaronchongth Aug 9, 2024
73b008a
Turtlebot3 world map
aaronchongth Aug 9, 2024
da8c3f3
Basic example of navigate_to_pose
aaronchongth Aug 9, 2024
2058661
test tf
aaronchongth Aug 9, 2024
292be14
Basic tests and README updated, started with fleet adapter template
aaronchongth Sep 2, 2024
c6e8330
Tweaking results and got cancellation
aaronchongth Sep 2, 2024
a29278c
Using tf_transformations, flesh out more implementation
aaronchongth Sep 11, 2024
b76ab27
Basic launch done
aaronchongth Sep 18, 2024
552e7e6
Basic working with patrol tasks
aaronchongth Sep 19, 2024
c2cf257
Update configs
aaronchongth Sep 19, 2024
5fc16db
Battery state, update readme
aaronchongth Sep 25, 2024
cf71e16
readme
aaronchongth Sep 28, 2024
de67ea8
Update README, reorganized and renamed configs, testing unique tb3 sim
aaronchongth Sep 30, 2024
65f1505
Setup tested
aaronchongth Sep 30, 2024
e7273c2
Updated README
aaronchongth Sep 30, 2024
b2a4c26
Style workflow on push and PR, lint
aaronchongth Oct 1, 2024
82e10a0
Linter syntax
aaronchongth Oct 1, 2024
57b17fc
Testing and CI (#146)
aaronchongth Oct 15, 2024
8cdc298
update script with latest zenoh api (#149)
tomkimsour Nov 7, 2024
3e4a141
Merge branch 'main' into easy-full-control
aaronchongth Nov 7, 2024
80df611
Update README and lint
aaronchongth Nov 7, 2024
c7de3ac
Fix enum comparison value, add replanning, update docs
aaronchongth Nov 10, 2024
75b4d22
Fix default args
aaronchongth Nov 10, 2024
d57714b
fix Crash node if easy_fleet creation fails (#159)
tomkimsour Nov 15, 2024
bdc9f87
Efc/integration testing (#157)
aaronchongth Nov 15, 2024
6cebc33
Lint
aaronchongth Nov 15, 2024
c1eeae2
Add ignore to codecov
aaronchongth Nov 15, 2024
4e0c932
Coverage (#160)
aaronchongth Nov 19, 2024
bb78302
Fix navigate_to_pose script default frame
aaronchongth Dec 3, 2024
9cf376a
Address comments, fix battery_state and navigate_to_pose result parsi…
aaronchongth Dec 3, 2024
a444034
Update readme
aaronchongth Dec 3, 2024
073675c
Clean up configs
aaronchongth Dec 4, 2024
3d34315
Move member variables directly used by fleet adapter into RobotAdapte…
aaronchongth Dec 4, 2024
2a17701
Move config files into config directory per standard package structure
aaronchongth Dec 5, 2024
02cf5d3
Removed abstracted RobotAdapter, to be added only after Nav1RobotAdap…
aaronchongth Dec 6, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions .github/actions/build-and-test/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: build-and-test

inputs:
ros-distribution:
description: string, ROS distribution to setup
required: true
zenoh-version:
description: string, version of eclipse-zenoh to install from pip
required: true
integration-testing:
description: string, supports ON or OFF only
required: false
default: "OFF"

runs:
using: composite
steps:
- name: install dependencies
run: |
sudo apt update && sudo apt install python3-pip -y
pip3 install eclipse-zenoh==${{ inputs.zenoh-version }} pycdr2 --break-system-packages
shell: bash

- uses: ros-tooling/[email protected]
with:
required-ros-distributions: ${{ inputs.ros-distribution }}

- name: build and test
uses: ros-tooling/[email protected]
with:
package-name: free_fleet free_fleet_adapter free_fleet_examples
target-ros2-distro: ${{ inputs.ros-distribution }}
colcon-defaults: |
{
"build": {
"cmake-args": [
"-DINTEGRATION_TESTING=${{ inputs.integration-testing }}"
],
"mixin": ["coverage-pytest"]
},
"test": {
"mixin": ["coverage-pytest"]
}
}
colcon-mixin-repository: https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
29 changes: 29 additions & 0 deletions .github/docker/integration-tests/docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
version: "3"

services:
minimal-nav2-bringup:
image: ghcr.io/open-rmf/free_fleet/minimal-nav2-bringup:jazzy-latest
stop_signal: SIGINT
network_mode: host
privileged: true
stdin_open: true
tty: true
environment:
- ROS_DOMAIN_ID=42

minimal-zenoh-bridge:
image: ghcr.io/open-rmf/free_fleet/minimal-zenoh-bridge:jazzy-latest
network_mode: host
stdin_open: true
tty: true
environment:
- ROS_DOMAIN_ID=42

minimal-zenoh-router:
image: eclipse/zenoh
restart: unless-stopped
network_mode: host
stdin_open: true
tty: true
environment:
- RUST_LOG=debug
22 changes: 22 additions & 0 deletions .github/docker/minimal-nav2-bringup/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
ARG ROS_DISTRO=jazzy
FROM docker.io/ros:$ROS_DISTRO-ros-base

RUN apt update && apt install -y curl ros-$ROS_DISTRO-nav2-bringup ros-$ROS_DISTRO-rmw-cyclonedds-cpp

RUN mkdir -p /tb3 && cd /tb3 \
&& curl -sL https://github.com/ROBOTIS-GIT/turtlebot3_simulations/archive/refs/heads/master.tar.gz -o turtlebot3_simulations.tar.gz \
&& mkdir -p /tb3/turtlebot3_simulations && tar zxf turtlebot3_simulations.tar.gz -C /tb3/turtlebot3_simulations --strip-components=1 && rm turtlebot3_simulations.tar.gz

ENV RMW_IMPLEMENTATION rmw_cyclonedds_cpp
ENV GAZEBO_MODEL_PATH "$GAZEBO_MODEL_PATH:/tb3/turtlebot3_simulations/turtlebot3_gazebo/models"

RUN rm -rf \
/var/lib/apt/lists \
/dist

# Modify existing params file to add initial pose
RUN mkdir -p /params && cd /params \
&& cp /opt/ros/$ROS_DISTRO/share/nav2_bringup/params/nav2_params.yaml . \
&& sed -z 's|amcl:\n ros__parameters:\n|amcl:\n ros__parameters:\n set_initial_pose: true\n initial_pose: {x: -2.0, y: -0.5, z: 0.0, yaw: 0.0}\n|' nav2_params.yaml > nav2_params_edited.yaml

ENTRYPOINT ["bash", "-c", ". /opt/ros/$ROS_DISTRO/setup.bash && ros2 launch nav2_bringup tb3_simulation_launch.py params_file:=/params/nav2_params_edited.yaml use_rviz:=False"]
22 changes: 22 additions & 0 deletions .github/docker/minimal-zenoh-bridge/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
ARG ROS_DISTRO=jazzy
FROM docker.io/ros:$ROS_DISTRO-ros-base
ARG ZENOH_VERSION=1.0.1
ARG FREE_FLEET_BRANCH=main

RUN apt update && apt install -y wget unzip ros-jazzy-rmw-cyclonedds-cpp

RUN mkdir -p /zenoh-bridge && cd /zenoh-bridge \
&& wget -O zenoh-plugin-ros2dds.zip https://github.com/eclipse-zenoh/zenoh-plugin-ros2dds/releases/download/$ZENOH_VERSION/zenoh-plugin-ros2dds-$ZENOH_VERSION-x86_64-unknown-linux-gnu-standalone.zip \
&& unzip zenoh-plugin-ros2dds.zip \
&& rm zenoh-plugin-ros2dds.zip

RUN cd /zenoh-bridge \
&& wget -O turtlebot3_1_client_zenoh_config.json5 https://raw.githubusercontent.com/open-rmf/free_fleet/refs/heads/$FREE_FLEET_BRANCH/free_fleet_examples/zenoh_configs/turtlebot3_1_client_zenoh_config.json5

ENV RMW_IMPLEMENTATION rmw_cyclonedds_cpp

RUN rm -rf \
/var/lib/apt/lists \
/dist

ENTRYPOINT ["bash", "-c", ". /opt/ros/$ROS_DISTRO/setup.bash && /zenoh-bridge/zenoh-bridge-ros2dds -c /zenoh-bridge/turtlebot3_1_client_zenoh_config.json5"]
39 changes: 0 additions & 39 deletions .github/workflows/build.yaml

This file was deleted.

45 changes: 45 additions & 0 deletions .github/workflows/integration-tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: integration-tests

on: push

jobs:
integration-tests:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: osrf/ros:${{ matrix.ros_distribution }}-desktop-noble
strategy:
matrix:
ros_distribution:
- jazzy

steps:
- name: Checkout
uses: actions/checkout@v1

- name: Install docker-compose
run: |
sudo apt update && sudo apt install docker-compose -y

- name: Start test fixture containers
run: docker-compose -f ".github/docker/integration-tests/docker-compose.yaml" up -d --build

- name: build-and-test
uses: ./.github/actions/build-and-test
with:
ros-distribution: ${{ matrix.ros_distribution }}
zenoh-version: 1.0.1
integration-testing: ON

- name: Stop test fixture containers
if: always()
run: docker-compose -f ".github/docker/integration-tests/docker-compose.yaml" down

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
files: ros_ws/coveragepy/.coverage
flags: tests
fail_ci_if_error: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
79 changes: 79 additions & 0 deletions .github/workflows/nightly.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: nightly

on:
schedule:
# 2am SGT
- cron: '0 18 * * *'

jobs:
build-minimal-docker-images:
name: Push minimal docker images to GitHub Packages
runs-on: ubuntu-latest
strategy:
matrix:
ros_distribution: [jazzy]
steps:
- uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to docker
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push minimal-nav2-bringup
uses: docker/build-push-action@v5
with:
push: true
build-args: |
ROS_DISTRO=${{ matrix.ros_distribution }}
tags: ghcr.io/${{ github.repository }}/minimal-nav2-bringup:${{ matrix.ros_distribution }}-latest
context: .github/docker/minimal-nav2-bringup

- name: Build and push minimal-zenoh-bridge
uses: docker/build-push-action@v5
with:
push: true
build-args: |
ROS_DISTRO=${{ matrix.ros_distribution }}
ZENOH_VERSION=1.0.1
FREE_FLEET_BRANCH=easy-full-control
tags: ghcr.io/${{ github.repository }}/minimal-zenoh-bridge:${{ matrix.ros_distribution }}-latest
context: .github/docker/minimal-zenoh-bridge

integration-tests:
needs: build-minimal-docker-images
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: osrf/ros:${{ matrix.ros_distribution }}-desktop-noble
strategy:
matrix:
ros_distribution:
- jazzy

steps:
- name: Checkout
uses: actions/checkout@v1

- name: Install docker-compose
run: |
sudo apt update && sudo apt install docker-compose -y

- name: Start test fixture containers
run: docker-compose -f ".github/docker/integration-tests/docker-compose.yaml" up -d --build

- name: build-and-test
uses: ./.github/actions/build-and-test
with:
ros-distribution: ${{ matrix.ros_distribution }}
zenoh-version: 1.0.1
integration-testing: ON

- name: Stop test fixture containers
if: always()
run: docker-compose -f ".github/docker/integration-tests/docker-compose.yaml" down
22 changes: 22 additions & 0 deletions .github/workflows/style.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: style
on: [pull_request, push]
jobs:
linter:
runs-on: ubuntu-latest
strategy:
matrix:
docker_image: ['ros:rolling-ros-base']
container:
image: ${{ matrix.docker_image }}
steps:
- uses: actions/checkout@v3

- name: deps
shell: bash
run: |
sudo apt update && sudo apt install pycodestyle
- name: pycodestyle
shell: bash
run: |
pycodestyle .
24 changes: 24 additions & 0 deletions .github/workflows/unit-tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: unit-tests

on: push

jobs:
unit-tests:
runs-on: ubuntu-latest
container:
image: osrf/ros:${{ matrix.ros_distribution }}-desktop-noble
strategy:
matrix:
ros_distribution:
- jazzy
- rolling
steps:
- name: Checkout
uses: actions/checkout@v1

- name: build-and-test
uses: ./.github/actions/build-and-test
with:
ros-distribution: ${{ matrix.ros_distribution }}
zenoh-version: 1.0.1
integration-testing: OFF
Loading
Loading