立项背景与目标:
为了解决西北地区高压输电线路巡检难度大、耗时长、人员需求大等问题,自助研发该产品,以机器人巡线的方式代替人工巡检。
软件功能、核心功能模块的介绍:
1.手动控制机器人的机械结构,以达到前进、后退、越障等目的,同时添加点位(越障点、充电点、任务点);
2.手动控制机器人云台摄像机,确定要拍照的角度、方位、缩放等信息,辅助观察线路问题;
3.通过选择添加的点位,制定任务模板、计划任务,最终发送给机器人执行,以做到机器人自动巡线的目的;
4.同步服务端和离线手持端应用的数据库。
业务流程、功能路径描述
1.将机器人运上高压线路的地线上,通过Lora或TCP连接机器人。注:Lora连接距离更远,但无法查看实时视频;
2.首次运行需要添加线路,然后人工跑一次整个需要巡线的线路,在合适的位置添加充电点、越障点、任务点,整个过程手持端和机器人需要保持一定的距离,所以人员也需要跟随行进;
3.添加点位时,在合适的位置,人为停止下来,添加为对应的点位。添加任务点时,需要人为控制云台转动到合适的角度、位置,然后再进行添加预置点,任务执行时,一个预置点会拍一张照片。一个点位可以添加多个预置点;
4.最后根据所得点位指定任务,发送给机器人完成自动巡线任务。此时不需要手持端跟随;
5.同步数据库到服务器后,可以在网页端编辑新增任务,然后下发任务。同时服务端的变更的数据也会在手持端联网的同时,更新到手持端。
项目分为5个模块,如下:
1.程序入口模块:仅实现入口程序,无其他功能;
2.公共模块:提供公共的服务、缓存、实体类、数据库等;
3.硬件模块:提供Lora串口连接实现、TCP连接实现、云台控制实现、实时视频播放器实现、通用于Lora、TCP连接的指令收发系统实现;
4.计划模块:提供任务点、杆塔、模板、计划任务相关功能实现;
5.主要模块:提供其余功能及界面的实现。
以上主要运用的的技术是:串口开发、TCP开发、Room数据库开发、EventBus事件通知、协程、Retrofit、Kotlin及一些“我”常用的UI框架。
我负责整个APP的研发,制定与服务器数据库同步思路,同时辅助理顺整个机器人工作流程思路。
我遇到的难点、坑及解决方案:
数据库同步问题:
问题:手持端和服务器数据库类型、结构不一致,难以分清数据的新增和修改。
解决:数据库新增UUID、更新时间字段,用UUID(之前是用的Int自增ID)判断是否是同一条数据,更新时间判断最新数据。然后查询出上次同步后所有变动的数据,发给对方,让对方做出相应的更新操作。
线路跑完后,点位需要新增问题:
问题:任务点定完之后,所有点位不能所以更改,在线路上是有序的,不能随意更改。
解决:点位自动寻位算法,将事后添加的点位放到合适的位置。
串口、TCP协议对接、调试、优化等问题,这个是靠时间磨出来的。