No version for distro humble showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.1.1
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description A framework for orchestration
Checkout URI https://github.com/osrf/nexus.git
VCS Type git
VCS Version main
Last Updated 2025-07-29
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demo package containing system and workcell orchestrators

Additional Links

No additional links.

Maintainers

  • Teo Koon Peng

Authors

No additional authors.

nexus_demos

Launch system and workcell orchestrators and all mock nodes

The launch.py script will launch the system orchestrator and 2 workcells orchestrators (each with a IRB910SC and IRB1300 robot), along with a Zenoh bridge to link selected ROS endpoints between them. These 3 orchestrators and their accompany components will be in different ROS_DOMAIN_IDs. To launch these components individually, use the following examples given.

NOTE: The ROS_DOMAIN_ID occupied by the Zenoh bridges during launch time may be different from the domain values in the Zenoh bridge configurations. This is because the launch file overrides the domain ID of the zenoh bridges to ensure that it is same as that of the orchestrator.

Method 1: Launch system orchestrator, IRB1300 workcell and IRB910SC Workcell together with Zenoh bridge

NOTE: Before running any of these commands, you must set the rmw implmentation to cyclonedds with export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp (If testing with real hardware, specify the arguments use_fake_hardware=False, robot1_ip=<IP> and robot2_ip=<IP>)

ros2 launch nexus_demos launch.py headless:=False

Method 2: Launch System Orchestrator and 1 Workcell without Zenoh bridge (Same ROS_DOMAIN_ID)

Launch with Workcell 1

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=true run_workcell_2:=false

Launch with Workcell 2

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=false run_workcell_2:=true

Testing with real hardware

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=True run_workcell_2:=False use_fake_hardware:=False robot1_ip:=<IP_ADDR>

Launch Orchestrators individually

System Orchestrator

ros2 launch nexus_demos control_center.launch.py ros_domain_id:=0 headless:=False

IRB910SC Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_1 ros_domain_id:=1 support_package:=abb_irb910sc_support robot_xacro_file:=irb910sc_3_45.xacro moveit_config_package:=abb_irb910sc_3_45_moveit_config controllers_file:=abb_irb910sc_controllers.yaml moveit_config_file:=abb_irb910sc_3_45.srdf.xacro tf_publisher_launch_file:=irb910sc_tf.launch.py planner_config_package:=nexus_demos planner_config_file:=irb910sc_planner_params.yaml sku_detection_params_file:=irb910sc_detection.yaml zenoh_config_file:=workcell_1.json5 headless:=False

IRB1300 Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_2 ros_domain_id:=2 support_package:=abb_irb1300_support robot_xacro_file:=irb1300_10_115.xacro moveit_config_package:=abb_irb1300_10_115_moveit_config controllers_file:=abb_irb1300_controllers.yaml moveit_config_file:=abb_irb1300_10_115.srdf.xacro tf_publisher_launch_file:=irb1300_tf.launch.py sku_detection_params_file:=irb1300_detection.yaml zenoh_config_file:=workcell_2.json5 headless:=False

Submit a job

Note: Set your ROS_DOMAIN_ID environment variable to that of the system orchestrator before executing the work order

place_on_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '23', work_order: '$(cat config/place_on_conveyor.json)'}}"

pick_from_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '24', work_order: '$(cat config/pick_from_conveyor.json)'}}"

Debugging

workcell

Send a request to a specific workcell, eg. test_workcell.

ros2 action send_goal /test_workcell/request nexus_orchestrator_msgs/action/WorkcellTask "$(cat config/workcell_task.yaml)" -f

mock gripper and mock detection

Gripper position from 0 to gripper_max_value:

ros2 run nexus_demos mock_gripper --ros-args -p gripper_max_value:=0.5

To transition lifecycle states

ros2 lifecycle set /mock_gripper configure
ros2 lifecycle set /mock_gripper activate

Call the action

```bash ros2 action send_goal /mock_gripper/command control_msgs/action/GripperCommand “{command: {position: 0.42}}” -f

mock vision system

Define the mock detections:

```yaml keys:

  • sku_id1

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nexus_demos

0.1.1 (2023-11-20)

0.1.0 (2023-11-06)

  • Provides test cases and a demo setup to validate core functionalities in NEXUS.

Launch files

  • launch/rmf_transporter.launch.xml
      • bidding_time_window [default: 2.0]
      • building_map_name [default: depot]
      • building_map_prefix_path [default: $(find-pkg-share nexus_demos)/config/rmf/maps/$(var building_map_name)]
      • building_map_file [default: $(var building_map_prefix_path)/$(var building_map_name).building.yaml]
      • fleet_adapter_config_file [default: $(find-pkg-share nexus_demos)/config/rmf/deliveryRobot_config.yaml]
      • nav_graph_file [default: $(var building_map_prefix_path)/nav_graphs/0.yaml]
      • gz_world_file [default: $(var building_map_prefix_path)/$(var building_map_name).world]
      • gz_model_path [default: $(var building_map_prefix_path)/models]
      • initial_map [default: L1]
      • server_uri [default: ]
      • sim_update_rate [default: 100]
      • headless [default: true]
      • use_simulator [default: true]
      • use_unique_hex_string_with_task_id [default: true]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nexus_demos at Robotics Stack Exchange

No version for distro jazzy showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.1.1
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description A framework for orchestration
Checkout URI https://github.com/osrf/nexus.git
VCS Type git
VCS Version main
Last Updated 2025-07-29
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demo package containing system and workcell orchestrators

Additional Links

No additional links.

Maintainers

  • Teo Koon Peng

Authors

No additional authors.

nexus_demos

Launch system and workcell orchestrators and all mock nodes

The launch.py script will launch the system orchestrator and 2 workcells orchestrators (each with a IRB910SC and IRB1300 robot), along with a Zenoh bridge to link selected ROS endpoints between them. These 3 orchestrators and their accompany components will be in different ROS_DOMAIN_IDs. To launch these components individually, use the following examples given.

NOTE: The ROS_DOMAIN_ID occupied by the Zenoh bridges during launch time may be different from the domain values in the Zenoh bridge configurations. This is because the launch file overrides the domain ID of the zenoh bridges to ensure that it is same as that of the orchestrator.

Method 1: Launch system orchestrator, IRB1300 workcell and IRB910SC Workcell together with Zenoh bridge

NOTE: Before running any of these commands, you must set the rmw implmentation to cyclonedds with export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp (If testing with real hardware, specify the arguments use_fake_hardware=False, robot1_ip=<IP> and robot2_ip=<IP>)

ros2 launch nexus_demos launch.py headless:=False

Method 2: Launch System Orchestrator and 1 Workcell without Zenoh bridge (Same ROS_DOMAIN_ID)

Launch with Workcell 1

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=true run_workcell_2:=false

Launch with Workcell 2

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=false run_workcell_2:=true

Testing with real hardware

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=True run_workcell_2:=False use_fake_hardware:=False robot1_ip:=<IP_ADDR>

Launch Orchestrators individually

System Orchestrator

ros2 launch nexus_demos control_center.launch.py ros_domain_id:=0 headless:=False

IRB910SC Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_1 ros_domain_id:=1 support_package:=abb_irb910sc_support robot_xacro_file:=irb910sc_3_45.xacro moveit_config_package:=abb_irb910sc_3_45_moveit_config controllers_file:=abb_irb910sc_controllers.yaml moveit_config_file:=abb_irb910sc_3_45.srdf.xacro tf_publisher_launch_file:=irb910sc_tf.launch.py planner_config_package:=nexus_demos planner_config_file:=irb910sc_planner_params.yaml sku_detection_params_file:=irb910sc_detection.yaml zenoh_config_file:=workcell_1.json5 headless:=False

IRB1300 Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_2 ros_domain_id:=2 support_package:=abb_irb1300_support robot_xacro_file:=irb1300_10_115.xacro moveit_config_package:=abb_irb1300_10_115_moveit_config controllers_file:=abb_irb1300_controllers.yaml moveit_config_file:=abb_irb1300_10_115.srdf.xacro tf_publisher_launch_file:=irb1300_tf.launch.py sku_detection_params_file:=irb1300_detection.yaml zenoh_config_file:=workcell_2.json5 headless:=False

Submit a job

Note: Set your ROS_DOMAIN_ID environment variable to that of the system orchestrator before executing the work order

place_on_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '23', work_order: '$(cat config/place_on_conveyor.json)'}}"

pick_from_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '24', work_order: '$(cat config/pick_from_conveyor.json)'}}"

Debugging

workcell

Send a request to a specific workcell, eg. test_workcell.

ros2 action send_goal /test_workcell/request nexus_orchestrator_msgs/action/WorkcellTask "$(cat config/workcell_task.yaml)" -f

mock gripper and mock detection

Gripper position from 0 to gripper_max_value:

ros2 run nexus_demos mock_gripper --ros-args -p gripper_max_value:=0.5

To transition lifecycle states

ros2 lifecycle set /mock_gripper configure
ros2 lifecycle set /mock_gripper activate

Call the action

```bash ros2 action send_goal /mock_gripper/command control_msgs/action/GripperCommand “{command: {position: 0.42}}” -f

mock vision system

Define the mock detections:

```yaml keys:

  • sku_id1

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nexus_demos

0.1.1 (2023-11-20)

0.1.0 (2023-11-06)

  • Provides test cases and a demo setup to validate core functionalities in NEXUS.

Launch files

  • launch/rmf_transporter.launch.xml
      • bidding_time_window [default: 2.0]
      • building_map_name [default: depot]
      • building_map_prefix_path [default: $(find-pkg-share nexus_demos)/config/rmf/maps/$(var building_map_name)]
      • building_map_file [default: $(var building_map_prefix_path)/$(var building_map_name).building.yaml]
      • fleet_adapter_config_file [default: $(find-pkg-share nexus_demos)/config/rmf/deliveryRobot_config.yaml]
      • nav_graph_file [default: $(var building_map_prefix_path)/nav_graphs/0.yaml]
      • gz_world_file [default: $(var building_map_prefix_path)/$(var building_map_name).world]
      • gz_model_path [default: $(var building_map_prefix_path)/models]
      • initial_map [default: L1]
      • server_uri [default: ]
      • sim_update_rate [default: 100]
      • headless [default: true]
      • use_simulator [default: true]
      • use_unique_hex_string_with_task_id [default: true]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nexus_demos at Robotics Stack Exchange

No version for distro kilted showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.1.1
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description A framework for orchestration
Checkout URI https://github.com/osrf/nexus.git
VCS Type git
VCS Version main
Last Updated 2025-07-29
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demo package containing system and workcell orchestrators

Additional Links

No additional links.

Maintainers

  • Teo Koon Peng

Authors

No additional authors.

nexus_demos

Launch system and workcell orchestrators and all mock nodes

The launch.py script will launch the system orchestrator and 2 workcells orchestrators (each with a IRB910SC and IRB1300 robot), along with a Zenoh bridge to link selected ROS endpoints between them. These 3 orchestrators and their accompany components will be in different ROS_DOMAIN_IDs. To launch these components individually, use the following examples given.

NOTE: The ROS_DOMAIN_ID occupied by the Zenoh bridges during launch time may be different from the domain values in the Zenoh bridge configurations. This is because the launch file overrides the domain ID of the zenoh bridges to ensure that it is same as that of the orchestrator.

Method 1: Launch system orchestrator, IRB1300 workcell and IRB910SC Workcell together with Zenoh bridge

NOTE: Before running any of these commands, you must set the rmw implmentation to cyclonedds with export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp (If testing with real hardware, specify the arguments use_fake_hardware=False, robot1_ip=<IP> and robot2_ip=<IP>)

ros2 launch nexus_demos launch.py headless:=False

Method 2: Launch System Orchestrator and 1 Workcell without Zenoh bridge (Same ROS_DOMAIN_ID)

Launch with Workcell 1

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=true run_workcell_2:=false

Launch with Workcell 2

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=false run_workcell_2:=true

Testing with real hardware

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=True run_workcell_2:=False use_fake_hardware:=False robot1_ip:=<IP_ADDR>

Launch Orchestrators individually

System Orchestrator

ros2 launch nexus_demos control_center.launch.py ros_domain_id:=0 headless:=False

IRB910SC Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_1 ros_domain_id:=1 support_package:=abb_irb910sc_support robot_xacro_file:=irb910sc_3_45.xacro moveit_config_package:=abb_irb910sc_3_45_moveit_config controllers_file:=abb_irb910sc_controllers.yaml moveit_config_file:=abb_irb910sc_3_45.srdf.xacro tf_publisher_launch_file:=irb910sc_tf.launch.py planner_config_package:=nexus_demos planner_config_file:=irb910sc_planner_params.yaml sku_detection_params_file:=irb910sc_detection.yaml zenoh_config_file:=workcell_1.json5 headless:=False

IRB1300 Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_2 ros_domain_id:=2 support_package:=abb_irb1300_support robot_xacro_file:=irb1300_10_115.xacro moveit_config_package:=abb_irb1300_10_115_moveit_config controllers_file:=abb_irb1300_controllers.yaml moveit_config_file:=abb_irb1300_10_115.srdf.xacro tf_publisher_launch_file:=irb1300_tf.launch.py sku_detection_params_file:=irb1300_detection.yaml zenoh_config_file:=workcell_2.json5 headless:=False

Submit a job

Note: Set your ROS_DOMAIN_ID environment variable to that of the system orchestrator before executing the work order

place_on_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '23', work_order: '$(cat config/place_on_conveyor.json)'}}"

pick_from_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '24', work_order: '$(cat config/pick_from_conveyor.json)'}}"

Debugging

workcell

Send a request to a specific workcell, eg. test_workcell.

ros2 action send_goal /test_workcell/request nexus_orchestrator_msgs/action/WorkcellTask "$(cat config/workcell_task.yaml)" -f

mock gripper and mock detection

Gripper position from 0 to gripper_max_value:

ros2 run nexus_demos mock_gripper --ros-args -p gripper_max_value:=0.5

To transition lifecycle states

ros2 lifecycle set /mock_gripper configure
ros2 lifecycle set /mock_gripper activate

Call the action

```bash ros2 action send_goal /mock_gripper/command control_msgs/action/GripperCommand “{command: {position: 0.42}}” -f

mock vision system

Define the mock detections:

```yaml keys:

  • sku_id1

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nexus_demos

0.1.1 (2023-11-20)

0.1.0 (2023-11-06)

  • Provides test cases and a demo setup to validate core functionalities in NEXUS.

Launch files

  • launch/rmf_transporter.launch.xml
      • bidding_time_window [default: 2.0]
      • building_map_name [default: depot]
      • building_map_prefix_path [default: $(find-pkg-share nexus_demos)/config/rmf/maps/$(var building_map_name)]
      • building_map_file [default: $(var building_map_prefix_path)/$(var building_map_name).building.yaml]
      • fleet_adapter_config_file [default: $(find-pkg-share nexus_demos)/config/rmf/deliveryRobot_config.yaml]
      • nav_graph_file [default: $(var building_map_prefix_path)/nav_graphs/0.yaml]
      • gz_world_file [default: $(var building_map_prefix_path)/$(var building_map_name).world]
      • gz_model_path [default: $(var building_map_prefix_path)/models]
      • initial_map [default: L1]
      • server_uri [default: ]
      • sim_update_rate [default: 100]
      • headless [default: true]
      • use_simulator [default: true]
      • use_unique_hex_string_with_task_id [default: true]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nexus_demos at Robotics Stack Exchange

No version for distro rolling showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.1.1
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description A framework for orchestration
Checkout URI https://github.com/osrf/nexus.git
VCS Type git
VCS Version main
Last Updated 2025-07-29
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demo package containing system and workcell orchestrators

Additional Links

No additional links.

Maintainers

  • Teo Koon Peng

Authors

No additional authors.

nexus_demos

Launch system and workcell orchestrators and all mock nodes

The launch.py script will launch the system orchestrator and 2 workcells orchestrators (each with a IRB910SC and IRB1300 robot), along with a Zenoh bridge to link selected ROS endpoints between them. These 3 orchestrators and their accompany components will be in different ROS_DOMAIN_IDs. To launch these components individually, use the following examples given.

NOTE: The ROS_DOMAIN_ID occupied by the Zenoh bridges during launch time may be different from the domain values in the Zenoh bridge configurations. This is because the launch file overrides the domain ID of the zenoh bridges to ensure that it is same as that of the orchestrator.

Method 1: Launch system orchestrator, IRB1300 workcell and IRB910SC Workcell together with Zenoh bridge

NOTE: Before running any of these commands, you must set the rmw implmentation to cyclonedds with export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp (If testing with real hardware, specify the arguments use_fake_hardware=False, robot1_ip=<IP> and robot2_ip=<IP>)

ros2 launch nexus_demos launch.py headless:=False

Method 2: Launch System Orchestrator and 1 Workcell without Zenoh bridge (Same ROS_DOMAIN_ID)

Launch with Workcell 1

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=true run_workcell_2:=false

Launch with Workcell 2

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=false run_workcell_2:=true

Testing with real hardware

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=True run_workcell_2:=False use_fake_hardware:=False robot1_ip:=<IP_ADDR>

Launch Orchestrators individually

System Orchestrator

ros2 launch nexus_demos control_center.launch.py ros_domain_id:=0 headless:=False

IRB910SC Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_1 ros_domain_id:=1 support_package:=abb_irb910sc_support robot_xacro_file:=irb910sc_3_45.xacro moveit_config_package:=abb_irb910sc_3_45_moveit_config controllers_file:=abb_irb910sc_controllers.yaml moveit_config_file:=abb_irb910sc_3_45.srdf.xacro tf_publisher_launch_file:=irb910sc_tf.launch.py planner_config_package:=nexus_demos planner_config_file:=irb910sc_planner_params.yaml sku_detection_params_file:=irb910sc_detection.yaml zenoh_config_file:=workcell_1.json5 headless:=False

IRB1300 Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_2 ros_domain_id:=2 support_package:=abb_irb1300_support robot_xacro_file:=irb1300_10_115.xacro moveit_config_package:=abb_irb1300_10_115_moveit_config controllers_file:=abb_irb1300_controllers.yaml moveit_config_file:=abb_irb1300_10_115.srdf.xacro tf_publisher_launch_file:=irb1300_tf.launch.py sku_detection_params_file:=irb1300_detection.yaml zenoh_config_file:=workcell_2.json5 headless:=False

Submit a job

Note: Set your ROS_DOMAIN_ID environment variable to that of the system orchestrator before executing the work order

place_on_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '23', work_order: '$(cat config/place_on_conveyor.json)'}}"

pick_from_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '24', work_order: '$(cat config/pick_from_conveyor.json)'}}"

Debugging

workcell

Send a request to a specific workcell, eg. test_workcell.

ros2 action send_goal /test_workcell/request nexus_orchestrator_msgs/action/WorkcellTask "$(cat config/workcell_task.yaml)" -f

mock gripper and mock detection

Gripper position from 0 to gripper_max_value:

ros2 run nexus_demos mock_gripper --ros-args -p gripper_max_value:=0.5

To transition lifecycle states

ros2 lifecycle set /mock_gripper configure
ros2 lifecycle set /mock_gripper activate

Call the action

```bash ros2 action send_goal /mock_gripper/command control_msgs/action/GripperCommand “{command: {position: 0.42}}” -f

mock vision system

Define the mock detections:

```yaml keys:

  • sku_id1

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nexus_demos

0.1.1 (2023-11-20)

0.1.0 (2023-11-06)

  • Provides test cases and a demo setup to validate core functionalities in NEXUS.

Launch files

  • launch/rmf_transporter.launch.xml
      • bidding_time_window [default: 2.0]
      • building_map_name [default: depot]
      • building_map_prefix_path [default: $(find-pkg-share nexus_demos)/config/rmf/maps/$(var building_map_name)]
      • building_map_file [default: $(var building_map_prefix_path)/$(var building_map_name).building.yaml]
      • fleet_adapter_config_file [default: $(find-pkg-share nexus_demos)/config/rmf/deliveryRobot_config.yaml]
      • nav_graph_file [default: $(var building_map_prefix_path)/nav_graphs/0.yaml]
      • gz_world_file [default: $(var building_map_prefix_path)/$(var building_map_name).world]
      • gz_model_path [default: $(var building_map_prefix_path)/models]
      • initial_map [default: L1]
      • server_uri [default: ]
      • sim_update_rate [default: 100]
      • headless [default: true]
      • use_simulator [default: true]
      • use_unique_hex_string_with_task_id [default: true]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nexus_demos at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.1.1
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description A framework for orchestration
Checkout URI https://github.com/osrf/nexus.git
VCS Type git
VCS Version main
Last Updated 2025-07-29
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demo package containing system and workcell orchestrators

Additional Links

No additional links.

Maintainers

  • Teo Koon Peng

Authors

No additional authors.

nexus_demos

Launch system and workcell orchestrators and all mock nodes

The launch.py script will launch the system orchestrator and 2 workcells orchestrators (each with a IRB910SC and IRB1300 robot), along with a Zenoh bridge to link selected ROS endpoints between them. These 3 orchestrators and their accompany components will be in different ROS_DOMAIN_IDs. To launch these components individually, use the following examples given.

NOTE: The ROS_DOMAIN_ID occupied by the Zenoh bridges during launch time may be different from the domain values in the Zenoh bridge configurations. This is because the launch file overrides the domain ID of the zenoh bridges to ensure that it is same as that of the orchestrator.

Method 1: Launch system orchestrator, IRB1300 workcell and IRB910SC Workcell together with Zenoh bridge

NOTE: Before running any of these commands, you must set the rmw implmentation to cyclonedds with export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp (If testing with real hardware, specify the arguments use_fake_hardware=False, robot1_ip=<IP> and robot2_ip=<IP>)

ros2 launch nexus_demos launch.py headless:=False

Method 2: Launch System Orchestrator and 1 Workcell without Zenoh bridge (Same ROS_DOMAIN_ID)

Launch with Workcell 1

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=true run_workcell_2:=false

Launch with Workcell 2

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=false run_workcell_2:=true

Testing with real hardware

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=True run_workcell_2:=False use_fake_hardware:=False robot1_ip:=<IP_ADDR>

Launch Orchestrators individually

System Orchestrator

ros2 launch nexus_demos control_center.launch.py ros_domain_id:=0 headless:=False

IRB910SC Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_1 ros_domain_id:=1 support_package:=abb_irb910sc_support robot_xacro_file:=irb910sc_3_45.xacro moveit_config_package:=abb_irb910sc_3_45_moveit_config controllers_file:=abb_irb910sc_controllers.yaml moveit_config_file:=abb_irb910sc_3_45.srdf.xacro tf_publisher_launch_file:=irb910sc_tf.launch.py planner_config_package:=nexus_demos planner_config_file:=irb910sc_planner_params.yaml sku_detection_params_file:=irb910sc_detection.yaml zenoh_config_file:=workcell_1.json5 headless:=False

IRB1300 Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_2 ros_domain_id:=2 support_package:=abb_irb1300_support robot_xacro_file:=irb1300_10_115.xacro moveit_config_package:=abb_irb1300_10_115_moveit_config controllers_file:=abb_irb1300_controllers.yaml moveit_config_file:=abb_irb1300_10_115.srdf.xacro tf_publisher_launch_file:=irb1300_tf.launch.py sku_detection_params_file:=irb1300_detection.yaml zenoh_config_file:=workcell_2.json5 headless:=False

Submit a job

Note: Set your ROS_DOMAIN_ID environment variable to that of the system orchestrator before executing the work order

place_on_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '23', work_order: '$(cat config/place_on_conveyor.json)'}}"

pick_from_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '24', work_order: '$(cat config/pick_from_conveyor.json)'}}"

Debugging

workcell

Send a request to a specific workcell, eg. test_workcell.

ros2 action send_goal /test_workcell/request nexus_orchestrator_msgs/action/WorkcellTask "$(cat config/workcell_task.yaml)" -f

mock gripper and mock detection

Gripper position from 0 to gripper_max_value:

ros2 run nexus_demos mock_gripper --ros-args -p gripper_max_value:=0.5

To transition lifecycle states

ros2 lifecycle set /mock_gripper configure
ros2 lifecycle set /mock_gripper activate

Call the action

```bash ros2 action send_goal /mock_gripper/command control_msgs/action/GripperCommand “{command: {position: 0.42}}” -f

mock vision system

Define the mock detections:

```yaml keys:

  • sku_id1

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nexus_demos

0.1.1 (2023-11-20)

0.1.0 (2023-11-06)

  • Provides test cases and a demo setup to validate core functionalities in NEXUS.

Launch files

  • launch/rmf_transporter.launch.xml
      • bidding_time_window [default: 2.0]
      • building_map_name [default: depot]
      • building_map_prefix_path [default: $(find-pkg-share nexus_demos)/config/rmf/maps/$(var building_map_name)]
      • building_map_file [default: $(var building_map_prefix_path)/$(var building_map_name).building.yaml]
      • fleet_adapter_config_file [default: $(find-pkg-share nexus_demos)/config/rmf/deliveryRobot_config.yaml]
      • nav_graph_file [default: $(var building_map_prefix_path)/nav_graphs/0.yaml]
      • gz_world_file [default: $(var building_map_prefix_path)/$(var building_map_name).world]
      • gz_model_path [default: $(var building_map_prefix_path)/models]
      • initial_map [default: L1]
      • server_uri [default: ]
      • sim_update_rate [default: 100]
      • headless [default: true]
      • use_simulator [default: true]
      • use_unique_hex_string_with_task_id [default: true]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nexus_demos at Robotics Stack Exchange

No version for distro galactic showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.1.1
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description A framework for orchestration
Checkout URI https://github.com/osrf/nexus.git
VCS Type git
VCS Version main
Last Updated 2025-07-29
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demo package containing system and workcell orchestrators

Additional Links

No additional links.

Maintainers

  • Teo Koon Peng

Authors

No additional authors.

nexus_demos

Launch system and workcell orchestrators and all mock nodes

The launch.py script will launch the system orchestrator and 2 workcells orchestrators (each with a IRB910SC and IRB1300 robot), along with a Zenoh bridge to link selected ROS endpoints between them. These 3 orchestrators and their accompany components will be in different ROS_DOMAIN_IDs. To launch these components individually, use the following examples given.

NOTE: The ROS_DOMAIN_ID occupied by the Zenoh bridges during launch time may be different from the domain values in the Zenoh bridge configurations. This is because the launch file overrides the domain ID of the zenoh bridges to ensure that it is same as that of the orchestrator.

Method 1: Launch system orchestrator, IRB1300 workcell and IRB910SC Workcell together with Zenoh bridge

NOTE: Before running any of these commands, you must set the rmw implmentation to cyclonedds with export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp (If testing with real hardware, specify the arguments use_fake_hardware=False, robot1_ip=<IP> and robot2_ip=<IP>)

ros2 launch nexus_demos launch.py headless:=False

Method 2: Launch System Orchestrator and 1 Workcell without Zenoh bridge (Same ROS_DOMAIN_ID)

Launch with Workcell 1

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=true run_workcell_2:=false

Launch with Workcell 2

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=false run_workcell_2:=true

Testing with real hardware

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=True run_workcell_2:=False use_fake_hardware:=False robot1_ip:=<IP_ADDR>

Launch Orchestrators individually

System Orchestrator

ros2 launch nexus_demos control_center.launch.py ros_domain_id:=0 headless:=False

IRB910SC Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_1 ros_domain_id:=1 support_package:=abb_irb910sc_support robot_xacro_file:=irb910sc_3_45.xacro moveit_config_package:=abb_irb910sc_3_45_moveit_config controllers_file:=abb_irb910sc_controllers.yaml moveit_config_file:=abb_irb910sc_3_45.srdf.xacro tf_publisher_launch_file:=irb910sc_tf.launch.py planner_config_package:=nexus_demos planner_config_file:=irb910sc_planner_params.yaml sku_detection_params_file:=irb910sc_detection.yaml zenoh_config_file:=workcell_1.json5 headless:=False

IRB1300 Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_2 ros_domain_id:=2 support_package:=abb_irb1300_support robot_xacro_file:=irb1300_10_115.xacro moveit_config_package:=abb_irb1300_10_115_moveit_config controllers_file:=abb_irb1300_controllers.yaml moveit_config_file:=abb_irb1300_10_115.srdf.xacro tf_publisher_launch_file:=irb1300_tf.launch.py sku_detection_params_file:=irb1300_detection.yaml zenoh_config_file:=workcell_2.json5 headless:=False

Submit a job

Note: Set your ROS_DOMAIN_ID environment variable to that of the system orchestrator before executing the work order

place_on_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '23', work_order: '$(cat config/place_on_conveyor.json)'}}"

pick_from_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '24', work_order: '$(cat config/pick_from_conveyor.json)'}}"

Debugging

workcell

Send a request to a specific workcell, eg. test_workcell.

ros2 action send_goal /test_workcell/request nexus_orchestrator_msgs/action/WorkcellTask "$(cat config/workcell_task.yaml)" -f

mock gripper and mock detection

Gripper position from 0 to gripper_max_value:

ros2 run nexus_demos mock_gripper --ros-args -p gripper_max_value:=0.5

To transition lifecycle states

ros2 lifecycle set /mock_gripper configure
ros2 lifecycle set /mock_gripper activate

Call the action

```bash ros2 action send_goal /mock_gripper/command control_msgs/action/GripperCommand “{command: {position: 0.42}}” -f

mock vision system

Define the mock detections:

```yaml keys:

  • sku_id1

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nexus_demos

0.1.1 (2023-11-20)

0.1.0 (2023-11-06)

  • Provides test cases and a demo setup to validate core functionalities in NEXUS.

Launch files

  • launch/rmf_transporter.launch.xml
      • bidding_time_window [default: 2.0]
      • building_map_name [default: depot]
      • building_map_prefix_path [default: $(find-pkg-share nexus_demos)/config/rmf/maps/$(var building_map_name)]
      • building_map_file [default: $(var building_map_prefix_path)/$(var building_map_name).building.yaml]
      • fleet_adapter_config_file [default: $(find-pkg-share nexus_demos)/config/rmf/deliveryRobot_config.yaml]
      • nav_graph_file [default: $(var building_map_prefix_path)/nav_graphs/0.yaml]
      • gz_world_file [default: $(var building_map_prefix_path)/$(var building_map_name).world]
      • gz_model_path [default: $(var building_map_prefix_path)/models]
      • initial_map [default: L1]
      • server_uri [default: ]
      • sim_update_rate [default: 100]
      • headless [default: true]
      • use_simulator [default: true]
      • use_unique_hex_string_with_task_id [default: true]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nexus_demos at Robotics Stack Exchange

No version for distro iron showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.1.1
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description A framework for orchestration
Checkout URI https://github.com/osrf/nexus.git
VCS Type git
VCS Version main
Last Updated 2025-07-29
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demo package containing system and workcell orchestrators

Additional Links

No additional links.

Maintainers

  • Teo Koon Peng

Authors

No additional authors.

nexus_demos

Launch system and workcell orchestrators and all mock nodes

The launch.py script will launch the system orchestrator and 2 workcells orchestrators (each with a IRB910SC and IRB1300 robot), along with a Zenoh bridge to link selected ROS endpoints between them. These 3 orchestrators and their accompany components will be in different ROS_DOMAIN_IDs. To launch these components individually, use the following examples given.

NOTE: The ROS_DOMAIN_ID occupied by the Zenoh bridges during launch time may be different from the domain values in the Zenoh bridge configurations. This is because the launch file overrides the domain ID of the zenoh bridges to ensure that it is same as that of the orchestrator.

Method 1: Launch system orchestrator, IRB1300 workcell and IRB910SC Workcell together with Zenoh bridge

NOTE: Before running any of these commands, you must set the rmw implmentation to cyclonedds with export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp (If testing with real hardware, specify the arguments use_fake_hardware=False, robot1_ip=<IP> and robot2_ip=<IP>)

ros2 launch nexus_demos launch.py headless:=False

Method 2: Launch System Orchestrator and 1 Workcell without Zenoh bridge (Same ROS_DOMAIN_ID)

Launch with Workcell 1

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=true run_workcell_2:=false

Launch with Workcell 2

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=false run_workcell_2:=true

Testing with real hardware

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=True run_workcell_2:=False use_fake_hardware:=False robot1_ip:=<IP_ADDR>

Launch Orchestrators individually

System Orchestrator

ros2 launch nexus_demos control_center.launch.py ros_domain_id:=0 headless:=False

IRB910SC Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_1 ros_domain_id:=1 support_package:=abb_irb910sc_support robot_xacro_file:=irb910sc_3_45.xacro moveit_config_package:=abb_irb910sc_3_45_moveit_config controllers_file:=abb_irb910sc_controllers.yaml moveit_config_file:=abb_irb910sc_3_45.srdf.xacro tf_publisher_launch_file:=irb910sc_tf.launch.py planner_config_package:=nexus_demos planner_config_file:=irb910sc_planner_params.yaml sku_detection_params_file:=irb910sc_detection.yaml zenoh_config_file:=workcell_1.json5 headless:=False

IRB1300 Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_2 ros_domain_id:=2 support_package:=abb_irb1300_support robot_xacro_file:=irb1300_10_115.xacro moveit_config_package:=abb_irb1300_10_115_moveit_config controllers_file:=abb_irb1300_controllers.yaml moveit_config_file:=abb_irb1300_10_115.srdf.xacro tf_publisher_launch_file:=irb1300_tf.launch.py sku_detection_params_file:=irb1300_detection.yaml zenoh_config_file:=workcell_2.json5 headless:=False

Submit a job

Note: Set your ROS_DOMAIN_ID environment variable to that of the system orchestrator before executing the work order

place_on_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '23', work_order: '$(cat config/place_on_conveyor.json)'}}"

pick_from_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '24', work_order: '$(cat config/pick_from_conveyor.json)'}}"

Debugging

workcell

Send a request to a specific workcell, eg. test_workcell.

ros2 action send_goal /test_workcell/request nexus_orchestrator_msgs/action/WorkcellTask "$(cat config/workcell_task.yaml)" -f

mock gripper and mock detection

Gripper position from 0 to gripper_max_value:

ros2 run nexus_demos mock_gripper --ros-args -p gripper_max_value:=0.5

To transition lifecycle states

ros2 lifecycle set /mock_gripper configure
ros2 lifecycle set /mock_gripper activate

Call the action

```bash ros2 action send_goal /mock_gripper/command control_msgs/action/GripperCommand “{command: {position: 0.42}}” -f

mock vision system

Define the mock detections:

```yaml keys:

  • sku_id1

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nexus_demos

0.1.1 (2023-11-20)

0.1.0 (2023-11-06)

  • Provides test cases and a demo setup to validate core functionalities in NEXUS.

Launch files

  • launch/rmf_transporter.launch.xml
      • bidding_time_window [default: 2.0]
      • building_map_name [default: depot]
      • building_map_prefix_path [default: $(find-pkg-share nexus_demos)/config/rmf/maps/$(var building_map_name)]
      • building_map_file [default: $(var building_map_prefix_path)/$(var building_map_name).building.yaml]
      • fleet_adapter_config_file [default: $(find-pkg-share nexus_demos)/config/rmf/deliveryRobot_config.yaml]
      • nav_graph_file [default: $(var building_map_prefix_path)/nav_graphs/0.yaml]
      • gz_world_file [default: $(var building_map_prefix_path)/$(var building_map_name).world]
      • gz_model_path [default: $(var building_map_prefix_path)/models]
      • initial_map [default: L1]
      • server_uri [default: ]
      • sim_update_rate [default: 100]
      • headless [default: true]
      • use_simulator [default: true]
      • use_unique_hex_string_with_task_id [default: true]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nexus_demos at Robotics Stack Exchange

No version for distro melodic showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.1.1
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description A framework for orchestration
Checkout URI https://github.com/osrf/nexus.git
VCS Type git
VCS Version main
Last Updated 2025-07-29
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demo package containing system and workcell orchestrators

Additional Links

No additional links.

Maintainers

  • Teo Koon Peng

Authors

No additional authors.

nexus_demos

Launch system and workcell orchestrators and all mock nodes

The launch.py script will launch the system orchestrator and 2 workcells orchestrators (each with a IRB910SC and IRB1300 robot), along with a Zenoh bridge to link selected ROS endpoints between them. These 3 orchestrators and their accompany components will be in different ROS_DOMAIN_IDs. To launch these components individually, use the following examples given.

NOTE: The ROS_DOMAIN_ID occupied by the Zenoh bridges during launch time may be different from the domain values in the Zenoh bridge configurations. This is because the launch file overrides the domain ID of the zenoh bridges to ensure that it is same as that of the orchestrator.

Method 1: Launch system orchestrator, IRB1300 workcell and IRB910SC Workcell together with Zenoh bridge

NOTE: Before running any of these commands, you must set the rmw implmentation to cyclonedds with export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp (If testing with real hardware, specify the arguments use_fake_hardware=False, robot1_ip=<IP> and robot2_ip=<IP>)

ros2 launch nexus_demos launch.py headless:=False

Method 2: Launch System Orchestrator and 1 Workcell without Zenoh bridge (Same ROS_DOMAIN_ID)

Launch with Workcell 1

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=true run_workcell_2:=false

Launch with Workcell 2

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=false run_workcell_2:=true

Testing with real hardware

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=True run_workcell_2:=False use_fake_hardware:=False robot1_ip:=<IP_ADDR>

Launch Orchestrators individually

System Orchestrator

ros2 launch nexus_demos control_center.launch.py ros_domain_id:=0 headless:=False

IRB910SC Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_1 ros_domain_id:=1 support_package:=abb_irb910sc_support robot_xacro_file:=irb910sc_3_45.xacro moveit_config_package:=abb_irb910sc_3_45_moveit_config controllers_file:=abb_irb910sc_controllers.yaml moveit_config_file:=abb_irb910sc_3_45.srdf.xacro tf_publisher_launch_file:=irb910sc_tf.launch.py planner_config_package:=nexus_demos planner_config_file:=irb910sc_planner_params.yaml sku_detection_params_file:=irb910sc_detection.yaml zenoh_config_file:=workcell_1.json5 headless:=False

IRB1300 Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_2 ros_domain_id:=2 support_package:=abb_irb1300_support robot_xacro_file:=irb1300_10_115.xacro moveit_config_package:=abb_irb1300_10_115_moveit_config controllers_file:=abb_irb1300_controllers.yaml moveit_config_file:=abb_irb1300_10_115.srdf.xacro tf_publisher_launch_file:=irb1300_tf.launch.py sku_detection_params_file:=irb1300_detection.yaml zenoh_config_file:=workcell_2.json5 headless:=False

Submit a job

Note: Set your ROS_DOMAIN_ID environment variable to that of the system orchestrator before executing the work order

place_on_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '23', work_order: '$(cat config/place_on_conveyor.json)'}}"

pick_from_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '24', work_order: '$(cat config/pick_from_conveyor.json)'}}"

Debugging

workcell

Send a request to a specific workcell, eg. test_workcell.

ros2 action send_goal /test_workcell/request nexus_orchestrator_msgs/action/WorkcellTask "$(cat config/workcell_task.yaml)" -f

mock gripper and mock detection

Gripper position from 0 to gripper_max_value:

ros2 run nexus_demos mock_gripper --ros-args -p gripper_max_value:=0.5

To transition lifecycle states

ros2 lifecycle set /mock_gripper configure
ros2 lifecycle set /mock_gripper activate

Call the action

```bash ros2 action send_goal /mock_gripper/command control_msgs/action/GripperCommand “{command: {position: 0.42}}” -f

mock vision system

Define the mock detections:

```yaml keys:

  • sku_id1

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nexus_demos

0.1.1 (2023-11-20)

0.1.0 (2023-11-06)

  • Provides test cases and a demo setup to validate core functionalities in NEXUS.

Launch files

  • launch/rmf_transporter.launch.xml
      • bidding_time_window [default: 2.0]
      • building_map_name [default: depot]
      • building_map_prefix_path [default: $(find-pkg-share nexus_demos)/config/rmf/maps/$(var building_map_name)]
      • building_map_file [default: $(var building_map_prefix_path)/$(var building_map_name).building.yaml]
      • fleet_adapter_config_file [default: $(find-pkg-share nexus_demos)/config/rmf/deliveryRobot_config.yaml]
      • nav_graph_file [default: $(var building_map_prefix_path)/nav_graphs/0.yaml]
      • gz_world_file [default: $(var building_map_prefix_path)/$(var building_map_name).world]
      • gz_model_path [default: $(var building_map_prefix_path)/models]
      • initial_map [default: L1]
      • server_uri [default: ]
      • sim_update_rate [default: 100]
      • headless [default: true]
      • use_simulator [default: true]
      • use_unique_hex_string_with_task_id [default: true]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nexus_demos at Robotics Stack Exchange

No version for distro noetic showing github. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 0.1.1
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description A framework for orchestration
Checkout URI https://github.com/osrf/nexus.git
VCS Type git
VCS Version main
Last Updated 2025-07-29
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Demo package containing system and workcell orchestrators

Additional Links

No additional links.

Maintainers

  • Teo Koon Peng

Authors

No additional authors.

nexus_demos

Launch system and workcell orchestrators and all mock nodes

The launch.py script will launch the system orchestrator and 2 workcells orchestrators (each with a IRB910SC and IRB1300 robot), along with a Zenoh bridge to link selected ROS endpoints between them. These 3 orchestrators and their accompany components will be in different ROS_DOMAIN_IDs. To launch these components individually, use the following examples given.

NOTE: The ROS_DOMAIN_ID occupied by the Zenoh bridges during launch time may be different from the domain values in the Zenoh bridge configurations. This is because the launch file overrides the domain ID of the zenoh bridges to ensure that it is same as that of the orchestrator.

Method 1: Launch system orchestrator, IRB1300 workcell and IRB910SC Workcell together with Zenoh bridge

NOTE: Before running any of these commands, you must set the rmw implmentation to cyclonedds with export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp (If testing with real hardware, specify the arguments use_fake_hardware=False, robot1_ip=<IP> and robot2_ip=<IP>)

ros2 launch nexus_demos launch.py headless:=False

Method 2: Launch System Orchestrator and 1 Workcell without Zenoh bridge (Same ROS_DOMAIN_ID)

Launch with Workcell 1

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=true run_workcell_2:=false

Launch with Workcell 2

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=false run_workcell_2:=true

Testing with real hardware

ros2 launch nexus_demos launch.py headless:=False use_zenoh_bridge:=False run_workcell_1:=True run_workcell_2:=False use_fake_hardware:=False robot1_ip:=<IP_ADDR>

Launch Orchestrators individually

System Orchestrator

ros2 launch nexus_demos control_center.launch.py ros_domain_id:=0 headless:=False

IRB910SC Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_1 ros_domain_id:=1 support_package:=abb_irb910sc_support robot_xacro_file:=irb910sc_3_45.xacro moveit_config_package:=abb_irb910sc_3_45_moveit_config controllers_file:=abb_irb910sc_controllers.yaml moveit_config_file:=abb_irb910sc_3_45.srdf.xacro tf_publisher_launch_file:=irb910sc_tf.launch.py planner_config_package:=nexus_demos planner_config_file:=irb910sc_planner_params.yaml sku_detection_params_file:=irb910sc_detection.yaml zenoh_config_file:=workcell_1.json5 headless:=False

IRB1300 Workcell

ros2 launch nexus_demos workcell.launch.py workcell_id:=workcell_2 ros_domain_id:=2 support_package:=abb_irb1300_support robot_xacro_file:=irb1300_10_115.xacro moveit_config_package:=abb_irb1300_10_115_moveit_config controllers_file:=abb_irb1300_controllers.yaml moveit_config_file:=abb_irb1300_10_115.srdf.xacro tf_publisher_launch_file:=irb1300_tf.launch.py sku_detection_params_file:=irb1300_detection.yaml zenoh_config_file:=workcell_2.json5 headless:=False

Submit a job

Note: Set your ROS_DOMAIN_ID environment variable to that of the system orchestrator before executing the work order

place_on_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '23', work_order: '$(cat config/place_on_conveyor.json)'}}"

pick_from_conveyor work order:

ros2 action send_goal /system_orchestrator/execute_order nexus_orchestrator_msgs/action/ExecuteWorkOrder "{order: {work_order_id: '24', work_order: '$(cat config/pick_from_conveyor.json)'}}"

Debugging

workcell

Send a request to a specific workcell, eg. test_workcell.

ros2 action send_goal /test_workcell/request nexus_orchestrator_msgs/action/WorkcellTask "$(cat config/workcell_task.yaml)" -f

mock gripper and mock detection

Gripper position from 0 to gripper_max_value:

ros2 run nexus_demos mock_gripper --ros-args -p gripper_max_value:=0.5

To transition lifecycle states

ros2 lifecycle set /mock_gripper configure
ros2 lifecycle set /mock_gripper activate

Call the action

```bash ros2 action send_goal /mock_gripper/command control_msgs/action/GripperCommand “{command: {position: 0.42}}” -f

mock vision system

Define the mock detections:

```yaml keys:

  • sku_id1

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nexus_demos

0.1.1 (2023-11-20)

0.1.0 (2023-11-06)

  • Provides test cases and a demo setup to validate core functionalities in NEXUS.

Launch files

  • launch/rmf_transporter.launch.xml
      • bidding_time_window [default: 2.0]
      • building_map_name [default: depot]
      • building_map_prefix_path [default: $(find-pkg-share nexus_demos)/config/rmf/maps/$(var building_map_name)]
      • building_map_file [default: $(var building_map_prefix_path)/$(var building_map_name).building.yaml]
      • fleet_adapter_config_file [default: $(find-pkg-share nexus_demos)/config/rmf/deliveryRobot_config.yaml]
      • nav_graph_file [default: $(var building_map_prefix_path)/nav_graphs/0.yaml]
      • gz_world_file [default: $(var building_map_prefix_path)/$(var building_map_name).world]
      • gz_model_path [default: $(var building_map_prefix_path)/models]
      • initial_map [default: L1]
      • server_uri [default: ]
      • sim_update_rate [default: 100]
      • headless [default: true]
      • use_simulator [default: true]
      • use_unique_hex_string_with_task_id [default: true]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nexus_demos at Robotics Stack Exchange