package pjisuv_msgs

import (
	"github.com/bluenviron/goroslib/v2/pkg/msg"
	"github.com/bluenviron/goroslib/v2/pkg/msgs/actionlib_msgs"
	"github.com/bluenviron/goroslib/v2/pkg/msgs/geometry_msgs"
	"github.com/bluenviron/goroslib/v2/pkg/msgs/std_msgs"
	"time"
)

type GetMapAction struct {
	msg.Package    `ros:"nav_msgs"`
	ActionGoal     GetMapActionGoal
	ActionResult   GetMapActionResult
	ActionFeedback GetMapActionFeedback
}
type GetMapActionFeedback struct {
	msg.Package `ros:"nav_msgs"`
	Header      std_msgs.Header
	Status      actionlib_msgs.GoalStatus
	Feedback    GetMapFeedback
}
type GetMapActionGoal struct {
	msg.Package `ros:"nav_msgs"`
	Header      std_msgs.Header
	GoalId      actionlib_msgs.GoalID
	Goal        GetMapGoal
}
type GetMapActionResult struct {
	msg.Package `ros:"nav_msgs"`
	Header      std_msgs.Header
	Status      actionlib_msgs.GoalStatus
	Result      GetMapResult
}
type GetMapFeedback struct {
	msg.Package `ros:"nav_msgs"`
}
type GetMapGoal struct {
	msg.Package `ros:"nav_msgs"`
}

type GetMapResult struct {
	msg.Package `ros:"nav_msgs"`
	Map         OccupancyGrid
}
type GridCells struct {
	msg.Package `ros:"nav_msgs"`
	Header      std_msgs.Header
	CellWidth   float32
	CellHeight  float32
	Cells       []geometry_msgs.Point
}
type MapMetaData struct {
	msg.Package `ros:"nav_msgs"`
	MapLoadTime time.Time
	Resolution  float32
	Width       uint32
	Height      uint32
	Origin      geometry_msgs.Pose
}
type OccupancyGrid struct {
	msg.Package `ros:"nav_msgs"`
	Header      std_msgs.Header
	Info        MapMetaData
	Data        []int8
}
type Odometry struct {
	msg.Package  `ros:"nav_msgs"`
	Header       std_msgs.Header
	ChildFrameId string
	Pose         geometry_msgs.PoseWithCovariance
	Twist        geometry_msgs.TwistWithCovariance
}
type Path struct {
	msg.Package `ros:"nav_msgs"`
	Header      std_msgs.Header
	Poses       []geometry_msgs.PoseStamped
}
