远程驾驶移动终端、远程驾驶系统及远程驾驶方法与流程

    专利2022-07-07  99


    本发明涉及一种车辆远程控制,尤其是远程驾驶移动终端、远程驾驶系统及远程驾驶方法。
    背景技术
    :目前,许多车厂都在研发汽车远程驾驶技术,比较常见的实现方案是:在一个园区范围内搭建一个5g专网,室内通过一台电脑接入5g专网的cpe(路由器),电脑端外接有方向盘、加速踏板、减速踏板的模拟器,通过模拟器将动作在电脑端转换成控车指令,通过5g专网将指令发出。而远程车辆上会安装带有5g网络能力,并且能收发can信号的智能终端设备来接收从远程电脑发送过来的指令,轮换成can信号,最终实现对车辆的控制。通过电脑端外接模拟器的方案,车厂都需要定制自己的模拟器,当远程控制功能增加时,模拟器上的控钮等控件经常会出现不够用,无法灵活的扩展。如果找模拟器厂商重新定制,会导致开发周期与成本扩大。而且电脑端外接模拟器的方案对空间要求也比较大,需要在室内固定位置进行组装搭建驾驶环境,无法移动,车厂在给最终用户交付时,往往需要赴现场搭建驾驶环境。技术实现要素:为解决上述问题,本发明提供一种采用在移动终端来远程控制,解决了通过电脑端外接模拟器的方案中无法灵活扩展及重新定制模拟器开发周期与成本问题,只需要一台普通的智能手机或具有5g网络的平板就可以任意扩充必要的控车功能,无额外的硬件成本,并且具有可移动性,可以使控车没有地点要求,同时软件安装方便,无需搭建驾驶环境的远程驾驶终端,具体技术方案为:远程驾驶移动终端,包括:远程驾驶模块,所述远程驾驶模块设有控车单元和显示单元,所述控车单元用于接收用户控制车辆的触摸操作,并将用户的触摸操作转换成控车消息,所述显示单元用于显示当前车辆状态;及第一无线通信模块,所述第一无线通信模块用于将所述控车消息发送给服务器,还用于接收服务器的订阅消息;其中,所述远程驾驶模块接收到服务器的订阅消息后根据订阅消息中的车辆状态更新显示单元的车辆状态的显示内容,所述远程驾驶模块还用于向服务器发送终端心跳信息。进一步的,所述控车单元包括方向盘控件、档位控件、手刹控件、刹车控件、油门控件、灯光控件、控车使能控件和重力传感器控件;所述显示单元包括速度显示和转向显示。远程驾驶系统,包括:mqtt服务器,所述mqtt服务器用于消息的转发;第二无线通信模块,所述第二无线通信模块用于所述mqtt服务器收发消息;远程驾驶移动终端,所述远程驾驶移动终端包括:远程驾驶模块,所述远程驾驶模块设有控车单元和显示单元,所述控车单元用于接收用户控制车辆的触摸操作,并将用户的触摸操作转换成控车消息,所述显示单元用于显示当前车辆状态,所述远程驾驶模块用于根据车辆状态消息更新车辆状态的显示内容,还用于发布终端心跳消息,所述控车单元包括方向盘控件、档位控件、手刹控件、刹车控件、油门控件、灯光控件、控车使能控件和重力传感器控件,所述显示单元包括速度显示和转向显示;及第一无线通信模块,所述第一无线通信模块用于将所述控车消息和所述终端心跳消息发送给所述mqtt服务器,还用于接收所述mqtt服务器发送的车辆状态消息和网关心跳消息;智能网关,所述智能网关包括:控车模块,所述控车模块用于将所述控车消息转换成控车报文和将车辆状态报文转换成车辆状态消息,还用于发布网关心跳消息;及第三无线通信模块,所述第三无线通信模块用于将所述车辆状态消息和所述网关心跳消息发送给所述mqtt服务器,还用于接收所述mqtt服务器发送的所述控车消息和所述终端心跳消息;和can总线,所述can总线分别与车辆和所述控车模块连接,用于接收所述控车报文和将当前车辆状态报文发送给所述控车模块。远程驾驶系统的远程驾驶方法,包括以下步骤:远程驾驶移动端和智能网关均与mqtt服务器进行通信;确认远程驾驶移动端和智能网关是否均与mqtt服务器建立连接;当用户操作控车单元时所述控车单元用于接收用户控制车辆的触摸操作,并将用户的触摸操作转换成控车消息;远程驾驶移动端向mqtt服务器订阅车辆状态消息及网关心跳消息,向mqtt服务器发送控车消息和终端心跳消息;智能网关向mqtt服务器订阅控车消息和终端心跳消息,并同时启动异步流程处理,其中多线程包括:线程一、定时周期将控车消息所对应的数据打包并向can总线发送一条控制车辆的控车报文;线程二、接收并处理远程驾驶移动端的控车消息,更新线程一中控制车辆的数据;线程三、定时周期向mqtt服务器发送一条网关心跳消息,及将车辆状态数据根据通讯协议封装成车辆状态消息发送给mqtt服务器;线程四、接收can总线的车辆状态报文,根据车辆状态报文更新车辆状态数据,并将车辆状态数据发送给线程三处理。进一步的,所述远程驾驶移动端与mqtt服务器进行通信时,先登录,通过文本编辑框输入mqtt服务器ip地址,并通过设置按钮修改端口号、帐号、密码;登录后启动后台服务尝试与mqtt服务器建立连接;当远程驾驶移动端与mqtt服务器建立连接成功后,远程驾驶移动端向mqtt服务器订阅车辆状态消息和网关心跳消息;智能网关与mqtt服务器进行通信时,所述智能网关读取配置文件中的mqtt服务器信息,连接mqtt服务器;智能网关成功连接mqtt服务器后向mqtt服务器订阅控车消息和远终端心跳消息。进一步的,将用户的触摸操作转换成控车消息时将触摸回调坐标值在对应的控件中通过计算转换成对应控件的数据;所述触摸操作包括依次进行的手指点下、手指移动和手指抬起;转换数据前先设定方向盘控件、档位控件、刹车控件、油门控件的坐标系,然后将控件的坐标变化值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器。进一步的,所述方向控件设定坐标系时,将方向盘的中心点坐标作为坐标原点,y轴上的点坐标为零角度,当方向控件的触摸事件为手指点下时,将点下坐标与方向盘中心点坐标通过三角函数计算出点击的角度并记为初始角度,同时也记录到最后一次更新的角度中;当方向控件的触摸事件为手指移动时,通过当前手指移动到的位置计算出当前的角度,根据当前角度和最后一次更新的角度计算出角度改变值,通过角度改变值对方向盘控件进行旋转操作,同时刷新角度值,并将当前角度值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器;当方向盘控件的触摸事件为手指抬起时,将方向盘控件自动旋转到原始位置,将当前角度自动回归到零角度,并更新控车消息,发送给mqtt服务器;所述档位控件设定坐标系时,将档位区域左上角顶点坐标作为坐标原点,y轴上从上到下分四等份区域,通过档位位置对档位指向图标位置进行切换,同时刷新档位值,并将档位值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器;档位控件的触摸事件为手指点下时,会判断当前刹车控车是否有点下,并且下滑到二分之一位置,如果刹车未处于这个状态,会弹出提供信息:请踩住刹车进行挂挡;如果刹车状态满足,档位会自动跳转到手指点下所对应的档位上;档位控件的触摸事件为手指滑动时,档位自动跳转到手指滑动到的位置上;档位控件的触摸事件为手指抬起时,结束挂档动作;所述刹车控件设定坐标系时,将刹车控件的左上角顶点坐标作为坐标原点,y轴与刹车力大小相对应,刹车控件的触摸事件为手指点下时,将点下坐标记录初始坐标位置,当刹车控件的触摸事件为手指移动时,通过当前手指移动到的y坐标位置,根据当前y坐标位置减去初始坐标位置计算出刹车改变值,将刹车改变值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器;当刹车控件的触摸事件为手指抬起时,将刹车力大小改为0,将刹车改变值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器;所述油门控件设定坐标系时,将油门控件的左上角顶点坐标作为坐标原点,y轴与油门力大小相对应,油门控件的触摸事件为手指点下时,将点下坐标记录初始坐标位置,当油门控件的触摸事件为手指移动时,通过当前手指移动到的y坐标位置,根据当前y坐标位置减去初始坐标位置计算出油门改变值,将油门改变值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器;当油门控件的触摸事件为手指抬起时,将油门力大小改为0,将油门改变值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器。进一步的,远程驾驶移动端接收mqtt服务器的消息后,判断消息是否为网关心跳消息,若是网关的心跳消息则重设心跳超时定时器,若不是网关心跳消息则判断消息是否是车辆状态消息,若是车辆状态消息则解析车辆状态消息,更新远程驾驶模块显示单元的车辆状态显示内容。进一步的,所述线程三中,启动500ms周期定时器,每次周期满时会向mqtt服务器发布一条网关心跳消息;设置心跳超时定时器,期满未收到网关心跳消息时进行安全处理。进一步的,所述线程一中,启动2ms周期定时器,在第一个周期满时及接下来每过5个周期都会将当前的:方向盘转角、油门、刹车、档位、手刹状态按车辆can矩阵协议进行数据打包,向can总线发送一条控车报文;当远程驾驶移动端退出控车状态,或者远程驾驶移动端心跳断开后,智能网关发送的控车报文为刹车、停车状态;当远程驾驶移动端正常操作控车时,智能网关将当前更新到的实时的方向盘转角、油门、刹车、档位、手刹状态打包发送到can总线以控制汽车;在第二个周期满时及接下来每过5个周期都将当前的:转向灯、近光灯、远光灯、位置灯状态按车辆can矩阵协议进行数据打包,向can总线发送一条灯光控制报文;当远程驾驶移动端进入控车状态时,智能网关将当前更新到的实时灯光状态打包发送到can总线以控制汽车。进一步的,所述智能网关接收mqtt服务器的消息时,判断消息是否为终端心跳消息,若是终端心跳消息则重设心跳超时定时器,若不是终端心跳消息则判断消息是否为远程驾驶移动端的控车消息,若是控车消息则解析消息,并更新控车报文。进一步的,所述第一无线通信模块为android系统的智能手机或平板;在远程驾驶移动端与mqtt服务器进行通信前先将mqtt协议搭建到远程驾驶移动端,包括以下步骤:在android项目工程的gradle中添加mqtt依赖包;在androidmanifest中声明网络访问权限;android项目工程中添加一个负责mqtt连接、发送和接收消息的mqtt服务;mqtt服务在远程驾驶移动端登录时启动,在mqtt服务的初始化阶段根据登录时的输入信息与mqtt服务器建立连接;连接建立成功后,向mqtt服务器订阅车辆状态消息和网关心跳消息主题;同时设置mqtt消息监听回调,进行消息的接收;连接建立失败时,调用重连机制,并弹出相关提示;对消息发送接口进行封装,在android终端界面上操作时,调用封装后的消息发送接口。与现有技术相比本发明具有以下有益效果:本发明提供的远程移动驾驶终端采用在移动终端来远程控制,解决了通过电脑端外接模拟器的方案中无法灵活扩展及重新定制模拟器开发周期与成本问题,只需要一台普通的智能手机或具有5g网络的平板就可以任意扩充必要的控车功能,无额外的硬件成本,并且具有可移动性,可以使控车没有地点要求,同时软件安装方便,无需搭建驾驶环境。附图说明图1是远程驾驶移动终端的结构框图;图2是远程驾驶移动终端的软件界面图;图3是远程驾校系统的结构框图;图4是远程驾驶移动端对消息的处理流程图;图5是智能网关对消息的处理流程图;图6是智能网关与can总线之间的信息处理流程图。具体实施方式现结合附图对本发明作进一步说明。实施例一如图1和图2所示,远程驾驶移动终端,包括:远程驾驶模块,所述远程驾驶模块设有控车单元和显示单元,所述控车单元用于接收用户控制车辆的触摸操作,并将用户的触摸操作转换成控车消息,所述显示单元用于显示当前车辆状态;及第一无线通信模块,所述第一无线通信模块用于将所述控车消息发送给服务器,还用于接收服务器的订阅消息;其中,所述远程驾驶模块接收到服务器的订阅消息后根据订阅消息中的车辆状态更新显示单元的车辆状态的显示内容,所述远程驾驶模块还用于向服务器发送终端心跳信息。控车单元包括方向盘控件、档位控件、手刹控件、刹车控件、油门控件、灯光控件、控车使能控件和重力传感器控件;所述显示单元包括速度显示和转向显示。第一无线通信模块为装有操作系统的智能手机或平板,并且具有触摸屏。第一无线通信模块采用无线网、5g网或5g专网中的一种或多种远程驾驶模块为远程驾驶控制软件,可以为手机控车app。控车单元的各个控件指在软件界面模拟的驾驶控件。重力传感控件用于开关重力传感器,重力传感器打开后用于通过左右倾斜来旋转方向盘控件。显示单元还可以包括调试窗口,调试窗口用于观察触摸事件转化成的数据。实施例二如图3所示,远程驾驶系统,包括:mqtt服务器,所述mqtt服务器用于消息的转发;第二无线通信模块,所述第二无线通信模块用于所述mqtt服务器收发消息;远程驾驶移动终端,所述远程驾驶移动终端包括:远程驾驶模块,所述远程驾驶模块设有控车单元和显示单元,所述控车单元用于接收用户控制车辆的触摸操作,并将用户的触摸操作转换成控车消息,所述显示单元用于显示当前车辆状态,所述远程驾驶模块用于根据车辆状态消息更新车辆状态的显示内容,还用于发布终端心跳消息,所述控车单元包括方向盘控件、档位控件、手刹控件、刹车控件、油门控件、灯光控件、控车使能控件和重力传感器控件,所述显示单元包括速度显示和转向显示;及第一无线通信模块,所述第一无线通信模块用于将所述控车消息和所述终端心跳消息发送给所述mqtt服务器,还用于接收所述mqtt服务器发送的车辆状态消息和网关心跳消息;智能网关,所述智能网关包括:控车模块,所述控车模块用于将所述控车消息转换成控车报文和将车辆状态报文转换成车辆状态消息,还用于发布网关心跳消息;及第三无线通信模块,所述第三无线通信模块用于将所述车辆状态消息和所述网关心跳消息发送给所述mqtt服务器,还用于接收所述mqtt服务器发送的所述控车消息和所述终端心跳消息;和can总线,所述can总线分别与车辆和所述控车模块连接,用于接收所述控车报文和将当前车辆状态报文发送给所述控车模块。第二无线通信模块可以采用无线cpe,mqtt服务器通过无线cpe连接到5g网络。第三无线通信模块可以采用5g模块,智能网关通过5g模块拨号与5g网络连接,实现与mqtt服务器的通信。控车模块装有操作系统和控车程序。实施例三如图4至图6所示,远程驾驶方法,包括以下步骤:远程驾驶移动端和智能网关均与mqtt服务器进行通信;确认远程驾驶移动端和智能网关是否均与mqtt服务器建立连接;当用户操作控车单元时所述控车单元用于接收用户控制车辆的触摸操作,并将用户的触摸操作转换成控车消息;远程驾驶移动端向mqtt服务器订阅车辆状态消息及网关心跳消息,向mqtt服务器发送控车消息和终端心跳消息;智能网关向mqtt服务器订阅控车消息和终端心跳消息,并同时启动异步流程处理,其中多线程包括:线程一、定时周期将控车消息所对应的数据打包并向can总线发送一条控制车辆的控车报文;线程二、接收并处理远程驾驶移动端的控车消息,更新线程一中控制车辆的数据;线程三、定时周期向mqtt服务器发送一条网关心跳消息,及将车辆状态数据根据通讯协议封装成车辆状态消息发送给mqtt服务器;线程四、接收can总线的车辆状态报文,根据车辆状态报文更新车辆状态数据,并将车辆状态数据发送给线程三处理。远程驾驶移动端与mqtt服务器进行通信时,先登录,通过文本编辑框输入mqtt服务器ip地址,并通过设置按钮修改端口号、帐号、密码;登录后启动后台服务尝试与mqtt服务器建立连接;当远程驾驶移动端与mqtt服务器建立连接成功后,远程驾驶移动端向mqtt服务器订阅车辆状态消息和网关心跳消息;智能网关与mqtt服务器进行通信时,所述智能网关读取配置文件中的mqtt服务器信息,连接mqtt服务器;智能网关成功连接mqtt服务器后向mqtt服务器订阅控车消息和远终端心跳消息。将用户的触摸操作转换成控车消息时将触摸回调坐标值在对应的控件中通过计算转换成对应控件的数据;所述触摸操作包括依次进行的手指点下、手指移动和手指抬起;转换数据前先设定方向盘控件、档位控件、刹车控件、油门控件的坐标系,然后将控件的坐标变化值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器。当用户操作方向盘控件时,客户端在控件视图的触摸事件中将顺时针滑动或者逆时针滑动的角度转换成方向盘转角数据,并更新控车指令消息体对应的数据位;当用户操作挡位控件时,客户端在控件视图的触摸事件中,将上下滑动位置转换成对应的档位数据,并更新控车指令消息体对应的数据位;以此类推,当有其他控件触摸事件发生时,会将事件转换成数据,更新到控车指令消息体的对应数据位中,数据更新后,按照上述通讯协议封装成控车消息发布到mqtt服务器。方向控件设定坐标系时,将方向盘的中心点坐标作为坐标原点,y轴上的点坐标为零角度,当方向控件的触摸事件为手指点下时,将点下坐标与方向盘中心点坐标通过三角函数计算出点击的角度并记为初始角度,同时也记录到最后一次更新的角度中;当方向控件的触摸事件为手指移动时,通过当前手指移动到的位置计算出当前的角度,根据当前角度和最后一次更新的角度计算出角度改变值,通过角度改变值对方向盘控件进行旋转操作,同时刷新角度值,并将当前角度值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器;当方向盘控件的触摸事件为手指抬起时,将方向盘控件自动旋转到原始位置,将当前角度自动回归到零角度,并更新控车消息,发送给mqtt服务器;档位控件设定坐标系时,将档位区域左上角顶点坐标作为坐标原点,y轴上从上到下分四等份区域,通过档位位置对档位指向图标位置进行切换,同时刷新档位值,并将档位值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器;档位控件的触摸事件为手指点下时,会判断当前刹车控车是否有点下,并且下滑到二分之一位置,如果刹车未处于这个状态,会弹出提供信息:请踩住刹车进行挂挡;如果刹车状态满足,档位会自动跳转到手指点下所对应的档位上;档位控件的触摸事件为手指滑动时,档位自动跳转到手指滑动到的位置上;档位控件的触摸事件为手指抬起时,结束挂档动作;刹车控件设定坐标系时,将刹车控件的左上角顶点坐标作为坐标原点,y轴与刹车力大小相对应,刹车控件的触摸事件为手指点下时,将点下坐标记录初始坐标位置,当刹车控件的触摸事件为手指移动时,通过当前手指移动到的y坐标位置,根据当前y坐标位置减去初始坐标位置计算出刹车改变值,将刹车改变值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器;当刹车控件的触摸事件为手指抬起时,将刹车力大小改为0,将刹车改变值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器;所述油门控件设定坐标系时,将油门控件的左上角顶点坐标作为坐标原点,y轴与油门力大小相对应,油门控件的触摸事件为手指点下时,将点下坐标记录初始坐标位置,当油门控件的触摸事件为手指移动时,通过当前手指移动到的y坐标位置,根据当前y坐标位置减去初始坐标位置计算出油门改变值,将油门改变值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器;当油门控件的触摸事件为手指抬起时,将油门力大小改为0,将油门改变值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器。在刹车控件的操作中,手指滑动过程中刹车控件不会跟随手指移动,为了给用户反馈触感,在手指点下后,系统的振动马达将被打开,进行振动反馈。在油门控件的操作中,手指滑动过程中油门控件不会跟随手指移动,为了给用户反馈触感,在手指点下后,系统的振动马达将被打开,进行振动反馈。触摸操作还包括事件取消,事件取消一般发生在手指滑动过程中,不小心按了熄屏按键,控车操作界面被其他界面盖住了,添加事件取消的处理,仅为了防错。改变值转换为控车消息中对应的数据字段,见通讯协议中的控车指令表,如方向盘角度改变时,就会更新方向盘角度对应的字段,其他控件状态改变时,也仅更新其他控件的字段,每个控件独立更新自己所对应的数据字段,发送消息时,是一起发给mqtt服务器。远程驾驶移动端接收mqtt服务器的消息后,判断消息是否为网关心跳消息,若是网关的心跳消息则重设心跳超时定时器,若不是网关心跳消息则判断消息是否是车辆状态消息,若是车辆状态消息则解析车辆状态消息,更新远程驾驶模块显示单元的车辆状态显示内容。所述线程三中,启动500ms周期定时器,每次周期满时会向mqtt服务器发布一条网关心跳消息;设置心跳超时定时器,期满未收到网关心跳消息时进行安全处理。所述线程一中,启动2ms周期定时器,在第一个周期满时及接下来每过5个周期都会将当前的:方向盘转角、油门、刹车、档位、手刹状态按车辆can矩阵协议进行数据打包,向can总线发送一条控车报文;当远程驾驶移动端退出控车状态,或者远程驾驶移动端心跳断开后,智能网关发送的控车报文为刹车、停车状态;当远程驾驶移动端正常操作控车时,智能网关将当前更新到的实时的方向盘转角、油门、刹车、档位、手刹状态打包发送到can总线以控制汽车;在第二个周期满时及接下来每过5个周期都将当前的:转向灯、近光灯、远光灯、位置灯状态按车辆can矩阵协议进行数据打包,向can总线发送一条灯光控制报文;当远程驾驶移动端进入控车状态时,智能网关将当前更新到的实时灯光状态打包发送到can总线以控制汽车。所述智能网关接收mqtt服务器的消息时,判断消息是否为终端心跳消息,若是终端心跳消息则重设心跳超时定时器,若不是终端心跳消息则判断消息是否为远程驾驶移动端的控车消息,若是控车消息则解析消息,并更新控车报文。所述第一无线通信模块为android系统的智能手机或平板;在远程驾驶移动端与mqtt服务器进行通信前先将mqtt协议搭建到远程驾驶移动端,包括以下步骤:在android项目工程的gradle中添加mqtt依赖包;在androidmanifest中声明网络访问权限;android项目工程中添加一个负责mqtt连接、发送和接收消息的mqtt服务;mqtt服务在远程驾驶移动端登录时启动,在mqtt服务的初始化阶段根据登录时的输入信息与mqtt服务器建立连接;连接建立成功后,向mqtt服务器订阅车辆状态消息和网关心跳消息主题;同时设置mqtt消息监听回调,进行消息的接收;连接建立失败时,调用重连机制,并弹出相关提示;对消息发送接口进行封装,在android终端界面上操作时,调用封装后的消息发送接口。当用户操作方向控件时,远程驾驶移动终端在方向控件的触摸事件中将顺时针滑动或者逆时针滑动的角度转换成方向盘转角数据(-4089-4089),并更新控车指令消息体对应的数据位;当用户操作挡位控件时,远程驾驶移动终端在档位控件的触摸事件中将上下滑动位置转换成对应的档位数据(0-3),并更新控车指令消息体对应的数据位;以此类推,当有其他控件触摸事件发生时,会将事件转换成数据,更新到控车指令消息体的对应数据位中,数据更新后,按照上述通讯协议封装成控车消息发布到mqtt服务器。灯光是通过点击打开,再点击关闭,与实车状态一样,左转灯打开状态下,去打开右转灯时,左转灯会自动关系;近关灯打开时,去打开远光灯时,近关灯也会自动关闭。智能网关与can总线通信时,每10ms向can总线发送一条最新状态的控车报文,读取指令id集合的can报文,解析can报文,更新车辆状态消息,发送车辆状态消息到mqtt服务器。手机控车app启动时,先进入登录界面,通过文本编辑框提示用户输入mqtt服务器ip地址,并提供设置按钮,可以进入修改端口号、帐号、密码等信息。点击登录按钮时,启动后台服务(mqttservice),尝试与mqtt服务器建立连接,建立成功后,app会向mqtt服务器订阅车辆状态消息和网关心跳消息,同时app跳转到控车主界面。手机控车app与智能网关控车程序之间拟定好如下通讯协议。每条消息由标识位、消息头、消息体和校验码组成,如下表所示:标识位消息头消息体校验码标识位标志位:0x5a,若校验码、消息头以及消息体中出现0x5a,则要进行转义处理,规则如下:0x5a:0x5b0x020x5b:0x5b0x01转义处理过程如下:发送消息时:消息封装→计算并填充校验码→转义;接收消息时:转义还原→验证校验码→解析消息。消息头内容,如下表所示:起始字节字段数据类型说明0消息idword2消息体属性word消息体属性格式结构图见图24消息流水号word按发送顺序从0开始循环累加消息体属性格式结构,如下表所示:消息体1.通讯过程中主要涉及以下消息类型:消息类型命令代码网关心跳0x0501驾驶台心跳0x0301仪表参数0x0503驾驶台控车指令0x0305驾驶台控制目标切换指令0x0307驾驶台控制目标切换应答0x0507切换远程驾驶指令0x0311切换远程驾驶应答0x05112.智能网关心跳:3.手机控车app心跳:消息id起始字节字段数据类型周期说明0x03010无无1秒无4.控车指令5.车辆状态数据校验码校验码指从消息头开始,同后一字节异或,直到校验码前一个字节,占用一个字节。传输规则协议中使用的数据类型和传输规则见下表:当用户操作手机app方向盘控件时,app会在控件视图的触摸事件中,将顺时针滑动或者逆时针滑动的角度转换成方向盘转角数据(-4089-4089),并更新控车指令消息体对应的数据位。当用户操作手机app挡位控件时,app会在控件视图的触摸事件中,将上下滑动位置转换成对应的档位数据(0-3),并更新控车指令消息体对应的数据位。以此类推,当有其他控件触摸事件发生时,会将事件转换成数据,更新到控车指令消息体的对应数据位中,数据更新后,按照上述通讯协议,封装成控车消息发布到mqtt。在控车期间,后台服务(mqttservice)启动周期性定时器,每过500ms发布一条心跳消息(协议中,消息id:0x0301)到mqtt服务器,以通知智能网关当前网络是否正常,手机控车app是否正在控制。同时,也启动超时定时器,在指令时间内收不到智能网关心跳时,在界面上提示用户,网络状态不佳等信息,并在心跳恢复后,主动发布停车等安全控车消息到mqtt,以保证网络恢复后,汽车不会突然失控。智能网关控车程序在智能网关上电linux系统初始化完成后,会自动运行控车程序,智能网关通过5g模块拨号上网。注网成功后,控车程序向mqtt服务器建立连接,对应的ip地址、端口信息将从智能网关的配置文件(/etc/can.ini)中获取。控车程序与mqtt服务器建立连接后,控车程序会向mqtt服务器订阅手机控车消息,及手机控车app心跳消息。同时启动多线程进行异步流程处理。线程一(can_timer):启动2ms周期定时器,在第一个周期满时,及接下来每过5个周期(10ms)都会将当前的:方向盘转角、油门、刹车、档位、手刹等状态按车辆can矩阵协议进行数据打包,向can总线发送一条控车报文。当手机进入控车状态,或者手机控车app心跳断开后,发送的控车报文为刹车、停车状态。当手机控车app正常操作控车时,会将当前更新到的实时的方向盘转角、油门、刹车、档位、手刹等状态打包发送到can总线,以控制汽车。在第二个周期满时,及接下来每过5个周期(10ms)都会将当前的:转向灯、近光灯、远光灯、位置灯等状态按车辆can矩阵协议进行数据打包,向can总线发送一条灯光控制报文。当手机进入控车状态时,会将当前更新到的实时灯光状态打包发送到can总线,以控制汽车。线程二(cmd_process):处理订阅的手机控车app消息,控车消息同样也遵循前面的通讯协议,当收到到手机控车app消息后,该线程负责对消息进行解析,将各字段更新到控车报文数据中。线程三(send_heart):启动500ms周期定时器,每次周期满时,会向mqtt服务器发布一条心跳报文。同时,也会将车辆状态消息按前面的通讯协议进行处理封装,并发布到mqtt服务器。线程四(vehicle_receive):通过阻塞式接收车辆can总线报文,当有车辆状态消息报文收到时,更新车辆状态消息数据,由线程三处理发布到mqtt服务器。本发明方案是基于5g专网环境设计的,专网环境网络状态稳定,时延低,可以满足远程控车需要。但专网环境有区域限制,一般搭建在园区,离开园区往往无法使用5g专网。但如果本发明方案的mqtt(消息队列遥测传输)服务器搭建在公网服务器上,将可以突破地域限制。配合远程视频推流技术,获取车辆周边视图,便可以实现千里之外的远程控车功能。为什么不将mqtt(消息队列遥测传输)服务器搭建在公网服务器上,是由于视频推流存在较大时延,还不能应用于远程驾车场景,相信随着网络的更新迭代,本方案将可以应用到公网环境,那控车就不再受任何区域限制了。以上结合具体实施例描述了本发明的技术原理。这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入本发明权利要求的保护范围之内。当前第1页1 2 3 
    技术特征:

    1.远程驾驶移动终端,其特征在于,包括:

    远程驾驶模块,所述远程驾驶模块设有控车单元和显示单元,所述控车单元用于接收用户控制车辆的触摸操作,并将用户的触摸操作转换成控车消息,所述显示单元用于显示当前车辆状态;及

    第一无线通信模块,所述第一无线通信模块用于将所述控车消息发送给服务器,还用于接收服务器的订阅消息;

    其中,所述远程驾驶模块接收到服务器的订阅消息后根据订阅消息中的车辆状态更新显示单元的车辆状态的显示内容,所述远程驾驶模块还用于向服务器发送终端心跳信息。

    2.根据权利要求1所述的远程驾驶移动终端,其特征在于,

    所述控车单元包括方向盘控件、档位控件、手刹控件、刹车控件、油门控件、灯光控件、控车使能控件和重力传感器控件;

    所述显示单元包括速度显示和转向显示。

    3.远程驾驶系统,其特征在于,包括:

    mqtt服务器,所述mqtt服务器用于消息的转发;

    第二无线通信模块,所述第二无线通信模块用于所述mqtt服务器收发消息;

    远程驾驶移动终端,所述远程驾驶移动终端包括:

    远程驾驶模块,所述远程驾驶模块设有控车单元和显示单元,所述控车单元用于接收用户控制车辆的触摸操作,并将用户的触摸操作转换成控车消息,所述显示单元用于显示当前车辆状态,所述远程驾驶模块用于根据车辆状态消息更新车辆状态的显示内容,还用于发布终端心跳消息,所述控车单元包括方向盘控件、档位控件、手刹控件、刹车控件、油门控件、灯光控件、控车使能控件和重力传感器控件,所述显示单元包括速度显示和转向显示;及

    第一无线通信模块,所述第一无线通信模块用于将所述控车消息和所述终端心跳消息发送给所述mqtt服务器,还用于接收所述mqtt服务器发送的车辆状态消息和网关心跳消息;

    智能网关,所述智能网关包括:

    控车模块,所述控车模块用于将所述控车消息转换成控车报文和将车辆状态报文转换成车辆状态消息,还用于发布网关心跳消息;及

    第三无线通信模块,所述第三无线通信模块用于将所述车辆状态消息和所述网关心跳消息发送给所述mqtt服务器,还用于接收所述mqtt服务器发送的所述控车消息和所述终端心跳消息;和

    can总线,所述can总线分别与车辆和所述控车模块连接,用于接收所述控车报文和将当前车辆状态报文发送给所述控车模块。

    4.根据权利要求3所述的远程驾驶系统的远程驾驶方法,其特征在于,包括以下步骤:

    远程驾驶移动端和智能网关均与mqtt服务器进行通信;

    确认远程驾驶移动端和智能网关是否均与mqtt服务器建立连接;

    当用户操作控车单元时所述控车单元用于接收用户控制车辆的触摸操作,并将用户的触摸操作转换成控车消息;

    远程驾驶移动端向mqtt服务器订阅车辆状态消息及网关心跳消息,向mqtt服务器发送控车消息和终端心跳消息;

    智能网关向mqtt服务器订阅控车消息和终端心跳消息,并同时启动异步流程处理,其中多线程包括:

    线程一、定时周期将控车消息所对应的数据打包并向can总线发送一条控制车辆的控车报文;

    线程二、接收并处理远程驾驶移动端的控车消息,更新线程一中控制车辆的数据;

    线程三、定时周期向mqtt服务器发送一条网关心跳消息,及将车辆状态数据根据通讯协议封装成车辆状态消息发送给mqtt服务器;

    线程四、接收can总线的车辆状态报文,根据车辆状态报文更新车辆状态数据,并将车辆状态数据发送给线程三处理。

    5.根据权利要求4所述的远程驾驶方法,其特征在于,

    所述远程驾驶移动端与mqtt服务器进行通信时,先登录,通过文本编辑框输入mqtt服务器ip地址,并通过设置按钮修改端口号、帐号、密码;

    登录后启动后台服务尝试与mqtt服务器建立连接;

    当远程驾驶移动端与mqtt服务器建立连接成功后,远程驾驶移动端向mqtt服务器订阅车辆状态消息和网关心跳消息;

    智能网关与mqtt服务器进行通信时,所述智能网关读取配置文件中的mqtt服务器信息,连接mqtt服务器;

    智能网关成功连接mqtt服务器后向mqtt服务器订阅控车消息和远终端心跳消息。

    6.根据权利要求4所述的远程驾驶方法,其特征在于,

    将用户的触摸操作转换成控车消息时将触摸回调坐标值在对应的控件中通过计算转换成对应控件的数据;

    所述触摸操作包括依次进行的手指点下、手指移动和手指抬起;转换数据前先设定方向盘控件、档位控件、刹车控件、油门控件的坐标系,然后将控件的坐标变化值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器。

    7.根据权利要求6所述的远程驾驶方法,其特征在于,

    所述方向控件设定坐标系时,将方向盘的中心点坐标作为坐标原点,y轴上的点坐标为零角度,当方向控件的触摸事件为手指点下时,将点下坐标与方向盘中心点坐标通过三角函数计算出点击的角度并记为初始角度,同时也记录到最后一次更新的角度中;当方向控件的触摸事件为手指移动时,通过当前手指移动到的位置计算出当前的角度,根据当前角度和最后一次更新的角度计算出角度改变值,通过角度改变值对方向盘控件进行旋转操作,同时刷新角度值,并将当前角度值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器;当方向盘控件的触摸事件为手指抬起时,将方向盘控件自动旋转到原始位置,将当前角度自动回归到零角度,并更新控车消息,发送给mqtt服务器;

    所述档位控件设定坐标系时,将档位区域左上角顶点坐标作为坐标原点,y轴上从上到下分四等份区域,通过档位位置对档位指向图标位置进行切换,同时刷新档位值,并将档位值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器;

    档位控件的触摸事件为手指点下时,会判断当前刹车控车是否有点下,并且下滑到二分之一位置,如果刹车未处于这个状态,会弹出提供信息:请踩住刹车进行挂挡;如果刹车状态满足,档位会自动跳转到手指点下所对应的档位上;档位控件的触摸事件为手指滑动时,档位自动跳转到手指滑动到的位置上;档位控件的触摸事件为手指抬起时,结束挂档动作;

    所述刹车控件设定坐标系时,将刹车控件的左上角顶点坐标作为坐标原点,y轴与刹车力大小相对应,刹车控件的触摸事件为手指点下时,将点下坐标记录初始坐标位置,当刹车控件的触摸事件为手指移动时,通过当前手指移动到的y坐标位置,根据当前y坐标位置减去初始坐标位置计算出刹车改变值,将刹车改变值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器;当刹车控件的触摸事件为手指抬起时,将刹车力大小改为0,将刹车改变值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器;

    所述油门控件设定坐标系时,将油门控件的左上角顶点坐标作为坐标原点,y轴与油门力大小相对应,油门控件的触摸事件为手指点下时,将点下坐标记录初始坐标位置,当油门控件的触摸事件为手指移动时,通过当前手指移动到的y坐标位置,根据当前y坐标位置减去初始坐标位置计算出油门改变值,将油门改变值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器;当油门控件的触摸事件为手指抬起时,将油门力大小改为0,将油门改变值转换为控车消息中对应的数据字段,更新控车消息,发送给mqtt服务器。

    8.根据权利要求4所述的远程驾驶方法,其特征在于,

    远程驾驶移动端接收mqtt服务器的消息后,判断消息是否为网关心跳消息,若是网关的心跳消息则重设心跳超时定时器,若不是网关心跳消息则判断消息是否是车辆状态消息,若是车辆状态消息则解析车辆状态消息,更新远程驾驶模块显示单元的车辆状态显示内容。

    9.根据权利要求4所述的远程驾驶方法,其特征在于,

    所述线程三中,启动500ms周期定时器,每次周期满时会向mqtt服务器发布一条网关心跳消息;

    设置心跳超时定时器,期满未收到网关心跳消息时进行安全处理。

    10.根据权利要求4所述的远程驾驶方法,其特征在于,

    所述线程一中,启动2ms周期定时器,在第一个周期满时及接下来每过5个周期都会将当前的:方向盘转角、油门、刹车、档位、手刹状态按车辆can矩阵协议进行数据打包,向can总线发送一条控车报文;

    当远程驾驶移动端退出控车状态,或者远程驾驶移动端心跳断开后,智能网关发送的控车报文为刹车、停车状态;

    当远程驾驶移动端正常操作控车时,智能网关将当前更新到的实时的方向盘转角、油门、刹车、档位、手刹状态打包发送到can总线以控制汽车;

    在第二个周期满时及接下来每过5个周期都将当前的:转向灯、近光灯、远光灯、位置灯状态按车辆can矩阵协议进行数据打包,向can总线发送一条灯光控制报文;

    当远程驾驶移动端进入控车状态时,智能网关将当前更新到的实时灯光状态打包发送到can总线以控制汽车。

    11.根据权利要求4所述的远程驾驶方法,其特征在于,

    所述智能网关接收mqtt服务器的消息时,判断消息是否为终端心跳消息,若是终端心跳消息则重设心跳超时定时器,若不是终端心跳消息则判断消息是否为远程驾驶移动端的控车消息,若是控车消息则解析消息,并更新控车报文。

    12.根据权利要求4所述的远程驾驶方法,其特征在于,

    所述第一无线通信模块为android系统的智能手机或平板;

    在远程驾驶移动端与mqtt服务器进行通信前先将mqtt协议搭建到远程驾驶移动端,包括以下步骤:

    在android项目工程的gradle中添加mqtt依赖包;

    在androidmanifest中声明网络访问权限;

    android项目工程中添加一个负责mqtt连接、发送和接收消息的mqtt服务;

    mqtt服务在远程驾驶移动端登录时启动,在mqtt服务的初始化阶段根据登录时的输入信息与mqtt服务器建立连接;

    连接建立成功后,向mqtt服务器订阅车辆状态消息和网关心跳消息主题;

    同时设置mqtt消息监听回调,进行消息的接收;

    连接建立失败时,调用重连机制,并弹出相关提示;

    对消息发送接口进行封装,在android终端界面上操作时,调用封装后的消息发送接口。

    技术总结
    远程驾驶移动终端、远程驾驶系统及远程驾驶方法。本发明涉及远程驾驶移动终端,包括远程驾驶模块和第一无线通信模块,远程驾驶模块设有控车单元和显示单元,所述控车单元用于接收用户控制车辆的触摸操作,并将用户的触摸操作转换成控车消息,所述显示单元用于显示当前车辆状态;所述第一无线通信模块用于将所述控车消息发送给服务器,还用于接收服务器的订阅消息;其中,所述远程驾驶模块接收到服务器的订阅消息后根据订阅消息中的车辆状态更新显示单元的车辆状态的显示内容,所述远程驾驶模块还用于向服务器发送终端心跳信息。该终端只需要一台普通的智能手机或具有5G网络的平板就可以任意扩充必要的控车功能,无额外的硬件成本,可移动,控车没有地点要求,无需搭建驾驶环境。

    技术研发人员:徐静;任艳
    受保护的技术使用者:宁波波导易联电子有限公司
    技术研发日:2020.12.01
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-7194.html

    最新回复(0)