OpenMower

From World Wide Wiegert Wiki - WWWW
Jump to: navigation, search

Subscribers:

   1. cmd_vel_sub: Subscribes to the cmd_vel topic.
       ◦ Message Type: geometry_msgs::Twist
       ◦ Description: Contains the desired linear and angular velocities for the robot.
       ◦ Contents:
           ▪ linear.x: Linear velocity in the x-axis direction (m/s).
           ▪ linear.y: Linear velocity in the y-axis direction (m/s).
           ▪ linear.z: Linear velocity in the z-axis direction (m/s).
           ▪ angular.x: Angular velocity around the x-axis (rad/s).
           ▪ angular.y: Angular velocity around the y-axis (rad/s).
           ▪ angular.z: Angular velocity around the z-axis (rad/s).
   2. high_level_status_sub: Subscribes to the /mower_logic/current_state topic.
       ◦ Message Type: mower_msgs::HighLevelStatus
       ◦ Description: Receives the high-level state of the mower from the mower logic node. This state includes information about the current operating mode, substate, GPS quality, battery status, charging status, and emergency flag.
       ◦ Fields:
           ▪ state: An integer representing the current high-level state of the mower (e.g., idle, autonomous, recording, etc.).
           ▪ state_name: A string representing the name of the current high-level state (e.g., "IDLE", "AUTONOMOUS", "RECORDING").
           ▪ sub_state_name: A string representing the name of the current substate (e.g., "SUBSTATE_1", "SUBSTATE_2", "SUBSTATE_3", "SUBSTATE_4").
           ▪ gps_quality_percent: A float32 value representing the GPS quality as a percentage, where 0% indicates no GPS signal and 100% indicates a perfect GPS signal.
           ▪ battery_percent: A float32 value representing the battery charge level as a percentage, where 0% indicates an empty battery and 100% indicates a fully charged battery.
           ▪ is_charging: A boolean value indicating whether the mower is currently charging or not.
           ▪ emergency: A boolean value indicating if there is an active emergency situation, such as a collision, detected by the mower.
       ◦ Callback Function: highLevelStatusReceived
           ▪ Description: Handles the received high-level state of the mower, updating the internal state representation for the mower communication node.

Publishers:

   1. status_pub: Publishes to the /mower/status topic.
       ◦ Message Type: mower_msgs::Status
       ◦ Description: Publishes the current status of the mower, including information about the mower's low-level systems, power status, ultrasonic range measurements, emergency status, battery, and ESC statuses.
       ◦ Fields:
           ▪ stamp: A time object representing the timestamp of the message.
           ▪ mower_status: An integer representing the mower's status, such as initializing or OK.
           ▪ raspberry_pi_power: A boolean value indicating if the Raspberry Pi has power.
           ▪ gps_power: A boolean value indicating if the GPS module has power.
           ▪ esc_power: A boolean value indicating if the Electronic Speed Controllers (ESCs) have power.
           ▪ rain_detected: A boolean value indicating if rain is detected.
           ▪ sound_module_available: A boolean value indicating if the sound module is available.
           ▪ sound_module_busy: A boolean value indicating if the sound module is busy.
           ▪ ui_board_available: A boolean value indicating if the UI board is available.
           ▪ ultrasonic_ranges: An array of 5 float32 values representing the ultrasonic range measurements.
           ▪ emergency: A boolean value indicating if there is an active emergency situation, such as a collision, detected by the mower.
           ▪ v_charge: A float32 value representing the charge voltage.
           ▪ v_battery: A float32 value representing the battery voltage.
           ▪ charge_current: A float32 value representing the charge current.
           ▪ left_esc_status: An ESCStatus object containing information about the status of the left ESC.
           ▪ right_esc_status: An ESCStatus object containing information about the status of the right ESC.
           ▪ mow_esc_status: An ESCStatus object containing information about the status of the mow ESC.
   2. wheel_tick_pub: Publishes the mower/wheel_ticks topic.
       ◦ Message Type: xbot_msgs::WheelTick
       ◦ Description: Publishes the wheel tick information for the left and right wheels of the mower, which is used to calculate odometry.
       ◦ Fields:
           ▪ header: Standard ROS message header containing a timestamp and frame_id.
           ▪ left_ticks: The number of ticks for the left wheel since the last message.
           ▪ right_ticks: The number of ticks for the right wheel since the last message.
           ▪ interval: The time interval in seconds between the current and previous wheel tick message.
   3. sensor_imu_pub: Publishes to the imu/data_raw topic.
       ◦ Message Type: sensor_msgs::Imu
       ◦ Description: Provides raw IMU data, including linear acceleration and angular velocity.
       ◦ Contents:
           ▪ header: Message header, containing timestamp and frame ID.
           ▪ orientation: Orientation as a quaternion (x, y, z, w).
           ▪ orientation_covariance: Orientation covariance matrix (3x3).
           ▪ angular_velocity: Angular velocity vector (x, y, z) in rad/s.
           ▪ angular_velocity_covariance: Angular velocity covariance matrix (3x3).
           ▪ linear_acceleration: Linear acceleration vector (x, y, z) in m/s^2.
           ▪ linear_acceleration_covariance: Linear acceleration covariance matrix (3x3).
   4. sensor_mag_pub: Publishes to the imu/mag topic.
       ◦ Message Type: sensor_msgs::MagneticField
       ◦ Description: Provides magnetic field data from the IMU.
       ◦ Contents:
           ▪ header: Message header, containing timestamp and frame ID.
           ▪ magnetic_field: Magnetic field vector (x, y, z) in Tesla.
           ▪ magnetic_field_covariance: Magnetic field covariance matrix (3x3).

Services:

   1. mow_service: Advertises the mower_service/mow_enabled service.
       ◦ Service Type: std_srvs::SetBool
       ◦ Description: Allows enabling or disabling the mower's mowing functionality.
       ◦ Request Fields:
           ▪ data: A boolean value representing the desired state of the mower's mowing functionality. True for enabling and False for disabling.
       ◦ Response Fields:
           ▪ success: A boolean value indicating if the requested operation was successful.
           ▪ message: A string providing additional information about the outcome of the operation.
   2. emergency_service: Advertises the mower_service/emergency service.
       ◦ Service Type: std_srvs::Trigger
       ◦ Description: Triggers an emergency stop for the mower.
       ◦ Request Fields: No fields required.
       ◦ Response Fields:
           ▪ success: A boolean value indicating if the emergency stop was successfully triggered.
           ▪ message: A string providing additional information about the outcome of the operation.