Posted by @Samaleke:
@mxgrey, I was able to reproduce the same issue in simulation using two TurtleBots. Below is the navigation graph for reference
building_name: turtle doors: {} levels: L1: lanes: - - 0 - 1 - {orientation_constraint: backward, undock_name: pgv_dock2} - - 1 - 0 - {dock_name: pgv_dock2, orientation_constraint: forward} - - 1 - 2 - {} - - 2 - 1 - {} - - 2 - 3 - {} - - 3 - 2 - {} - - 3 - 4 - {} - - 4 - 3 - {} - - 4 - 5 - {dock_name: pgv_dock1, orientation_constraint: forward} - - 5 - 4 - {orientation_constraint: backward, undock_name: pgv_dock1} - - 3 - 6 - {} - - 6 - 3 - {} - - 3 - 7 - {} - - 7 - 3 - {} - - 7 - 8 - {} - - 8 - 7 - {} vertices: - - 11.998353167212343 - -8.648812908032232 - {dock_name: pgv_dock2, name: pgv_dock2} - - 11.270853020173702 - -8.648812908032232 - {name: wp2} - - 10.47451232183818 - -8.648812908032232 - {name: wp1} - - 10.47451232183818 - -9.798655086556748 - {name: wp4} - - 11.270853020173702 - -9.798655086556748 - {name: wp5} - - 11.998353167212343 - -9.798655086556748 - {dock_name: pgv_dock1, name: pgv_dock1} - - 10.47451232183818 - -11.112124806399121 - {is_charger: true, is_parking_spot: true, name: robot1_parking} - - 9.49439684749152 - -9.798655086556748 - {name: wp3} - - 9.49439684749152 - -11.098226713980434 - {is_charger: true, is_parking_spot: true, name: robot2_parking} lifts: {}
Here is the building file:
coordinate_system: reference_image crowd_sim: agent_groups: - {agents_name: [], agents_number: 0, 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: turtlebot3_world.png elevation: 0 lanes: - [2, 3, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, backward], speed_limit: [3, 0]}] - [3, 4, {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]}] - [4, 5, {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]}] - [5, 6, {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]}] - [6, 7, {bidirectional: [4, true], demo_mock_floor_name: [1, ""], demo_mock_lift_name: [1, ""], graph_idx: [2, 0], mutex: [1, ""], orientation: [1, forward], speed_limit: [3, 0]}] - [5, 8, {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]}] - [5, 9, {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]}] - [9, 10, {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, 5.0999999999999996]}] vertices: - [200.69, 132.85900000000001, 0, ""] - [200.69, 234.87299999999999, 0, ""] - [240, 173, 0, pgv_dock2, {dock_name: [1, pgv_dock2]}] - [225.44800000000001, 173, 0, wp2] - [209.51900000000001, 173, 0, wp1] - [209.51900000000001, 196, 0, wp4] - [225.44800000000001, 196, 0, wp5] - [240, 196, 0, pgv_dock1, {dock_name: [1, pgv_dock1]}] - [209.51900000000001, 222.273, 0, robot1_parking, {is_charger: [4, true], is_parking_spot: [4, true]}] - [189.91399999999999, 196, 0, wp3] - [189.91399999999999, 221.995, 0, robot2_parking, {is_charger: [4, true], is_parking_spot: [4, true]}] lifts: {} name: turtle
The issue can be consistently reproduced by sending a patrol request between pgv_dock1 and robot1_parking 100 times for the first robot, and between pgv_dock2 and robot2_parking 100 times for the second robot.