From 9e4d9ed4d225b50c8f94182d4e5ef1ab16e73e0f Mon Sep 17 00:00:00 2001 From: Aaron Chong Date: Wed, 15 Jan 2025 16:34:56 +0800 Subject: [PATCH 1/2] Basic RMF map, using sed, while still depending on rmf_demos and rmf_demos_gz Signed-off-by: Aaron Chong --- nexus_integration_tests/CMakeLists.txt | 85 ++++++- .../config/depot/deliveryRobot_config.yaml | 46 ++++ .../launch/depot.launch.xml | 34 +++ .../launch/include/depot/depot.rviz | 229 ++++++++++++++++++ .../maps/depot/depot.building.yaml | 98 ++++++++ .../maps/depot/depot_scan.png | Bin 0 -> 4987 bytes nexus_integration_tests/package.xml | 5 + 7 files changed, 496 insertions(+), 1 deletion(-) create mode 100644 nexus_integration_tests/config/depot/deliveryRobot_config.yaml create mode 100644 nexus_integration_tests/launch/depot.launch.xml create mode 100644 nexus_integration_tests/launch/include/depot/depot.rviz create mode 100644 nexus_integration_tests/maps/depot/depot.building.yaml create mode 100644 nexus_integration_tests/maps/depot/depot_scan.png diff --git a/nexus_integration_tests/CMakeLists.txt b/nexus_integration_tests/CMakeLists.txt index ea520122..dde98451 100644 --- a/nexus_integration_tests/CMakeLists.txt +++ b/nexus_integration_tests/CMakeLists.txt @@ -115,7 +115,7 @@ add_custom_target(generate_zenoh_bridge_configs ALL COMMAND ros2 run nexus_network_configuration nexus_network_configuration -n ${nexus_network_cfg_path} -o ${zenoh_cfg_output_dir} ) -install(DIRECTORY launch config rviz scripts DESTINATION share/${PROJECT_NAME}) +install(DIRECTORY launch config rviz scripts maps DESTINATION share/${PROJECT_NAME}) # Install the zenoh config directory containing generated configs. message("zenoh_cfg_output_dir: " ${zenoh_cfg_output_dir}) install(DIRECTORY ${zenoh_cfg_output_dir} DESTINATION share/${PROJECT_NAME}/config/) @@ -177,3 +177,86 @@ if(BUILD_TESTING) endif() ament_package() + +# Modified from rmf_demos_maps +# Get absolute path of the building map +set(building_map "maps/depot/depot.building.yaml") +get_filename_component(building_map_path ${building_map} REALPATH) + +# Get the output world name +string(REGEX REPLACE "\\.[^.]*\.[^.]*$" "" no_extension_path ${building_map_path}) +string(REGEX MATCH "[^\/]+$" world_name ${no_extension_path}) + +set(output_world_name ${world_name}) +set(output_dir ${CMAKE_CURRENT_BINARY_DIR}/maps/${output_world_name}) +set(output_world_path ${output_dir}/${output_world_name}.world) +set(output_model_dir ${output_dir}/models) + +############################################################################## +# Generate Gz world and download Models +############################################################################## + +message("BUILDING WORLDFILE WITH COMMAND: ros2 run rmf_building_map_tools building_map_generator gazebo ${building_map_path} ${output_world_path} ${output_model_dir}") +if (NO_DOWNLOAD_MODELS) + add_custom_command( + DEPENDS ${building_map_path} + COMMAND ros2 run rmf_building_map_tools building_map_generator gazebo ${building_map_path} ${output_world_path} ${output_model_dir} + OUTPUT ${output_world_path} + ) +else() + message("DOWNLOADING MODELS WITH COMMAND: ros2 run rmf_building_map_tools building_map_model_downloader ${building_map_path}") + add_custom_command( + DEPENDS ${building_map_path} + COMMAND ros2 run rmf_building_map_tools building_map_generator gazebo ${building_map_path} ${output_world_path} ${output_model_dir} + COMMAND ros2 run rmf_building_map_tools building_map_model_downloader ${building_map_path} -e ~/.gazebo/models + OUTPUT ${output_world_path} + ) +endif() + +############################################################################## +# Make changes to generated world file. To be removed after +# rmf_traffic_editor#524 has been released, to use custom template files +############################################################################## + +# Insert Depot model +set(inserted_depot_phony ${output_dir}/inserted_depot_phony) +add_custom_command( + DEPENDS ${output_world_path} + COMMAND sed -i 's|<\/light>|<\/light>\\nhttps:\/\/fuel.gazebosim.org\/1.0\/OpenRobotics\/models\/Depot<\/uri>15.15 -7.525 0 0 0 0<\/pose><\/include>|g' ${output_world_path} + OUTPUT ${inserted_depot_phony} +) +add_custom_target(insert_depot_into_${output_world_name} ALL + DEPENDS ${inserted_depot_phony} +) + +# Change camera view +set(replace_camera_view_phony ${output_dir}/replace_camera_view_phony) +add_custom_command( + DEPENDS ${output_world_path} + COMMAND sed -i 's|.*<\/camera_pose>|5.2453 -7.8138 3.8271 0 0.5849817 0.2531771<\/camera_pose>|g' ${output_world_path} + OUTPUT ${replace_camera_view_phony} +) +add_custom_target(replace_camera_pose_in_${output_world_name} ALL + DEPENDS ${replace_camera_view_phony} +) + +############################################################################## +# Generate the nav graphs +############################################################################## + +set(output_nav_graphs_dir ${output_dir}/nav_graphs/) +set(output_nav_graphs_phony ${output_nav_graphs_dir}/phony) +add_custom_command( + OUTPUT ${output_nav_graphs_phony} + COMMAND ros2 run rmf_building_map_tools building_map_generator nav ${building_map_path} ${output_nav_graphs_dir} + DEPENDS ${building_map_path} ${output_world_path} +) + +add_custom_target(generate_${output_world_name}_nav_graphs ALL + DEPENDS ${output_nav_graphs_phony} +) + +install( + DIRECTORY ${output_dir} + DESTINATION share/${PROJECT_NAME}/maps +) diff --git a/nexus_integration_tests/config/depot/deliveryRobot_config.yaml b/nexus_integration_tests/config/depot/deliveryRobot_config.yaml new file mode 100644 index 00000000..2fcea949 --- /dev/null +++ b/nexus_integration_tests/config/depot/deliveryRobot_config.yaml @@ -0,0 +1,46 @@ +# FLEET CONFIG ================================================================= +# RMF Fleet parameters + +rmf_fleet: + name: "deliveryRobot" + limits: + linear: [0.7, 0.75] # velocity, acceleration + angular: [0.6, 2.0] # velocity, acceleration + profile: # Robot profile is modelled as a circle + footprint: 0.6 # radius in m + vicinity: 0.8 # radius in m + reversible: True # whether robots in this fleet can reverse + # TODO Update battery parameters with actual specs + battery_system: + voltage: 24.0 # V + capacity: 40.0 # Ahr + charging_current: 8.8 # A + mechanical_system: + mass: 70.0 # kg + moment_of_inertia: 40.0 #kgm^2 + friction_coefficient: 0.22 + ambient_system: + power: 20.0 # W + tool_system: + power: 0.0 # W + recharge_threshold: 0.10 # Battery level below which robots in this fleet will not operate + recharge_soc: 1.0 # Battery level to which robots in this fleet should be charged up to during recharging tasks + max_delay: 15.0 # allowed seconds of delay of the current itinerary before it gets interrupted and replanned + publish_fleet_state: 10.0 # Publish frequency for fleet state, ensure that it is same as robot_state_update_frequency + account_for_battery_drain: True + task_capabilities: # Specify the types of RMF Tasks that robots in this fleet are capable of performing + loop: True + delivery: True + finishing_request: "charge" # [park, charge, nothing] + robots: + deliveryRobot1: + charger: "deliveryRobotCharger1" + deliveryRobot2: + charger: "deliveryRobotCharger2" + +fleet_manager: + ip: "127.0.0.1" + port: 22012 + user: "some_user" + password: "some_password" + robot_state_update_frequency: 10.0 diff --git a/nexus_integration_tests/launch/depot.launch.xml b/nexus_integration_tests/launch/depot.launch.xml new file mode 100644 index 00000000..d39b4bf2 --- /dev/null +++ b/nexus_integration_tests/launch/depot.launch.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nexus_integration_tests/launch/include/depot/depot.rviz b/nexus_integration_tests/launch/include/depot/depot.rviz new file mode 100644 index 00000000..50fe7029 --- /dev/null +++ b/nexus_integration_tests/launch/include/depot/depot.rviz @@ -0,0 +1,229 @@ +Panels: + - Class: rviz_common/Displays + Help Height: 138 + Name: Displays + Property Tree Widget: + Expanded: + - /MarkerArray3/Topic1 + - /MarkerArray4/Topic1 + Splitter Ratio: 0.5 + Tree Height: 303 + - Class: rviz_common/Selection + Name: Selection + - Class: rviz_common/Tool Properties + Expanded: + - /2D Goal Pose1 + - /Publish Point1 + Name: Tool Properties + Splitter Ratio: 0.5886790156364441 + - Class: rviz_common/Views + Expanded: + - /Current View1 + Name: Views + Splitter Ratio: 0.5 + - Class: rmf_visualization_rviz2_plugins/SchedulePanel + Finish: 600 + Map: L1 + Name: SchedulePanel + Topic: /rmf_visualization/parameters + - Class: rmf_visualization_rviz2_plugins/DoorPanel + Name: DoorPanel + - Class: nexus_rviz_plugins/NEXUSPanel + Name: NEXUSPanel +Visualization Manager: + Class: "" + Displays: + - Alpha: 0.5 + Cell Size: 1 + Class: rviz_default_plugins/Grid + Color: 160; 160; 164 + Enabled: false + Line Style: + Line Width: 0.029999999329447746 + Value: Lines + Name: Grid + Normal Cell Count: 0 + Offset: + X: 0 + Y: 0 + Z: 0 + Plane: XY + Plane Cell Count: 10 + Reference Frame: + Value: false + - Class: rviz_default_plugins/MarkerArray + Enabled: true + Name: MarkerArray + Namespaces: + body: true + name: true + nose: true + Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /fleet_markers + Value: true + - Class: rviz_default_plugins/MarkerArray + Enabled: true + Name: MarkerArray + Namespaces: + {} + Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /schedule_markers + Value: true + - Class: rviz_default_plugins/MarkerArray + Enabled: true + Name: MarkerArray + Namespaces: + deliveryRobot/labels/L1: true + deliveryRobot/lanes/L1: true + deliveryRobot/waypoints/L1: true + Topic: + Depth: 5 + Durability Policy: Transient Local + History Policy: Keep Last + Reliability Policy: Reliable + Value: /map_markers + Value: true + - Class: rviz_default_plugins/MarkerArray + Enabled: true + Name: MarkerArray + Namespaces: + coe_door: true + coe_door_text: true + hardware_door: true + hardware_door_text: true + main_door: true + main_door_text: true + Topic: + Depth: 5 + Durability Policy: Transient Local + History Policy: Keep Last + Reliability Policy: Reliable + Value: /building_systems_markers + Value: true + - Alpha: 0.699999988079071 + Binary representation: false + Binary threshold: 100 + Class: rviz_default_plugins/Map + Color Scheme: map + Draw Behind: true + Enabled: true + Name: Map + Topic: + Depth: 5 + Durability Policy: Transient Local + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /floorplan + Update Topic: + Depth: 5 + Durability Policy: Transient Local + History Policy: Keep Last + Reliability Policy: Reliable + Value: /floorplan_updates + Use Timestamp: false + Value: true + - Class: rviz_default_plugins/MarkerArray + Enabled: true + Name: MarkerArray + Namespaces: + body: true + name: true + Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /workcell_markers + Value: true + Enabled: true + Global Options: + Background Color: 48; 48; 48 + Fixed Frame: map + Frame Rate: 30 + Name: root + Tools: + - Class: rviz_default_plugins/Interact + Hide Inactive Objects: true + - Class: rviz_default_plugins/MoveCamera + - Class: rviz_default_plugins/Select + - Class: rviz_default_plugins/FocusCamera + - Class: rviz_default_plugins/Measure + Line color: 128; 128; 0 + - Class: rviz_default_plugins/SetInitialPose + Covariance x: 0.25 + Covariance y: 0.25 + Covariance yaw: 0.06853891909122467 + Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /initialpose + - Class: rviz_default_plugins/SetGoal + Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /goal_pose + - Class: rviz_default_plugins/PublishPoint + Single click: true + Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /clicked_point + Transformation: + Current: + Class: rviz_default_plugins/TF + Value: true + Views: + Current: + Angle: 0 + Class: rviz_default_plugins/TopDownOrtho + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Invert Z Axis: false + Name: Current View + Near Clip Distance: 0.009999999776482582 + Scale: 74.29730224609375 + Target Frame: + Value: TopDownOrtho (rviz_default_plugins) + X: 14.163299560546875 + Y: -7.102552890777588 + Saved: ~ +Window Geometry: + Displays: + collapsed: false + DoorPanel: + collapsed: false + Height: 1215 + Hide Left Dock: false + Hide Right Dock: true + NEXUSPanel: + collapsed: false + QMainWindow State: 000000ff00000000fd0000000400000000000001ff00000465fc020000000afb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073000000006e00000191000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fc0000003d00000341000002080100001cfa000000000100000003fb0000001a005300630068006500640075006c006500500061006e0065006c0100000000ffffffff0000018e00fffffffb000000120044006f006f007200500061006e0065006c0100000000ffffffff0000015800fffffffb000000120052004d0046002000500061006e0065006c0100000000000003340000000000000000fb00000014004e004500580055005300500061006e0065006c01000003840000011e0000009c00ffffff000000010000015f00000765fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000006e00000765000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d006501000000000000045000000000000000000000064f0000046500000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + SchedulePanel: + collapsed: false + Selection: + collapsed: false + Tool Properties: + collapsed: false + Views: + collapsed: true + Width: 2132 + X: 0 + Y: 27 diff --git a/nexus_integration_tests/maps/depot/depot.building.yaml b/nexus_integration_tests/maps/depot/depot.building.yaml new file mode 100644 index 00000000..37b4119d --- /dev/null +++ b/nexus_integration_tests/maps/depot/depot.building.yaml @@ -0,0 +1,98 @@ +coordinate_system: reference_image +crowd_sim: + agent_groups: + - {agents_name: [deliveryRobot1, deliveryRobot2], agents_number: 2, group_id: 0, profile_selector: external_agent, state_selector: external_static, x: 0, y: 0} + agent_profiles: + - {ORCA_tau: 1, ORCA_tauObst: 0.40000000000000002, class: 1, max_accel: 0, max_angle_vel: 0, max_neighbors: 10, max_speed: 0, name: external_agent, neighbor_dist: 5, obstacle_set: 1, pref_speed: 0, r: 0.25} + enable: 0 + goal_sets: [] + model_types: [] + obstacle_set: {class: 1, file_name: L1_navmesh.nav, type: nav_mesh} + states: + - {final: 1, goal_set: -1, name: external_static, navmesh_file_name: ""} + transitions: [] + update_time_step: 0.10000000000000001 +graphs: + {} +levels: + L1: + drawing: + filename: depot_scan.png + elevation: 0 + lanes: + - [14, 15, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [14, 18, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [19, 15, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [22, 17, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [20, 22, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [21, 22, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [22, 23, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [17, 16, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [16, 24, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [24, 25, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [15, 26, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [26, 27, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [27, 23, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [16, 28, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [23, 29, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [29, 30, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [29, 18, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [24, 31, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [31, 18, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [32, 33, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [33, 34, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [34, 35, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [35, 36, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [25, 33, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [34, 18, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + layers: + {} + measurements: + - [0, 1, {distance: [3, 30.199999999999999]}] + models: + - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 152.75, y: 95.497, yaw: 3.1415999999999999, z: 0} + - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 152.67400000000001, y: 114.333, yaw: 3.1415999999999999, z: 0} + - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 152.773, y: 133.21299999999999, yaw: 3.1415999999999999, z: 0} + - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 152.874, y: 171.666, yaw: 3.1415999999999999, z: 0} + - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 152.941, y: 209.636, yaw: -3.1415999999999999, z: 0} + - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 152.941, y: 190.61699999999999, yaw: 3.1415999999999999, z: 0} + vertices: + - [0.104, 307.17000000000002, 0, ""] + - [604.029, 307.00799999999998, 0, ""] + - [2.0099999999999998, 1.994, 0, ""] + - [602.91899999999998, 1.0029999999999999, 0, ""] + - [603.96900000000005, 301.74000000000001, 0, ""] + - [1.7090000000000001, 304.33499999999998, 0, ""] + - [147.125, 72.120000000000005, 0, ""] + - [157.90799999999999, 72.030000000000001, 0, ""] + - [158.08799999999999, 82.813999999999993, 0, ""] + - [146.76499999999999, 82.903999999999996, 0, ""] + - [147.178, 222.09899999999999, 0, ""] + - [158.00399999999999, 222.04900000000001, 0, ""] + - [158.05500000000001, 233.12899999999999, 0, ""] + - [147.02600000000001, 233.02699999999999, 0, ""] + - [266.71499999999997, 281.97899999999998, 0, ""] + - [336.75999999999999, 281.38200000000001, 0, ""] + - [386.298, 26.616, 0, ""] + - [531.37300000000005, 25.829000000000001, 0, ""] + - [269.13, 166.73500000000001, 0, ""] + - [336.38900000000001, 243.58099999999999, 0, "", {is_holding_point: [4, true]}] + - [565.23000000000002, 112.59399999999999, 0, deliveryRobotCharger1, {is_charger: [4, true], is_holding_point: [4, true], is_parking_spot: [4, true], spawn_robot_name: [1, deliveryRobot1], spawn_robot_type: [1, DeliveryRobot]}] + - [565.84900000000005, 136.12799999999999, 0, deliveryRobotCharger2, {is_charger: [4, true], is_holding_point: [4, true], is_parking_spot: [4, true], spawn_robot_name: [1, deliveryRobot2], spawn_robot_type: [1, DeliveryRobot]}] + - [531.54300000000001, 124.38500000000001, 0, ""] + - [530.75400000000002, 166.578, 0, ""] + - [312.75099999999998, 26.198, 0, ""] + - [183.06100000000001, 26.294, 0, ""] + - [564.48400000000004, 281.22500000000002, 0, ""] + - [564.399, 166.97300000000001, 0, ""] + - [386.291, 67.531999999999996, 0, "", {is_holding_point: [4, true]}] + - [448.29300000000001, 167.16200000000001, 0, ""] + - [448.29300000000001, 197.09399999999999, 0, "", {is_holding_point: [4, true]}] + - [313.17000000000002, 124.905, 0, ""] + - [169.52799999999999, 94.926000000000002, 0, workcell_1, {is_holding_point: [4, true], is_parking_spot: [4, false], pickup_dispenser: [1, workcell_1]}] + - [182.399, 94.969999999999999, 0, ""] + - [182.173, 151.29400000000001, 0, ""] + - [182.316, 208.959, 0, ""] + - [169.35300000000001, 209.273, 0, workcell_2, {dropoff_ingestor: [1, workcell_2], is_holding_point: [4, true], is_parking_spot: [4, false], pickup_dispenser: [1, workcell_2]}] +lifts: {} +name: depot diff --git a/nexus_integration_tests/maps/depot/depot_scan.png b/nexus_integration_tests/maps/depot/depot_scan.png new file mode 100644 index 0000000000000000000000000000000000000000..bfc74d938e4c3328a61eb6b8226fbbedf2d3b76a GIT binary patch literal 4987 zcmXw-2Q(aE*T+|j)qB(gi>ONwHAsXNL`y{7MU)Vo-5}9|D9ehnT8Q4FZgji45WPn4 zu@(_T5Ygk^yzlp&Gc#wNd!L#4-8tv}=l@K!k-~#lj*gpGulTpU~5$S%CyXyyzEur8au_55#nuI9T)MXQF&=w zAOHXwmVY}5AS0857^HluqYt6nA|a&|;iHO4mj?itc62n=pT3&kwSv}ci_q>A3`9Pi zzhZtmpXj32@kxbeXO=2^K^1{G0B~zSUC1NvJ?y=`l6@u_kL&p%y_vK7sNVM1)aXaE zrCJ-;BNFR-=0WytdLC+0zY=~>{S8blkdK?{Vz|<$nAe)t)B>Yw;B82$XU zZ%5A8&gmym8`Dm9!jB5CU-X0IC!REN?VeAV56sOp(8&krgafl4UgKg0DxLn-_Y=)j z=nw}TlQ+ERl=iTF1yNz$QbH5>5rgQJVUeNe7oFrG?cA2sq|^cs`*ZQqee-Fj71dDI zw#|4hZ|hYQO*aIt0Mp68i45yQpRzA^hE8X{Q|5Hec(UMit0ed4 z+aJ^ad8#5>hHd0Zx>>oGmU$E>bGkCtsAD=S*KeXbWtJDiA(c`7hgX?dwP=1G6`#iZ<{ozwth+rRKXp27Iy0vxViOr z+XiA6f_7^QgyJMPC@!TVzkjSpoC2AaKyo7BnY0oinrtPU)}T+_7PUGcec(qfx8jh8 z5;M|>fsgO=89y#gmO#Z|LIR-hL!KHTq*;L$Np~p#Ab=bPX>o|A2s+MNm}8Ul37;siP>?Shf8U`4^#>oEd{>UW zUk*r4$G66o!trrs4tlYu!_ z4SIq2sSYbyQ??X&*Cbm@_(mUb{Oymj5bipm^!Jlc4JM<~dJXt)$rI|c>Rx1s%eq+% zNvUz}t%!`^v<=X;HP+DEB8Ar)zZUaymaa@ecQATK{FwqdFwZUNj0bu2qMcyM$n+7= zlJXbJhx`xVJ~!fll^AJ~j-G+71vd!a=N1je$B5zckrY$(dsTy#_S8KY`m`nLGhWWg ziceuYaxE|Q!J+XAT7JhaIfOHvh$0o{Eg2@@UZRz%3ub4v<%uJ_I{t)YHJ}bgiXgk# zKE`tl>C#ps9|6ClSMO1)YJFdK(sGmj>QCiD7kut;b?E~1->nOxK4ZOj5xKl03R(3s zM49fFJ7aRnzJHd&Q8%`k4gg=1R`jU**TdF5gRdqJ%8lRjV5C@Qc&D;$49DW-Qtt6L z2vRcJ_}$qbK^eQVwRxFNJXhX#orl*Y(p|Pt~=w96N?})yLSdu5Qs)$xo{`H7`!ub{iyxJJQA@S z9^c|%-O;J2fD#s`MARb4K!Cj&)onqLsX-|kju{WLIE5rpL?Z%-jR|KGWLF1dY8Vnb z_2vJM;Y{Sj9C0HSGzR~N@^5ORHt~FtCCt zn#BvE$y`r`8Zi?Ni;*YXk=uPf;Rje19k>-`RD*5y2-rn3EG(OkC>Ml(n(>M%4$S;9 zwCf)E5{L*zF2_!M43X&{0-TBUH@W&SWDLyw50S_LW+qbq7lL^BUkz}k?x<(s*@|?r z{|c#SrfGsm=GA3si;AvGja8{7#?CoD>{zIv`LTh&C{I7YR2;4E;v&n%N~6evYR;IK z@bm(55d69JN{hD}qDd^?#~P7?o`$Z*V>~E@@?*wAK%`|MtzMl{)UR7|b5|{$!JM2M5&UK7 zn$k!%B(v8P(&EuTQeACZyLr8j^vRf=)pW+7z|(@49E^Ehl9RbMCfQpdU-BDErsyrGdBi--8S)MOO59SLZyx_S5mwTD*Fz+P zk*^Q{3e^m{`U~V2i58;RxF*|O&^K}yamx-!^ERB#Uese-zK_ndk1+M&^U$|lX`2sz zsXQ439zVKxA_a&_@NM=v!QFf~~_SUN6jjH%_ zmnN5RvxsTY$ejG(ENjy>s>56(+Qh@uyT)DejmNGBeLsGUmV1|WAJ0MTkQNG2F`C*`&M7GHFUa-uGA)X!X&D}xob9`E+|GjqXqNDP5+S5{F(S%fc^;SjS7tZJ z22?j~+DjCzql>&woZjwO-f=TO48-h9-<-6#)Aa&=&NAbEks72Bk-27|g8>uD3=8Qy zCo(TBMwL|%iVkV1r>utADucs~_wB8f-jY1I86$+7FPyG>AGV+fthKE~%DAbhuX=P()ww6&yHoqK1{g_Yuayd!c4^jXZSowti;BA>x+m>|11J#&@;j*~KC>ywm~ z*;m&TqTma2nPgOouS9$;g|b>={xnx@);pYKZm39fsvq2$G&!BHw>r{3Cl5Tyc@<@_ z*WnR>>b^DTBiKrx^($~~30pa8<2bQd{KwMZsangf)#lxjse0(3jG>Q7S0fbvZj_9W zNWMJn}t(72B@rXR+JKAz_)fY=zxmni!?^B=_d9Id{at$Y%bF*(> z990RMnhS>swx3 z@*TW~F2_OGfbSVTaJKC>4J)2Pk33J44!Mu99!_cD=A7Or#_F0b$3c;_05-lLX~?}*2c#~ssVidEc2HDgWllO;^a>s zJ-@S&cB`(oLnQZ>&rqPU0M4?2@yu{ZCyFP6FwYomG))SgQ7Wc6|9tS;OSCP0cS4QP zV#1Yf0dfBNM(`LoJNS5WIkv5p71#J(o;}S!VW|ju5#|{!K*I>#jct>{@|i@vq@*86 zf^l;k_&`2!Bah17a^G)p-l#ZK!J9{DHDZVV1}0grRm}JvrqRsE%c?Ky+N*lmg-btJ znV)c`xCNNw%t?h#fl-yrN@D+OK`G{pm$+aTo4Rr0?+hqE4><{VMA3*9}R9 zrsK{N2Su1Z`c}U-WB!Ja_lOYvrN zOXu9JzI)#HmjdXhd}o6TLcL7QKWO?eFhX17kIlpaihfhbJo6V`DHqRY>cV@^&`n!$74?mLdjnr@32%zBD-BrR6IEIYLmx?? zpD4I-*7n&6WIc(B_KxWYijMz*)$S#b8lC@z+dNCZlGrvwq}e~xR|(v_md;!DS3IC= zNow6CUMLAN(y)=}6u|^6&ZpfX{Cul&^Tqzgmx#uc-F|$&Pkf6d6TO6M(ezg%i^wSI zx8=!SN_#VXHe1oNJys{IGTHQMSzmg7hJX0bwYZqD_V~(?s#lx?ZM#^*poVyAJ@QOW zXo#*$KFm5PWl&nex>$CKrpiCulI@p}YX!m8lI0b)BV#;U`Rwe{ODWDwZV&5OktXK0 zoD5dFIePFn4TXuh*lfmR^QjT-auucK%jhcrGkNzInexus_endpoints nexus_network_configuration + rmf_building_map_tools ament_cmake @@ -42,6 +43,10 @@ nexus_workcell_orchestrator nexus_zenoh_bridge_dds_vendor + + rmf_demos + rmf_demos_gz + ament_cmake_catch2 ament_index_cpp rcpputils From a8727dc3235ddf4c6dc6cf23ffe4433f2937baac Mon Sep 17 00:00:00 2001 From: Aaron Chong Date: Wed, 15 Jan 2025 22:09:49 +0800 Subject: [PATCH 2/2] Revamped map Signed-off-by: Aaron Chong --- nexus_integration_tests/CMakeLists.txt | 2 +- .../maps/depot/depot.building.yaml | 140 +++++++++++------- 2 files changed, 88 insertions(+), 54 deletions(-) diff --git a/nexus_integration_tests/CMakeLists.txt b/nexus_integration_tests/CMakeLists.txt index dde98451..2e1404cf 100644 --- a/nexus_integration_tests/CMakeLists.txt +++ b/nexus_integration_tests/CMakeLists.txt @@ -233,7 +233,7 @@ add_custom_target(insert_depot_into_${output_world_name} ALL set(replace_camera_view_phony ${output_dir}/replace_camera_view_phony) add_custom_command( DEPENDS ${output_world_path} - COMMAND sed -i 's|.*<\/camera_pose>|5.2453 -7.8138 3.8271 0 0.5849817 0.2531771<\/camera_pose>|g' ${output_world_path} + COMMAND sed -i 's|.*<\/camera_pose>|1.6679 -8.2494 4.3953 0 0.4919176 0<\/camera_pose>|g' ${output_world_path} OUTPUT ${replace_camera_view_phony} ) add_custom_target(replace_camera_pose_in_${output_world_name} ALL diff --git a/nexus_integration_tests/maps/depot/depot.building.yaml b/nexus_integration_tests/maps/depot/depot.building.yaml index 37b4119d..8e203e69 100644 --- a/nexus_integration_tests/maps/depot/depot.building.yaml +++ b/nexus_integration_tests/maps/depot/depot.building.yaml @@ -20,42 +20,59 @@ levels: filename: depot_scan.png elevation: 0 lanes: - - [14, 15, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [14, 18, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [19, 15, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [22, 17, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [20, 22, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [21, 22, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [22, 23, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [17, 16, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [16, 24, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [24, 25, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [15, 26, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [26, 27, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [27, 23, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [16, 28, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [23, 29, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [29, 30, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [29, 18, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [24, 31, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [31, 18, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [14, 22, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [22, 15, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - [32, 33, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [33, 34, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [34, 35, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [35, 36, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [25, 33, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] - - [34, 18, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [33, 22, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [32, 34, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [33, 39, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [39, 18, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [39, 23, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [23, 21, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [23, 40, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [40, 20, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [22, 41, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [29, 41, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [41, 42, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [42, 30, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [42, 43, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [43, 31, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [32, 44, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [44, 16, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [44, 24, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [24, 17, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [24, 45, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [45, 19, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [34, 46, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [46, 25, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [46, 26, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [26, 27, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [26, 47, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [47, 28, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [32, 48, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [33, 49, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [40, 50, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [50, 51, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [51, 45, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [51, 35, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [50, 36, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [43, 52, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [52, 50, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [52, 37, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [47, 53, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [53, 51, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] + - [53, 38, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, ""], speed_limit: [3, 0]}] layers: {} measurements: - [0, 1, {distance: [3, 30.199999999999999]}] models: - - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 152.75, y: 95.497, yaw: 3.1415999999999999, z: 0} - - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 152.67400000000001, y: 114.333, yaw: 3.1415999999999999, z: 0} - - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 152.773, y: 133.21299999999999, yaw: 3.1415999999999999, z: 0} - - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 152.874, y: 171.666, yaw: 3.1415999999999999, z: 0} - - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 152.941, y: 209.636, yaw: -3.1415999999999999, z: 0} - - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 152.941, y: 190.61699999999999, yaw: 3.1415999999999999, z: 0} + - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 172.245, y: 77.856999999999999, yaw: -1.5708, z: 0} + - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 202.22999999999999, y: 77.543999999999997, yaw: -1.5708, z: 0} + - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 233.27799999999999, y: 77.787000000000006, yaw: -1.5708, z: 0} + - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 233.08099999999999, y: 227.29900000000001, yaw: -1.5708, z: 0} + - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 170.91800000000001, y: 227.88, yaw: -1.5708, z: 0} + - {dispensable: false, model_name: OpenRobotics/FoodCourtTable1, name: OpenRobotics/FoodCourtTable1, static: true, x: 200.86500000000001, y: 227.678, yaw: -1.5708, z: 0} vertices: - [0.104, 307.17000000000002, 0, ""] - [604.029, 307.00799999999998, 0, ""] @@ -71,28 +88,45 @@ levels: - [158.00399999999999, 222.04900000000001, 0, ""] - [158.05500000000001, 233.12899999999999, 0, ""] - [147.02600000000001, 233.02699999999999, 0, ""] - - [266.71499999999997, 281.97899999999998, 0, ""] - - [336.75999999999999, 281.38200000000001, 0, ""] - - [386.298, 26.616, 0, ""] - - [531.37300000000005, 25.829000000000001, 0, ""] - - [269.13, 166.73500000000001, 0, ""] - - [336.38900000000001, 243.58099999999999, 0, "", {is_holding_point: [4, true]}] - - [565.23000000000002, 112.59399999999999, 0, deliveryRobotCharger1, {is_charger: [4, true], is_holding_point: [4, true], is_parking_spot: [4, true], spawn_robot_name: [1, deliveryRobot1], spawn_robot_type: [1, DeliveryRobot]}] - - [565.84900000000005, 136.12799999999999, 0, deliveryRobotCharger2, {is_charger: [4, true], is_holding_point: [4, true], is_parking_spot: [4, true], spawn_robot_name: [1, deliveryRobot2], spawn_robot_type: [1, DeliveryRobot]}] - - [531.54300000000001, 124.38500000000001, 0, ""] - - [530.75400000000002, 166.578, 0, ""] - - [312.75099999999998, 26.198, 0, ""] - - [183.06100000000001, 26.294, 0, ""] - - [564.48400000000004, 281.22500000000002, 0, ""] - - [564.399, 166.97300000000001, 0, ""] - - [386.291, 67.531999999999996, 0, "", {is_holding_point: [4, true]}] - - [448.29300000000001, 167.16200000000001, 0, ""] - - [448.29300000000001, 197.09399999999999, 0, "", {is_holding_point: [4, true]}] - - [313.17000000000002, 124.905, 0, ""] - - [169.52799999999999, 94.926000000000002, 0, workcell_1, {is_holding_point: [4, true], is_parking_spot: [4, false], pickup_dispenser: [1, workcell_1]}] - - [182.399, 94.969999999999999, 0, ""] - - [182.173, 151.29400000000001, 0, ""] - - [182.316, 208.959, 0, ""] - - [169.35300000000001, 209.273, 0, workcell_2, {dropoff_ingestor: [1, workcell_2], is_holding_point: [4, true], is_parking_spot: [4, false], pickup_dispenser: [1, workcell_2]}] + - [115.205, 288.38099999999997, 0, deliveryRobotCharger1, {is_charger: [4, true], is_holding_point: [4, true], is_parking_spot: [4, true], spawn_robot_name: [1, deliveryRobot1], spawn_robot_type: [1, DeliveryRobot]}] + - [140.63999999999999, 288.38099999999997, 0, deliveryRobotCharger2, {is_charger: [4, true], is_holding_point: [4, true], is_parking_spot: [4, true], spawn_robot_name: [1, deliveryRobot2], spawn_robot_type: [1, DeliveryRobot]}] + - [172.816, 93.954999999999998, 0, workcell_1, {dropoff_ingestor: [1, workcell_1], is_holding_point: [4, false], is_parking_spot: [4, false], pickup_dispenser: [1, workcell_1]}] + - [203.01499999999999, 93.954999999999998, 0, workcell_2, {dropoff_ingestor: [1, workcell_2], is_holding_point: [4, false], is_parking_spot: [4, false], pickup_dispenser: [1, workcell_2]}] + - [171.20500000000001, 211.53, 0, workcell_4] + - [233.88499999999999, 94.088999999999999, 0, workcell_3] + - [232.946, 210.72399999999999, 0, workcell_6] + - [201.00200000000001, 210.99299999999999, 0, workcell_5] + - [129.33600000000001, 263.25999999999999, 0, ""] + - [201.50200000000001, 191.55000000000001, 0, ""] + - [202.22999999999999, 112.71599999999999, 0, ""] + - [172.14500000000001, 61.473999999999997, 0, ""] + - [202.95699999999999, 45.524999999999999, 0, ""] + - [202.61199999999999, 61.340000000000003, 0, ""] + - [233.61699999999999, 61.473999999999997, 0, ""] + - [171.87700000000001, 244.279, 0, ""] + - [201.53899999999999, 244.279, 0, ""] + - [234.01900000000001, 244.00999999999999, 0, ""] + - [129.02199999999999, 112.849, 0, ""] + - [129.02199999999999, 192.608, 0, ""] + - [128.39400000000001, 47.220999999999997, 0, ""] + - [277.78199999999998, 112.36499999999999, 0, "", {is_holding_point: [4, true], is_parking_spot: [4, true]}] + - [277.17099999999999, 190.756, 0, "", {is_holding_point: [4, true], is_parking_spot: [4, true]}] + - [276.28899999999999, 261.47699999999998, 0, "", {is_holding_point: [4, true], is_parking_spot: [4, true]}] + - [271.67399999999998, 33.701999999999998, 0, "", {is_holding_point: [4, true], is_parking_spot: [4, true]}] + - [170.51900000000001, 191.94900000000001, 0, ""] + - [232.31899999999999, 191.471, 0, ""] + - [170.75800000000001, 262.577, 0, ""] + - [201.06100000000001, 262.577, 0, ""] + - [233.989, 261.86099999999999, 0, ""] + - [173.14400000000001, 112.73, 0, ""] + - [234.70500000000001, 112.492, 0, ""] + - [172.667, 46.874000000000002, 0, ""] + - [233.751, 45.680999999999997, 0, ""] + - [108.16800000000001, 113.374, 0, "", {is_holding_point: [4, true], is_parking_spot: [4, true]}] + - [106.72, 192.43000000000001, 0, "", {is_holding_point: [4, true], is_parking_spot: [4, true]}] + - [257.82799999999997, 191.16300000000001, 0, ""] + - [257.55700000000002, 112.70399999999999, 0, ""] + - [258.10000000000002, 261.74900000000002, 0, ""] + - [252.398, 44.832999999999998, 0, ""] lifts: {} name: depot