shuming1998 / AT128_Ground_Remove_JCP

9 stars 0 forks source link

range image计算问题 #1

Closed liang0724s closed 2 years ago

liang0724s commented 2 years ago

您的计算方式如下: row_i = 128 - pt.ring; if(atan2(pt.y, pt.x) >= 0) //[0,pi] col_i = ((128.1/2) - atan2(pt.y, pt.x) RAD) / 0.1; else //(-pi,0) col_i = (-atan2(pt.y, pt.x) RAD + (128.1 / 2)) / 0.1;

根据atan2的取值范围(-pi, pi],以及AT128水平视场角范围120°, 不太明白为何这样计算col_i?

注:结合禾赛官网AT128数据显示: 角分辨率:0.1° (H) × 0.2° (V),视场角:120°(H) × 25.4°(V), 全局分辨率(点数):1200 × 128

shuming1998 commented 2 years ago

您的计算方式如下: row_i = 128 - pt.ring; if(atan2(pt.y, pt.x) >= 0) //[0,pi] col_i = ((128.1/2) - atan2(pt.y, pt.x) RAD) / 0.1; else //(-pi,0) col_i = (-atan2(pt.y, pt.x) RAD + (128.1 / 2)) / 0.1;

根据atan2的取值范围(-pi, pi],以及AT128水平视场角范围120°, 不太明白为何这样计算col_i?

注:结合禾赛官网AT128数据显示: 角分辨率:0.1° (H) × 0.2° (V),视场角:120°(H) × 25.4°(V), 全局分辨率(点数):1200 × 128

抱歉刚看到,其实col的计算直接用col_i = ((128.1/2) - atan2(pt.y, pt.x) * RAD) / 0.1; 就可以,上下是等价的。另外,计算的方法是根据索引为0的角度决定的。一般将激光雷达第一条线束设为0索引,但第一条激光的角度在坐标中并不是0度,所以这样计算是为了把索引和角度建立起映射关系。

shuming1998 commented 2 years ago

还有,AT128水平扫描线实际上是1281条,并不是1200,所以128.1/2就是实际的水平线扫描角度范围的一半。结合这款雷达的坐标系,用这个半角度减去反正切,结果再除以水平角分辨率,就可以计算出那条线的列索引。