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 and services: - https://discourse.ros.org/t/introducing-ros2-pkg-create-new-powerful-ros-2-package-generator/40669 (advanced custom ROS 2 package creator made recently open-source) - https://roboticsbackend.com/ros2-create-custom-message/ (how to create custom messages for topics and services) - https://docs.ros.org/en/humble/Tutorials/Beginner-Client-Libraries/Writing-A-Simple-Py-Service-And-Client.html (ROS 2 service and client) Grading L7-L8: - working state monitor node: + it subscribes to every /[sensors_name]_state by using sensor names from ROS 2 parameter loaded from YAML in the launcher (2), + it generates error state after a False message from any sensor (you can assume multiple failure states at the same time possible) (2), + it uses ROS 2 service client to ComponentError to call error handler node with sensor name as argument (3), + it publishes the whole robot state on /robot_state as Boolean true/false (1) - error handler node: + it uses ROS 2 service to "restart" given sensor and it reports the result of restarting (4), + it implements ROS 2 service server for monitor_node (3) - sensor nodes: + they publish their state with specified frequency in the parameters (1) + they are mocking up the sensor state failure after some time, e.g. they publish 6s True, then False once or until restarted, then True again (1) + they implement the service server to handle restart (by default random delay up to max 2s before returning True as a result, it could be ROS 2 parameter) (2) - the whole project is a set of ROS 2 packages, e.g. state_monitor for state monitor and error handler nodes, state_monitor_sensors for sensor nodes state_monitor_interfaces for custom services (1, but it is MANDATORY) Total - 20 points