LaserScan 下标 ↔ 角度换算器 sensor_msgs/LaserScan → /has_obs

ranges[i] 不存角度,角度靠公式 θᵢ = angle_min + i · angle_increment 推出,反过来 i = round((θ − angle_min) / angle_increment)。 参数默认取实验九 VP100 的实测值。在极坐标图上点击放障碍物(拖动可移动,双击删除),自动生成模拟 ranges,再按扇区判障碍并输出 /has_obs。

扫描参数

视野半径 障碍半径 m
图中车头(雷达 0° 方向,x 轴)朝上,逆时针为正:+90° 在左、−90° 在右。灰点 = 每束激光的回波点;橙线 = 当前选中的下标;红色扇区 = 障碍检测区。

换算 角度 ⇄ 下标

角度 °
下标 i

ranges 数组(横轴 = 下标 0 … N−1,柱高 = 距离)点击柱子选下标

障碍物检测节点 obstacle_detection.py

车头方向 front_center
扇区半宽 half_width
停车距离 stop_dist
至少几个点 count ≥

扇区内的 ranges

有效且 < stop_dist(计数) 有效但较远 无效(0.0 / 太近)

模拟 ranges:对每束激光与障碍圆(及可选的墙)求最近交点;超出量程或无回波记为 0.0(与 E08 实测输出一致)。判障逻辑同笔记参考实现:i0 = int((fc − hw − angle_min)/inc),i1 = int((fc + hw − angle_min)/inc),下标对 N 取模,统计 0.12 < r < stop_dist 的点数 ≥ 3 则发布 True。