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

Migration to Humble #155

Merged
merged 8 commits into from
Sep 13, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
31 changes: 20 additions & 11 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
name: build
on: [push, pull_request]
jobs:
on:
pull_request:
push:
branches: [ main ]

ros2:
runs-on: ubuntu-20.04
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
docker_image: ['ros:humble-ros-base']
container:
image: docker://ros:galactic-ros-base-focal
image: ${{ matrix.docker_image }}
steps:
- name: non-ros-deps
run: |
Expand All @@ -15,9 +21,9 @@ jobs:
wget https://packages.osrfoundation.org/gazebo.key -O - | apt-key add -
sudo apt update && sudo apt install \
git cmake python3-vcstool curl \
qt5-default \
clang clang-tools lld \
python3-shapely python3-yaml python3-requests \
ignition-edifice python3-pip -y
python3-pip -y
pip3 install flask-socketio fastapi uvicorn
- name: create-ws
run: |
Expand All @@ -34,13 +40,16 @@ jobs:
- name: ros-deps
run: |
export DEBIAN_FRONTEND=noninteractive
colcon mixin add default https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
colcon mixin update default
cd rmf_demos_ws
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro galactic -yr
rosdep install --from-paths src --ignore-src --rosdistro humble -yr
- name: build
shell: bash
run: |
cd rmf_demos_ws
source /opt/ros/galactic/setup.bash
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release -DNO_DOWNLOAD_MODELS=True

source /opt/ros/humble/setup.bash
export CXX=clang++
export CX=clang
colcon build --mixin lld --cmake-args -DNO_DOWNLOAD_MODELS=True
14 changes: 10 additions & 4 deletions .github/workflows/style.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
name: style
on: [push, pull_request]
on:
pull_request:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-20.04
linter:
runs-on: ubuntu-latest
strategy:
matrix:
docker_image: ['ros:humble-ros-base']
container:
image: docker://ros:galactic-ros-base-focal
image: ${{ matrix.docker_image }}
steps:
- uses: actions/checkout@v2
- name: deps
Expand Down
34 changes: 17 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Full web application of Open-RMF: [rmf-web](https://github.com/open-rmf/rmf-web)
In order to interact with the default configuration of the web application, the `server_uri` launch parameter will need to be changed to `ws://localhost:8000/_internal`, for example,

```bash
ros2 launch rmf_demos_ign office.launch.xml server_uri:="ws://localhost:8000/_internal"
ros2 launch rmf_demos_gz office.launch.xml server_uri:="ws://localhost:8000/_internal"
```

By specifying `server_uri`, the fleetadapter will update `rmf-web` `api-server` with the latest task and robot states. User can then monitor on-going states and initiate rmf task with an interactive web dashboard.
Expand All @@ -55,9 +55,9 @@ By specifying `server_uri`, the fleetadapter will update `rmf-web` `api-server`
* [Manufacturing & Logistics World](#Manufacturing-&-Logistics-World)

> Note: When running the demos on Ubuntu 18.04 (not officially supported), you are required to explicitly supply gazebo_version launch argument. Eg:
ros2 launch rmf_demos_gz office.launch.xml gazebo_version:=9
ros2 launch rmf_demos_gz_classic office.launch.xml gazebo_version:=9

> To run the demos using Ignition instead of Gazebo, change the commands from `ros2 launch rmf_demos_gz [...]` to `ros2 launch rmf_demos_ign [...]`
> To run the demos using Ignition instead of Gazebo, change the commands from `ros2 launch rmf_demos_gz_classic [...]` to `ros2 launch rmf_demos_gz [...]`

**RMF Panel**
![](../media/RMF_Panel.png?raw=true)
Expand All @@ -77,7 +77,7 @@ There are two main modes of submitting tasks to Open-RMF via the Panel:

`task_state_uptates` are now published via websocket. To display task states on `rmf-panel`, specify `server_uri:="ws://localhost:7878"` during ros2 launch. Example:
```
ros2 launch rmf_demos_gz office.launch.xml server_uri:="ws://localhost:7878"
ros2 launch rmf_demos_gz_classic office.launch.xml server_uri:="ws://localhost:7878"
```

This will let Open-RMF (websocket clients) to publish their states to port `7878`. In this case, rmf-panel's `api_simple_server` is the websocket server.
Expand All @@ -97,10 +97,10 @@ To launch the world and the schedule visualizer,

```bash
source ~/rmf_ws/install/setup.bash
ros2 launch rmf_demos_gz hotel.launch.xml
ros2 launch rmf_demos_gz_classic hotel.launch.xml

# Or, run with ignition simulator
ros2 launch rmf_demos_ign hotel.launch.xml
ros2 launch rmf_demos_gz hotel.launch.xml
```

Here, we will showcase 2 types of Tasks: **Loop** and **Clean**
Expand Down Expand Up @@ -131,10 +131,10 @@ An indoor office environment for robots to navigate around. It includes a bevera

```bash
source ~/rmf_demos_ws/install/setup.bash
ros2 launch rmf_demos_gz office.launch.xml
ros2 launch rmf_demos_gz_classic office.launch.xml

# Or, run with ignition simulator
ros2 launch rmf_demos_ign office.launch.xml
ros2 launch rmf_demos_gz office.launch.xml
```

Now we will showcase 2 types of Tasks: **Delivery** and **Loop**
Expand Down Expand Up @@ -172,7 +172,7 @@ In the airport world, we introduce a new task type to rmf: `Clean`. To launch th

```bash
source ~/rmf_ws/install/setup.bash
ros2 launch rmf_demos_gz airport_terminal.launch.xml
ros2 launch rmf_demos_gz_classic airport_terminal.launch.xml
```

Open [RMF Panel](https://open-rmf.github.io/rmf-panel-js/). Load the [airport_terminal_tasks.json](https://github.com/open-rmf/rmf_demos/blob/main/rmf_demos_panel/task_lists/airport_terminal_tasks.json) list and click submit to begin a collection of loop, delivery and cleaning tasks.
Expand All @@ -186,7 +186,7 @@ ros2 run rmf_demos_tasks dispatch_clean -cs zone_3 --use_sim_time

To see crowd simulation in action, enable crowd sim by:
```bash
ros2 launch rmf_demos_gz airport_terminal.launch.xml use_crowdsim:=1
ros2 launch rmf_demos_gz_classic airport_terminal.launch.xml use_crowdsim:=1
```

Non-autonomous vehicles can also be integrated with Open-RMF provided their positions can be localized in the world. This may be of value at facilities where space is shared by autonomous robots as well as manually operated vehicles such as forklifts or transporters. In this demo, we can introduce a vehicle (caddy) which can be driven around through keyboard/joystick teleop. In Open-RMF nomenclature, this vehicle is classified as a `read_only` type, ie, Open-RMF can only infer its position in the world but does not have control over its motion. Here, the goal is to have other controllable robots avoid this vehicle's path by replanning their routes if needed. The model is fitted with a plugin which generates a prediction of the vehicle's path based on its current heading. It is configured to occupy the same lanes as the `tinyRobot` robots. Here, a `read_only_fleet_adapter` submits the prediction from the plugin to the Open-RMF schedule.
Expand All @@ -199,7 +199,7 @@ Run `teleop_twist_keyboard` to control the `caddy` with your keyboard:
ros2 run teleop_twist_keyboard teleop_twist_keyboard

# if launched with the Ignition simulator
ros2 launch rmf_demos_ign airport_terminal_caddy.launch.xml
ros2 launch rmf_demos_gz airport_terminal_caddy.launch.xml
```

![](../media/caddy.gif)
Expand All @@ -219,7 +219,7 @@ To launch the world and the schedule visualizer,

```bash
source ~/rmf_ws/install/setup.bash
ros2 launch rmf_demos_gz clinic.launch.xml
ros2 launch rmf_demos_gz_classic clinic.launch.xml
```

Open [RMF Panel](https://open-rmf.github.io/rmf-panel-js/). Load the [clinic_tasks.json](https://github.com/open-rmf/rmf_demos/blob/main/rmf_demos_panel/task_lists/clinic_tasks.json) list and click submit to begin a collection of loop and delivery tasks.
Expand Down Expand Up @@ -251,7 +251,7 @@ To launch the world and the schedule visualizer,

```bash
source ~/rmf_ws/install/setup.bash
ros2 launch rmf_demos_ign campus.launch.xml
ros2 launch rmf_demos_gz campus.launch.xml

ros2 run rmf_demos_tasks dispatch_patrol -p room_5 campus_4 -n 10 --use_sim_time
ros2 run rmf_demos_tasks dispatch_patrol -p campus_5 room_3 -n 10 --use_sim_time
Expand Down Expand Up @@ -296,20 +296,20 @@ Open-RMF can also manage fleets whose API or fleet managers only offer pause and

#### Triple-H scenario:
```bash
$ ros2 launch rmf_demos_gz triple_H.launch.xml
$ ros2 launch rmf_demos_gz_classic triple_H.launch.xml
(new terminal) $ ros2 launch rmf_demos the_pedigree.launch.xml
```
#### Battle Royale Scenario:

```bash
$ ros2 launch rmf_demos_gz battle_royale.launch.xml
$ ros2 launch rmf_demos_gz_classic battle_royale.launch.xml
(new terminal) $ ros2 launch rmf_demos battle_go.launch.xml
```

#### Office Scenario:
Note that `tinyRobot1` is a standard "full control" robot, while `tinyRobot2` "traffic light" robot.
```bash
$ ros2 launch rmf_demos_gz office_mock_traffic_light.launch.xml
$ ros2 launch rmf_demos_gz_classic office_mock_traffic_light.launch.xml
(new terminal) $ ros2 launch rmf_demos office_traffic_light_test.launch.xml
```

Expand All @@ -322,7 +322,7 @@ $ ros2 launch rmf_demos_gz office_mock_traffic_light.launch.xml
- Command lines:
```bash
# run hotel world with lift_watch_dog enabled
ros2 launch rmf_demos_gz hotel.launch.xml enable_experimental_lift_watchdog:=1
ros2 launch rmf_demos_gz_classic hotel.launch.xml enable_experimental_lift_watchdog:=1

## On a separate terminal, set lift as crowded
ros2 launch rmf_demos experimental_crowded_lift.launch.xml
Expand Down
2 changes: 1 addition & 1 deletion docs/secure_office_world.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ Gazebo needs the environment variables to locate files, and set up communication
```bash
echo 'export GAZEBO_MODEL_PATH=~/rmf_demos_ws/install/rmf_demos_maps/share/rmf_demos_maps/maps/office/models:~/rmf_demos_ws/install/rmf_demos_assets/share/rmf_demos_assets/models:/usr/share/gazebo-11/models
export GAZEBO_RESOURCE_PATH=~/rmf_demos_ws/install/rmf_demos_assets/share/rmf_demos_assets:/usr/share/gazebo-11
export GAZEBO_PLUGIN_PATH=~/rmf_demos_ws/install/rmf_robot_sim_gazebo_plugins/lib:~/rmf_demos_ws/install/building_gazebo_plugins/lib/
export GAZEBO_PLUGIN_PATH=~/rmf_demos_ws/install/rmf_robot_sim_gz_classic_plugins/lib:~/rmf_demos_ws/install/building_gazebo_plugins/lib/
export GAZEBO_MODEL_DATABASE_URI=""' > gazebo_environment.sh
```

Expand Down
2 changes: 1 addition & 1 deletion rmf_demos/sros2/office_deploy.bash
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ sleep 2

echo "export GAZEBO_MODEL_PATH=$WORKSPACE/install/rmf_demos_maps/share/rmf_demos_maps/maps/office/models:$WORKSPACE/install/rmf_demos_assets/share/rmf_demos_assets/models:/usr/share/gazebo-11/models
export GAZEBO_RESOURCE_PATH=$WORKSPACE/install/rmf_demos_assets/share/rmf_demos_assets:/usr/share/gazebo-11
export GAZEBO_PLUGIN_PATH=$WORKSPACE/install/rmf_robot_sim_gazebo_plugins/lib:$WORKSPACE/install/rmf_building_sim_gazebo_plugins/lib/
export GAZEBO_PLUGIN_PATH=$WORKSPACE/install/rmf_robot_sim_gz_classic_plugins/lib:$WORKSPACE/install/rmf_building_sim_gz_classic_plugins/lib/
export GAZEBO_MODEL_DATABASE_URI=\"\"" > $WORKSPACE/gazebo_environment.bash

tmux send-keys -t 8 "source $WORKSPACE/sros2_environment.bash" Enter
Expand Down
6 changes: 3 additions & 3 deletions rmf_demos_fleet_adapter/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# rmf_demos_fleet_adapter

This is an implementation of the python based [fleet adapter template](https://github.com/open-rmf/fleet_adapter_template) on selected RMF demo worlds: Hotel, Office, Airport Terminal and Clinic.
This is an implementation of the python based [fleet adapter template](https://github.com/open-rmf/fleet_adapter_template) on selected RMF demo worlds: Hotel, Office, Airport Terminal and Clinic.

This fleet adapter integration relies on a fleet manager and a fleet adapter:
- The **fleet manager** comprises of specific endpoints that help relay commands to the fleet's robots. It communicates with the robots over internal ROS 2 messages, while interfacing with the adapter via an API chosen by the user. For this demo fleet adapter implementation, we are using REST API with FastAPI framework.
- The **fleet manager** comprises of specific endpoints that help relay commands to the fleet's robots. It communicates with the robots over internal ROS 2 messages, while interfacing with the adapter via an API chosen by the user. For this demo fleet adapter implementation, we are using REST API with FastAPI framework.
- The **fleet adapter** receives commands from RMF and interfaces with the fleet manager to receive robot state information, as well as send task and navigation commands to the robots

## Getting Started
Expand All @@ -21,7 +21,7 @@ You can interact with the endpoints with FastAPI's automatic documentation. Firs
Launch the Office world:
```bash
source ~/rmf_ws/install/setup.bash
ros2 launch rmf_demos_gz office.launch.xml
ros2 launch rmf_demos_gz_classic office.launch.xml
```
Then, visit http://127.0.0.1:22011/docs in your browser to interact with the endpoints.

Expand Down
7 changes: 5 additions & 2 deletions rmf_demos_gz/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
## Changelog for package rmf_demos_gz

2.0.0 (2022-XX-XX)
------------------
* Renamed to rmf_demos_gz

1.3.1 (2021-11-30)
------------------
* Added `diff_drive` plugin dependencies for caddy (#111)
* Modified plugin path to match `rmf_simulation` install (#108)

1.3.0 (2021-09-08)
------------------
* Provides launch files for running various demonstrations in gazebo

* Provides launch files for running various demonstrations in ignition-gazebo
25 changes: 10 additions & 15 deletions rmf_demos_gz/QUALITY_DECLARATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,32 +114,27 @@ This quality declaration has not been externally peer-reviewed and is not regist

`rmf_demos_gz` has the following runtime ROS dependencies.

#### rmf_building_sim_gazebo_plugins
#### rmf_building_sim_gz_plugins

`rmf_building_sim_gazebo_plugins` is at [**Quality Level 4**](https://github.com/open-rmf/rmf_simulation/blob/main/rmf_building_sim_gazebo_plugins/QUALITY_DECLARATION.md).
`rmf_building_sim_gz_plugins` is at [**Quality Level 4**](https://github.com/open-rmf/rmf_simulation/blob/main/rmf_building_sim_gz_plugins/QUALITY_DECLARATION.md).

#### rmf_robot_sim_gazebo_plugins
#### rmf_robot_sim_gz_plugins

`rmf_robot_sim_gazebo_plugins` is at [**Quality Level 4**](https://github.com/open-rmf/rmf_simulation/blob/main/rmf_robot_sim_gazebo_plugins/QUALITY_DECLARATION.md).
`rmf_robot_sim_gz_plugins` is at [**Quality Level 4**](https://github.com/open-rmf/rmf_simulation/blob/main/rmf_robot_sim_gz_plugins/QUALITY_DECLARATION.md).

#### gazebo_ros_pkgs
#### teleop_twist_keyboard

`gazebo_ros_pkgs` does not declare a Quality Level.
It is assumed to be at least **Quality Level 4** based on its widespread use.

#### joy

`joy` does not declare a Quality Level.
`teleop_twist_keyboard` does not declare a Quality Level.
It is assumed tobe at **Quality Level 4** based on its widespread use.

#### teleop_twist_joy
#### launch_xml

`teleop_twist_joy` does not declare a Quality Level.
`launch_xml` does not declare a Quality Level.
It is assumed tobe at **Quality Level 4** based on its widespread use.

#### launch_xml
#### ros_ign_bridge

`launch_xml` does not declare a Quality Level.
`ros_ign_bridge` does not declare a Quality Level.
It is assumed tobe at **Quality Level 4** based on its widespread use.

### Optional Direct Runtime ROS Dependencies [5.ii]
Expand Down
6 changes: 4 additions & 2 deletions rmf_demos_gz/launch/airport_terminal.launch.xml
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
<?xml version='1.0' ?>

<launch>
<arg name="gazebo_version" default="11"/>
<arg name="use_sim_time" default="true"/>
<arg name="failover_mode" default="false"/>
<arg name="use_tpe" default="false"/>
<arg name="ignition_version" default='6'/>

<!-- Common launch -->
<include file="$(find-pkg-share rmf_demos)/airport_terminal.launch.xml">
<arg name="use_sim_time" value="$(var use_sim_time)"/>
<arg name="failover_mode" value="$(var failover_mode)"/>
<arg name="use_tpe" value="$(var use_tpe)"/>
</include>

<!-- Simulation launch -->
<include file="$(find-pkg-share rmf_demos_gz)/simulation.launch.xml">
<arg name="map_name" value="airport_terminal" />
<arg name="gazebo_version" value="$(var gazebo_version)" />
<arg name="ignition_version" value="$(var ignition_version)" />
</include>

</launch>
6 changes: 4 additions & 2 deletions rmf_demos_gz/launch/battle_royale.launch.xml
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
<?xml version='1.0' ?>

<launch>
<arg name="gazebo_version" default="11"/>
<arg name="use_sim_time" default="true"/>
<arg name="use_tpe" default="false"/>
<arg name="ignition_version" default='6'/>

<!-- Common launch -->
<include file="$(find-pkg-share rmf_demos)/battle_royale.launch.xml">
<arg name="use_sim_time" value="$(var use_sim_time)"/>
<arg name="use_tpe" value="$(var use_tpe)"/>
</include>

<!-- Simulation launch -->
<include file="$(find-pkg-share rmf_demos_gz)/simulation.launch.xml">
<arg name="map_name" value="battle_royale" />
<arg name="gazebo_version" value="$(var gazebo_version)" />
<arg name="ignition_version" value="$(var ignition_version)" />
</include>

</launch>
6 changes: 4 additions & 2 deletions rmf_demos_gz/launch/campus.launch.xml
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
<?xml version='1.0' ?>

<launch>
<arg name="gazebo_version" default="11"/>
<arg name="use_sim_time" default="true"/>
<arg name="failover_mode" default="false"/>
<arg name="use_tpe" default="false"/>
<arg name="ignition_version" default='6'/>

<!-- Common launch -->
<include file="$(find-pkg-share rmf_demos)/campus.launch.xml">
<arg name="use_sim_time" value="$(var use_sim_time)"/>
<arg name="failover_mode" value="$(var failover_mode)"/>
<arg name="use_tpe" value="$(var use_tpe)"/>
</include>

<!-- Simulation launch -->
<include file="$(find-pkg-share rmf_demos_gz)/simulation.launch.xml">
<arg name="map_name" value="campus" />
<arg name="gazebo_version" value="$(var gazebo_version)" />
<arg name="ignition_version" value="$(var ignition_version)" />
</include>

</launch>
Loading