💥1 概述

无论是追求认知的高级生命体、还是期望智能的机器人,都面临着定位问题;对于高级生命体,该问题过于庞大,从产业、社会、历史等维度皆可剖析;对于探求弱人工智能的机器人来说,定位问题的定义相对简单,即确定机器人本体在某种坐标系下的位姿和/或环境结构。为解决泛机器人的定位问题,通常会涉及多类传感器的使用。譬如,室外场景下常使用的GNSS(Global Navigation Satellite Syste, 全球导航卫星系统), 室内环境下使用的WiFi定位、超宽带定位、蓝牙定位等,水下场景中常使用的USBL(Ultra Short Base Line,超短基线)等声学基线定位。上述定位传感器方案,通常需要接收外部信号(譬如GNSS定位需要接收到至少4颗卫星的信号),且能够获得世界坐标系下的绝对位置。另外,还存在无需外界信号输入的传感器,譬如IMU(Inertial Measurement Unit,惯性测量单元)、激光雷达、摄像头、轮式里程计等,该类型方案无需接收外界信号、但无法获得世界坐标系下的绝对位置。实际应用场景中,通常会融合各类传感器,比如自动驾驶汽车会组合使用GNSS、激光雷达、摄像头、IMU等传感器。由于成本低、感知信息丰富,摄像头已经成为众多智能设备的标配,利用摄像头进行定位也在实际中得到广泛应用;本文后续对基于图像的视觉定位技术进行概述 。

将视觉技术用于定位可以追溯至上个世纪,但让视觉定位技术声名大噪、为公众熟知,估计是2003年美国宇航局发射的“机遇号”火星探测器。火星探测器登陆的火星属于未知环境的星球,在上面进行科学研究时,面对复杂的大规模环境,且无法对其进行实时遥控时,必须通过同步实现定位与地图创建才能完成导航任务,因此火星车上配置有视野较大、黑白的导航相机,且使用了大家熟知的SLAM(Simultaneous Localization And Mapping,同步定位与建图)技术。除了在科研军事领域有其相关应用外,视觉定位技术在当今的商业领域也有着广泛的应用。譬如,微软的混合现实头戴式显示器Hololens 2,特斯拉具有Autopilot智能辅助驾驶功能的Model Y系列汽车,荣获2020 5G全球应用大赛唯一金奖的华为河图,iRobot搭载摄像头、可实现高效全景导航的Roomba i7+系列扫地机器人,贝壳如视的VR看房系统,大疆科技的Mavic、精灵、FPV,零零无限的V-Coptr(图7)等系列消费级无人机。

无人机视觉定位研究是一个高度活跃的研究领域,它利用摄像头等视觉传感器获取环境图像信息,并通过图像处理、计算机视觉以及机器学习等技术,实现无人机在未知环境中的自我定位。这项技术对于无人机自主导航、避障、精准降落等应用至关重要。以下是无人机视觉定位研究的主要内容和方向:

1. 特征提取与匹配

SIFT, SURF, ORB等特征描述子:早期的视觉定位研究侧重于利用这些经典的特征点提取和描述算法来识别和匹配图像中的关键特征,实现对无人机位置的估算。

深度学习特征表示:近年来,基于深度神经网络的方法逐渐成为主流,如CNN(卷积神经网络)用于直接从图像中学习更鲁棒和区分度更高的特征表示,这对于复杂环境下的定位尤为重要。

2. 相对姿态估计

视觉里程计(Visual Odometry, VO):通过连续帧间特征点的匹配,估计无人机在连续时刻之间的相对位姿变化(旋转和平移)。这涉及到特征跟踪、运动估计和优化等步骤。

SLAM(Simultaneous Localization and Mapping):同时定位与建图技术不仅估计无人机的位置,还构建周围环境的地图。包括基于特征的SLAM(如ORB-SLAM)和直接法SLAM(如LSD-SLAM、Dense SLAM),适用于不同光照条件和纹理环境。

3. 全局定位与重定位

地标数据库匹配:预先建立大规模环境特征数据库,通过在实时获取的图像中匹配这些特征来实现全局定位,类似于视觉定位系统(VPS)。

位置识别(Place Recognition):使用场景识别技术,在无人机飞过的路径上,通过识别已知地点的视觉特征,实现返回起飞点或其他特定位置的重定位功能。

4. 多传感器融合

视觉与惯性导航系统(INS)融合:将视觉定位与无人机上的陀螺仪、加速度计等惯性传感器数据融合,可以提高定位精度和稳定性,特别是在快速移动或光线条件不佳的情况下。

GPS与视觉信息融合:虽然GPS是常用的定位手段,但在信号遮挡或干扰情况下不可靠,将其与视觉定位信息融合能提供更稳健的位置服务。

应用前景

无人机视觉定位技术的进步对于推动无人机在物流配送、农业植保、空中摄影、搜索与救援等领域的广泛应用具有重要意义。随着算法效率的提升和硬件成本的降低,无人机的智能化和自主化程度将不断提高,其商业潜力和社会价值将进一步释放。

📚2 运行结果

主函数部分代码:

%%视觉定位模块画图a=csvread('data.csv');fix_speed_x=a(:,1);%修正后X速度fix_speed_y=a(:,2);fix_dot_x=a(:,3);%修正后X坐标fix_dot_y=a(:,4);fix_dot_z=a(:,5);laser_high=a(:,6);%激光测距高度camera_h=1000.0;%picture_L=877.0;%图片长%picture_W=651.0;%图片宽%D=20.0;%D是目标点实际的直径,单位mm%unit_distance=(picture_W/120)*(laser_high/camera_h);%  unit_distance=(picture_L/160)*(High/camera_h);x_real=fix_dot_x.*unit_distance;%x_real=fix_dot_x.*unit_distance/100;y_real=fix_dot_y.*unit_distance;%y_real=fix_dot_y.*unit_distance/100;z_real = fix_dot_z/50.0*D;%单位mfigure(1);%%xy平面plot(x_real,y_real);figure(2);%%三维plot3(2.50,2.73 ,21 ,'r*');hold on;plot3(x_real,y_real,laser_high);plot3(2.3436,1.8228 ,16 ,'y*');hold on;title('视觉定位三维轨迹','fontname','宋体','Color','b','FontSize',20);x1=xlabel('X轴');       x2=ylabel('Y轴');        x3=zlabel('Z轴');        set(x1,'Rotation',30);    set(x2,'Rotation',-30);   set(x3,'Rotation',-30);axis([-10 10 -10 20 0 30]);

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]葛全益,钟涵海,侯冰,张晓龙,卢晓龙.基于SSD的轻量化无人机视觉定位算法[J].电子测试,2022(19):60-62.

🌈4 Matlab代码实现

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

详情请联系:

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐