asterism 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +78 -4
  3. data/NOTICE +12 -7
  4. data/README.md +148 -17
  5. data/data/icon.png +0 -0
  6. data/data/msgs/LICENSE-BSD-3-Clause-tf2_msgs.txt +29 -0
  7. data/data/msgs/NOTICE +19 -13
  8. data/data/msgs/builtin_interfaces/msg/Duration.rb +4 -0
  9. data/data/msgs/builtin_interfaces/msg/Time.rb +4 -0
  10. data/data/msgs/diagnostic_msgs/msg/DiagnosticArray.rb +40 -0
  11. data/data/msgs/diagnostic_msgs/msg/DiagnosticStatus.rb +55 -0
  12. data/data/msgs/diagnostic_msgs/msg/KeyValue.rb +37 -0
  13. data/data/msgs/example_interfaces/srv/AddTwoInts.rb +7 -0
  14. data/data/msgs/geometry_msgs/msg/Accel.rb +4 -0
  15. data/data/msgs/geometry_msgs/msg/AccelStamped.rb +4 -0
  16. data/data/msgs/geometry_msgs/msg/Point.rb +5 -0
  17. data/data/msgs/geometry_msgs/msg/Point32.rb +5 -0
  18. data/data/msgs/geometry_msgs/msg/PointStamped.rb +4 -0
  19. data/data/msgs/geometry_msgs/msg/Pose.rb +4 -0
  20. data/data/msgs/geometry_msgs/msg/Pose2D.rb +5 -0
  21. data/data/msgs/geometry_msgs/msg/PoseStamped.rb +4 -0
  22. data/data/msgs/geometry_msgs/msg/PoseWithCovariance.rb +39 -0
  23. data/data/msgs/geometry_msgs/msg/Quaternion.rb +6 -0
  24. data/data/msgs/geometry_msgs/msg/QuaternionStamped.rb +4 -0
  25. data/data/msgs/geometry_msgs/msg/Transform.rb +4 -0
  26. data/data/msgs/geometry_msgs/msg/TransformStamped.rb +5 -0
  27. data/data/msgs/geometry_msgs/msg/Twist.rb +4 -0
  28. data/data/msgs/geometry_msgs/msg/TwistStamped.rb +4 -0
  29. data/data/msgs/geometry_msgs/msg/TwistWithCovariance.rb +39 -0
  30. data/data/msgs/geometry_msgs/msg/Vector3.rb +5 -0
  31. data/data/msgs/geometry_msgs/msg/Vector3Stamped.rb +4 -0
  32. data/data/msgs/geometry_msgs/msg/Wrench.rb +4 -0
  33. data/data/msgs/geometry_msgs/msg/WrenchStamped.rb +4 -0
  34. data/data/msgs/nav_msgs/msg/MapMetaData.rb +52 -0
  35. data/data/msgs/nav_msgs/msg/OccupancyGrid.rb +44 -0
  36. data/data/msgs/nav_msgs/msg/Odometry.rb +49 -0
  37. data/data/msgs/nav_msgs/msg/Path.rb +40 -0
  38. data/data/msgs/rcl_interfaces/msg/Log.rb +64 -0
  39. data/data/msgs/rcl_interfaces/msg/Parameter.rb +39 -0
  40. data/data/msgs/rcl_interfaces/msg/ParameterEvent.rb +52 -0
  41. data/data/msgs/rcl_interfaces/msg/ParameterValue.rb +69 -0
  42. data/data/msgs/sensor_msgs/msg/BatteryState.rb +18 -0
  43. data/data/msgs/sensor_msgs/msg/CompressedImage.rb +43 -0
  44. data/data/msgs/sensor_msgs/msg/FluidPressure.rb +5 -0
  45. data/data/msgs/sensor_msgs/msg/Illuminance.rb +5 -0
  46. data/data/msgs/sensor_msgs/msg/Imu.rb +9 -0
  47. data/data/msgs/sensor_msgs/msg/JointState.rb +7 -0
  48. data/data/msgs/sensor_msgs/msg/LaserScan.rb +71 -0
  49. data/data/msgs/sensor_msgs/msg/MagneticField.rb +5 -0
  50. data/data/msgs/sensor_msgs/msg/NavSatFix.rb +9 -0
  51. data/data/msgs/sensor_msgs/msg/NavSatStatus.rb +4 -0
  52. data/data/msgs/sensor_msgs/msg/PointCloud2.rb +68 -0
  53. data/data/msgs/sensor_msgs/msg/PointField.rb +53 -0
  54. data/data/msgs/sensor_msgs/msg/Range.rb +9 -0
  55. data/data/msgs/sensor_msgs/msg/RelativeHumidity.rb +5 -0
  56. data/data/msgs/sensor_msgs/msg/Temperature.rb +5 -0
  57. data/data/msgs/std_msgs/msg/Bool.rb +3 -0
  58. data/data/msgs/std_msgs/msg/Byte.rb +3 -0
  59. data/data/msgs/std_msgs/msg/ByteMultiArray.rb +4 -0
  60. data/data/msgs/std_msgs/msg/Char.rb +3 -0
  61. data/data/msgs/std_msgs/msg/ColorRGBA.rb +6 -0
  62. data/data/msgs/std_msgs/msg/Empty.rb +1 -0
  63. data/data/msgs/std_msgs/msg/Float32.rb +3 -0
  64. data/data/msgs/std_msgs/msg/Float32MultiArray.rb +4 -0
  65. data/data/msgs/std_msgs/msg/Float64.rb +3 -0
  66. data/data/msgs/std_msgs/msg/Float64MultiArray.rb +4 -0
  67. data/data/msgs/std_msgs/msg/Header.rb +4 -0
  68. data/data/msgs/std_msgs/msg/Int16.rb +3 -0
  69. data/data/msgs/std_msgs/msg/Int16MultiArray.rb +4 -0
  70. data/data/msgs/std_msgs/msg/Int32.rb +3 -0
  71. data/data/msgs/std_msgs/msg/Int32MultiArray.rb +4 -0
  72. data/data/msgs/std_msgs/msg/Int64.rb +3 -0
  73. data/data/msgs/std_msgs/msg/Int64MultiArray.rb +4 -0
  74. data/data/msgs/std_msgs/msg/Int8.rb +3 -0
  75. data/data/msgs/std_msgs/msg/Int8MultiArray.rb +4 -0
  76. data/data/msgs/std_msgs/msg/MultiArrayDimension.rb +5 -0
  77. data/data/msgs/std_msgs/msg/MultiArrayLayout.rb +4 -0
  78. data/data/msgs/std_msgs/msg/String.rb +3 -0
  79. data/data/msgs/std_msgs/msg/UInt16.rb +3 -0
  80. data/data/msgs/std_msgs/msg/UInt16MultiArray.rb +4 -0
  81. data/data/msgs/std_msgs/msg/UInt32.rb +3 -0
  82. data/data/msgs/std_msgs/msg/UInt32MultiArray.rb +4 -0
  83. data/data/msgs/std_msgs/msg/UInt64.rb +3 -0
  84. data/data/msgs/std_msgs/msg/UInt64MultiArray.rb +4 -0
  85. data/data/msgs/std_msgs/msg/UInt8.rb +3 -0
  86. data/data/msgs/std_msgs/msg/UInt8MultiArray.rb +4 -0
  87. data/data/msgs/tf2_msgs/msg/TFMessage.rb +35 -0
  88. data/data/msgs/visualization_msgs/msg/Marker.rb +132 -0
  89. data/data/msgs/visualization_msgs/msg/MarkerArray.rb +35 -0
  90. data/data/msgs/visualization_msgs/msg/MeshFile.rb +37 -0
  91. data/data/msgs/visualization_msgs/msg/UVCoordinate.rb +37 -0
  92. data/lib/asterism/cruby/objects.rb +13 -1
  93. data/lib/asterism/cruby.rb +38 -0
  94. data/lib/asterism/version.rb +4 -3
  95. data/lib/asterism.rb +1 -1
  96. data/mrblib/asterism.rb +5 -0
  97. data/mrblib/profile.rb +362 -0
  98. data/mrblib/ros.rb +71 -6
  99. data/tools/asterism_msggen.rb +32 -5
  100. metadata +28 -2
@@ -13,6 +13,10 @@ class ::Asterism::ROS::StdMsgs::Header < ::Asterism::ROS::Message
13
13
  TYPE_NAME = "std_msgs::msg::dds_::Header_"
14
14
  TYPE_HASH = "RIHS01_f49fb3ae2cf070f793645ff749683ac6b06203e41c891e17701b1cb597ce6a01"
15
15
  FIELDS = [:stamp, :frame_id]
16
+ FIELD_TYPES = [
17
+ ["stamp", "builtin_interfaces/msg/Time", "scalar", "builtin_interfaces/msg/Time", nil, nil],
18
+ ["frame_id", "string", "scalar", nil, nil, nil]
19
+ ]
16
20
 
17
21
  attr_accessor :stamp, :frame_id
18
22
 
@@ -11,6 +11,9 @@ class ::Asterism::ROS::StdMsgs::Int16 < ::Asterism::ROS::Message
11
11
  TYPE_NAME = "std_msgs::msg::dds_::Int16_"
12
12
  TYPE_HASH = "RIHS01_1dcc3464e47c288a55f943a389d337cdb06804de3f5cd7a266b0de718eee17e5"
13
13
  FIELDS = [:data]
14
+ FIELD_TYPES = [
15
+ ["data", "int16", "scalar", nil, nil, nil]
16
+ ]
14
17
 
15
18
  attr_accessor :data
16
19
 
@@ -13,6 +13,10 @@ class ::Asterism::ROS::StdMsgs::Int16MultiArray < ::Asterism::ROS::Message
13
13
  TYPE_NAME = "std_msgs::msg::dds_::Int16MultiArray_"
14
14
  TYPE_HASH = "RIHS01_b58810e8e5b90fb19a5062469eb8409f5ab11a446d60de7157a1457e52a076ce"
15
15
  FIELDS = [:layout, :data]
16
+ FIELD_TYPES = [
17
+ ["layout", "std_msgs/msg/MultiArrayLayout", "scalar", "std_msgs/msg/MultiArrayLayout", nil, nil],
18
+ ["data", "int16", "sequence", nil, nil, nil]
19
+ ]
16
20
 
17
21
  attr_accessor :layout, :data
18
22
 
@@ -11,6 +11,9 @@ class ::Asterism::ROS::StdMsgs::Int32 < ::Asterism::ROS::Message
11
11
  TYPE_NAME = "std_msgs::msg::dds_::Int32_"
12
12
  TYPE_HASH = "RIHS01_b6578ded3c58c626cfe8d1a6fb6e04f706f97e9f03d2727c9ff4e74b1cef0deb"
13
13
  FIELDS = [:data]
14
+ FIELD_TYPES = [
15
+ ["data", "int32", "scalar", nil, nil, nil]
16
+ ]
14
17
 
15
18
  attr_accessor :data
16
19
 
@@ -13,6 +13,10 @@ class ::Asterism::ROS::StdMsgs::Int32MultiArray < ::Asterism::ROS::Message
13
13
  TYPE_NAME = "std_msgs::msg::dds_::Int32MultiArray_"
14
14
  TYPE_HASH = "RIHS01_84a7346323525d1b4dfca899df3820f245e54009dac5a6b69217d14fdefd1701"
15
15
  FIELDS = [:layout, :data]
16
+ FIELD_TYPES = [
17
+ ["layout", "std_msgs/msg/MultiArrayLayout", "scalar", "std_msgs/msg/MultiArrayLayout", nil, nil],
18
+ ["data", "int32", "sequence", nil, nil, nil]
19
+ ]
16
20
 
17
21
  attr_accessor :layout, :data
18
22
 
@@ -11,6 +11,9 @@ class ::Asterism::ROS::StdMsgs::Int64 < ::Asterism::ROS::Message
11
11
  TYPE_NAME = "std_msgs::msg::dds_::Int64_"
12
12
  TYPE_HASH = "RIHS01_8cd1048c2f186b6bd9a92472dc1ce51723c0833a221e2b7aecfff111774f4b49"
13
13
  FIELDS = [:data]
14
+ FIELD_TYPES = [
15
+ ["data", "int64", "scalar", nil, nil, nil]
16
+ ]
14
17
 
15
18
  attr_accessor :data
16
19
 
@@ -13,6 +13,10 @@ class ::Asterism::ROS::StdMsgs::Int64MultiArray < ::Asterism::ROS::Message
13
13
  TYPE_NAME = "std_msgs::msg::dds_::Int64MultiArray_"
14
14
  TYPE_HASH = "RIHS01_e60f9fe34d697f0939ad49d33158693c1277fbac0e2f04b7c2995dc21c89b422"
15
15
  FIELDS = [:layout, :data]
16
+ FIELD_TYPES = [
17
+ ["layout", "std_msgs/msg/MultiArrayLayout", "scalar", "std_msgs/msg/MultiArrayLayout", nil, nil],
18
+ ["data", "int64", "sequence", nil, nil, nil]
19
+ ]
16
20
 
17
21
  attr_accessor :layout, :data
18
22
 
@@ -11,6 +11,9 @@ class ::Asterism::ROS::StdMsgs::Int8 < ::Asterism::ROS::Message
11
11
  TYPE_NAME = "std_msgs::msg::dds_::Int8_"
12
12
  TYPE_HASH = "RIHS01_26525065a403d972cb672f0777e333f0c799ad444ae5fcd79e43d1e73bd0f440"
13
13
  FIELDS = [:data]
14
+ FIELD_TYPES = [
15
+ ["data", "int8", "scalar", nil, nil, nil]
16
+ ]
14
17
 
15
18
  attr_accessor :data
16
19
 
@@ -13,6 +13,10 @@ class ::Asterism::ROS::StdMsgs::Int8MultiArray < ::Asterism::ROS::Message
13
13
  TYPE_NAME = "std_msgs::msg::dds_::Int8MultiArray_"
14
14
  TYPE_HASH = "RIHS01_f21998d4b492abd63330765d75d5831238d400740386f651f13a872a4d2188db"
15
15
  FIELDS = [:layout, :data]
16
+ FIELD_TYPES = [
17
+ ["layout", "std_msgs/msg/MultiArrayLayout", "scalar", "std_msgs/msg/MultiArrayLayout", nil, nil],
18
+ ["data", "int8", "sequence", nil, nil, nil]
19
+ ]
16
20
 
17
21
  attr_accessor :layout, :data
18
22
 
@@ -11,6 +11,11 @@ class ::Asterism::ROS::StdMsgs::MultiArrayDimension < ::Asterism::ROS::Message
11
11
  TYPE_NAME = "std_msgs::msg::dds_::MultiArrayDimension_"
12
12
  TYPE_HASH = "RIHS01_5e773a60a4c7fc8a54985f307c7837aa2994252a126c301957a24e31282c9cbe"
13
13
  FIELDS = [:label, :size, :stride]
14
+ FIELD_TYPES = [
15
+ ["label", "string", "scalar", nil, nil, nil],
16
+ ["size", "uint32", "scalar", nil, nil, nil],
17
+ ["stride", "uint32", "scalar", nil, nil, nil]
18
+ ]
14
19
 
15
20
  attr_accessor :label, :size, :stride
16
21
 
@@ -13,6 +13,10 @@ class ::Asterism::ROS::StdMsgs::MultiArrayLayout < ::Asterism::ROS::Message
13
13
  TYPE_NAME = "std_msgs::msg::dds_::MultiArrayLayout_"
14
14
  TYPE_HASH = "RIHS01_4c66e6f78e740ac103a94cf63259f968e48c617e7699e829b63c21a5cb50dac6"
15
15
  FIELDS = [:dim, :data_offset]
16
+ FIELD_TYPES = [
17
+ ["dim", "std_msgs/msg/MultiArrayDimension", "sequence", "std_msgs/msg/MultiArrayDimension", nil, nil],
18
+ ["data_offset", "uint32", "scalar", nil, nil, nil]
19
+ ]
16
20
 
17
21
  attr_accessor :dim, :data_offset
18
22
 
@@ -11,6 +11,9 @@ class ::Asterism::ROS::StdMsgs::String < ::Asterism::ROS::Message
11
11
  TYPE_NAME = "std_msgs::msg::dds_::String_"
12
12
  TYPE_HASH = "RIHS01_df668c740482bbd48fb39d76a70dfd4bd59db1288021743503259e948f6b1a18"
13
13
  FIELDS = [:data]
14
+ FIELD_TYPES = [
15
+ ["data", "string", "scalar", nil, nil, nil]
16
+ ]
14
17
 
15
18
  attr_accessor :data
16
19
 
@@ -11,6 +11,9 @@ class ::Asterism::ROS::StdMsgs::UInt16 < ::Asterism::ROS::Message
11
11
  TYPE_NAME = "std_msgs::msg::dds_::UInt16_"
12
12
  TYPE_HASH = "RIHS01_08a406e4b022bc22e907f985d6a9e9dd1d4fbecae573549cf49350113e7757b1"
13
13
  FIELDS = [:data]
14
+ FIELD_TYPES = [
15
+ ["data", "uint16", "scalar", nil, nil, nil]
16
+ ]
14
17
 
15
18
  attr_accessor :data
16
19
 
@@ -13,6 +13,10 @@ class ::Asterism::ROS::StdMsgs::UInt16MultiArray < ::Asterism::ROS::Message
13
13
  TYPE_NAME = "std_msgs::msg::dds_::UInt16MultiArray_"
14
14
  TYPE_HASH = "RIHS01_94fe73428ec63baecc774f8fb82406123e9291cf728f1b7c91caf5335129492b"
15
15
  FIELDS = [:layout, :data]
16
+ FIELD_TYPES = [
17
+ ["layout", "std_msgs/msg/MultiArrayLayout", "scalar", "std_msgs/msg/MultiArrayLayout", nil, nil],
18
+ ["data", "uint16", "sequence", nil, nil, nil]
19
+ ]
16
20
 
17
21
  attr_accessor :layout, :data
18
22
 
@@ -11,6 +11,9 @@ class ::Asterism::ROS::StdMsgs::UInt32 < ::Asterism::ROS::Message
11
11
  TYPE_NAME = "std_msgs::msg::dds_::UInt32_"
12
12
  TYPE_HASH = "RIHS01_a5c874829b752bc5fa190024b0ad76f578cc278271e855c7d02a818b3516fb4a"
13
13
  FIELDS = [:data]
14
+ FIELD_TYPES = [
15
+ ["data", "uint32", "scalar", nil, nil, nil]
16
+ ]
14
17
 
15
18
  attr_accessor :data
16
19
 
@@ -13,6 +13,10 @@ class ::Asterism::ROS::StdMsgs::UInt32MultiArray < ::Asterism::ROS::Message
13
13
  TYPE_NAME = "std_msgs::msg::dds_::UInt32MultiArray_"
14
14
  TYPE_HASH = "RIHS01_6c2577c7ad3cbdcc2164a41c12f1d5ad314ea320f3fb1ee47e78019fe16bb5b0"
15
15
  FIELDS = [:layout, :data]
16
+ FIELD_TYPES = [
17
+ ["layout", "std_msgs/msg/MultiArrayLayout", "scalar", "std_msgs/msg/MultiArrayLayout", nil, nil],
18
+ ["data", "uint32", "sequence", nil, nil, nil]
19
+ ]
16
20
 
17
21
  attr_accessor :layout, :data
18
22
 
@@ -11,6 +11,9 @@ class ::Asterism::ROS::StdMsgs::UInt64 < ::Asterism::ROS::Message
11
11
  TYPE_NAME = "std_msgs::msg::dds_::UInt64_"
12
12
  TYPE_HASH = "RIHS01_fbdc52018fc13755dce18024d1a671c856aa8b4aaf63adfb095b608f98e8c943"
13
13
  FIELDS = [:data]
14
+ FIELD_TYPES = [
15
+ ["data", "uint64", "scalar", nil, nil, nil]
16
+ ]
14
17
 
15
18
  attr_accessor :data
16
19
 
@@ -13,6 +13,10 @@ class ::Asterism::ROS::StdMsgs::UInt64MultiArray < ::Asterism::ROS::Message
13
13
  TYPE_NAME = "std_msgs::msg::dds_::UInt64MultiArray_"
14
14
  TYPE_HASH = "RIHS01_fc1c685c2f76bdc6983da025cb25d2db5fb5157b059e300f6d957d86f981b366"
15
15
  FIELDS = [:layout, :data]
16
+ FIELD_TYPES = [
17
+ ["layout", "std_msgs/msg/MultiArrayLayout", "scalar", "std_msgs/msg/MultiArrayLayout", nil, nil],
18
+ ["data", "uint64", "sequence", nil, nil, nil]
19
+ ]
16
20
 
17
21
  attr_accessor :layout, :data
18
22
 
@@ -11,6 +11,9 @@ class ::Asterism::ROS::StdMsgs::UInt8 < ::Asterism::ROS::Message
11
11
  TYPE_NAME = "std_msgs::msg::dds_::UInt8_"
12
12
  TYPE_HASH = "RIHS01_6138bd83d8c3569cb80a667db03cfc1629f529fee79d944c39c34e352e72f010"
13
13
  FIELDS = [:data]
14
+ FIELD_TYPES = [
15
+ ["data", "uint8", "scalar", nil, nil, nil]
16
+ ]
14
17
 
15
18
  attr_accessor :data
16
19
 
@@ -13,6 +13,10 @@ class ::Asterism::ROS::StdMsgs::UInt8MultiArray < ::Asterism::ROS::Message
13
13
  TYPE_NAME = "std_msgs::msg::dds_::UInt8MultiArray_"
14
14
  TYPE_HASH = "RIHS01_5687e861b8d307a5e48b7515467ae7a5fc2daf805bd0ce6d8e9e604bade9f385"
15
15
  FIELDS = [:layout, :data]
16
+ FIELD_TYPES = [
17
+ ["layout", "std_msgs/msg/MultiArrayLayout", "scalar", "std_msgs/msg/MultiArrayLayout", nil, nil],
18
+ ["data", "uint8", "sequence", nil, nil, nil]
19
+ ]
16
20
 
17
21
  attr_accessor :layout, :data
18
22
 
@@ -0,0 +1,35 @@
1
+ # tf2_msgs/msg/TFMessage (ROS 2 jazzy), generated by asterism_msggen.rb from
2
+ # TFMessage.msg of the package tf2_msgs.
3
+ # License: BSD, as the definition (package.xml of tf2_msgs).
4
+ # Do not edit; regenerate instead.
5
+
6
+ ::Asterism::ROS.require_type("geometry_msgs/msg/TransformStamped")
7
+
8
+ module ::Asterism::ROS::Tf2Msgs
9
+ end
10
+
11
+ class ::Asterism::ROS::Tf2Msgs::TFMessage < ::Asterism::ROS::Message
12
+ ROS_NAME = "tf2_msgs/msg/TFMessage"
13
+ TYPE_NAME = "tf2_msgs::msg::dds_::TFMessage_"
14
+ TYPE_HASH = "RIHS01_e369d0f05a23ae52508854b66f6aa0437f3449d652e8cbf22d5abe85d020f087"
15
+ FIELDS = [:transforms]
16
+ FIELD_TYPES = [
17
+ ["transforms", "geometry_msgs/msg/TransformStamped", "sequence", "geometry_msgs/msg/TransformStamped", nil, nil]
18
+ ]
19
+
20
+ attr_accessor :transforms
21
+
22
+ def initialize(transforms: nil)
23
+ @transforms = transforms.nil? ? [] : transforms.map { |e| ::Asterism::ROS::GeometryMsgs::TransformStamped.from(e) }
24
+ end
25
+
26
+ def self.write(w, m)
27
+ w.structs(::Asterism::ROS::GeometryMsgs::TransformStamped, m.transforms, nil, nil)
28
+ end
29
+
30
+ def self.read(r)
31
+ m = new
32
+ m.transforms = r.structs(::Asterism::ROS::GeometryMsgs::TransformStamped, nil)
33
+ m
34
+ end
35
+ end
@@ -0,0 +1,132 @@
1
+ # visualization_msgs/msg/Marker (ROS 2 jazzy), generated by asterism_msggen.rb from
2
+ # Marker.msg of the package visualization_msgs.
3
+ # License: Apache License 2.0, as the definition (package.xml of visualization_msgs).
4
+ # Do not edit; regenerate instead.
5
+
6
+ ::Asterism::ROS.require_type("builtin_interfaces/msg/Duration")
7
+ ::Asterism::ROS.require_type("geometry_msgs/msg/Point")
8
+ ::Asterism::ROS.require_type("geometry_msgs/msg/Pose")
9
+ ::Asterism::ROS.require_type("geometry_msgs/msg/Vector3")
10
+ ::Asterism::ROS.require_type("sensor_msgs/msg/CompressedImage")
11
+ ::Asterism::ROS.require_type("std_msgs/msg/ColorRGBA")
12
+ ::Asterism::ROS.require_type("std_msgs/msg/Header")
13
+ ::Asterism::ROS.require_type("visualization_msgs/msg/MeshFile")
14
+ ::Asterism::ROS.require_type("visualization_msgs/msg/UVCoordinate")
15
+
16
+ module ::Asterism::ROS::VisualizationMsgs
17
+ end
18
+
19
+ class ::Asterism::ROS::VisualizationMsgs::Marker < ::Asterism::ROS::Message
20
+ ROS_NAME = "visualization_msgs/msg/Marker"
21
+ TYPE_NAME = "visualization_msgs::msg::dds_::Marker_"
22
+ TYPE_HASH = "RIHS01_45b13ccf791f225962bf74e746f9644518855d783a6f42ba0cc14fde2b4f3ce0"
23
+ FIELDS = [:header, :ns, :id, :type, :action, :pose, :scale, :color, :lifetime, :frame_locked, :points, :colors, :texture_resource, :texture, :uv_coordinates, :text, :mesh_resource, :mesh_file, :mesh_use_embedded_materials]
24
+ FIELD_TYPES = [
25
+ ["header", "std_msgs/msg/Header", "scalar", "std_msgs/msg/Header", nil, nil],
26
+ ["ns", "string", "scalar", nil, nil, nil],
27
+ ["id", "int32", "scalar", nil, nil, nil],
28
+ ["type", "int32", "scalar", nil, nil, nil],
29
+ ["action", "int32", "scalar", nil, nil, nil],
30
+ ["pose", "geometry_msgs/msg/Pose", "scalar", "geometry_msgs/msg/Pose", nil, nil],
31
+ ["scale", "geometry_msgs/msg/Vector3", "scalar", "geometry_msgs/msg/Vector3", nil, nil],
32
+ ["color", "std_msgs/msg/ColorRGBA", "scalar", "std_msgs/msg/ColorRGBA", nil, nil],
33
+ ["lifetime", "builtin_interfaces/msg/Duration", "scalar", "builtin_interfaces/msg/Duration", nil, nil],
34
+ ["frame_locked", "bool", "scalar", nil, nil, nil],
35
+ ["points", "geometry_msgs/msg/Point", "sequence", "geometry_msgs/msg/Point", nil, nil],
36
+ ["colors", "std_msgs/msg/ColorRGBA", "sequence", "std_msgs/msg/ColorRGBA", nil, nil],
37
+ ["texture_resource", "string", "scalar", nil, nil, nil],
38
+ ["texture", "sensor_msgs/msg/CompressedImage", "scalar", "sensor_msgs/msg/CompressedImage", nil, nil],
39
+ ["uv_coordinates", "visualization_msgs/msg/UVCoordinate", "sequence", "visualization_msgs/msg/UVCoordinate", nil, nil],
40
+ ["text", "string", "scalar", nil, nil, nil],
41
+ ["mesh_resource", "string", "scalar", nil, nil, nil],
42
+ ["mesh_file", "visualization_msgs/msg/MeshFile", "scalar", "visualization_msgs/msg/MeshFile", nil, nil],
43
+ ["mesh_use_embedded_materials", "bool", "scalar", nil, nil, nil]
44
+ ]
45
+ ARROW = 0
46
+ CUBE = 1
47
+ SPHERE = 2
48
+ CYLINDER = 3
49
+ LINE_STRIP = 4
50
+ LINE_LIST = 5
51
+ CUBE_LIST = 6
52
+ SPHERE_LIST = 7
53
+ POINTS = 8
54
+ TEXT_VIEW_FACING = 9
55
+ MESH_RESOURCE = 10
56
+ TRIANGLE_LIST = 11
57
+ ARROW_STRIP = 12
58
+ ADD = 0
59
+ MODIFY = 0
60
+ DELETE = 2
61
+ DELETEALL = 3
62
+
63
+ attr_accessor :header, :ns, :id, :type, :action, :pose, :scale, :color, :lifetime, :frame_locked, :points, :colors, :texture_resource, :texture, :uv_coordinates, :text, :mesh_resource, :mesh_file, :mesh_use_embedded_materials
64
+
65
+ def initialize(header: nil, ns: nil, id: nil, type: nil, action: nil, pose: nil, scale: nil, color: nil, lifetime: nil, frame_locked: nil, points: nil, colors: nil, texture_resource: nil, texture: nil, uv_coordinates: nil, text: nil, mesh_resource: nil, mesh_file: nil, mesh_use_embedded_materials: nil)
66
+ @header = ::Asterism::ROS::StdMsgs::Header.from(header)
67
+ @ns = ns.nil? ? "" : ns
68
+ @id = id.nil? ? 0 : id
69
+ @type = type.nil? ? 0 : type
70
+ @action = action.nil? ? 0 : action
71
+ @pose = ::Asterism::ROS::GeometryMsgs::Pose.from(pose)
72
+ @scale = ::Asterism::ROS::GeometryMsgs::Vector3.from(scale)
73
+ @color = ::Asterism::ROS::StdMsgs::ColorRGBA.from(color)
74
+ @lifetime = ::Asterism::ROS::BuiltinInterfaces::Duration.from(lifetime)
75
+ @frame_locked = frame_locked.nil? ? false : frame_locked
76
+ @points = points.nil? ? [] : points.map { |e| ::Asterism::ROS::GeometryMsgs::Point.from(e) }
77
+ @colors = colors.nil? ? [] : colors.map { |e| ::Asterism::ROS::StdMsgs::ColorRGBA.from(e) }
78
+ @texture_resource = texture_resource.nil? ? "" : texture_resource
79
+ @texture = ::Asterism::ROS::SensorMsgs::CompressedImage.from(texture)
80
+ @uv_coordinates = uv_coordinates.nil? ? [] : uv_coordinates.map { |e| ::Asterism::ROS::VisualizationMsgs::UVCoordinate.from(e) }
81
+ @text = text.nil? ? "" : text
82
+ @mesh_resource = mesh_resource.nil? ? "" : mesh_resource
83
+ @mesh_file = ::Asterism::ROS::VisualizationMsgs::MeshFile.from(mesh_file)
84
+ @mesh_use_embedded_materials = mesh_use_embedded_materials.nil? ? false : mesh_use_embedded_materials
85
+ end
86
+
87
+ def self.write(w, m)
88
+ ::Asterism::ROS::StdMsgs::Header.write(w, ::Asterism::ROS::StdMsgs::Header.from(m.header))
89
+ w.string(m.ns)
90
+ w.int32(m.id)
91
+ w.int32(m.type)
92
+ w.int32(m.action)
93
+ ::Asterism::ROS::GeometryMsgs::Pose.write(w, ::Asterism::ROS::GeometryMsgs::Pose.from(m.pose))
94
+ ::Asterism::ROS::GeometryMsgs::Vector3.write(w, ::Asterism::ROS::GeometryMsgs::Vector3.from(m.scale))
95
+ ::Asterism::ROS::StdMsgs::ColorRGBA.write(w, ::Asterism::ROS::StdMsgs::ColorRGBA.from(m.color))
96
+ ::Asterism::ROS::BuiltinInterfaces::Duration.write(w, ::Asterism::ROS::BuiltinInterfaces::Duration.from(m.lifetime))
97
+ w.bool(m.frame_locked)
98
+ w.structs(::Asterism::ROS::GeometryMsgs::Point, m.points, nil, nil)
99
+ w.structs(::Asterism::ROS::StdMsgs::ColorRGBA, m.colors, nil, nil)
100
+ w.string(m.texture_resource)
101
+ ::Asterism::ROS::SensorMsgs::CompressedImage.write(w, ::Asterism::ROS::SensorMsgs::CompressedImage.from(m.texture))
102
+ w.structs(::Asterism::ROS::VisualizationMsgs::UVCoordinate, m.uv_coordinates, nil, nil)
103
+ w.string(m.text)
104
+ w.string(m.mesh_resource)
105
+ ::Asterism::ROS::VisualizationMsgs::MeshFile.write(w, ::Asterism::ROS::VisualizationMsgs::MeshFile.from(m.mesh_file))
106
+ w.bool(m.mesh_use_embedded_materials)
107
+ end
108
+
109
+ def self.read(r)
110
+ m = new
111
+ m.header = ::Asterism::ROS::StdMsgs::Header.read(r)
112
+ m.ns = r.string
113
+ m.id = r.int32
114
+ m.type = r.int32
115
+ m.action = r.int32
116
+ m.pose = ::Asterism::ROS::GeometryMsgs::Pose.read(r)
117
+ m.scale = ::Asterism::ROS::GeometryMsgs::Vector3.read(r)
118
+ m.color = ::Asterism::ROS::StdMsgs::ColorRGBA.read(r)
119
+ m.lifetime = ::Asterism::ROS::BuiltinInterfaces::Duration.read(r)
120
+ m.frame_locked = r.bool
121
+ m.points = r.structs(::Asterism::ROS::GeometryMsgs::Point, nil)
122
+ m.colors = r.structs(::Asterism::ROS::StdMsgs::ColorRGBA, nil)
123
+ m.texture_resource = r.string
124
+ m.texture = ::Asterism::ROS::SensorMsgs::CompressedImage.read(r)
125
+ m.uv_coordinates = r.structs(::Asterism::ROS::VisualizationMsgs::UVCoordinate, nil)
126
+ m.text = r.string
127
+ m.mesh_resource = r.string
128
+ m.mesh_file = ::Asterism::ROS::VisualizationMsgs::MeshFile.read(r)
129
+ m.mesh_use_embedded_materials = r.bool
130
+ m
131
+ end
132
+ end
@@ -0,0 +1,35 @@
1
+ # visualization_msgs/msg/MarkerArray (ROS 2 jazzy), generated by asterism_msggen.rb from
2
+ # MarkerArray.msg of the package visualization_msgs.
3
+ # License: Apache License 2.0, as the definition (package.xml of visualization_msgs).
4
+ # Do not edit; regenerate instead.
5
+
6
+ ::Asterism::ROS.require_type("visualization_msgs/msg/Marker")
7
+
8
+ module ::Asterism::ROS::VisualizationMsgs
9
+ end
10
+
11
+ class ::Asterism::ROS::VisualizationMsgs::MarkerArray < ::Asterism::ROS::Message
12
+ ROS_NAME = "visualization_msgs/msg/MarkerArray"
13
+ TYPE_NAME = "visualization_msgs::msg::dds_::MarkerArray_"
14
+ TYPE_HASH = "RIHS01_86cb8800b6fb05b5eff1abd7a56f62a5641d3ae9a1c29e78e67e704f1d067dcf"
15
+ FIELDS = [:markers]
16
+ FIELD_TYPES = [
17
+ ["markers", "visualization_msgs/msg/Marker", "sequence", "visualization_msgs/msg/Marker", nil, nil]
18
+ ]
19
+
20
+ attr_accessor :markers
21
+
22
+ def initialize(markers: nil)
23
+ @markers = markers.nil? ? [] : markers.map { |e| ::Asterism::ROS::VisualizationMsgs::Marker.from(e) }
24
+ end
25
+
26
+ def self.write(w, m)
27
+ w.structs(::Asterism::ROS::VisualizationMsgs::Marker, m.markers, nil, nil)
28
+ end
29
+
30
+ def self.read(r)
31
+ m = new
32
+ m.markers = r.structs(::Asterism::ROS::VisualizationMsgs::Marker, nil)
33
+ m
34
+ end
35
+ end
@@ -0,0 +1,37 @@
1
+ # visualization_msgs/msg/MeshFile (ROS 2 jazzy), generated by asterism_msggen.rb from
2
+ # MeshFile.msg of the package visualization_msgs.
3
+ # License: Apache License 2.0, as the definition (package.xml of visualization_msgs).
4
+ # Do not edit; regenerate instead.
5
+
6
+ module ::Asterism::ROS::VisualizationMsgs
7
+ end
8
+
9
+ class ::Asterism::ROS::VisualizationMsgs::MeshFile < ::Asterism::ROS::Message
10
+ ROS_NAME = "visualization_msgs/msg/MeshFile"
11
+ TYPE_NAME = "visualization_msgs::msg::dds_::MeshFile_"
12
+ TYPE_HASH = "RIHS01_7710ece15a148fb7c9b546364cfb215bb06098087bd6394fe5b73a493508f8c4"
13
+ FIELDS = [:filename, :data]
14
+ FIELD_TYPES = [
15
+ ["filename", "string", "scalar", nil, nil, nil],
16
+ ["data", "uint8", "sequence", nil, nil, nil]
17
+ ]
18
+
19
+ attr_accessor :filename, :data
20
+
21
+ def initialize(filename: nil, data: nil)
22
+ @filename = filename.nil? ? "" : filename
23
+ @data = data.nil? ? "" : data
24
+ end
25
+
26
+ def self.write(w, m)
27
+ w.string(m.filename)
28
+ w.bytes(m.data, nil, nil)
29
+ end
30
+
31
+ def self.read(r)
32
+ m = new
33
+ m.filename = r.string
34
+ m.data = r.bytes(nil)
35
+ m
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ # visualization_msgs/msg/UVCoordinate (ROS 2 jazzy), generated by asterism_msggen.rb from
2
+ # UVCoordinate.msg of the package visualization_msgs.
3
+ # License: Apache License 2.0, as the definition (package.xml of visualization_msgs).
4
+ # Do not edit; regenerate instead.
5
+
6
+ module ::Asterism::ROS::VisualizationMsgs
7
+ end
8
+
9
+ class ::Asterism::ROS::VisualizationMsgs::UVCoordinate < ::Asterism::ROS::Message
10
+ ROS_NAME = "visualization_msgs/msg/UVCoordinate"
11
+ TYPE_NAME = "visualization_msgs::msg::dds_::UVCoordinate_"
12
+ TYPE_HASH = "RIHS01_f27f7ed21fe360c6066944f856b801a0c0d1e94e815b6886444b42d90b196a26"
13
+ FIELDS = [:u, :v]
14
+ FIELD_TYPES = [
15
+ ["u", "float32", "scalar", nil, nil, nil],
16
+ ["v", "float32", "scalar", nil, nil, nil]
17
+ ]
18
+
19
+ attr_accessor :u, :v
20
+
21
+ def initialize(u: nil, v: nil)
22
+ @u = u.nil? ? 0.0 : u
23
+ @v = v.nil? ? 0.0 : v
24
+ end
25
+
26
+ def self.write(w, m)
27
+ w.float32(m.u)
28
+ w.float32(m.v)
29
+ end
30
+
31
+ def self.read(r)
32
+ m = new
33
+ m.u = r.float32
34
+ m.v = r.float32
35
+ m
36
+ end
37
+ end
@@ -26,7 +26,8 @@ module Asterism
26
26
  # The portable API, entered under LOCK. Prepended to the Asterism module's
27
27
  # singleton class, so the shared methods themselves are not changed.
28
28
  module Locked
29
- %i[expose unexpose poll nodes [] call_async meta connected? exposed on_join on_leave off_join off_leave].each do |m|
29
+ %i[expose unexpose poll nodes [] call_async meta connected? exposed on_join on_leave off_join off_leave
30
+ profile profile_async].each do |m|
30
31
  define_method(m) do |*args, **kw, &blk|
31
32
  ::Asterism::LOCK.synchronize { super(*args, **kw, &blk) }
32
33
  end
@@ -147,6 +148,17 @@ module Asterism
147
148
  ::Asterism.unexpose(name)
148
149
  end
149
150
 
151
+ # Asterism.profile: this node's profile (with keywords, sets fields).
152
+ def profile(**fields)
153
+ ::Asterism.profile(**fields)
154
+ end
155
+
156
+ # Asterism.profile_of: another node's profile, or nil. Waits like a
157
+ # call (for the receiving thread's ticks while it runs).
158
+ def profile_of(node, icon: true, timeout: nil, timeout_ms: nil)
159
+ ::Asterism.profile_of(node, icon: icon, timeout: timeout, timeout_ms: timeout_ms)
160
+ end
161
+
150
162
  # A proxy for <node>/<app>/<object>; timeout: in seconds (or
151
163
  # timeout_ms:).
152
164
  def [](path, timeout: nil, timeout_ms: nil)
@@ -24,6 +24,44 @@ module Asterism
24
24
  Process.clock_gettime(Process::CLOCK_MONOTONIC, :millisecond)
25
25
  end
26
26
 
27
+ # The profile's defaults on CRuby (mrblib/profile.rb): kind "cruby" and
28
+ # the icon bundled with the gem (replace it with Asterism.profile(icon:)).
29
+ ICON_FILE = File.expand_path("../../data/icon.png", __dir__)
30
+
31
+ def self.default_profile_kind
32
+ "cruby"
33
+ end
34
+
35
+ def self.default_icon_path
36
+ ICON_FILE
37
+ end
38
+
39
+ def self.read_icon_file(path)
40
+ File.binread(path)
41
+ rescue SystemCallError
42
+ nil
43
+ end
44
+
45
+ module Profile
46
+ # Icons come out of MessagePack as UTF-8 Strings: hand them out as the
47
+ # bytes they are.
48
+ class << self
49
+ alias_method :check_portable, :check
50
+
51
+ def check(h)
52
+ out = check_portable(h)
53
+ out["icon"] = out["icon"].b if out&.key?("icon")
54
+ out
55
+ end
56
+
57
+ alias_method :icon_portable!, :icon!
58
+
59
+ def icon!(v)
60
+ icon_portable!(v).b.freeze
61
+ end
62
+ end
63
+ end
64
+
27
65
  def self.error_reply(klass, message)
28
66
  ::MessagePack.pack(["error", klass.to_s, message.to_s], compatibility_mode: true)
29
67
  end
@@ -1,5 +1,6 @@
1
1
  module Asterism
2
- # The gem's version (the CRuby gem asterism; it depends on asterism-zenoh
3
- # of the same version).
4
- VERSION = "0.4.0"
2
+ # The gem's version (the CRuby gem asterism). The Zenoh binding it needs
3
+ # is in asterism.gemspec (asterism-zenoh ~> 0.4.0 for 0.5.0: the bindings
4
+ # did not change; see CHANGELOG.md).
5
+ VERSION = "0.5.0"
5
6
  end
data/lib/asterism.rb CHANGED
@@ -12,7 +12,7 @@ require "asterism/zenoh"
12
12
  require_relative "asterism/version"
13
13
 
14
14
  # The same order as an mrbgem's mrblib (alphabetical).
15
- %w[asterism cdr future proxy ros].each do |f|
15
+ %w[asterism cdr future profile proxy ros].each do |f|
16
16
  require_relative "../mrblib/#{f}"
17
17
  end
18
18
  require_relative "asterism/cruby"
data/mrblib/asterism.rb CHANGED
@@ -14,6 +14,7 @@
14
14
  # asterism/<node>/<app>/<object>/meta get: reply {"methods" => [[name, arity], ...]}
15
15
  # asterism/<node> liveliness: the node is up
16
16
  # asterism/<node>/<app>/<object> liveliness: the object is exposed
17
+ # asterism/<node>/@profile get: reply the node's profile (profile.rb)
17
18
  #
18
19
  # Everything is polled: nothing runs behind the application's back. A call
19
20
  # that waits for its answer keeps polling meanwhile and answers the calls
@@ -221,6 +222,7 @@ module Asterism
221
222
  @node_token = s.liveliness("#{ROOT}/#{node}")
222
223
  @queryable = s.queryable("#{ROOT}/#{node}/#{app}/**", depth: 32)
223
224
  @watch = s.liveliness_watch("#{ROOT}/**", depth: watch_depth)
225
+ @profile_queryable = s.queryable("#{ROOT}/#{node}/#{Profile::KEY}", depth: 4)
224
226
  rescue Asterism::Zenoh::Error => e
225
227
  s.close
226
228
  raise Disconnected, e.message
@@ -235,6 +237,7 @@ module Asterism
235
237
  @depth = 0
236
238
  @lost = nil
237
239
  @known = [] # the other nodes told to on_join so far
240
+ tell_profile # for those who follow the profiles (the reply is the queryable's)
238
241
  self
239
242
  end
240
243
 
@@ -300,6 +303,7 @@ module Asterism
300
303
  @node_token = nil
301
304
  @queryable = nil
302
305
  @watch = nil
306
+ @profile_queryable = nil
303
307
  end
304
308
 
305
309
  # @api private
@@ -447,6 +451,7 @@ module Asterism
447
451
  return false
448
452
  end
449
453
  answer_calls
454
+ answer_profile
450
455
  follow_liveliness
451
456
  !@session.nil?
452
457
  rescue Asterism::Zenoh::Error => e