From a2c759de52ce12a4356894f703425a4258effaa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Mastrangelo?= Date: Thu, 3 Oct 2024 22:29:21 -0400 Subject: [PATCH] added logger msgs in ROS2 Jazzy --- .../clearpath_logger_msgs/CHANGELOG.rst | 37 +++++++ .../clearpath_logger_msgs/CMakeLists.txt | 40 +++++++ .../clearpath_logger_msgs/msg/Event.msg | 101 ++++++++++++++++++ .../clearpath_logger_msgs/msg/EventLog.msg | 45 ++++++++ .../clearpath_logger_msgs/msg/EventLogs.msg | 1 + .../clearpath_logger_msgs/package.xml | 21 ++++ .../clearpath_logger_msgs/srv/DeleteLog.srv | 5 + .../clearpath_logger_msgs/srv/DownloadLog.srv | 8 ++ .../clearpath_logger_msgs/srv/GetAllLogs.srv | 2 + .../srv/RecordCustomEvent.srv | 10 ++ .../srv/RecordErrorEvent.srv | 10 ++ .../clearpath_logger_msgs/srv/RecordEvent.srv | 7 ++ .../srv/RecordLocationEvent.srv | 20 ++++ .../srv/RecordMediaEvent.srv | 13 +++ .../srv/RecordPowerEvent.srv | 8 ++ .../srv/StartRecording.srv | 4 + .../srv/StopRecording.srv | 4 + 17 files changed, 336 insertions(+) create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/CHANGELOG.rst create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/CMakeLists.txt create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/msg/Event.msg create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/msg/EventLog.msg create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/msg/EventLogs.msg create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/package.xml create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/DeleteLog.srv create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/DownloadLog.srv create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/GetAllLogs.srv create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordCustomEvent.srv create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordErrorEvent.srv create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordEvent.srv create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordLocationEvent.srv create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordMediaEvent.srv create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordPowerEvent.srv create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/StartRecording.srv create mode 100644 clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/StopRecording.srv diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/CHANGELOG.rst b/clearpath_outdoornav_msgs/clearpath_logger_msgs/CHANGELOG.rst new file mode 100644 index 0000000..a56b895 --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/CHANGELOG.rst @@ -0,0 +1,37 @@ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Changelog for package clearpath_logger_msgs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +0.10.0 (2024-07-04) +------------------- +* Merge pull request `#46 `_ from clearpathrobotics/0.13/features + 0.13/features +* Merge remote-tracking branch 'refs/remotes/origin/mission-logger' into 0.13/features +* Docs +* mission_uuid -> name in StartRecording +* EventLog mission_uuid -> name +* Add MIME types to media events +* Remove quotation marks around string constants; they are not required +* Add error event logging, add a custom json field to the master event log +* Add the custom json data to the stop_recording service +* Change the heading units +* Add the EventLogs message +* Add an additional flag to expunge the master record if desired +* Add the service to delete logs +* Add a flag to indicate if media files are missing from recording archives +* Add the auto_telemetry tag +* Remove an unnecessary dependency +* Fix the all-logs service to return an array +* Fix constants +* Add additional services, add fields to event-recorder services +* Add the download-log service +* TAG_POSITION -> TAG_LOCATION, add frame_id to custom events +* Add additional services +* Add the custom event service +* Add initial event-recording services +* Add first-draft Event, EventLog messages +* Fill in the skeleton for the new messages package +* Contributors: Chris Iverach-Brereton, Stephen Phillips, jmastrangelo-cpr + +0.9.9 (2024-03-14) +------------------ diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/CMakeLists.txt b/clearpath_outdoornav_msgs/clearpath_logger_msgs/CMakeLists.txt new file mode 100644 index 0000000..60c125c --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 3.8) +project(clearpath_logger_msgs) + +## Find catkin macros and libraries +find_package(rosidl_default_generators REQUIRED) +find_package(ament_cmake REQUIRED) +find_package(geometry_msgs REQUIRED) +find_package(nav_msgs REQUIRED) +find_package(sensor_msgs REQUIRED) +find_package(std_msgs REQUIRED) +set(CMAKE_CXX_STANDARD 17) + +rosidl_generate_interfaces( + ${PROJECT_NAME} + msg/Event.msg + msg/EventLog.msg + msg/EventLogs.msg + srv/DeleteLog.srv + srv/GetAllLogs.srv + srv/DownloadLog.srv + srv/RecordEvent.srv + srv/RecordCustomEvent.srv + srv/RecordErrorEvent.srv + srv/RecordLocationEvent.srv + srv/RecordMediaEvent.srv + srv/RecordPowerEvent.srv + srv/StartRecording.srv + srv/StopRecording.srv + DEPENDENCIES + geometry_msgs + nav_msgs + sensor_msgs + std_msgs +) + +ament_package() + +install(FILES + DESTINATION include/${PROJECT_NAME} +) diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/msg/Event.msg b/clearpath_outdoornav_msgs/clearpath_logger_msgs/msg/Event.msg new file mode 100644 index 0000000..62b54a4 --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/msg/Event.msg @@ -0,0 +1,101 @@ +################################################################################ +## Universal log event. Represents a single even recorded to the log +################################################################################ + +# Tag for events that include a media_path +string TAG_MEDIA = media + +# Tag indicating that the event's charger status & battery level have been set +string TAG_POWER = power + +# Tag indicating that the event's GPS position has been set +string TAG_LOCATION = location + +# Tag indicating that the event's odometry data has been set +string TAG_ODOMETRY = odom + +# Tag indicating that the event's velocity data has been set +string TAG_VELOCITY = vel + +# Tag indicating that the event's error/debugging data has been set +string TAG_ERROR = error + +# Tag indicating that this event was automatically recorded telemetry +string TAG_AUTO_TELEMETRY = auto_telemetry + +################################################################################ +## Header & general meta-data about the event +################################################################################ + +# Header +# - seq: the order of this event within its parent ExecutionLog +# - frame_id: the sensor/manipulator frame referenced by the frame_pose field +# - stamp: the time that this event occurred +std_msgs/Header header + +################################################################################ +## Media & sensor data +################################################################################ + +# If this even has media, this is its path on-disk +string media_path + +# If this event has media, this is its MIME type +# May be left blank +string media_mime_type + +# The pose of the sensor/manipulator frame given by header.frame_id relative to +# base_link +geometry_msgs/Pose frame_pose + +################################################################################ +## Robot location, orientation, velocity +################################################################################ + +# The robot's latitude, longitude, and heading as recorded by the GPS +# - lat: decimal degrees +# - lon: decimal degrees +# - heading: ENU orientation in radians +geometry_msgs/Point lat_lon_heading + +# The robot's location relative to the odometry frame +nav_msgs/Odometry odometry + +# The robot's linear & angular velocity +geometry_msgs/Twist velocity + +################################################################################ +## Power & battery +################################################################################ + +# The 0-1 charge level of the battery +float32 battery_percent + +# True of the robot's battery is charging, otherwise False +bool charging + +# True if power-saving/low-power mode is enabled, otherwise False +bool power_saver + +################################################################################ +## Error and debugging events +################################################################################ + +# An error code indicating the type of error +int32 error_code + +# A diagnostic error message, or non-integer error code +string error_msg + +# The name of the module/process/pipeline/etc... that signalled the error +string error_component + +################################################################################ +## Custom fields for expansion +################################################################################ + +# Arbitrary free-form tags usable to annotate custom data +string[] tags + +# Arbitrary JSON-formatted data that can contain user-defined fields +string custom_fields_json diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/msg/EventLog.msg b/clearpath_outdoornav_msgs/clearpath_logger_msgs/msg/EventLog.msg new file mode 100644 index 0000000..2c5dde0 --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/msg/EventLog.msg @@ -0,0 +1,45 @@ +################################################################################ +## A log representing a single mission execution +################################################################################ + +# The log is currently active and being modified +int32 STATE_ACTIVE = 0 + +# The log is old and closed +int32 STATE_CLOSED = 1 + +# The master record of the log exists, but its data has been deleted from the disk +int32 STATE_DELETED = 2 + +# The state of the log on disk +int32 state + +# The time the log started recording +builtin_interfaces/Time start_time + +# The time the log stopped recording +builtin_interfaces/Time end_time + +# This execution's unique ID +string uuid + +# A descriptive name for the log to be displayed in the GUI. Does not need to be unique +string name + +# The total percentage of the battery used during the execution +# This measures only negative changes, not positive ones +# e.g. if the robot uses 75% of the battery, returns to dock to recharge to full +# and then finishes the mission using another 75% of the battery, this value +# will read 1.5 +float32 battery_percent_used + +# The total distance driven by the robot (approximate) during the execution (meters) +# The exact path used to calculate the distance may be simplified and subject to +# sensor noise/error +float32 distance_driven + +# A custom JSON field for adding additional custom metrics, meta-data, etc... as needed +string custom_fields_json + +# The list of events recorded in this execution +clearpath_logger_msgs/Event[] events diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/msg/EventLogs.msg b/clearpath_outdoornav_msgs/clearpath_logger_msgs/msg/EventLogs.msg new file mode 100644 index 0000000..c55b10e --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/msg/EventLogs.msg @@ -0,0 +1 @@ +clearpath_logger_msgs/EventLog[] logs diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/package.xml b/clearpath_outdoornav_msgs/clearpath_logger_msgs/package.xml new file mode 100644 index 0000000..ad27bd5 --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/package.xml @@ -0,0 +1,21 @@ + + + + clearpath_logger_msgs + 0.10.0 + ROS package containing the message definitions for the Clearpath Robotics OutdoorNav logging module. + Chris Iverach-Brereton + Proprietary + + ament_cmake + rosidl_default_generators + + rosidl_default_runtime + + ament_cmake + + rosidl_interface_packages + + diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/DeleteLog.srv b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/DeleteLog.srv new file mode 100644 index 0000000..a9c40bb --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/DeleteLog.srv @@ -0,0 +1,5 @@ +string uuid +bool delete_media +bool purge_record +--- +bool success diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/DownloadLog.srv b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/DownloadLog.srv new file mode 100644 index 0000000..36e02af --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/DownloadLog.srv @@ -0,0 +1,8 @@ +# The UUID of the recording to download +string log_uuid +--- +# The on-disk path the the generated archive +string path + +# If True at least one media file from the recording has been moved/deleted +bool media_missing diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/GetAllLogs.srv b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/GetAllLogs.srv new file mode 100644 index 0000000..32b1fe9 --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/GetAllLogs.srv @@ -0,0 +1,2 @@ +--- +clearpath_logger_msgs/EventLog[] logs diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordCustomEvent.srv b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordCustomEvent.srv new file mode 100644 index 0000000..6d248e1 --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordCustomEvent.srv @@ -0,0 +1,10 @@ +# A valid JSON string containing the custom data to be recorded +string custom_fields_json + +# Tags to add to the event +string[] tags + +# Optional frame ID relevant to the event +string frame_id +--- +clearpath_logger_msgs/Event event diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordErrorEvent.srv b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordErrorEvent.srv new file mode 100644 index 0000000..8e61693 --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordErrorEvent.srv @@ -0,0 +1,10 @@ +# An error code indicating the type of error +int32 error_code + +# A diagnostic error message, or non-integer error code +string error_msg + +# The name of the module/process/pipeline/etc... that signalled the error +string error_component +--- +clearpath_logger_msgs/Event event diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordEvent.srv b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordEvent.srv new file mode 100644 index 0000000..cb8eea8 --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordEvent.srv @@ -0,0 +1,7 @@ +# The event to be recorded +# If the header's stamp is not zero the header will be modified to be the current time +# Otherwise the provided time will be used without verification +clearpath_logger_msgs/Event event +--- +# The event as it was recorded, after any modifications made for serialization +clearpath_logger_msgs/Event event diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordLocationEvent.srv b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordLocationEvent.srv new file mode 100644 index 0000000..efb79a7 --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordLocationEvent.srv @@ -0,0 +1,20 @@ +# The robot's current latitude (decimal degrees) +float64 latitude + +# The robot's current longitude (decimal degrees) +float64 longitude + +# The robot's current heading (cardinal direction in decimal degrees) +float64 heading + +# The robot's current linear & angular velocity +geometry_msgs/Twist velocity + +# The robot's current odometry location +nav_msgs/Odometry odometry + +# Tags for the event +# Should contain one or more of Event.TAG_LOCATION, TAG_ODOMETRY, or TAG_VELOCITY +string[] tags +--- +clearpath_logger_msgs/Event event diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordMediaEvent.srv b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordMediaEvent.srv new file mode 100644 index 0000000..8a707d0 --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordMediaEvent.srv @@ -0,0 +1,13 @@ +# The path to the media file on-disk +string media_path + +# A MIME type string indicating the media type +# May be left blank if desired +string mime_type + +# The frame ID for the sensor that recorded the media +# Leave blank if the sensor has no frame/TF data associated with it +string frame_id +--- +# The logged event +clearpath_logger_msgs/Event event diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordPowerEvent.srv b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordPowerEvent.srv new file mode 100644 index 0000000..7a2ad3d --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/RecordPowerEvent.srv @@ -0,0 +1,8 @@ +# The battery's current level +# 0.0 to 1.0 +float32 battery_percent + +# Is the battery currently charging? +bool charging +--- +clearpath_logger_msgs/Event event diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/StartRecording.srv b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/StartRecording.srv new file mode 100644 index 0000000..f42da2a --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/StartRecording.srv @@ -0,0 +1,4 @@ +# A human-readable name for the log +string name +--- +clearpath_logger_msgs/EventLog log diff --git a/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/StopRecording.srv b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/StopRecording.srv new file mode 100644 index 0000000..905dbb8 --- /dev/null +++ b/clearpath_outdoornav_msgs/clearpath_logger_msgs/srv/StopRecording.srv @@ -0,0 +1,4 @@ +# Additional custom end-of-mission metrics to record as part of the log +string custom_fields_json +--- +clearpath_logger_msgs/EventLog log