package pjisuv_msgs

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

type LidarCentroids struct {
	msg.Package `ros:"lidar_msgs"`
	Header      std_msgs.Header
	Points      []geometry_msgs.Point
}
type LidarCloudCluster struct {
	msg.Package    `ros:"lidar_msgs"`
	Header         std_msgs.Header
	IsObj          bool
	Id             uint32
	Label          string
	Score          float64
	Cloud          sensor_msgs.PointCloud2
	Cells          []ObstacleCell
	ConvexHull     geometry_msgs.PolygonStamped
	Pose           geometry_msgs.Pose
	Dimensions     geometry_msgs.Vector3
	EstimatedAngle float64
	MinPoint       geometry_msgs.PointStamped
	MaxPoint       geometry_msgs.PointStamped
	AvgPoint       geometry_msgs.PointStamped
	CentroidPoint  geometry_msgs.PointStamped
	EigenValues    geometry_msgs.Vector3
	EigenVectors   []geometry_msgs.Vector3
	FpfhDescriptor std_msgs.Float32MultiArray
	IndicatorState uint32
}
type LidarCloudClusterArray struct {
	msg.Package `ros:"lidar_msgs"`
	Header      std_msgs.Header
	Clusters    []LidarCloudCluster
}
type DetectedObject struct {
	msg.Package          `ros:"lidar_msgs"`
	Header               std_msgs.Header
	Id                   uint32
	Label                string
	Type                 uint8
	Score                float32
	Color                std_msgs.ColorRGBA
	Valid                bool
	Pose                 geometry_msgs.Pose
	TrackedPose          geometry_msgs.Pose
	OutputPose           geometry_msgs.Pose
	Yaw                  float32
	Dimensions           geometry_msgs.Vector3
	Velocity             geometry_msgs.Twist
	Acceleration         geometry_msgs.Twist
	Angle                float32
	BehaviorState        uint8
	Age                  uint32
	Velocitystatus       uint8
	Confidence           float32
	Pointcloud           sensor_msgs.PointCloud2
	Cells                []ObstacleCell
	ConvexHull           geometry_msgs.PolygonStamped
	PoseReliable         bool
	VelocityReliable     bool
	AccelerationReliable bool
}
type DetectedObjectArray struct {
	msg.Package `ros:"lidar_msgs"`
	Header      std_msgs.Header
	Objects     []DetectedObject
	OtherCells  []ObstacleCell
}

type ObjFusion struct {
	msg.Package    `ros:"lidar_msgs"`
	Header         std_msgs.Header
	Type           string
	ObjId          []int32
	ReprojectedPos []geometry_msgs.Point
}
