"""ROS1 nav_msgs message definitions for noetic.

Auto-generated by scripts/generate_ros1_messages.py
Source: https://github.com/ros/common_msgs/tree/noetic-devel/nav_msgs/msg
"""
from __future__ import annotations

from dataclasses import dataclass
from typing import Literal

import pybag.ros1.noetic.geometry_msgs as geometry_msgs
import pybag.ros1.noetic.std_msgs as std_msgs
import pybag.types as t


@dataclass(kw_only=True)
class GridCells:
    __msg_name__ = 'nav_msgs/GridCells'

    header: std_msgs.Header
    cell_width: t.float32
    cell_height: t.float32
    cells: t.Array[geometry_msgs.Point]


@dataclass(kw_only=True)
class MapMetaData:
    __msg_name__ = 'nav_msgs/MapMetaData'

    map_load_time: t.ros1.time
    resolution: t.float32
    width: t.uint32
    height: t.uint32
    origin: geometry_msgs.Pose


@dataclass(kw_only=True)
class Odometry:
    __msg_name__ = 'nav_msgs/Odometry'

    header: std_msgs.Header
    child_frame_id: t.string
    pose: geometry_msgs.PoseWithCovariance
    twist: geometry_msgs.TwistWithCovariance


@dataclass(kw_only=True)
class Path:
    __msg_name__ = 'nav_msgs/Path'

    header: std_msgs.Header
    poses: t.Array[geometry_msgs.PoseStamped]


@dataclass(kw_only=True)
class OccupancyGrid:
    __msg_name__ = 'nav_msgs/OccupancyGrid'

    header: std_msgs.Header
    info: MapMetaData
    data: t.Array[t.int8]
