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

Merged
merged 42 commits into from
Jan 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 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
26ff2b8
Efc/ros1 (#161)
aaronchongth Dec 31, 2024
26a36e4
Badges
aaronchongth Dec 31, 2024
049a26a
Merge branch 'main' into easy-full-control
aaronchongth Dec 31, 2024
6fd6fbf
Efc cleanup (#163)
aaronchongth Jan 2, 2025
a5b9705
Change maintainer emails, fix versions, minor cleanup
aaronchongth Jan 2, 2025
cccb403
Addresses review comments (#164)
aaronchongth Jan 7, 2025
e3a5a1f
Replace polling transform and pose tests with a 2 second wait for ini…
aaronchongth Jan 7, 2025
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
50 changes: 50 additions & 0 deletions .github/actions/build-and-test/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
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
nav1-integration-testing:
description: string, supports ON or OFF only
required: false
default: "OFF"
nav2-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 rosbags --break-system-packages
shell: bash

- uses: ros-tooling/setup-ros@v0.7
with:
required-ros-distributions: ${{ inputs.ros-distribution }}

- name: build and test
uses: ros-tooling/action-ros-ci@v0.3
with:
package-name: free_fleet free_fleet_adapter free_fleet_examples
target-ros2-distro: ${{ inputs.ros-distribution }}
colcon-defaults: |
{
"build": {
"cmake-args": [
"-DNAV1_INTEGRATION_TESTING=${{ inputs.nav1-integration-testing }}",
"-DNAV2_INTEGRATION_TESTING=${{ inputs.nav2-integration-testing }}"
],
"mixin": ["coverage-pytest"]
},
"test": {
"mixin": ["coverage-pytest"]
}
}
colcon-mixin-repository: https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
31 changes: 31 additions & 0 deletions .github/docker/integration-tests/nav1-docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
services:
minimal-ros1-sim:
image: ghcr.io/open-rmf/free_fleet/minimal-ros1-sim:noetic-latest
stop_signal: SIGINT
network_mode: host
privileged: true
stdin_open: true
tty: true

minimal-nav1-bringup:
image: ghcr.io/open-rmf/free_fleet/minimal-nav1-bringup:noetic-latest
stop_signal: SIGINT
network_mode: host
privileged: true
stdin_open: true
tty: true

minimal-zenoh-bridge-ros1:
image: ghcr.io/open-rmf/free_fleet/minimal-zenoh-bridge-ros1:noetic-latest
network_mode: host
stdin_open: true
tty: true

minimal-zenoh-router:
image: eclipse/zenoh
restart: unless-stopped
network_mode: host
stdin_open: true
tty: true
environment:
- RUST_LOG=debug
27 changes: 27 additions & 0 deletions .github/docker/integration-tests/nav2-docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
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-ros2dds:
image: ghcr.io/open-rmf/free_fleet/minimal-zenoh-bridge-ros2dds: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
21 changes: 21 additions & 0 deletions .github/docker/minimal-nav1-bringup/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
ARG ROS_DISTRO=noetic
FROM docker.io/ros:$ROS_DISTRO-ros-base

RUN apt update && apt install -y curl ros-$ROS_DISTRO-turtlebot3-navigation ros-$ROS_DISTRO-dwa-local-planner

RUN mkdir -p /tb3 && cd /tb3 \
&& curl -sL https://github.com/ros-navigation/navigation2/archive/refs/tags/1.3.4.tar.gz -o navigation2.tar.gz \
&& mkdir -p /tb3/navigation2 && tar zxf navigation2.tar.gz -C /tb3/navigation2 --strip-components=1 && rm navigation2.tar.gz

ENV TURTLEBOT3_MODEL=burger

# Modify existing launch file to add initial pose
RUN cd /tb3 \
&& curl --output turtlebot3_navigation.launch "https://raw.githubusercontent.com/ROBOTIS-GIT/turtlebot3/refs/heads/noetic-devel/turtlebot3_navigation/launch/turtlebot3_navigation.launch" \
&& sed -z 's|amcl.launch"/>|amcl.launch"><arg name="initial_pose_x" value="-2.0"/><arg name="initial_pose_y" value="-0.5"/></include>|' turtlebot3_navigation.launch > turtlebot3_navigation_edited.launch

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

ENTRYPOINT ["bash", "-c", ". /opt/ros/$ROS_DISTRO/setup.bash && roslaunch --wait /tb3/turtlebot3_navigation_edited.launch map_file:=/tb3/navigation2/nav2_bringup/maps/tb3_sandbox.yaml open_rviz:=false"]
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"]
12 changes: 12 additions & 0 deletions .github/docker/minimal-ros1-sim/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
ARG ROS_DISTRO=noetic
FROM docker.io/ros:$ROS_DISTRO-ros-base

RUN apt update && apt install -y ros-$ROS_DISTRO-turtlebot3-gazebo ros-$ROS_DISTRO-gazebo-ros-pkgs

ENV TURTLEBOT3_MODEL=burger

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

ENTRYPOINT ["bash", "-c", ". /opt/ros/$ROS_DISTRO/setup.bash && roslaunch turtlebot3_gazebo turtlebot3_world.launch gui:=false"]
36 changes: 36 additions & 0 deletions .github/docker/minimal-zenoh-bridge-ros1/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
### Build bridge

ARG ROS_DISTRO=noetic
FROM docker.io/ros:$ROS_DISTRO-ros-base
ARG ZENOH_BRIDGE_REPO=eclipse-zenoh/zenoh-plugin-ros1
ARG ZENOH_BRIDGE_TAG=main
ARG FREE_FLEET_BRANCH=main

RUN apt update && apt install -y build-essential curl git unzip wget

# Get Rust
RUN curl https://sh.rustup.rs -sSf | bash -s -- -y

ENV PATH="/root/.cargo/bin:${PATH}"

RUN mkdir -p /zenoh-bridge && cd /zenoh-bridge \
&& git clone --recursive https://github.com/$ZENOH_BRIDGE_REPO -b $ZENOH_BRIDGE_TAG zenoh-plugin-ros1 \
&& cd /zenoh-bridge/zenoh-plugin-ros1 \
&& cargo build --package zenoh-bridge-ros1 --bin zenoh-bridge-ros1 --release

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

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

### Set up bare minimum zenoh-bridge-ros1 image

FROM docker.io/ros:$ROS_DISTRO-ros-base

COPY --from=0 /zenoh-bridge/nav1_tb3_zenoh_bridge_ros1_client_config.json5 /zenoh-bridge/nav1_tb3_zenoh_bridge_ros1_client_config.json5

COPY --from=0 /zenoh-bridge/zenoh-plugin-ros1/target/release/zenoh-bridge-ros1 /zenoh-bridge/zenoh-bridge-ros1

ENTRYPOINT ["bash", "-c", ". /opt/ros/$ROS_DISTRO/setup.bash && /zenoh-bridge/zenoh-bridge-ros1 -c /zenoh-bridge/nav1_tb3_zenoh_bridge_ros1_client_config.json5"]
22 changes: 22 additions & 0 deletions .github/docker/minimal-zenoh-bridge-ros2dds/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.1.0
ARG FREE_FLEET_BRANCH=main

RUN apt update && apt install -y wget unzip ros-$ROS_DISTRO-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 nav2_tb3_zenoh_bridge_ros2dds_client_config.json5 https://raw.githubusercontent.com/open-rmf/free_fleet/refs/heads/$FREE_FLEET_BRANCH/free_fleet_examples/config/zenoh/nav2_tb3_zenoh_bridge_ros2dds_client_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/nav2_tb3_zenoh_bridge_ros2dds_client_config.json5"]
39 changes: 0 additions & 39 deletions .github/workflows/build.yaml

This file was deleted.

45 changes: 45 additions & 0 deletions .github/workflows/nav1-integration-tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: nav1-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/nav1-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.1.0
nav1-integration-testing: ON

- name: Stop test fixture containers
if: always()
run: docker-compose -f ".github/docker/integration-tests/nav1-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 }}
45 changes: 45 additions & 0 deletions .github/workflows/nav2-integration-tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: nav2-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/nav2-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.1.0
nav2-integration-testing: ON

- name: Stop test fixture containers
if: always()
run: docker-compose -f ".github/docker/integration-tests/nav2-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 }}
Loading
Loading