机器人地图路径的恒定线宽渲染方法及系统、存储介质与流程

摘要: 本发明涉及计算机图形处理与数据可视化,尤其涉及一种机器人地图路径的恒定线宽渲染方法及系统、存储介质。背景技术:1、在移动机器人(如agv、amr、无人驾驶车辆及...
机器人地图路径的恒定线宽渲染方法及系统、存储介质与流程

本发明涉及计算机图形处理与数据可视化,尤其涉及一种机器人地图路径的恒定线宽渲染方法及系统、存储介质。

背景技术:

1、在移动机器人(如agv、amr、无人驾驶车辆及扫地机器人等)的调度监控与建图导航业务中,上位机软件通常需要实时渲染机器人构建的二维地图,并在地图上叠加历史轨迹、全局规划路径及局部规划路径等路径数据。随着机器人作业场地的不断扩大与建图精度的持续提升,地图中包含的路径节点数量急剧增长,单次展示的路径节点数往往达到数十万量级。与此同时,用户需要频繁地对机器人地图进行放大、缩小、平移及旋转等视图操作,为保证路径在视觉上清晰可辨,通常要求代表路径的线段在屏幕上的显示像素宽度在视图缩放过程中保持恒定,既不因地图放大而变成色块,也不因地图缩小而不可见,并能够以不同的线宽区分不同类型的路径。

2、然而,早期的渲染方案多基于svg或canvas等传统2d引擎实现,如在cpu端计算经过矩阵变换后的图形位置并进行绘制,或者在每一帧将线宽属性与缩放比例进行反向换算。然而,由于浏览器的主线程为单线程,当面对数十万量级的路径点时,每一帧均需在cpu端执行繁重的矩阵运算,此举会急剧消耗cpu资源,导致主线程长时间阻塞,进而引发界面无响应与渲染掉帧,因此难以满足海量路径数据下的实时交互需求。

3、另一方面,为借助gpu的并行渲染能力,本领域技术人员转而采用webgl提供的原生线段绘制接口(gl.lines)绘制路径。但受底层图形接口转换层的限制,目前多数主流浏览器中webgl原生线段仅支持最大1像素的线宽,更大的线宽设置会被直接忽略,因此无法满足以不同粗细区分多种路径类型的业务需求。

4、为突破原生线宽能力的限制,现有技术进一步提出在cpu端重构几何体的方案,即在cpu端预先将线段转化为带有宽度的多边形网格;当用户缩放地图时,在cpu端获取当前缩放比例,遍历全部顶点重新进行矩阵运算以计算新的多边形顶点坐标,再将更新后的顶点数据重新上传至gpu进行绘制。该方案虽然利用gpu完成最终渲染,但核心的线宽补偿计算仍在cpu端逐帧执行,在频繁缩放交互时,每帧均需对数十万顶点进行重算并向gpu重新上传顶点数据,仍存在严重的cpu性能瓶颈与总线带宽开销;即便将上述计算转移至子线程执行,主线程与子线程之间高频的数据序列化与反序列化开销亦大于计算本身的耗时,得不偿失。此外,当地图经历旋转、镜像翻转等复杂视图变换时,路径的偏移方向还易发生畸变,导致路径边缘扭曲、粗细不均,进一步影响渲染的正确性与可读性。

5、由此可见,现有的渲染方案多受限于cpu端逐帧计算瓶颈、或图形接口的原生能力限制,在处理海量机器人地图路径数据时,均无法兼顾高性能流畅渲染、视图缩放下屏幕线宽恒定,以及复杂视图变换下渲染正确的多重需求,因此,如何提供一种能够摆脱cpu逐帧重算与顶点数据重传、在视图缩放时,仍可保持屏幕线宽恒定且不受原生线宽能力约束的路径渲染方案,成为本领域亟待解决的技术问题。

技术实现思路

1、为此,本发明的主要目的在于提供一种机器人地图路径的恒定线宽渲染方法及系统、存储介质,以在海量路径点场景下,消除cpu逐帧重算路径几何体及逐帧重传顶点数据所导致的性能瓶颈,使路径在屏幕上的显示线宽在视图缩放过程中保持恒定,同时在不依赖图形接口原生线宽能力的情况下,实现任意像素宽度的路径表达,并保证在旋转、翻转等复杂视图变换下路径的偏移方向正确、渲染不发生畸变。

2、为了实现上述目的,根据本发明的第一个方面,提供了一种机器人地图路径的恒定线宽渲染方法,其步骤包括:

3、对有序路径点序列进行一次性预处理,生成顶点坐标位于路径中心线上且携带有法线向量和方向系数的顶点,将各顶点组织为三角形网格并一次性上传至gpu显存;

4、响应于视图变换,仅更新传输至gpu的统一变量,所述统一变量包括变换矩阵、目标线宽和视口尺寸,所述显存中的顶点数据保持不变;

5、在gpu顶点着色器中,利用所述变换矩阵对各顶点的顶点坐标并行地进行投影变换;利用所述变换矩阵的线性分量对各顶点的法线向量进行变换并归一化;根据所述目标线宽与所述视口尺寸确定屏幕空间偏移量,将所述偏移量沿归一化后的法线方向、按各顶点的方向系数叠加至投影变换后的顶点坐标;

6、对叠加偏移后的顶点构成的三角形网格进行光栅化,使路径在屏幕上的显示线宽在视图缩放过程中保持恒定。

7、在可能的优选实施方式中,所述方法基于webgl图形接口实现,所述三角形网格的顶点数据和索引数据分别存储于顶点缓冲对象和索引缓冲对象中,所述统一变量经webgl的uniform接口传入顶点着色器。

8、在可能的优选实施方式中,所述一次性预处理中,对相邻路径点构成的线段计算单位切线向量,并将所述单位切线向量旋转90度得到该线段的单位法线向量;对于拐角处的路径点,对相邻两线段的单位法线向量取角平分方向作为该路径点的单位法线向量,或者对拐角作斜切处理。

9、在可能的优选实施方式中,所述一次性预处理中,每个路径点生成一对顶点坐标相同、方向系数互为相反数的顶点,各顶点经索引数据组织为三角形网格。

10、在可能的优选实施方式中,所述线性分量为所述变换矩阵的二维线性子块;所述归一化将变换后的法线向量的模长归一,以剥离所述变换矩阵中的缩放分量,并保留包括负缩放对应的方向反转在内的方向信息。

11、在可能的优选实施方式中,所述屏幕空间为标准化设备坐标空间,所述屏幕空间偏移量为,所述目标线宽与所述视口尺寸的比值乘以标准化设备坐标空间的坐标跨度。

12、在可能的优选实施方式中,所述目标线宽以像素为单位,其值为以css像素表示的目标线宽与设备像素比的乘积;所述视口尺寸为渲染缓冲的实际像素尺寸。

13、在可能的优选实施方式中,所述的方法步骤还包括:响应于线宽调整指令,仅更新所述统一变量中的目标线宽,不更新所述gpu显存中的顶点数据,使路径以调整后的显示线宽渲染。

14、在可能的优选实施方式中,各顶点还携带有路径类型编码,所述路径类型编码经顶点着色器传递至片元着色器,片元着色器根据所述路径类型编码查询颜色表确定输出颜色。

15、在可能的优选实施方式中,所述路径为机器人地图中的历史轨迹、全局规划路径和局部规划路径中的至少一种。

16、为了实现上述目的,对应上述方法,根据本发明的第二个方面,还提供了一种机器人地图路径的恒定线宽渲染系统,其包括:

17、预处理模块,用于对有序路径点序列进行一次性预处理,生成顶点坐标位于路径中心线上且携带有法线向量和方向系数的顶点,将各顶点组织为三角形网格并一次性上传至gpu显存;

18、参数更新模块,用于响应于视图变换,仅更新传输至gpu的统一变量,所述统一变量包括变换矩阵、目标线宽和视口尺寸,所述gpu显存中的顶点数据保持不变;

19、渲染模块,用于在gpu顶点着色器中,利用所述变换矩阵对各顶点的顶点坐标并行地进行投影变换;利用所述变换矩阵的线性分量对各顶点的法线向量进行变换并归一化;根据所述目标线宽与所述视口尺寸确定屏幕空间偏移量,将所述偏移量沿归一化后的法线方向、按各顶点的方向系数叠加至投影变换后的顶点坐标;并对叠加偏移后的顶点构成的三角形网格进行光栅化,使路径在屏幕上的显示线宽在视图缩放时保持恒定。

20、为了实现上述目的,根据本发明的第三个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如上任一示例所述的方法。

21、通过本发明的该机器人地图路径的恒定线宽渲染方法及系统、存储介质,该方案巧妙的将路径的几何拓扑数据仅经一次性预处理并上传显存,渲染过程中顶点数据保持不变,每帧仅需更新矩阵、线宽、视口尺寸等数据量恒定的统一变量,cpu至gpu的逐帧数据传输量与路径点数量无关,从而消除了cpu逐帧重算与顶点数据重传导致的性能瓶颈与主线程阻塞,此举能够实现在海量路径点场景下仍能保持高帧率流畅渲染。

22、此外,由于本方案中的线宽偏移量,可根据目标线宽与视口尺寸,在投影变换之后确定,而与变换矩阵中的缩放分量无关,因此无论地图如何缩放,路径在屏幕上的显示线宽均保持恒定。其中,由于线宽是由三角形网格的挤出与光栅化实现,不依赖图形接口的原生线宽能力,因此可表达任意像素宽度,可满足以不同粗细区分多种路径类型的需求。

23、同时,由于本方案中的法线向量,经变换矩阵的线性分量变换后作归一化处理,剥离了缩放幅值的影响,并保留了方向信息,因此能够保证在旋转、翻转等复杂视图变换下路径的偏移方向始终正确,从而避免路径扭曲、粗细不均等渲染异常。