Robot monitoring system in ROS 2 (0-20 points) How to learn ROS 2: - https://roboticsbackend.com/how-to-learn-ros2/ Helpful links about ROS 2 custom messages, services and actions: - https://roboticsbackend.com/ros2-create-custom-message/ (how to create custom messages for topics and services) - https://foxglove.dev/blog/creating-ros2-actions (how to create custom actions) - https://github.com/ros2/demos/tree/humble/action_tutorials (example ROS 2 packages with actions) - https://github.com/ros2/examples/tree/humble/rclpy/services (example ROS 2 packages with services) Grading: - working state monitor node: + it subscribes to /lidar_state and /camera_state by using ROS 2 parameter loaded from YAML in the launcher (2), + it generates error states after parameterized timeout or on False message from any sensor (2), + it uses ROS 2 service client to call error handler node with sensor name as argument (3), + it publishes the whole robot state on /robot_state (1) - error handler node: + it uses ROS 2 actions to "restart" given sensor (default: 5 s, it has to be ROS 2 parameter) and it reports the progress of restarting (4), + it implements ROS 2 service server for monitor_node (3) - lidar and camera nodes: + they publish their state with specified frequency (1) + they implement the Action server to handle restart (by default 5 s, it has to be ROS 2 parameter) (3) - the whole project is a set of ROS 2 packages (1, but it is MANDATORY) Total - 20 points