Skip to content

Commit ac637ed

Browse files
committed
Revert "Port to harmonic (#206)"
This reverts commit f4844fe.
1 parent 9f29d71 commit ac637ed

33 files changed

+599
-56
lines changed

.github/workflows/build.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ jobs:
1616
rmf_demos_bridges
1717
rmf_demos_fleet_adapter
1818
rmf_demos_gz
19+
rmf_demos_gz_classic
1920
rmf_demos_maps
2021
rmf_demos_tasks
21-
dist-matrix: '[{"ros_distribution": "rolling", "ubuntu_distribution": "noble"}]'
22+
dist-matrix: '[{"ros_distribution": "rolling", "ubuntu_distribution": "jammy"}]'

README.md

Lines changed: 42 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ This repository contains demonstrations of the above mentioned capabilities of R
1616

1717
These demos were built and tested on
1818

19-
* [Ubuntu 24.04 LTS](https://releases.ubuntu.com/24.04/)
19+
* [Ubuntu 22.04 LTS](https://releases.ubuntu.com/22.04/)
2020

21-
* [ROS 2 - Jazzy](https://docs.ros.org/en/jazzy/Releases/Release-Jazzy-Jalisco.html)
21+
* [ROS 2 - Humble](https://docs.ros.org/en/humble/Releases/Release-Humble-Hawksbill.html)
2222

23-
* [Gazebo Harmonic](https://gazebosim.org/docs/harmonic)
24-
> Note: RMF is fully supported on ROS 2 Humble and Iron as well, but those will require [ros_gz](https://github.com/gazebosim/ros_gz) to be built from source.
23+
* [Gazebo Fortress](https://gazebosim.org/docs/fortress)
24+
> Note: RMF is fully supported on ROS 2 Foxy as well
2525
2626
## Installation
2727
Instructions can be found [here](https://github.com/open-rmf/rmf).
@@ -54,6 +54,34 @@ By specifying `server_uri`, the fleetadapter will update `rmf-web` `api-server`
5454
* [Campus World](#Campus-World)
5555
* [Manufacturing & Logistics World](#Manufacturing-&-Logistics-World)
5656

57+
> Note: When running the demos on Ubuntu 18.04 (not officially supported), you are required to explicitly supply gazebo_version launch argument. Eg:
58+
ros2 launch rmf_demos_gz_classic office.launch.xml gazebo_version:=9
59+
60+
> 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 [...]`
61+
62+
**RMF Panel**
63+
![](../media/RMF_Panel.png?raw=true)
64+
65+
Click this link: https://open-rmf.github.io/rmf-panel-js/
66+
67+
> For a full-proof web application of Open-RMF, please refer to [rmf-web](https://github.com/open-rmf/rmf-web).
68+
69+
The [RMF panel](https://github.com/open-rmf/rmf-panel-js) is a web based dashboard for interacting with rmf_demos. It allows users to send task requests to RMF and monitor the status of robots and submitted tasks. For more [details](rmf_demos_panel/README.md).
70+
71+
There are two main modes of submitting tasks to Open-RMF via the Panel:
72+
73+
1. Submit a Task: Used to submit a single task.
74+
2. Submit a List of Tasks: Used to submit a batch of tasks. A `.json` file containing a list of tasks may be loaded via the `Choose file` button. Some example files are found in `rmf_demos_panel/task_lists`.
75+
76+
**LATEST UPDATE: Display Task States**
77+
78+
`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:
79+
```
80+
ros2 launch rmf_demos_gz_classic office.launch.xml server_uri:="ws://localhost:7878"
81+
```
82+
83+
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.
84+
5785
---
5886

5987
### Hotel World
@@ -69,7 +97,7 @@ To launch the world and the schedule visualizer,
6997

7098
```bash
7199
source ~/rmf_ws/install/setup.bash
72-
ros2 launch rmf_demos_gz hotel.launch.xml
100+
ros2 launch rmf_demos_gz_classic hotel.launch.xml
73101

74102
# Or, run with ignition simulator
75103
ros2 launch rmf_demos_gz hotel.launch.xml
@@ -96,7 +124,7 @@ An indoor office environment for robots to navigate around. It includes a bevera
96124

97125
```bash
98126
source ~/rmf_demos_ws/install/setup.bash
99-
ros2 launch rmf_demos_gz office.launch.xml
127+
ros2 launch rmf_demos_gz_classic office.launch.xml
100128

101129
# Or, run with ignition simulator
102130
ros2 launch rmf_demos_gz office.launch.xml
@@ -134,7 +162,7 @@ In the airport world, we introduce a new task type to rmf: `Clean`. To launch th
134162

135163
```bash
136164
source ~/rmf_ws/install/setup.bash
137-
ros2 launch rmf_demos_gz airport_terminal.launch.xml
165+
ros2 launch rmf_demos_gz_classic airport_terminal.launch.xml
138166
```
139167

140168
You can submit `loop`, `delivery` or `clean` task via CLI:
@@ -146,7 +174,7 @@ ros2 run rmf_demos_tasks dispatch_clean -cs zone_3 --use_sim_time
146174

147175
To see crowd simulation in action, enable crowd sim by:
148176
```bash
149-
ros2 launch rmf_demos_gz airport_terminal.launch.xml use_crowdsim:=1
177+
ros2 launch rmf_demos_gz_classic airport_terminal.launch.xml use_crowdsim:=1
150178
```
151179

152180
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.
@@ -158,6 +186,7 @@ Run `teleop_twist_keyboard` to control the `caddy` with your keyboard:
158186
# Default launch with gazebo
159187
ros2 run teleop_twist_keyboard teleop_twist_keyboard
160188

189+
# if launched with the Ignition simulator
161190
ros2 launch rmf_demos_gz airport_terminal_caddy.launch.xml
162191
```
163192

@@ -176,7 +205,7 @@ To launch the world and the schedule visualizer,
176205

177206
```bash
178207
source ~/rmf_ws/install/setup.bash
179-
ros2 launch rmf_demos_gz clinic.launch.xml
208+
ros2 launch rmf_demos_gz_classic clinic.launch.xml
180209
```
181210

182211
You can submit tasks via CLI:
@@ -251,20 +280,20 @@ Open-RMF can also manage fleets whose API or fleet managers only offer pause and
251280

252281
#### Triple-H scenario:
253282
```bash
254-
$ ros2 launch rmf_demos_gz triple_H.launch.xml
283+
$ ros2 launch rmf_demos_gz_classic triple_H.launch.xml
255284
(new terminal) $ ros2 launch rmf_demos the_pedigree.launch.xml
256285
```
257286
#### Battle Royale Scenario:
258287

259288
```bash
260-
$ ros2 launch rmf_demos_gz battle_royale.launch.xml
289+
$ ros2 launch rmf_demos_gz_classic battle_royale.launch.xml
261290
(new terminal) $ ros2 launch rmf_demos battle_go.launch.xml
262291
```
263292

264293
#### Office Scenario:
265294
Note that `tinyRobot1` is a standard "full control" robot, while `tinyRobot2` "traffic light" robot.
266295
```bash
267-
$ ros2 launch rmf_demos_gz office_mock_traffic_light.launch.xml
296+
$ ros2 launch rmf_demos_gz_classic office_mock_traffic_light.launch.xml
268297
(new terminal) $ ros2 launch rmf_demos office_traffic_light_test.launch.xml
269298
```
270299

@@ -277,7 +306,7 @@ $ ros2 launch rmf_demos_gz office_mock_traffic_light.launch.xml
277306
- Command lines:
278307
```bash
279308
# run hotel world with lift_watch_dog enabled
280-
ros2 launch rmf_demos_gz hotel.launch.xml enable_experimental_lift_watchdog:=1
309+
ros2 launch rmf_demos_gz_classic hotel.launch.xml enable_experimental_lift_watchdog:=1
281310

282311
## On a separate terminal, set lift as crowded
283312
ros2 launch rmf_demos experimental_crowded_lift.launch.xml

rmf_demos_fleet_adapter/rmf_demos_fleet_adapter/fleet_adapter.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,6 @@ def update_loop():
175175

176176
# Connect to the extra ROS2 topics that are relevant for the adapter
177177
connections = ros_connections(node, robots, fleet_handle)
178-
connections # Avoid unused variable warning
179178

180179
# Create executor for the command handle node
181180
rclpy_executor = rclpy.executors.SingleThreadedExecutor()

rmf_demos_fleet_adapter/rmf_demos_fleet_adapter/manage_lane.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,24 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
import argparse
16-
import asyncio
17-
import sys
18-
1915
import rclpy
16+
from rclpy.duration import Duration
2017
import rclpy.node
2118
from rclpy.qos import QoSDurabilityPolicy as Durability
2219
from rclpy.qos import QoSHistoryPolicy as History
2320
from rclpy.qos import QoSProfile
2421
from rclpy.qos import QoSReliabilityPolicy as Reliability
2522
import rmf_adapter
26-
import rmf_adapter.geometry as geometry
2723
import rmf_adapter.vehicletraits as traits
24+
import rmf_adapter.geometry as geometry
2825

2926
from rmf_fleet_msgs.msg import LaneRequest
3027

28+
import argparse
29+
import threading
30+
import sys
31+
import asyncio
32+
3133

3234
def main(argv=sys.argv):
3335
rclpy.init(args=argv)
@@ -123,7 +125,7 @@ def main(argv=sys.argv):
123125
request.close_lanes = lane_indices
124126
request.fleet_name = args.fleet
125127

126-
node = rclpy.node.Node('manage_lane')
128+
node = rclpy.node.Node(f'manage_lane')
127129

128130
transient_qos = QoSProfile(
129131
history=History.KEEP_LAST,

rmf_demos_gz/launch/airport_terminal.launch.xml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,20 @@
33
<launch>
44
<arg name="use_sim_time" default="true"/>
55
<arg name="failover_mode" default="false"/>
6-
<arg name="gazebo_version" default='8'/>
6+
<arg name="use_tpe" default="false"/>
7+
<arg name="ignition_version" default='6'/>
78

89
<!-- Common launch -->
910
<include file="$(find-pkg-share rmf_demos)/airport_terminal.launch.xml">
1011
<arg name="use_sim_time" value="$(var use_sim_time)"/>
1112
<arg name="failover_mode" value="$(var failover_mode)"/>
13+
<arg name="use_tpe" value="$(var use_tpe)"/>
1214
</include>
1315

1416
<!-- Simulation launch -->
1517
<include file="$(find-pkg-share rmf_demos_gz)/simulation.launch.xml">
1618
<arg name="map_name" value="airport_terminal" />
17-
<arg name="gazebo_version" value="$(var gazebo_version)" />
19+
<arg name="ignition_version" value="$(var ignition_version)" />
1820
</include>
1921

2022
</launch>

rmf_demos_gz/launch/battle_royale.launch.xml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,21 @@
22

33
<launch>
44
<arg name="use_sim_time" default="true"/>
5-
<arg name="gazebo_version" default='8'/>
5+
<arg name="use_tpe" default="false"/>
6+
<arg name="ignition_version" default='6'/>
67
<arg name="use_traffic_light" default="false"/>
78

89
<!-- Common launch -->
910
<include file="$(find-pkg-share rmf_demos)/battle_royale.launch.xml">
1011
<arg name="use_traffic_light" value="$(var use_traffic_light)"/>
1112
<arg name="use_sim_time" value="$(var use_sim_time)"/>
13+
<arg name="use_tpe" value="$(var use_tpe)"/>
1214
</include>
1315

1416
<!-- Simulation launch -->
1517
<include file="$(find-pkg-share rmf_demos_gz)/simulation.launch.xml">
1618
<arg name="map_name" value="battle_royale" />
17-
<arg name="gazebo_version" value="$(var gazebo_version)" />
19+
<arg name="ignition_version" value="$(var ignition_version)" />
1820
</include>
1921

2022
</launch>

rmf_demos_gz/launch/campus.launch.xml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,20 @@
33
<launch>
44
<arg name="use_sim_time" default="true"/>
55
<arg name="failover_mode" default="false"/>
6-
<arg name="gazebo_version" default='8'/>
6+
<arg name="use_tpe" default="false"/>
7+
<arg name="ignition_version" default='6'/>
78

89
<!-- Common launch -->
910
<include file="$(find-pkg-share rmf_demos)/campus.launch.xml">
1011
<arg name="use_sim_time" value="$(var use_sim_time)"/>
1112
<arg name="failover_mode" value="$(var failover_mode)"/>
13+
<arg name="use_tpe" value="$(var use_tpe)"/>
1214
</include>
1315

1416
<!-- Simulation launch -->
1517
<include file="$(find-pkg-share rmf_demos_gz)/simulation.launch.xml">
1618
<arg name="map_name" value="campus" />
17-
<arg name="gazebo_version" value="$(var gazebo_version)" />
19+
<arg name="ignition_version" value="$(var ignition_version)" />
1820
</include>
1921

2022
</launch>

rmf_demos_gz/launch/clinic.launch.xml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,20 @@
33
<launch>
44
<arg name="use_sim_time" default="true"/>
55
<arg name="failover_mode" default="false"/>
6-
<arg name="gazebo_version" default='8'/>
6+
<arg name="use_tpe" default="false"/>
7+
<arg name="ignition_version" default='6'/>
78

89
<!-- Common launch -->
910
<include file="$(find-pkg-share rmf_demos)/clinic.launch.xml">
1011
<arg name="use_sim_time" value="true"/>
1112
<arg name="failover_mode" value="$(var failover_mode)"/>
13+
<arg name="use_tpe" value="$(var use_tpe)"/>
1214
</include>
1315

1416
<!-- Simulation launch -->
1517
<include file="$(find-pkg-share rmf_demos_gz)/simulation.launch.xml">
1618
<arg name="map_name" value="clinic" />
17-
<arg name="gazebo_version" value="$(var gazebo_version)" />
19+
<arg name="ignition_version" value="$(var ignition_version)" />
1820
</include>
1921

2022
</launch>

rmf_demos_gz/launch/hotel.launch.xml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,19 @@
33
<launch>
44
<arg name="use_sim_time" default="true"/>
55
<arg name="failover_mode" default="false"/>
6-
<arg name="gazebo_version" default='8'/>
6+
<arg name="use_tpe" default="false"/>
7+
<arg name="ignition_version" default='6'/>
78

89
<!-- Common launch -->
910
<include file="$(find-pkg-share rmf_demos)/hotel.launch.xml">
1011
<arg name="use_sim_time" value="$(var use_sim_time)"/>
1112
<arg name="failover_mode" value="$(var failover_mode)"/>
13+
<arg name="use_tpe" value="$(var use_tpe)"/>
1214
</include>
1315

1416
<!-- Simulation launch -->
1517
<include file="$(find-pkg-share rmf_demos_gz)/simulation.launch.xml">
1618
<arg name="map_name" value="hotel" />
17-
<arg name="gazebo_version" value="$(var gazebo_version)" />
19+
<arg name="ignition_version" value="$(var ignition_version)" />
1820
</include>
1921
</launch>

rmf_demos_gz/launch/include/airport_terminal/airport_terminal_caddy.launch.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
<group>
77
<!-- Launch keyboard control for Caddy -->
88
<node pkg="teleop_twist_keyboard" exec="teleop_twist_keyboard" output="screen" launch-prefix="gnome-terminal --">
9-
<remap from="/cmd_vel" to="/model/caddy/cmd_vel"/> <!-- remap topic name for the diff_drive gazebo plugin -->
9+
<remap from="/cmd_vel" to="/model/caddy/cmd_vel"/> <!-- remap topic name for the diff_drive ignition plugin -->
1010
</node>
11-
<!-- Let diff drive gazebo plugin read from /model/caddy/cmd_vel topic published to by the teleop_twist_keyboard -->
12-
<node pkg="ros_gz_bridge" exec="parameter_bridge" args="/model/caddy/cmd_vel@geometry_msgs/msg/Twist@gz.msgs.Twist"></node>
11+
<!-- Let diff drive ignition plugin read from /model/caddy/cmd_vel topic published to by the teleop_twist_keyboard -->
12+
<node pkg="ros_gz_bridge" exec="parameter_bridge" args="/model/caddy/cmd_vel@geometry_msgs/msg/Twist@ignition.msgs.Twist"></node>
1313
</group>
1414
</launch>

0 commit comments

Comments
 (0)