diff --git a/subt_ign/include/subt_ign/CommonTypes.hh b/subt_ign/include/subt_ign/CommonTypes.hh index a9ecbf33..4ba58f8a 100644 --- a/subt_ign/include/subt_ign/CommonTypes.hh +++ b/subt_ign/include/subt_ign/CommonTypes.hh @@ -76,7 +76,9 @@ namespace subt TYPE_TOOLBOX, TYPE_VALVE, TYPE_VENT, - TYPE_GAS + TYPE_GAS, + TYPE_HELMET, + TYPE_ROPE }; /// \def TeamMemberPtr diff --git a/subt_ign/launch/cave_circuit.ign b/subt_ign/launch/cave_circuit.ign index c807505d..7f8d845e 100644 --- a/subt_ign/launch/cave_circuit.ign +++ b/subt_ign/launch/cave_circuit.ign @@ -287,6 +287,41 @@ gas_4 TYPE_GAS + + + helmet_1 + TYPE_HELMET + + + helmet_2 + TYPE_HELMET + + + helmet_3 + TYPE_HELMET + + + helmet_4 + TYPE_HELMET + + + + rope_1 + TYPE_ROPE + + + rope_2 + TYPE_ROPE + + + rope_3 + TYPE_ROPE + + + rope_4 + TYPE_ROPE + + diff --git a/subt_ign/launch/cloudsim_sim.ign b/subt_ign/launch/cloudsim_sim.ign index 7ef0563c..95e6faba 100644 --- a/subt_ign/launch/cloudsim_sim.ign +++ b/subt_ign/launch/cloudsim_sim.ign @@ -362,6 +362,41 @@ gas_5 TYPE_GAS + + + helmet_1 + TYPE_HELMET + + + helmet_2 + TYPE_HELMET + + + helmet_3 + TYPE_HELMET + + + helmet_4 + TYPE_HELMET + + + + rope_1 + TYPE_ROPE + + + rope_2 + TYPE_ROPE + + + rope_3 + TYPE_ROPE + + + rope_4 + TYPE_ROPE + + diff --git a/subt_ign/src/ArtifactValidator.cc b/subt_ign/src/ArtifactValidator.cc index 99b7ed3b..1d03a038 100644 --- a/subt_ign/src/ArtifactValidator.cc +++ b/subt_ign/src/ArtifactValidator.cc @@ -110,7 +110,7 @@ class subt::ArtifactValidatorPrivate { /// \brief Map of artifact types to string representations. public: const std::array< - const std::pair, 12> kArtifactTypes + const std::pair, 14> kArtifactTypes { { {subt::ArtifactType::TYPE_BACKPACK , "TYPE_BACKPACK"}, @@ -124,7 +124,9 @@ class subt::ArtifactValidatorPrivate {subt::ArtifactType::TYPE_TOOLBOX , "TYPE_TOOLBOX"}, {subt::ArtifactType::TYPE_VALVE , "TYPE_VALVE"}, {subt::ArtifactType::TYPE_VENT , "TYPE_VENT"}, - {subt::ArtifactType::TYPE_GAS , "TYPE_GAS"} + {subt::ArtifactType::TYPE_GAS , "TYPE_GAS"}, + {subt::ArtifactType::TYPE_HELMET , "TYPE_HELMET"}, + {subt::ArtifactType::TYPE_ROPE , "TYPE_ROPE"} } }; @@ -304,7 +306,9 @@ void ArtifactValidatorPrivate::ParseArtifacts() { "toolbox", subt::ArtifactType::TYPE_TOOLBOX }, { "valve", subt::ArtifactType::TYPE_VALVE}, { "vent", subt::ArtifactType::TYPE_VENT}, - { "gas", subt::ArtifactType::TYPE_GAS} + { "gas", subt::ArtifactType::TYPE_GAS}, + { "helmet", subt::ArtifactType::TYPE_HELMET}, + { "rope", subt::ArtifactType::TYPE_ROPE} }; // Assuming 1 world per SDF, which is true for SubT. diff --git a/subt_ign/src/ConnectionValidatorPrivate.cc b/subt_ign/src/ConnectionValidatorPrivate.cc index c55924c1..1f7c94b4 100644 --- a/subt_ign/src/ConnectionValidatorPrivate.cc +++ b/subt_ign/src/ConnectionValidatorPrivate.cc @@ -72,7 +72,8 @@ bool ConnectionValidatorPrivate::Load(const std::string &_worldName) "cave_circuit", suffix); } } - else if (_worldName.find("simple") == std::string::npos) + else if (_worldName.find("simple") == std::string::npos && + _worldName.find("_qual") == std::string::npos) { ignwarn << "Unable to determine circuit number from[" << _worldName << "].\n"; diff --git a/subt_ign/src/GameLogicPlugin.cc b/subt_ign/src/GameLogicPlugin.cc index 8290ff74..f331f6be 100644 --- a/subt_ign/src/GameLogicPlugin.cc +++ b/subt_ign/src/GameLogicPlugin.cc @@ -65,7 +65,7 @@ class subt::GameLogicPluginPrivate { /// \brief Mapping between enum types and strings. public: const std::array< - const std::pair, 12> kArtifactTypes + const std::pair, 14> kArtifactTypes { { {subt::ArtifactType::TYPE_BACKPACK , "TYPE_BACKPACK"}, @@ -79,7 +79,9 @@ class subt::GameLogicPluginPrivate {subt::ArtifactType::TYPE_TOOLBOX , "TYPE_TOOLBOX"}, {subt::ArtifactType::TYPE_VALVE , "TYPE_VALVE"}, {subt::ArtifactType::TYPE_VENT , "TYPE_VENT"}, - {subt::ArtifactType::TYPE_GAS , "TYPE_GAS"} + {subt::ArtifactType::TYPE_GAS , "TYPE_GAS"}, + {subt::ArtifactType::TYPE_HELMET , "TYPE_HELMET"}, + {subt::ArtifactType::TYPE_ROPE , "TYPE_ROPE"} } }; @@ -279,10 +281,14 @@ class subt::GameLogicPluginPrivate ignition::math::Vector3d(-0.03557, -0.03509, 0.3479)}, {subt::ArtifactType::TYPE_GAS, ignition::math::Vector3d(0, 0, 0)}, + {subt::ArtifactType::TYPE_HELMET, + ignition::math::Vector3d(0, 0, 0.165)}, {subt::ArtifactType::TYPE_PHONE, ignition::math::Vector3d(0, -0.004, 0.08)}, {subt::ArtifactType::TYPE_RESCUE_RANDY, ignition::math::Vector3d(-0.071305, 0.021966, 0.39217)}, + {subt::ArtifactType::TYPE_ROPE, + ignition::math::Vector3d(0.004, -0.03, 0.095)}, {subt::ArtifactType::TYPE_VENT, ignition::math::Vector3d(0, 0, 0.138369)} }; diff --git a/subt_ign/src/VisibilityTable.cc b/subt_ign/src/VisibilityTable.cc index 76f3b868..e6dd8844 100644 --- a/subt_ign/src/VisibilityTable.cc +++ b/subt_ign/src/VisibilityTable.cc @@ -78,7 +78,8 @@ bool VisibilityTable::Load(const std::string &_worldName, bool _loadLUT) "cave_circuit", suffix); } } - else if (this->worldName.find("simple") == std::string::npos) + else if (this->worldName.find("simple") == std::string::npos && + this->worldName.find("_qual") == std::string::npos) { ignerr << "Unable to determine circuit number from[" << this->worldName << "].\n"; diff --git a/subt_ign/worlds/cave_qual.dat b/subt_ign/worlds/cave_qual.dat new file mode 100644 index 00000000..c8cd2361 Binary files /dev/null and b/subt_ign/worlds/cave_qual.dat differ diff --git a/subt_ign/worlds/cave_qual.dot b/subt_ign/worlds/cave_qual.dot new file mode 100644 index 00000000..6476567d --- /dev/null +++ b/subt_ign/worlds/cave_qual.dot @@ -0,0 +1,165 @@ +/* Visibility graph generated by dot_generator */ + +graph { + /* ==== Vertices ==== */ + + /* Base station / Staging area */ + 0 [label="0::base_station::BaseStation"]; + + 1 [label="1::Cave 3 Way 01 Lights::tile_1"]; + 2 [label="2::Cave Corner 01::tile_2"]; + 3 [label="3::Cave Corner 02::tile_3"]; + 4 [label="4::Cave Elevation::tile_4"]; + 5 [label="5::Cave Straight 01::tile_5"]; + 6 [label="6::Cave Straight 02 Lights::tile_6"]; + 7 [label="7::Cave Straight 05 Lights::tile_7"]; + 8 [label="8::Cave Vertical Shaft Lights::tile_8"]; + 9 [label="9::Cave Cavern Split 01::tile_9"]; + 10 [label="10::Cave Cavern Split 02::tile_10"]; + 11 [label="11::Cave 3 Way 01::tile_11"]; + 12 [label="12::Cave Straight 03::tile_12"]; + 13 [label="13::Cave 3 Way 01 Lights::tile_13"]; + 14 [label="14::Cave Corner 02::tile_14"]; + 15 [label="15::Cave Elevation::tile_15"]; + 16 [label="16::Cave 3 Way 01 Lights::tile_16"]; + 17 [label="17::Cave Corner 30F D Lights::tile_17"]; + 18 [label="18::Cave Corner 30F D Lights::tile_18"]; + 19 [label="19::Cave Corner 30F D Lights::tile_19"]; + 20 [label="20::Cave Corner 30F D Lights::tile_20"]; + 21 [label="21::Cave 3 Way 01 Lights::tile_21"]; + 22 [label="22::Cave Corner 30F D Lights::tile_22"]; + 23 [label="23::Cave Elevation Lights::tile_23"]; + 24 [label="24::Cave Vertical Shaft Lights::tile_24"]; + 25 [label="25::Cave Corner 01 Lights::tile_25"]; + 26 [label="26::Cave Straight 01 Lights::tile_26"]; + 27 [label="27::Cave Corner 02 Lights::tile_27"]; + 28 [label="28::Cave Elevation::tile_28"]; + 29 [label="29::Cave Straight 03::tile_29"]; + 30 [label="30::Cave 3 Way 01::tile_30"]; + 31 [label="31::Cave Corner 01::tile_31"]; + 32 [label="32::Cave 3 Way 01::tile_32"]; + 33 [label="33::Cave Elevation::tile_33"]; + 34 [label="34::Cave Straight 01::tile_34"]; + 35 [label="35::Cave Straight 02::tile_35"]; + 36 [label="36::Cave Straight 03::tile_36"]; + 37 [label="37::Cave Corner 01::tile_37"]; + 38 [label="38::Cave Corner 30 D::tile_38"]; + 39 [label="39::Cave Elevation::tile_39"]; + 40 [label="40::Cave Straight 03::tile_40"]; + 41 [label="41::Cave Straight 02::tile_41"]; + 42 [label="42::Cave Corner 01::tile_42"]; + 43 [label="43::Cave Corner 02::tile_43"]; + 44 [label="44::Cave Straight 01::tile_44"]; + 45 [label="45::Cave Straight 04::tile_45"]; + 46 [label="46::Cave Straight 04::tile_46"]; + 47 [label="47::Cave Straight 02::tile_47"]; + 48 [label="48::Cave Straight 04::tile_48"]; + 49 [label="49::Cave Straight 01::tile_49"]; + 50 [label="50::Cave Straight 03::tile_50"]; + 51 [label="51::Cave Elevation::tile_51"]; + 52 [label="52::Cave 3 Way 01 Lights::tile_52"]; + 53 [label="53::Cave Straight 03::tile_53"]; + 54 [label="54::Cave Corner 02::tile_54"]; + 55 [label="55::Cave Corner 02::tile_55"]; + 56 [label="56::Cave Elevation::tile_56"]; + 57 [label="57::Cave 3 Way 01::tile_57"]; + 58 [label="58::Cave Corner 30 D::tile_58"]; + 59 [label="59::Cave Straight 03::tile_59"]; + 60 [label="60::Cave Corner 30 D::tile_60"]; + 61 [label="61::Cave Elevation::tile_61"]; + 62 [label="62::Cave Corner 30 D::tile_62"]; + 63 [label="63::Cave Corner 01::tile_63"]; + 64 [label="64::Cave Corner 02::tile_64"]; + 65 [label="65::Cave Elevation::tile_65"]; + 66 [label="66::Cave Straight 03::tile_66"]; + 67 [label="67::Cave Straight 04::tile_67"]; + 68 [label="68::Cave Corner 01::tile_68"]; + 69 [label="69::Cave Cavern Split 01::tile_69"]; + 70 [label="70::Cave Cavern Split 02::tile_70"]; + 71 [label="71::Cave Straight 01 Lights::tile_71"]; + 72 [label="72::Cave Straight 04 Lights::tile_72"]; + 73 [label="73::Cave 3 Way 01 Lights::tile_73"]; + 74 [label="74::Cave Corner 30F D Lights::tile_74"]; + 75 [label="75::Cave Corner 30 D Lights::tile_75"]; + + /* ==== Edges ==== */ + + /* Base station */ + 0 -- 71 [label=1]; + 1 -- 6 [label=3]; + 1 -- 8 [label=3]; + 1 -- 73 [label=6]; + 2 -- 3 [label=6]; + 2 -- 6 [label=3]; + 3 -- 11 [label=6]; + 4 -- 11 [label=3]; + 4 -- 12 [label=1]; + 5 -- 52 [label=3]; + 5 -- 53 [label=1]; + 7 -- 13 [label=3]; + 7 -- 16 [label=3]; + 8 -- 13 [label=3]; + 9 -- 10 [label=3]; + 9 -- 31 [label=6]; + 9 -- 36 [label=3]; + 10 -- 46 [label=1]; + 12 -- 55 [label=3]; + 13 -- 52 [label=6]; + 14 -- 53 [label=3]; + 14 -- 56 [label=3]; + 15 -- 52 [label=3]; + 15 -- 55 [label=3]; + 16 -- 17 [label=6]; + 16 -- 18 [label=6]; + 17 -- 19 [label=6]; + 18 -- 20 [label=6]; + 19 -- 27 [label=6]; + 20 -- 21 [label=6]; + 21 -- 22 [label=6]; + 21 -- 35 [label=3]; + 22 -- 23 [label=3]; + 23 -- 25 [label=3]; + 24 -- 25 [label=3]; + 24 -- 26 [label=1]; + 27 -- 28 [label=3]; + 28 -- 29 [label=1]; + 29 -- 30 [label=3]; + 30 -- 31 [label=6]; + 30 -- 33 [label=3]; + 32 -- 34 [label=3]; + 32 -- 35 [label=3]; + 32 -- 38 [label=6]; + 33 -- 34 [label=1]; + 36 -- 37 [label=3]; + 38 -- 39 [label=3]; + 39 -- 40 [label=1]; + 40 -- 41 [label=1]; + 41 -- 42 [label=3]; + 42 -- 44 [label=3]; + 43 -- 44 [label=3]; + 43 -- 45 [label=3]; + 46 -- 47 [label=1]; + 47 -- 50 [label=1]; + 48 -- 51 [label=1]; + 49 -- 50 [label=1]; + 49 -- 51 [label=1]; + 54 -- 56 [label=3]; + 54 -- 57 [label=6]; + 57 -- 58 [label=6]; + 57 -- 62 [label=6]; + 58 -- 59 [label=3]; + 59 -- 60 [label=3]; + 60 -- 61 [label=3]; + 62 -- 64 [label=6]; + 63 -- 64 [label=6]; + 63 -- 65 [label=3]; + 65 -- 67 [label=1]; + 66 -- 67 [label=1]; + 66 -- 68 [label=3]; + 68 -- 70 [label=3]; + 69 -- 70 [label=3]; + 71 -- 73 [label=3]; + 72 -- 73 [label=3]; + 72 -- 74 [label=3]; + 74 -- 75 [label=6]; +} diff --git a/subt_ign/worlds/cave_qual.sdf b/subt_ign/worlds/cave_qual.sdf new file mode 100644 index 00000000..264abc8f --- /dev/null +++ b/subt_ign/worlds/cave_qual.sdf @@ -0,0 +1,796 @@ + + + + + + + 0.004 + 1.0 + + + + 0.1 0.1 0.1 1.0 + 0 0 0 1.0 + false + false + + + + + true + staging_area + 0 0 0 0 0 0 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Starting Area + + + + + + true + base_station + -8 0 0 0 0 -1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Base Station + + + + + artifact_origin + 10.0 0.0 0.0 0 0 0 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Fiducial + + + + + true + tile_1 + 75 0 0 0 0 -4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave 3 Way 01 Lights + + + + true + cave_cap_1 + 25 75 0 0 0 -1.57079 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Cap + + + + true + tile_2 + 75 50 0 0 -0 1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 01 + + + + true + tile_3 + 50 50 0 0 -0 -1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 02 + + + + true + tile_4 + 75 75 0 0 -0 1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Elevation + + + + true + tile_5 + 150 25 20 0 -0 -1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 01 + + + + true + tile_6 + 75 25 0 0 -0 -3.14159 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 02 Lights + + + + true + tile_7 + 125 -25 20 0 0 -4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 05 Lights + + + + true + tile_8 + 100 0 0 0 -0 -1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Vertical Shaft Lights + + + + true + tile_9 + 50 -175 30 4e-06 -0 1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Cavern Split 01 + + + + true + tile_10 + 50 -200 30 0 -0 1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Cavern Split 02 + + + + true + tile_11 + 50 75 0 0 -0 -3.14159 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave 3 Way 01 + + + + true + tile_12 + 100 75 10 0 -0 -1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 03 + + + + true + tile_13 + 125 0 20 0 -0 1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave 3 Way 01 Lights + + + + true + tile_14 + 200 25 20 0 0 -4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 02 + + + + true + tile_15 + 125 50 10 0 0 -4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Elevation + + + + true + tile_16 + 125 -50 20 0 -0 1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave 3 Way 01 Lights + + + + true + tile_17 + 100 -50 20 -0 -0 4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 30F D Lights + + + + true + tile_18 + 125 -75 20 0 -0 1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 30F D Lights + + + + true + tile_19 + 100 -75 20 0 -0 3.14159 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 30F D Lights + + + + true + tile_20 + 150 -75 20 0 -0 -1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 30F D Lights + + + + true + tile_21 + 150 -100 20 0 -0 -1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave 3 Way 01 Lights + + + + true + tile_22 + 175 -100 20 0 -0 3.14159 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 30F D Lights + + + + true + tile_23 + 181.25 -76.6747 10 0 0 -0.523594 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Elevation Lights + + + + true + tile_24 + 172.099 -42.524 10 0 -0 1.0472 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Vertical Shaft Lights + + + + true + tile_25 + 193.75 -55.024 10 0 -0 1.0472 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 01 Lights + + + + true + tile_26 + 150.449 -30.024 30 0 -0 1.0472 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 01 Lights + + + + true + cave_cap_2 + 128.798 -17.524 30 0 -0 -2.0944 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Cap + + + + true + tile_27 + 75 -75 20 0 -0 -3.14159 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 02 Lights + + + + true + tile_28 + 75 -100 20 0 0 -4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Elevation + + + + true + tile_29 + 75 -125 30 0 -0 -3.14159 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 03 + + + + true + tile_30 + 75 -150 30 0 0 -4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave 3 Way 01 + + + + true + tile_31 + 50 -150 30 0 -0 -3.14159 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 01 + + + + true + tile_32 + 150 -150 20 0 0 -4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave 3 Way 01 + + + + true + tile_33 + 100 -150 20 0 -0 -1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Elevation + + + + true + tile_34 + 125 -150 20 0 -0 -1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 01 + + + + true + tile_35 + 150 -125 20 0 -0 -3.14159 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 02 + + + + true + tile_36 + 12.5 -175 55 0 -0 1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 03 + + + + true + tile_37 + -12.5 -175 55 0 -0 -3.14159 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 01 + + + + true + cave_cap_3 + -12.5 -200 55 0 0 -4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Cap + + + + true + tile_38 + 175 -150 20 0 -0 -3.14159 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 30 D + + + + true + tile_39 + 181.691 -172.824 20 0 -0 0.523596 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Elevation + + + + true + tile_40 + 194.191 -194.475 30 0 -0 -2.618 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 03 + + + + true + tile_41 + 206.691 -216.126 30 0 -0 -2.61799 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 02 + + + + true + tile_42 + 219.191 -237.776 30 0 0 -1.04719 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 01 + + + + true + tile_43 + 262.493 -212.776 30 0 -0 2.0944 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 02 + + + + true + tile_44 + 240.842 -225.276 30 0 -0 2.0944 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 01 + + + + true + tile_45 + 274.993 -234.427 30 0 -0 0.523596 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 04 + + + + true + tile_46 + 50 -225 30 0 0 -4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 04 + + + + true + cave_cap_4 + 287.493 -256.078 30 0 -0 0.523596 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Cap + + + + true + tile_47 + 50 -250 30 0 -0 -3.14159 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 02 + + + + true + tile_48 + 50 -350 40 0 -0 -3.14159 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 04 + + + + true + tile_49 + 50 -300 30 0 0 -4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 01 + + + + true + tile_50 + 50 -275 30 0 0 -4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 03 + + + + true + tile_51 + 50 -325 30 0 0 -4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Elevation + + + + true + cave_cap_5 + 50 -375 40 0 0 -4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Cap + + + + true + tile_52 + 125 25 20 0 0 -1.57079 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave 3 Way 01 Lights + + + + true + tile_53 + 175 25 20 0 -0 -1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 03 + + + + true + tile_54 + 200 75 10 0 -0 -3.14159 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 02 + + + + true + tile_55 + 125 75 10 0 -0 1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 02 + + + + true + tile_56 + 200 50 10 0 0 -4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Elevation + + + + true + tile_57 + 225 75 10 0 0 -4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave 3 Way 01 + + + + true + tile_58 + 225 100 10 0 0 -1.57079 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 30 D + + + + true + tile_59 + 248.325 106.25 9.99999 0 0 -1.04719 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 03 + + + + true + tile_60 + 269.976 118.75 9.99999 0 -0 -2.61799 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 30 D + + + + true + tile_61 + 287.051 101.675 0 0 -0 -2.0944 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Elevation + + + + true + tile_62 + 250 75 10 0 -0 -3.14159 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 30 D + + + + true + cave_cap_6 + 308.702 89.1747 0 0 -0 1.0472 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Cap + + + + true + tile_63 + 277.901 64.1747 10 0 -0 2.0944 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 01 + + + + true + tile_64 + 256.25 51.6747 10 0 0 -1.04719 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 02 + + + + true + tile_65 + 290.401 42.5241 10 0 -0 0.523596 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Elevation + + + + true + tile_66 + 315.401 -0.777207 20 0 -0 -2.618 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 03 + + + + true + tile_67 + 302.901 20.8734 20 0 -0 0.523596 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 04 + + + + true + tile_68 + 327.901 -22.4278 20 0 0 -1.04719 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 01 + + + + true + tile_69 + 371.202 2.57216 20 4e-06 0 0.523599 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Cavern Split 01 + + + + true + tile_70 + 349.551 -9.92784 20 0 -0 0.523599 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Cavern Split 02 + + + + true + cave_cap_7 + 392.853 15.0722 20 0 -0 2.0944 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Cap + + + + true + cave_cap_8 + 352.452 35.048 45 0 -0 -2.61799 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Cap + + + + true + tile_71 + 25 0 0 0 -0 1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 01 Lights + + + + true + tile_72 + 50 -25 0 0 -0 -3.14159 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Straight 04 Lights + + + + true + tile_73 + 50 0 0 0 -0 -3.14159 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave 3 Way 01 Lights + + + + true + tile_74 + 50 -50 0 -0 -0 1.57079 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 30F D Lights + + + + true + cave_cap_9 + 67.0753 -79.5753 5e-06 0 0 -4e-06 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Cap + + + + true + tile_75 + 73.3253 -56.25 4e-06 0 -0 2.618 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Cave Corner 30 D Lights + + + + + rescue_randy_1 + 38.2 75.96 0.1 -0.07 0 1.40 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Rescue Randy Sitting + + + + + rescue_randy_2 + 144.17 -26.87 29.60 -0.01 -0 -2.82 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Rescue Randy Sitting + + + + rescue_randy_3 + 66.60 -187.81 31.13 0 0 -1.03 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Rescue Randy Sitting + + + + rescue_randy_4 + 297.88 97.04 0.16 -0.16 0 -1.78 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Rescue Randy Sitting + + + + backpack_1 + 188.25 -46.80 10.25 0.150796 0.08 -0.68 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/JanSport Backpack Red + + + + backpack_2 + 103.65 0 0.18 -0.09 0 -1.31 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/JanSport Backpack Red + + + + backpack_3 + 357.88 5.47 20.32 0 0 0 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/JanSport Backpack Red + + + + backpack_4 + 48.86 -346.54 40.19 -0.16 0.11 0.64 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/JanSport Backpack Red + + + + phone_1 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Samsung J8 Black + 115.33 -155.49 20.22 -1.702 0.105 0.288 + + + + phone_2 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Samsung J8 Black + 72.09 -112.69 30.08 -1.570796 0.03 0.0 + + + + phone_3 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Samsung J8 Black + 286.74 48.57 12 -2.0 -0.06 0.33 + + + + phone_4 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Samsung J8 Black + 148.99 -125.66 21.49 -1.93 -0.13 1.62 + + + + helmet_1 + 149.8 -158.17 20.75 0 0 2.98 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Climbing Helmet With Light + + + + helmet_2 + -1.79 -180.47 55.61 0 0.22 0.56 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Climbing Helmet With Light + + + + helmet_3 + 44.12 -30.30 1.055 0.18 -0.08 2.12 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Climbing Helmet With Light + + + + helmet_4 + 271.80 -218.32 30.35 0 -0.2 0 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Climbing Helmet With Light + + + + rope_1 + 74.762 -8.198 0.76 -0.188 -0.0017 0.0232 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Climbing Rope + + + + rope_2 + 71.87 -87.82 20.11 0.0274 0.0782 0.313 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Climbing Rope + + + + rope_3 + 41.65 -183.23 30.372 -0.174 0.032 -1.439 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Climbing Rope + + + + rope_4 + 264.69 61.629 10.238 0.155 0.168 -0.605 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Climbing Rope + + + + 0.000000 0.000000 0.000000 + + + + + + + 10 + + 0.05 + 60 + + + 0 + 0.0002 + + + + 30 + + 5 + 20 + + + 0 + 0.03 + + + + + + 0 + 0.03 + + + + + + + + +