35template <
class RadarPo
intT>
38 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
51 const std::vector<int>& indices) {
58 RadarPointT point = RadarPointT())
68 inline const RadarPointT*
at(
size_t col,
size_t row)
const {
71 inline RadarPointT*
at(
size_t col,
size_t row) {
74 inline const RadarPointT*
operator()(
size_t col,
size_t row)
const {
103 inline const RadarPointT&
at(
size_t n)
const {
return points_[n]; }
112 inline virtual void push_back(
const RadarPointT& point) {
123 inline virtual bool SwapPoint(
size_t source_id,
size_t target_id) {
146 template <
typename IndexType>
148 const std::vector<IndexType>& indices) {
151 points_.resize(indices.size());
152 for (
size_t i = 0; i < indices.size(); ++i) {
156 template <
typename IndexType>
159 const std::vector<IndexType>& indices) {
163 std::vector<bool> mask(
false, rhs.
size());
164 for (
size_t i = 0; i < indices.size(); ++i) {
165 mask[indices[i]] =
true;
167 for (
size_t i = 0; i < rhs.
size(); ++i) {
182 typedef typename std::vector<RadarPointT>::iterator
iterator;
206 Eigen::Vector3d point3d;
209 if (!check_nan || (!std::isnan(point.x) && !std::isnan(point.y) &&
210 !std::isnan(point.z))) {
211 point3d << point.x, point.y, point.z;
212 point3d = rotation * point3d;
213 point.x =
static_cast<typename RadarPointT::Type
>(point3d(0));
214 point.y =
static_cast<typename RadarPointT::Type
>(point3d(1));
215 point.z =
static_cast<typename RadarPointT::Type
>(point3d(2));
222 Eigen::Vector3d point3d;
224 if (!check_nan || (!std::isnan(point.x) && !std::isnan(point.y) &&
225 !std::isnan(point.z))) {
226 point3d << point.x, point.y, point.z;
228 point.x =
static_cast<typename RadarPointT::Type
>(point3d(0));
229 point.y =
static_cast<typename RadarPointT::Type
>(point3d(1));
230 point.z =
static_cast<typename RadarPointT::Type
>(point3d(2));
239 bool check_nan =
false)
const {
240 Eigen::Vector3f point3f;
243 if (!check_nan || (!std::isnan(point.x) && !std::isnan(point.y) &&
244 !std::isnan(point.z))) {
245 point3f << point.x, point.y, point.z;
246 point3f = transform * point3f;
247 pt.x =
static_cast<typename RadarPointT::Type
>(point3f(0));
248 pt.y =
static_cast<typename RadarPointT::Type
>(point3f(1));
249 pt.z =
static_cast<typename RadarPointT::Type
>(point3f(2));
268template <
class RadarPo
intT>
286 const std::vector<int>& indices) {
291 const RadarPointT point = RadarPointT()) {
295 AFATAL <<
"overflow detected.";
324 inline void push_back(
const RadarPointT& point)
override {
329 inline void push_back(
const RadarPointT& point,
double timestamp,
330 float height = std::numeric_limits<float>::max(),
331 int32_t beam_id = -1, uint8_t label = 0) {
343 const size_t target_id)
override {
353 inline bool CopyPoint(
const size_t id,
const size_t rhs_id,
367 template <
typename IndexType>
370 const std::vector<IndexType>& indices) {
373 points_.resize(indices.size());
374 for (
size_t i = 0; i < indices.size(); ++i) {
393 return row *
width_ + col;
void push_back(const RadarPointT &point, double timestamp, float height=std::numeric_limits< float >::max(), int32_t beam_id=-1, uint8_t label=0)
AttributeRadarPointCloud(const size_t width, const size_t height, const RadarPointT point=RadarPointT())
AttributeRadarPointCloud(const AttributeRadarPointCloud< RadarPointT > &pc, const std::vector< int > &indices)
AttributeRadarPointCloud(const AttributeRadarPointCloud< RadarPointT > &pc, const PointIndices &indices)
bool CopyPoint(const size_t id, const size_t rhs_id, const AttributeRadarPointCloud< RadarPointT > &rhs)
bool CheckConsistency() const override
void push_back(const RadarPointT &point) override
void SwapRadarPointCloud(AttributeRadarPointCloud< RadarPointT > *rhs)
AttributeRadarPointCloud & operator+=(const AttributeRadarPointCloud< RadarPointT > &rhs)
void reserve(const size_t size) override
bool SwapPoint(const size_t source_id, const size_t target_id) override
size_t TransferToIndex(const size_t col, const size_t row) const
void CopyRadarPointCloud(const AttributeRadarPointCloud< RadarPointT > &rhs, const PointIndices &indices)
void resize(const size_t size) override
void CopyRadarPointCloud(const AttributeRadarPointCloud< RadarPointT > &rhs, const std::vector< IndexType > &indices)
virtual ~AttributeRadarPointCloud()=default
AttributeRadarPointCloud()=default
const_iterator end() const
virtual bool CheckConsistency() const
virtual bool SwapPoint(size_t source_id, size_t target_id)
void CopyRadarPointCloud(const RadarPointCloud< RadarPointT > &rhs, const PointIndices &indices)
void set_sensor_to_world_pose(const Eigen::Affine3d &sensor_to_world_pose)
virtual void resize(size_t size)
RadarPointT & at(size_t n)
bool CopyPoint(size_t id, size_t rhs_id, const RadarPointCloud< RadarPointT > &rhs)
RadarPointCloud()=default
const RadarPointT & back() const
Eigen::Affine3d sensor_to_world_pose_
void TransformRadarPointCloud(const Eigen::Affine3f &transform, RadarPointCloud< RadarPointT > *out, bool check_nan=false) const
const Eigen::Affine3d & sensor_to_world_pose()
std::vector< RadarPointT > * mutable_points()
virtual void push_back(const RadarPointT &point)
const std::vector< RadarPointT > & points() const
virtual ~RadarPointCloud()=default
void set_timestamp(const double timestamp)
virtual void reserve(size_t size)
const RadarPointT & operator[](size_t n) const
const RadarPointT & at(size_t n) const
const RadarPointT & front() const
std::vector< RadarPointT >::const_iterator const_iterator
const RadarPointT * operator()(size_t col, size_t row) const
RadarPointCloud(const RadarPointCloud< RadarPointT > &pc, const std::vector< int > &indices)
RadarPointT * operator()(size_t col, size_t row)
RadarPointCloud(size_t width, size_t height, RadarPointT point=RadarPointT())
RadarPointT & operator[](size_t n)
RadarPointCloud(const RadarPointCloud< RadarPointT > &pc, const PointIndices &indices)
const_iterator begin() const
void RotateRadarPointCloud(bool check_nan=false)
void TransformRadarPointCloud(bool check_nan=false)
const RadarPointT * at(size_t col, size_t row) const
void SwapRadarPointCloud(RadarPointCloud< RadarPointT > *rhs)
void CopyRadarPointCloudExclude(const RadarPointCloud< RadarPointT > &rhs, const std::vector< IndexType > &indices)
RadarPointT * at(size_t col, size_t row)
std::vector< RadarPointT >::iterator iterator
std::vector< RadarPointT > points_
void CopyRadarPointCloud(const RadarPointCloud< RadarPointT > &rhs, const std::vector< IndexType > &indices)
std::shared_ptr< RadarPointFCloud > RadarPointFCloudPtr
std::shared_ptr< RadarPolygonDType > RadarPolygonDTypePtr
AttributeRadarPointCloud< RadarPointF > RadarPointFCloud
AttributeRadarPointCloud< RadarPointD > RadarPointDCloud
std::shared_ptr< RadarPointDCloud > RadarPointDCloudPtr
std::shared_ptr< const RadarPolygonDType > RadarPolygonDTypeConstPtr
RadarPointCloud< PointD > RadarPolygonDType
std::shared_ptr< const RadarPolygonFType > RadarPolygonFTypeConstPtr
RadarPointCloud< PointF > RadarPolygonFType
std::shared_ptr< RadarPolygonFType > RadarPolygonFTypePtr
std::shared_ptr< PointIndices > PointIndicesPtr
std::shared_ptr< const RadarPointFCloud > RadarPointFCloudConstPtr
std::shared_ptr< const RadarPointDCloud > RadarPointDCloudConstPtr
std::shared_ptr< const PointIndices > PointIndicesConstPtr
std::vector< int > indices