|
|
本帖最后由 邹杰 于 2025-5-7 21:01 编辑
同步流程
1.云端程序将所有景区的路网都同步到一个专用库中, 并以scence_id做区分.
2.云端Map渲染程序检测gx_navigation表中is_update若是1, 则进行地图渲染
3.每台车每隔一段时间以增量方式将本地gx_route_out_points_local数据上传到云端的专用库
4.云端Map同步程序, 每隔一段时间从专用库中取N条数据做过滤判断, 并将有效数据写入gx_route_out_points_server表中, 并将gx_route_out_points_local对应数据标记为已使用(cloud_is_using=1), 待云端程序删除
5.每台车每隔一段时间以增量方式将云端专用库中的gx_route_out_points_server数据同步到本地gx_route_out_points_server表中.
================================================ 分割 =============================
具体步骤
需增加、修改四部分
docker环境修改
* 需往ros2和web容器注入一个环境变量用于区分程序的运行环境. (GX_RUNTIME_ENV: cloud 云服务器环境, local 车环境)
* 云服务环境下,Mysql8容器启动需要创建多个库(全局规划器专用库(global_database)、地图同步(map_database)专用库等)
修改表结构
* gx_map、gx_route、gx_navigtion、gx_nav_route、gx_point表 增加 scence_id字段表示所关联景区
* gx_route_out_points_local 表 增加 cloud_is_using (0:未计算 1:有效点 2:无效点) 字段
* gx_route_out_points_server, gx_route_out_points_local 去掉id主键, 防止主键用完问题
增加数据同步程序
* 将所有景区路网同步到专用库
* 每台车需增量上传local数据, 增量下载server数据
* 维护(修改、删除、新增)路网数据(Map图片文件,nav_route、navigtion、route、map、point表)
* 维护gx_route_out_points_local表中的数据
调整Map节点
* 将local表数据过滤一遍, 再写入到server表
* 现有代码需兼容多景区,且不影响单景区的使用逻辑
================================================ 分割 =============================
Map过滤方案
1. 每隔1秒从local表中正序取cloud_is_using=0的100条point数据
2. 判断point是否在某个Map图片内
若存在将point点展开(getRobotPoints, 即以点为中心往外扩成一个矩形), 并取得矩形对应Map图片的POI区域, 判断POI是否存在白色像素,若存在则视为有效点, 入库到server
若不存在则视为无效点, 直接转到第3步
3. 标记为已使用, 待同步程序删除
|
|