diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/.gitignore b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/.gitignore new file mode 100644 index 00000000..811af414 --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/.gitignore @@ -0,0 +1,3 @@ +model.sdf.urdf +meshes/*.blend +meshes/*.blend1 \ No newline at end of file diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/CMakeLists.txt b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/CMakeLists.txt new file mode 100644 index 00000000..dc278a84 --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.10) +project(ctu_cras_norlab_balloon_sensor_config_1) + +find_package(catkin REQUIRED) + +catkin_package() + +install(DIRECTORY launch meshes urdf worlds + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) + +install(FILES model.sdf model.config + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) + +install(PROGRAMS + scripts/print_robot_urdf + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/scripts) diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/README.md b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/README.md new file mode 100644 index 00000000..ded53200 --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/README.md @@ -0,0 +1,21 @@ +# CTU\_CRAS\_NORLAB\_BALLOON\_SENSOR\_CONFIG\_1 + +This package contains sensor config 1 of CTU-CRAS-Norlab Helium balloon. +It is a passive robot that is tethered to a UGV via a reel and has one wide-angle +fisheye camera, 3 lights, battery and a wifi-enabled micro board that is able to send the +images to the UGV. + +The tether length is 15 m. + +This robot requires the Buoyancy world plugin for it to actually float. + +The model is connected to the UGVs as other marsupials, but this one should never be detached! + +## Model files management + +This package follows a different workflow for managing SDF and URDF models of the robot than the suggested one. The only and main source of model data is `urdf/trailer.xacro` file and the files it includes. + +To get the URDF model of the robot, call `scripts/print_robot_urdf` script which prints the robot URDF on stdout. This script is used in `launch/description.launch`. + +The SDF model is a regular file committed to this package, but its updates are not +to be done manually. To change the robot model, make changes in the Xacro, and then run script `scripts/update_robot_sdf`, which updates the `model.sdf` file in this repo. The change can then be commited. \ No newline at end of file diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/launch/description.launch b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/launch/description.launch new file mode 100644 index 00000000..15503c18 --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/launch/description.launch @@ -0,0 +1,6 @@ + + + + + + diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/launch/example.ign b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/launch/example.ign new file mode 100644 index 00000000..ae81ba0f --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/launch/example.ign @@ -0,0 +1,195 @@ + + + +<% + #require_relative 'spawner' + _base_dir = defined?(base_dir) ? base_dir.tr('"', '') : File.realpath(File.join(File.dirname(__FILE__), "..")) + load File.join(_base_dir, "launch", "spawner.rb") + + # Modify these as needed + $enableGroundTruth = true + $headless = local_variables.include?(:headless) ? :headless : false + +%> + +<% + unless local_variables.include?(:robotName) + raise "missing parameters. robotName is a required parameter" + end + + # This assumes that this launch file is in a directory below the model + modelURI = File.expand_path(_base_dir, File.dirname(__FILE__)) + $worldName = 'example' + worldFile = File.join(File.expand_path("../worlds", File.dirname(__FILE__)), "#{$worldName}.sdf") + +%> + + + + IGN_GAZEBO_SYSTEM_PLUGIN_PATH + $LD_LIBRARY_PATH + + + LC_ALL + C + + + + +<% if local_variables.include?(:ros) and ros %> + + roslaunch subt_ros competition_init.launch world_name:=<%=$worldName%> vehicle_topics:=0 enable_ground_truth:=<%=($enableGroundTruth)?"1":"0"%> robot_names:=<%=robotName%> + +<% end %> + +<% if local_variables.include?(:teleop) and teleop %> + + roslaunch --wait ctu_cras_norlab_marv_sensor_config_1 teleop.launch + +<% end %> + + + <%= worldFile %> + true + false + + false + + + + + + ogre2 + + + + + + + + + + + + + + + + 1.2759 + + + + <%if !$headless %> + + + <%= $worldName %> + SubT Simulator + <%= ENV['SUBT_IMAGES_PATH'] %>/SubT_logo.svg + + + 3D View + false + docked + + + ogre2 + scene + 0.2 0.2 0.1 + 0.8 0.8 0.8 + -6.3 -4.2 3.6 0 0.268 0.304 + /world/<%= $worldName %>/scene/info + /world/<%= $worldName %>/pose/info + /world/<%= $worldName %>/scene/info + /world/<%= $worldName %>/scene/deletion + + + + World control + false + false + 72 + 121 + 1 + + floating + + + + + + + true + true + false + /world/<%= $worldName %>/control + /world/<%= $worldName %>/stats + + + + + + World stats + false + false + 110 + 290 + 1 + + floating + + + + + + + true + true + true + true + /world/<%= $worldName %>/stats + + + + <%end%> + + +<%= spawner(robotName, modelURI, $worldName, 0, 0, 0.2, 0, 0, 0) %> + + +<% if local_variables.include?(:ros) and ros %> + <%= rosExecutables(robotName, $worldName) %> +<% end %> + + + diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/launch/rviz.rviz b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/launch/rviz.rviz new file mode 100644 index 00000000..44b61c83 --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/launch/rviz.rviz @@ -0,0 +1,357 @@ +Panels: + - Class: rviz/Displays + Help Height: 78 + Name: Displays + Property Tree Widget: + Expanded: + - /Global Options1 + - /Status1 + - /TF1/Tree1/world1 + - /TF1/Tree1/world1/example1 + - /TF1/Tree1/world1/example1/X11 + - /Fisheye1 + Splitter Ratio: 0.6529411673545837 + Tree Height: 434 + - Class: rviz/Selection + Name: Selection + - Class: rviz/Tool Properties + Expanded: + - /2D Pose Estimate1 + - /2D Nav Goal1 + - /Publish Point1 + Name: Tool Properties + Splitter Ratio: 0.5886790156364441 + - Class: rviz/Views + Expanded: + - /Current View1 + Name: Views + Splitter Ratio: 0.5 + - Class: rviz/Time + Experimental: false + Name: Time + SyncMode: 0 + SyncSource: Camera 0 +Preferences: + PromptSaveOnExit: true +Toolbars: + toolButtonStyle: 2 +Visualization Manager: + Class: "" + Displays: + - Alpha: 0.5 + Cell Size: 1 + Class: rviz/Grid + Color: 160; 160; 164 + Enabled: true + 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: true + - Alpha: 1 + Class: rviz/RobotModel + Collision Enabled: false + Enabled: true + Links: + All Links Enabled: true + Expand Joint Details: false + Expand Link Details: false + Expand Tree: false + Link Tree Style: Links in Alphabetic Order + X1/ball_j_x: + Alpha: 1 + Show Axes: false + Show Trail: false + X1/ball_j_y: + Alpha: 1 + Show Axes: false + Show Trail: false + X1/balloon: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + X1/base_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + X1/camera: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + X1/camera_0: + Alpha: 1 + Show Axes: false + Show Trail: false + X1/camera_1: + Alpha: 1 + Show Axes: false + Show Trail: false + X1/camera_2: + Alpha: 1 + Show Axes: false + Show Trail: false + X1/camera_3: + Alpha: 1 + Show Axes: false + Show Trail: false + X1/camera_4: + Alpha: 1 + Show Axes: false + Show Trail: false + X1/string: + Alpha: 1 + Show Axes: false + Show Trail: false + Name: RobotModel + Robot Description: robot_description + TF Prefix: "" + Update Interval: 0 + Value: true + Visual Enabled: true + - Class: rviz/TF + Enabled: true + Frame Timeout: 15 + Frames: + All Enabled: true + X1: + Value: true + X1/ball_j_x: + Value: true + X1/ball_j_y: + Value: true + X1/balloon: + Value: true + X1/base_link: + Value: true + X1/camera: + Value: true + X1/camera_0: + Value: true + X1/camera_0/camera: + Value: true + X1/camera_0/camera_optical: + Value: true + X1/camera_1: + Value: true + X1/camera_1/camera: + Value: true + X1/camera_1/camera_optical: + Value: true + X1/camera_2: + Value: true + X1/camera_2/camera: + Value: true + X1/camera_2/camera_optical: + Value: true + X1/camera_3: + Value: true + X1/camera_3/camera: + Value: true + X1/camera_3/camera_optical: + Value: true + X1/camera_4: + Value: true + X1/camera_4/camera: + Value: true + X1/camera_4/camera_optical: + Value: true + X1/string: + Value: true + example: + Value: true + world: + Value: true + Marker Scale: 1 + Name: TF + Show Arrows: true + Show Axes: true + Show Names: true + Tree: + world: + example: + X1: + X1/ball_j_x: + {} + X1/ball_j_y: + {} + X1/balloon: + {} + X1/base_link: + {} + X1/camera: + {} + X1/camera_0: + X1/camera_0/camera: + X1/camera_0/camera_optical: + {} + X1/camera_1: + X1/camera_1/camera: + X1/camera_1/camera_optical: + {} + X1/camera_2: + X1/camera_2/camera: + X1/camera_2/camera_optical: + {} + X1/camera_3: + X1/camera_3/camera: + X1/camera_3/camera_optical: + {} + X1/camera_4: + X1/camera_4/camera: + X1/camera_4/camera_optical: + {} + X1/string: + {} + Update Interval: 0 + Value: true + - Class: rviz/Group + Displays: + - Class: rviz/Image + Enabled: true + Image Topic: fisheye/camera_0/image_raw + Max Value: 1 + Median window: 5 + Min Value: 0 + Name: Camera 0 + Normalize Range: true + Queue Size: 2 + Transport Hint: raw + Unreliable: false + Value: true + - Class: rviz/Image + Enabled: true + Image Topic: fisheye/camera_1/image_raw + Max Value: 1 + Median window: 5 + Min Value: 0 + Name: Camera 1 + Normalize Range: true + Queue Size: 2 + Transport Hint: raw + Unreliable: false + Value: true + - Class: rviz/Image + Enabled: true + Image Topic: fisheye/camera_2/image_raw + Max Value: 1 + Median window: 5 + Min Value: 0 + Name: Camera 2 + Normalize Range: true + Queue Size: 2 + Transport Hint: raw + Unreliable: false + Value: true + - Class: rviz/Image + Enabled: true + Image Topic: fisheye/camera_3/image_raw + Max Value: 1 + Median window: 5 + Min Value: 0 + Name: Camera 3 + Normalize Range: true + Queue Size: 2 + Transport Hint: raw + Unreliable: false + Value: true + - Class: rviz/Image + Enabled: true + Image Topic: fisheye/camera_4/image_raw + Max Value: 1 + Median window: 5 + Min Value: 0 + Name: Camera 4 + Normalize Range: true + Queue Size: 2 + Transport Hint: raw + Unreliable: false + Value: true + Enabled: true + Name: Fisheye + Enabled: true + Global Options: + Background Color: 48; 48; 48 + Default Light: true + Fixed Frame: X1 + Frame Rate: 30 + Name: root + Tools: + - Class: rviz/Interact + Hide Inactive Objects: true + - Class: rviz/MoveCamera + - Class: rviz/Select + - Class: rviz/FocusCamera + - Class: rviz/Measure + - Class: rviz/SetInitialPose + Theta std deviation: 0.2617993950843811 + Topic: /initialpose + X std deviation: 0.5 + Y std deviation: 0.5 + - Class: rviz/SetGoal + Topic: /move_base_simple/goal + - Class: rviz/PublishPoint + Single click: true + Topic: /clicked_point + Value: true + Views: + Current: + Class: rviz/Orbit + Distance: 15.024421691894531 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: -0.36556363105773926 + Y: -1.3404453992843628 + Z: 1.7463157176971436 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Current View + Near Clip Distance: 0.009999999776482582 + Pitch: 0.7053980827331543 + Target Frame: + Value: Orbit (rviz) + Yaw: 1.455397367477417 + Saved: ~ +Window Geometry: + Camera 0: + collapsed: false + Camera 1: + collapsed: false + Camera 2: + collapsed: false + Camera 3: + collapsed: false + Camera 4: + collapsed: false + Displays: + collapsed: false + Height: 1052 + Hide Left Dock: false + Hide Right Dock: false + QMainWindow State: 000000ff00000000fd0000000400000000000001560000023dfc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d0000023d000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f0000023dfc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d0000023d000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000073d0000017ffc0100000007fb0000001000430061006d0065007200610020003001000000000000016f0000007400fffffffb0000001000430061006d0065007200610020003101000001750000017b0000007400fffffffb0000001000430061006d0065007200610020003201000002f6000001760000007400fffffffb0000001000430061006d0065007200610020003301000004720000016f0000007400fffffffb0000001000430061006d0065007200610020003401000005e7000001560000007400fffffffb0000000800540069006d0065000000015c000005e1000002eb00fffffffb0000000800540069006d00650100000000000004500000000000000000000004cc0000023d00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + Selection: + collapsed: false + Time: + collapsed: false + Tool Properties: + collapsed: false + Views: + collapsed: false + Width: 1853 + X: 67 + Y: 28 diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/launch/spawner.rb b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/launch/spawner.rb new file mode 100644 index 00000000..8aaad357 --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/launch/spawner.rb @@ -0,0 +1,58 @@ +def spawner(_name, _modelURI, _worldName, _x, _y, _z, _roll, _pitch, _yaw) + <<-HEREDOC + + #{_name} + false + #{_x} #{_y} #{_z + 0.5} #{_roll} #{_pitch} #{_yaw} + #{_worldName} + true + + + #{_name} + #{_modelURI} + + + true + true + false + false + #{$enableGroundTruth} + true + true + 1 + + + + linear_battery + 12.694 + 12.694 + -3.1424 + 78.4 + 78.4 + 0.061523 + 1.9499 + 4.95 + true + + + string_prismatic_j + + + + + HEREDOC +end + +def rosExecutables(_name, _worldName) + <<-HEREDOC + + roslaunch --wait ctu_cras_norlab_balloon_sensor_config_1 vehicle_topics.launch world_name:=#{_worldName} name:=#{_name} + + + roslaunch --wait ctu_cras_norlab_balloon_sensor_config_1 description.launch name:=#{_name} + + HEREDOC +end diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/launch/vehicle_topics.launch b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/launch/vehicle_topics.launch new file mode 100644 index 00000000..e6012a5c --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/launch/vehicle_topics.launch @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + [ + {old: $(arg name)/balloon}, + ] + + + + + [ + {old: $(arg name)/camera}, + {old: $(arg name)/camera_0}, + {old: $(arg name)/camera_1}, + {old: $(arg name)/camera_2}, + {old: $(arg name)/camera_3}, + {old: $(arg name)/camera_4}, + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/meshes/apriltag.dae b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/meshes/apriltag.dae new file mode 100644 index 00000000..1ebba0ca --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/meshes/apriltag.dae @@ -0,0 +1,115 @@ + + + + + Blender User + Blender 2.92.0 commit date:2021-02-24, commit time:16:25, hash:02948a2cab44 + + 2021-04-01T09:05:49 + 2021-04-01T09:05:49 + + Z_UP + + + + + + + Untitled + + + + + Untitled-surface + + + + + + 0 0 0 1 + + + + + + 1.45 + + + + + + + + + apriltag_texture.png + + + + + + + + + + + + -0.07499992 -0.07499992 -0.007499992 -0.07499992 -0.07499992 0.007499992 -0.07499992 0.07499992 -0.007499992 -0.07499992 0.07499992 0.007499992 0.07499992 -0.07499992 -0.007499992 0.07499992 -0.07499992 0.007499992 0.07499992 0.07499992 -0.007499992 0.07499992 0.07499992 0.007499992 + + + + + + + + + + -1 0 0 0 1 0 1 0 0 0 -1 0 0 0 -1 0 0 1 + + + + + + + + + + 0.9477108 0.7002814 0.8945312 0.753461 0.8945312 0.7002814 0.9477108 0.753461 0.8945312 0.8066406 0.8945312 0.753461 0.9477108 0.8066406 0.8945312 0.8598203 0.8945312 0.8066406 0.9477108 0.8598203 0.8945312 0.9129999 0.8945312 0.8598203 0.8945312 0.8066406 0.8413516 0.8598203 0.8413516 0.8066406 0.7521957 0.2614762 0.009523153 1.004149 0.009523153 0.2614762 0.9477108 0.7002814 0.9477108 0.753461 0.8945312 0.753461 0.9477108 0.753461 0.9477108 0.8066406 0.8945312 0.8066406 0.9477108 0.8066406 0.9477108 0.8598203 0.8945312 0.8598203 0.9477108 0.8598203 0.9477108 0.9129999 0.8945312 0.9129999 0.8945312 0.8066406 0.8945312 0.8598203 0.8413516 0.8598203 0.7521957 0.2614762 0.7521957 1.004149 0.009523153 1.004149 + + + + + + + + + + + + + + +

1 0 0 2 0 1 0 0 2 3 1 3 6 1 4 2 1 5 7 2 6 4 2 7 6 2 8 5 3 9 0 3 10 4 3 11 6 4 12 0 4 13 2 4 14 3 5 15 5 5 16 7 5 17 1 0 18 3 0 19 2 0 20 3 1 21 7 1 22 6 1 23 7 2 24 5 2 25 4 2 26 5 3 27 1 3 28 0 3 29 6 4 30 4 4 31 0 4 32 3 5 33 1 5 34 5 5 35

+
+
+
+
+ + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/meshes/apriltag.png b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/meshes/apriltag.png new file mode 100644 index 00000000..33f9fb90 Binary files /dev/null and b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/meshes/apriltag.png differ diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/meshes/apriltag_texture.png b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/meshes/apriltag_texture.png new file mode 100644 index 00000000..dad0e730 Binary files /dev/null and b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/meshes/apriltag_texture.png differ diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/model.config b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/model.config new file mode 100644 index 00000000..18282052 --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/model.config @@ -0,0 +1,9 @@ + + + ctu_cras_norlab_balloon_sensor_config_1 + model.sdf + + CTU-CRAS-Norlab exploration Helium balloon. + + + diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/model.sdf b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/model.sdf new file mode 100644 index 00000000..f029f20f --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/model.sdf @@ -0,0 +1,631 @@ + + + + + + 0.001 + + 1.66667e-10 + 0 + 0 + 1.66667e-10 + 0 + 1.66667e-10 + + + + + -0.05 0 -0.35 0 -0 0 + + 1 + + 1.66667e-07 + 0 + 0 + 1.66667e-07 + 0 + 1.66667e-07 + + + + 0 0 0 -1.5707963267948966 1.5707963267948966 0 + + + 0.15 + 0.07 + + + + + 0 0 0 -1.5707963267948966 1.5707963267948966 0 + + + 0.15 + 0.07 + + + + + 0.03 0 0.08 0 -0 0 + + + 2 2 1 + meshes/apriltag.dae + + + + + + reel + base_link + + + 0 + 0 + + 0 0 1 + 0 + + -1e+16 + 1e+16 + + + + + + 0 + 0.2 + + + + + + -0.05 0 -0.35 0 -0 0 + + 0.001 + + 1.66667e-10 + 0 + 0 + 1.66667e-10 + 0 + 1.66667e-10 + + + + + ball_j_x + reel + + 1 0 0 + + -0.3 + 0.3 + 1 + 1 + + + 0 + 0.05 + 0 + 0 + + 0 + + + + -0.05 0 -0.35 0 -0 0 + + 0.001 + + 1.66667e-10 + 0 + 0 + 1.66667e-10 + 0 + 1.66667e-10 + + + + + ball_j_y + ball_j_x + + 0 1 0 + + -0.3 + 0.3 + 1 + 1 + + + 0 + 0.05 + 0 + 0 + + 0 + + + + -0.05 0 -0.35 0 -0 0 + + 0.001 + + 1.66667e-10 + 0 + 0 + 1.66667e-10 + 0 + 1.66667e-10 + + + + + string + ball_j_y + + 0 0 1 + + -1e+16 + 1e+16 + + + 0 + 0.05 + 0 + 0 + + 0 + + + + -0.05 0 0.115 0 -0 0 + + 0.05 + + 0.0014045 + 0 + 0 + 0.0014045 + 0 + 0.0014045 + + + + + + 0.265 + + + + + + + 0.265 + + + + 0 0 0 0 + 0.8 0.8 0.8 1 + 1 1 1 0.5 + 1 1 1 0.1 + + + + + balloon + string + + 0 0 1 + + 0 + 15 + 1 + 0.5 + + + 0 + 0 + + 0 + + + + -0.05 0 -0.16 -3.1415926535897931 0 0 + + 0.022 + + 1.08533e-06 + 0 + 0 + 1.08533e-06 + 0 + 7.04e-07 + + + + + + 0.02 + 0.008 + + + + + + + 0.02 + 0.008 + + + + + 0.02 0 0 3.1415926535897931 -0.392699 3.1415926535897931 + + 20 + 0 + 0.1 + 0.0025 + + 0.8 0.8 0.5 1 + 0.8 0.8 0.5 1 + + 1.0472 + 1.5708 + 1 + + 0 0 -1 + + + 0.02 0 0 3.1415926535897931 -0.392699 -1.0472 + + 20 + 0 + 0.1 + 0.0025 + + 0.8 0.8 0.5 1 + 0.8 0.8 0.5 1 + + 1.0472 + 1.5708 + 1 + + 0 0 -1 + + + 0.02 0 0 3.1415926535897931 -0.392699 1.0472 + + 20 + 0 + 0.1 + 0.0025 + + 0.8 0.8 0.5 1 + 0.8 0.8 0.5 1 + + 1.0472 + 1.5708 + 1 + + 0 0 -1 + + + + camera + balloon + + + 0 + 0 + + 0 0 1 + 0 + + -1e+16 + 1e+16 + + + + + + 0 + 0.2 + + + + + + -0.03 0 -0.16 -3.1415926535897931 0.785398 0 + + 1e-05 + + 1.66667e-12 + 0 + 0 + 1.66667e-12 + 0 + 1.66667e-12 + + + + 3 + + 1.5708 + + 800 + 600 + R8G8B8 + + + 0.05 + 50 + + + gaussian + 0 + 0.007 + + + + + + camera_0 + camera + + + 0 + 0 + + 0 0 1 + 0 + + -1e+16 + 1e+16 + + + + + + 0 + 0.2 + + + + + + -0.03 0 -0.16 3.1415926535897931 0.785398 1.5707963267948966 + + 1e-05 + + 1.66667e-12 + 0 + 0 + 1.66667e-12 + 0 + 1.66667e-12 + + + + 3 + + 1.5708 + + 800 + 600 + R8G8B8 + + + 0.05 + 50 + + + gaussian + 0 + 0.007 + + + + + + camera_1 + camera + + + 0 + 0 + + 0 0 1 + 0 + + -1e+16 + 1e+16 + + + + + + 0 + 0.2 + + + + + + -0.03 0 -0.16 3.1415926535897931 0.785398 3.1415926535897931 + + 1e-05 + + 1.66667e-12 + 0 + 0 + 1.66667e-12 + 0 + 1.66667e-12 + + + + 3 + + 1.5708 + + 800 + 600 + R8G8B8 + + + 0.05 + 50 + + + gaussian + 0 + 0.007 + + + + + + camera_2 + camera + + + 0 + 0 + + 0 0 1 + 0 + + -1e+16 + 1e+16 + + + + + + 0 + 0.2 + + + + + + -0.03 0 -0.16 -3.1415926535897931 0.785398 -1.5707963267948966 + + 1e-05 + + 1.66667e-12 + 0 + 0 + 1.66667e-12 + 0 + 1.66667e-12 + + + + 3 + + 1.5708 + + 800 + 600 + R8G8B8 + + + 0.05 + 50 + + + gaussian + 0 + 0.007 + + + + + + camera_3 + camera + + + 0 + 0 + + 0 0 1 + 0 + + -1e+16 + 1e+16 + + + + + + 0 + 0.2 + + + + + + -0.03 0 -0.16 3.1415926535897931 1.5707963267948966 0 + + 1e-05 + + 1.66667e-12 + 0 + 0 + 1.66667e-12 + 0 + 1.66667e-12 + + + + 3 + + 1.5708 + + 800 + 600 + R8G8B8 + + + 0.05 + 50 + + + gaussian + 0 + 0.007 + + + + + + camera_4 + camera + + + 0 + 0 + + 0 0 1 + 0 + + -1e+16 + 1e+16 + + + + + + 0 + 0.2 + + + + + + + diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/package.xml b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/package.xml new file mode 100644 index 00000000..bc8e27b4 --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/package.xml @@ -0,0 +1,16 @@ + + + ctu_cras_norlab_balloon_sensor_config_1 + 1.0.0 + CTU-CRAS-Norlab exploration Helium balloon. + Martin Pecka + Martin Pecka + BSD + + catkin + + roslaunch + subt_ros + tf_remapper_cpp + xacro + diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/scripts/clean_sdf b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/scripts/clean_sdf new file mode 100755 index 00000000..9ed90a83 --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/scripts/clean_sdf @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -e + +sed -i \ + -e '//{:a;N;/<\/surface>/!ba};/\n\s*\n\s*\n\s*<\/contact>\n\s*\n\s*\n\s*<\/friction>\n\s*<\/surface>/d' \ + -e '/\(-\?0 \?\)\{6\}<\/pose>/d' \ + -e '/1 1 1<\/scale>/d' \ + -e '//d' \ + -e '//d' \ + -e '//d' \ + -e '/1<\/gravity>/d' \ + -e '/0<\/kinematic>/d' \ + -e '/0<\/static>/d' "$1" +sed -i '//{:a;N;/<\/contact>/!ba};/\n\s*\n\s*<\/contact>/d' "$1" +sed -i 's/\(]*>\)/\1\r /g' "$1" \ No newline at end of file diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/scripts/high_precision_constants.py b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/scripts/high_precision_constants.py new file mode 100755 index 00000000..c216baf7 --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/scripts/high_precision_constants.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python +# +# Copyright 2019 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import print_function +from lxml import etree +import math +import argparse +import sys + +# Values of PI to check. Only put positive values. +CONSTANTS_TO_CHECK = [math.pi, math.pi/2] + +def convert_to_high_precision_pi(urdf_file, tol, precision): + """Search all poses for values that are near PI and PI/2 and replace them + with their high precision counterparts. + + Parameters + ---------- + urdf_file : Input urdf file + tol: Tolerance for equality check + + Returns + ------- + etree.Element + + """ + inp = etree.parse(urdf_file) + sdf = inp.getroot() + poses = sdf.xpath('//pose') + + for pose in poses: + new_pose_list = [] + for val in pose.text.split(): + val_fl = float(val) + for check_val in CONSTANTS_TO_CHECK: + if abs(abs(val_fl) - check_val) < tol: + new_pose_list.append('{:.{precision}f}'.format( + math.copysign(check_val, val_fl), precision=precision)) + break + # The else block executes if none of the values in + # CONSTANTS_TO_CHECK match val_fl + else: + new_pose_list.append(val) + + new_pose = ' '.join(new_pose_list) + pose.text = new_pose + return inp + + +if __name__ == '__main__': + parser = argparse.ArgumentParser( + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + description='Search all elements for values that are near PI ' + 'and PI/2 and replace them with their high precision counterparts.') + parser.add_argument('infile', type=argparse.FileType('r'), + help='Input URDF file') + parser.add_argument('-t', '--tolerance', type=float, default=1e-3, + help='Tolerance for equality checks') + parser.add_argument('-p', '--precision', type=float, default=16, + help='Tolerance for equality checks') + + args = parser.parse_args() + out = convert_to_high_precision_pi(args.infile, args.tolerance, + args.precision) + print(etree.tostring(out, pretty_print=True, encoding='utf-8', + xml_declaration=True)) diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/scripts/print_robot_urdf b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/scripts/print_robot_urdf new file mode 100755 index 00000000..512364ec --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/scripts/print_robot_urdf @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -e + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +MODEL_DIR="${DIR}/.." + +echo -e "Rendering URDF of $(basename "$(realpath "$MODEL_DIR")")" >&2 +rosrun xacro xacro "${MODEL_DIR}/urdf/balloon.xacro" rendering_target:=urdf "$@" \ No newline at end of file diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/scripts/update_robot_sdf b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/scripts/update_robot_sdf new file mode 100755 index 00000000..f3137a89 --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/scripts/update_robot_sdf @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +set -e + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +MODEL_DIR="${DIR}/.." +[ -z "${OUTPUT_FILE}" ] && OUTPUT_FILE="${MODEL_DIR}/model.sdf" + +sdf8_version="$(ign sdf --versions | grep '^8')" || true +[ -z "$sdf8_version" ] && echo "libsdformat8 not found. It is required to update this robot's SDF. Please install libsdformat8-dev and try again." >&2 && exit 1 +echo "Found libsdformat ${sdf8_version}" >&2 + +echo -e "Rendering Ignition Gazebo SDF of $(basename "$(realpath "$MODEL_DIR")")" >&2 +rosrun xacro xacro "${MODEL_DIR}/urdf/balloon.xacro" rendering_target:=sdf "$@" > "${OUTPUT_FILE}.urdf" +ign sdf --force-version "$sdf8_version" -p "${OUTPUT_FILE}.urdf" | "${DIR}/high_precision_constants.py" - > "${OUTPUT_FILE}" + +"${DIR}/clean_sdf" "${OUTPUT_FILE}" +# fix resource paths +sed -i -e 's#model://ctu_cras_norlab_balloon_sensor_config_1/##g' "${OUTPUT_FILE}" \ No newline at end of file diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/specifications.md b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/specifications.md new file mode 100644 index 00000000..9f275087 --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/specifications.md @@ -0,0 +1,138 @@ +# CTU-CRAS-Norlab Balloon +This specifications.md file is a description and proof of virtual model validation for the CTU-CRAS-Norlab helium balloon. This model may be launched using an ign launch command with the variable name `CTU_CRAS_NORLAB_BALLOON_SENSOR_CONFIG_1`. + +For local testing, you can also use the following command: + + LC_ALL=C ign launch -v 4 ~/subt_ws/src/subt/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/launch/example.ign robotName:=X1 ros:=true + +## Description +This package contains sensor config 1 of CTU-CRAS-Norlab Helium balloon. +It is a passive robot that is tethered to a UGV via a reel and has one wide-angle +fisheye camera, 3 lights, battery and a wifi-enabled micro board that is able to send the +images to the UGV. + +The tether length is 15 m. + +This robot requires the Buoyancy world plugin for it to actually float. + +This robot is only expected to be used as a marsupial child, not standalone. + +The model is connected to the UGVs as other marsupials, but this one should never be detached! + +## Usage Instructions + +The balloon is tethered on a reel that is controlled by publishing velocity commands +of type `std_msgs/Float64` to topic `reel_cmd_vel`. The commands can go from -0.5 to 0.5 +and specify the unreeling of the tether. As the balloon floats, it automatically raises +when the thether is extended. + +Positive commands mean extension of the reel, negative mean pulling the balloon closer +to the UGV. Zero means no change. + +It is okay to publish -0.5 all the time except the instants when you actually want +the balloon to go exploring. + +## Usage Rights +No additional restrictions have to be taken into account for this configuration. + +## Cost and Scale +This is a custom-built vehicle. + +* Base vehicle: $1 +* Camera: $35 +* Fisheye lens: $20 +* Battery: $20 +* Other electronics: $10 +* The reeling mechanism: $50 +* Total: ~ $136 + +The weight of the vehicle is about 50 grams (excluding the reel). The reel has not yet been +constructed, so we will add details as soon as we have it. + +## Sensors + +The balloon is equipped with one fisheye RGB camera. As Ignition Gazebo cannot simulate fisheye +lenses with very wide field of view, we substituted this camera with 5 90° cameras with comparable +sum of resolutions. + +Camera: Arducam mini 2Mpx OV2640 SPI camera shield (22 grams). RGB camera with resolution 1600x1200 px. +Lens: Arducam 1/4" 1,05mm f/2,0 M12 lens M40105M19, providing 194° horizontal FOV with fisheye projection. + +The single camera is simulated by 5 `camera` sensors with resolution 800x600 px and each with horizontal +FOV of 90°. + +## Control + +The balloon is tethered on a reel that is controlled by publishing velocity commands +of type `std_msgs/Float64` to topic `reel_cmd_vel`. The commands can go from -0.5 to 0.5 +and specify the unreeling of the tether. As the balloon floats, it automatically raises +when the thether is extended. + +Positive commands mean extension of the reel, negative mean pulling the balloon closer +to the UGV. Zero means no change. + +It is okay to publish -0.5 all the time except the instants when you actually want +the balloon to go exploring. + +The transformation between the balloon and the reel (`X1`->`X1/balloon`) is explicitly removed from the ROS TF tree. The +real balloon has no means of localization and has to rely on visual localization using an Apriltag +that is mounted on the top of the reel mechanism. It is expected that this localization will be done +by the UGV and not by the balloon as it has almost no computational capabilites onboard. + +## Motion characteristics + +The balloon floats in opposite direction to gravity and is tied to the marsupial parent via tether. +The tehter is simulated by a frictionless prismatic joint with stops at 0 and 15 meters. The reel +can control the position of this prismatic joint by issuing velocity commands. + +We did a test with this balloon in real caves in 2020 and we empirically measured that it can lift +at least 30 g payload and keep floating for much more than 1 hour. + +## Endurance Characteristics + +This vehicle has not yet been built in whole, so we don't yet know the final endurance. But we aim +for 60 minutes. + +## Diversions from Physical Hardware + +The tether is not visualized in any way. + +The simulated tether cannot collide with the environment and cannot bend or tie up. + +It is actually possible to "push" the balloon by issuing positive velocity commands. That would not +work in the real world. + +The 194° fisheye camera is simulated by 5 90° cameras. + +The real balloon has aluminium surface so it is much more reflective. + +The weights of parts of the simulated model do not correspond to reality (they might be up to +2x higher than the real ones). But these are the numbers that provide solid a stable simulation. If you +ever see the simulator crashing with NaNs going in and out of ODE, the simulation destabilized too much. +I saw it a lot when setting up the model, but adding internal friction to the ball joint helped this +and I haven't seen a crash since correcting the parameters. + +The real balloon has no computational hardware and no long-range comms. It is expected that is is just +a pure sender of images and all processing happens on the UGV. In simulation, participants can utilize +the full cloud machine that runs this vehicle for computations. The simulated balloon can also serve +as a relay of wireless messages, but that is no real problem because it should always be close to some UGV, +so it won't add unrealistic comms coverage. + +## Changing parameters of the robot + +Look into the Xacro files in `urdf/` folder and change the values there. + +After changing a value in these files, run script `scripts/update_robot_sdf` to write the changes to the SDF file. + +__Do not change the SDF files directly, as the changes could be lost the next time the update scripts are run.__ + +## Validation and Specification Links +* Vehicle Links: + * Base vehicle: https://www.balonky.cz/obchod/balonky-3d/foliovy-balonek-stribrna-koule-velka-53-cm-x-53-cm-3910199 + +* We think this vehicle does not require validation. But we can provide a video of the + balloon going up with a payload of approx. 30 g. + +* Specification links: + * Arducam mini 2Mpx OV2640 SPI camera shield https://rpishop.cz/kamery/2803-arducam-mini-2mpx-ov2640-spi-kamera-shield.html + * Arducam 1/4" 1,05mm f/2,0 M12 lens M40105M19 https://rpishop.cz/objektivy/2923-arducam-14-105mm-f20-m12-objektiv-m40105m19.html \ No newline at end of file diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/thumbnails/1.png b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/thumbnails/1.png new file mode 100644 index 00000000..1b4fa669 Binary files /dev/null and b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/thumbnails/1.png differ diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/thumbnails/2.png b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/thumbnails/2.png new file mode 100644 index 00000000..fa084937 Binary files /dev/null and b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/thumbnails/2.png differ diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/thumbnails/3.png b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/thumbnails/3.png new file mode 100644 index 00000000..68598a05 Binary files /dev/null and b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/thumbnails/3.png differ diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/thumbnails/4.png b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/thumbnails/4.png new file mode 100644 index 00000000..33eabd60 Binary files /dev/null and b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/thumbnails/4.png differ diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/thumbnails/5.png b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/thumbnails/5.png new file mode 100644 index 00000000..a08f8361 Binary files /dev/null and b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/thumbnails/5.png differ diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/urdf/balloon.xacro b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/urdf/balloon.xacro new file mode 100644 index 00000000..e2a1f400 --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/urdf/balloon.xacro @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 0 0 0 + 0.8 0.8 0.8 1 + 1.0 1.0 1.0 0.5 + 1.0 1.0 1.0 0.1 + + + + + + + + ${pose} + + 20 + 0 + 0.1 + 0.0025 + + 0.8 0.8 0.5 1 + 0.8 0.8 0.5 1 + + ${pi/3} + ${pi/2} + 1 + + 0 0 -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + + ${radians(90)} + + 800 + 600 + R8G8B8 + + + 0.05 + 50 + + + gaussian + 0.0 + 0.007 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/urdf/utils.xacro b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/urdf/utils.xacro new file mode 100644 index 00000000..1bdcdfed --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/urdf/utils.xacro @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + true + + + + + + + + + + 0 0 0 0 + + ${r} ${g} ${b} 1 + + + + ${max(0, r - 60/255.0)} ${max(0, g - 60/255.0)} ${max(0, b - 60/255.0)} 1 + + 0 0 0 0 + 0 0 0 0 + + + + + + + \ No newline at end of file diff --git a/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/worlds/example.sdf b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/worlds/example.sdf new file mode 100644 index 00000000..20b70fbe --- /dev/null +++ b/submitted_models/ctu_cras_norlab_balloon_sensor_config_1/worlds/example.sdf @@ -0,0 +1,79 @@ + + + + + 0.004 + 1.0 + + + + 0.2 0.2 0.2 + 0.8 0.8 0.8 + + + + + true + 0 0 10 0 0 0 + 0.8 0.8 0.8 1 + 0.8 0.8 0.8 1 + + 1 + 0.9 + 1 + 0.001 + + 0.0 0.0 -1.0 + + + + 0 0 4 0 0 0 + + 1000 + 0 + 0.1 + 0.005 + + 0.8 0.8 0.8 1 + 0.8 0.8 0.8 1 + + 5 + 10.1 + .1 + + 0 0 -1 + + + 0 0 4 0 0 0 + + 1000 + 0.1 + 0.2 + 0.005 + + 0.8 0.8 0.5 1 + 0.8 0.8 0.5 1 + + 5 + 10.1 + .1 + + 0 0 -1 + + + + true + staging_area + 0 0 0 0 0 0 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/subt_tunnel_staging_area + + + + + true + base_station + -8 0 0 0 0 -1.5708 + https://fuel.ignitionrobotics.org/1.0/openrobotics/models/Base Station + + + diff --git a/subt_ign/launch/cloudsim_sim.ign b/subt_ign/launch/cloudsim_sim.ign index f3187efd..9f1d60bd 100644 --- a/subt_ign/launch/cloudsim_sim.ign +++ b/subt_ign/launch/cloudsim_sim.ign @@ -127,6 +127,10 @@ "X1" => "base_link", "EXPLORER_X1" => "base_link", "EXPLORER_R2" => "Rear_Rocker_Link", + "CTU_CRAS_NORLAB_ABSOLEM" => "base_link", + "CTU_CRAS_NORLAB_MARV" => "base_link", + "CTU_CRAS_NORLAB_HUSKY" => "base_link", + "CTU_CRAS_NORLAB_MARMOTTE" => "base_link", "CSIRO_DATA61_OZBOT_ATR" => "base_link" } @@ -134,6 +138,10 @@ "X1" => ["X3", "MARBLE_QAV500", "CERBERUS_GAGARIN", "CERBERUS_RMF", "COSTAR_SHAFTER", "CORO_PAM", "CTU_CRAS_NORLAB_X500"], "EXPLORER_X1" =>["X3", "MARBLE_QAV500", "CERBERUS_GAGARIN", "CERBERUS_RMF", "COSTAR_SHAFTER", "CORO_PAM", "CTU_CRAS_NORLAB_X500"], "EXPLORER_R2" =>["X3", "X4", "SSCI_X4", "SOPHISTICATED_ENGINEERING_X4", "EXPLORER_DS1", "MARBLE_QAV500", "CERBERUS_M100", "CERBERUS_GAGARIN", "CERBERUS_RMF", "COSTAR_SHAFTER", "CORO_PAM", "CTU_CRAS_NORLAB_X500"], + "CTU_CRAS_NORLAB_ABSOLEM" => ["CTU_CRAS_NORLAB_BALLOON"], + "CTU_CRAS_NORLAB_MARV" => ["CTU_CRAS_NORLAB_BALLOON"], + "CTU_CRAS_NORLAB_HUSKY" => ["CTU_CRAS_NORLAB_BALLOON"], + "CTU_CRAS_NORLAB_MARMOTTE" => ["CTU_CRAS_NORLAB_BALLOON"], "CSIRO_DATA61_OZBOT_ATR" =>["X3", "X4", "SSCI_X4", "SOPHISTICATED_ENGINEERING_X4","EXPLORER_DS1", "MARBLE_QAV500", "CERBERUS_M100", "CERBERUS_GAGARIN", "CERBERUS_RMF", "COSTAR_SHAFTER", "CORO_PAM", "CTU_CRAS_NORLAB_X500"] } @@ -141,6 +149,10 @@ "X1" => Vector3d.new(0, 0, 0.717), "EXPLORER_X1" => Vector3d.new(0, 0, 0.717), "EXPLORER_R2" => Vector3d.new(-0.402375, 0, 0.6874), + "CTU_CRAS_NORLAB_ABSOLEM" => Vector3d.new(-0.4, 0, 0.15), + "CTU_CRAS_NORLAB_MARV" => Vector3d.new(-0.3, 0, 0.2), + "CTU_CRAS_NORLAB_HUSKY" => Vector3d.new(-0.47, 0, 0.1), + "CTU_CRAS_NORLAB_MARMOTTE" => Vector3d.new(-0.4, 0, 0.05), "CSIRO_DATA61_OZBOT_ATR" => Vector3d.new(-0.15, 0, 0.528) } @@ -148,6 +160,10 @@ "X1" => AngularVector3d.new(0, 0, 0), "EXPLORER_X1" => AngularVector3d.new(0, 0, 0), "EXPLORER_R2" => AngularVector3d.new(0, 0, -3.1416), + "CTU_CRAS_NORLAB_ABSOLEM" => AngularVector3d.new(0, 0, 0), + "CTU_CRAS_NORLAB_MARV" => AngularVector3d.new(0, 0, 0), + "CTU_CRAS_NORLAB_HUSKY" => AngularVector3d.new(0, 0, 0), + "CTU_CRAS_NORLAB_MARMOTTE" => AngularVector3d.new(0, 0, 0), "CSIRO_DATA61_OZBOT_ATR" => AngularVector3d.new(0, 0, -3.1416) } @@ -412,6 +428,13 @@ name="ignition::gazebo::systems::Contact"> + + 1.2759 + + "base_link", "EXPLORER_X1" => "base_link", "EXPLORER_R2" => "Rear_Rocker_Link", + "CTU_CRAS_NORLAB_ABSOLEM" => "base_link", + "CTU_CRAS_NORLAB_MARV" => "base_link", + "CTU_CRAS_NORLAB_HUSKY" => "base_link", + "CTU_CRAS_NORLAB_MARMOTTE" => "base_link", "CSIRO_DATA61_OZBOT_ATR" => "base_link" } @@ -130,6 +134,10 @@ "X1" => ["X3", "MARBLE_QAV500", "CERBERUS_GAGARIN", "CERBERUS_RMF", "COSTAR_SHAFTER", "CORO_PAM", "CTU_CRAS_NORLAB_X500"], "EXPLORER_X1" =>["X3", "MARBLE_QAV500", "CERBERUS_GAGARIN", "CERBERUS_RMF", "COSTAR_SHAFTER", "CORO_PAM", "CTU_CRAS_NORLAB_X500"], "EXPLORER_R2" =>["X3", "X4", "SSCI_X4", "SOPHISTICATED_ENGINEERING_X4", "EXPLORER_DS1", "MARBLE_QAV500", "CERBERUS_M100", "CERBERUS_GAGARIN", "CERBERUS_RMF", "COSTAR_SHAFTER", "CORO_PAM", "CTU_CRAS_NORLAB_X500"], + "CTU_CRAS_NORLAB_ABSOLEM" => ["CTU_CRAS_NORLAB_BALLOON"], + "CTU_CRAS_NORLAB_MARV" => ["CTU_CRAS_NORLAB_BALLOON"], + "CTU_CRAS_NORLAB_HUSKY" => ["CTU_CRAS_NORLAB_BALLOON"], + "CTU_CRAS_NORLAB_MARMOTTE" => ["CTU_CRAS_NORLAB_BALLOON"], "CSIRO_DATA61_OZBOT_ATR" =>["X3", "X4", "SSCI_X4", "SOPHISTICATED_ENGINEERING_X4","EXPLORER_DS1", "MARBLE_QAV500", "CERBERUS_M100", "CERBERUS_GAGARIN", "CERBERUS_RMF", "COSTAR_SHAFTER", "CORO_PAM", "CTU_CRAS_NORLAB_X500"] } @@ -137,6 +145,10 @@ "X1" => Vector3d.new(0, 0, 0.717), "EXPLORER_X1" => Vector3d.new(0, 0, 0.717), "EXPLORER_R2" => Vector3d.new(-0.402375, 0, 0.6874), + "CTU_CRAS_NORLAB_ABSOLEM" => Vector3d.new(-0.4, 0, 0.15), + "CTU_CRAS_NORLAB_MARV" => Vector3d.new(-0.3, 0, 0.2), + "CTU_CRAS_NORLAB_HUSKY" => Vector3d.new(-0.47, 0, 0.1), + "CTU_CRAS_NORLAB_MARMOTTE" => Vector3d.new(-0.4, 0, 0.05), "CSIRO_DATA61_OZBOT_ATR" => Vector3d.new(-0.15, 0, 0.528) } @@ -144,6 +156,10 @@ "X1" => AngularVector3d.new(0, 0, 0), "EXPLORER_X1" => AngularVector3d.new(0, 0, 0), "EXPLORER_R2" => AngularVector3d.new(0, 0, -3.1416), + "CTU_CRAS_NORLAB_ABSOLEM" => AngularVector3d.new(0, 0, 0), + "CTU_CRAS_NORLAB_MARV" => AngularVector3d.new(0, 0, 0), + "CTU_CRAS_NORLAB_HUSKY" => AngularVector3d.new(0, 0, 0), + "CTU_CRAS_NORLAB_MARMOTTE" => AngularVector3d.new(0, 0, 0), "CSIRO_DATA61_OZBOT_ATR" => AngularVector3d.new(0, 0, -3.1416) } @@ -342,6 +358,13 @@ name="ignition::gazebo::systems::Contact"> + + 1.2759 + +