如何通过雷达点云和特定形状(90度)的反光板识别充电桩的坐标,实现机器人自动充电。
硬件和最终目标
我们的目标是利用雷达来识别安装在充电桩上的90度反光板,并确定其中心点坐标和朝向。以下是具体的实现方法:
1. 订阅雷达数据并转换成点云滤波
首先,我们需要订阅雷达数据,并筛选出反光强度较大的点,将其转换为点云并保存。
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import LaserScan, PointCloud2, PointField
import numpy as np
import open3d as o3d
def points_to_pointcloud2(points, frame_id):
msg = PointCloud2()
msg.header.frame_id = frame_id
msg.height = 1
msg.width = len(points)
msg.fields.append(PointField(name="x", offset=0, datatype=PointField.FLOAT32, count=1))
msg.fields.append(PointField(name="y", offset=4, datatype=PointField.FLOAT32, count=1))
msg.fields.append(PointField(name="z", offset=8, datatype=PointField.FLOAT32, count=1))
msg.is_bigendian = False
msg.point_step =