发明内容
本申请实施例提供了一种车辆控制方法、装置、终端设备及计算机可读存储介质,可以有效提高自动驾驶的智能化程度。
第一方面,本申请实施例提供了一种车辆控制方法,包括:
在车辆泊入目标区域的过程中,记录所述车辆泊入所述目标区域的泊入路径;
在车辆泊出所述目标区域的过程中,实时获取所述车辆的泊出位置;
根据所述泊出位置和所述泊入路径之间的位置偏差确定方向盘转角;
根据所述方向盘转角控制所述车辆沿所述泊入路径泊出所述目标区域。
本申请实施例中,由于车辆泊入目标区域的泊入路径是已完成的路径,说明该路径是能够保证通行的,那么记录该路径,相当于保存了一条参考路径。当车辆需要泊出目标区域时,相当于以已记录的泊入路径为参考路径,控制车辆泊入目标区域。当车辆驶入未知的狭窄区域,且无法通过掉头退出时,通过上述方法,能够自动控制车辆沿原路返回,提高了自动驾驶的智能化程度。
在第一方面的一种可能的实现方式中,所述目标区域包括多个第一位置点,所述在车辆泊入目标区域的过程中,记录所述车辆泊入所述目标区域的泊入路径,包括:
在所述车辆泊入所述目标区域的过程中,每达到一个所述第一位置点,获取表示所述第一位置点所处环境的三维点云、和所述第一位置点的位置坐标;
根据多个所述第一位置点的所述三维点云计算所述车辆在每相邻的两个第一位置点之间的位姿变换数据;
根据所述车辆在每相邻的两个第一位置点之间的位姿变换数据、以及每个所述第一位置点的位置坐标生成所述泊入路径。
在第一方面的一种可能的实现方式中,所述在车辆泊出所述目标区域的过程中,获取所述车辆的泊出位置,包括:
在所述车辆泊出所述目标区域的过程中,实时计算所述车辆的位姿信息;
对所述位姿信息进行数据滤波处理,获得所述泊出位置。
在第一方面的一种可能的实现方式中,所述根据所述泊出位置和所述泊入路径之间的位置偏差确定方向盘转角,包括:
获取所述车辆在所述泊出位置对应的档位信息,其中,所述档位信息表示所述车辆泊入所述目标区域的过程中、经过所述泊出位置时的档位;
若所述档位信息表示前进,则根据预瞄点与所述泊出位置之间的位置偏差确定所述方向盘转角,其中,所述预瞄点为所述泊入路径中的位置点;
若所述档位信息表示后退,则根据所述泊出位置与所述泊入路径之间的位置偏差确定所述方向盘转角。
在第一方面的一种可能的实现方式中,所述根据预瞄点与所述泊出位置之间的位置偏差确定所述方向盘转角,包括:
计算第一横向循迹误差,其中,所述第一横向循迹误差表示所述车辆在所述泊出位置的后轴中心到所述预瞄点的横向距离;
根据所述第一横向循迹误差和第一控制律计算第一前轮转角,其中,所述第一控制律表示所述第一横向循迹误差和车辆的前轮转角之间的函数关系;
根据所述第一前轮转角确定所述方向盘转角。
在第一方面的一种可能的实现方式中,所述根据所述泊出位置与所述泊入路径之间的位置偏差确定所述方向盘转角,包括:
计算第二横向循迹误差,其中,所述第二横向循迹误差表示所述车辆在所述泊出位置的前轴中心到所述泊入路径的距离;
计算角度循迹误差,所述角度循迹误差表示所述车辆在所述泊出位置的航向角与所述车辆在所述第二位置点的航向角之间的角度差;
根据所述第二横向循迹误差、所述角度循迹误差和第二控制律计算第二前轮转角,其中,所述第二控制律表示所述第二横向循迹误差、所述角度循迹误差和车辆的前轮转角之间的函数关系;
根据所述第二前轮转角确定所述方向盘转角。
在第一方面的一种可能的实现方式中,所述方法还包括:
在车辆泊出所述目标区域的过程中,若所述车辆在当前位置对应的档位信息和在上一位置对应的档位信息不同,则根据所述车辆在当前位置对应的档位信息切换所述车辆的档位。
第二方面,本申请实施例提供了一种车辆控制装置,包括:
路径记录单元,用于在车辆泊入目标区域的过程中,记录所述车辆泊入所述目标区域的泊入路径;
位置获取单元,用于在车辆泊出所述目标区域的过程中,实时获取所述车辆的泊出位置;
角度计算单元,用于根据所述泊出位置和所述泊入路径之间的位置偏差确定方向盘转角;
车辆控制单元,用于根据所述方向盘转角控制所述车辆沿所述泊入路径泊出所述目标区域。
第三方面,本申请实施例提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面中任一项所述的车辆控制方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面中任一项所述的车辆控制方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述的车辆控制方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。
首先介绍本申请实施例的应用背景。当车辆进入未知狭窄区域,且无法掉头退出时,如在车库或车位上泊车、驶入胡同、或穿过两车间狭窄间隙等,往往自动驾驶功能变得无能为力。此种情况下,通常转为人工驾驶模式,由驾驶员操控车辆后退。这种方式极大依赖驾驶人对车辆的操控能力,当驾驶人经验不足或存在视觉死角时,易发生碰撞事故。现有的自动驾驶功能智能化程度较低,无法满足未知狭窄区域的行驶需求。
为了解决上述问题,本申请实施例提供了一种车辆控制方法。该方法中,在车辆泊入未知狭窄区域的过程中,记录泊入路径;在车辆需要泊出该未知狭窄区域的过程中,根据泊出位置和已记录的泊入路径之间的位置偏差实时计算方向盘转角,以根据方式盘转角实时控制车辆沿泊入路径使出该未知狭窄区域。上述方法,能够实现复杂路况下的自动驾驶,控制精度较高,有效降低了驾驶人员的驾驶负荷,提高了车辆的智能化程度,且无需增加额外的硬件设备。
下面介绍本申请实施例涉及到的车辆控制***。参见图1,是本申请实施例提供的车辆控制***的组成示意图。如图1所示,车辆控制***可以包括信息获取层、控制层和执行层。各层之间可以通过CAN总线通信连接。应用过程中,信息获取层将获取到的关于车辆行驶的数据发送给控制层,控制层根据接收到的数据规划行驶路径(如泊入路径和泊出路径)及所需控制量,执行层控制车辆相关装置执行规划好的控制量。
其中,信息获取层可以包括各种传感器,如轮速传感器、变速器控制单元、方向盘转角传感器、障碍物检测传感器和视觉传感器等。轮速传感器用于获取车辆两侧非驱动轮转速、取平均值后得到后轴中点速度。变速器控制单元用于获取车辆前进/后退的档位。方向盘转角传感器用于获取方向盘转角。障碍物检测传感器(如摄像头、雷达等)用于检测车辆周围的障碍物。视觉传感器用于获取行车过程中的环境信息(如三维点云、二维图像等)。
控制层可以包括定位计算模块、下电存储模块、数据记录模块、人机交互模块、前进控制模块、后退控制模块、执行器握手模块和障碍物报警模块等。定位计算模块用于计算车辆的泊出位置,包括泊入定位单元和泊出定位单位,详细内容见下述实施例。前进控制模块用于计算前进控制策略,如下述实施例中所述的前进误差反馈跟踪策略。后退控制模块用于计算后退控制策略,如下述实施例中所述的后退预瞄跟踪策略。
执行层可以包括转向助力器(EPS,Electric Power Steering)、人机交互界面(HMI,Human Machine Interface)和驾驶操作装置(如档位器、制动装置、节气门等)。
参见图2,是本申请实施例提供的车辆控制方法的流程示意图,作为示例而非限定,所述方法可以包括以下步骤:
S101,在车辆泊入目标区域的过程中,记录所述车辆泊入所述目标区域的泊入路径。
本申请实施例中的目标区域可以指代狭窄、且车辆无法掉头的区域。
本申请实施例中,可由上述实施例所述的控制层中定位计算模块的泊入定位单元执行。
在一些实施例中,车辆启动后,即可实时记录行驶路径。当存储空间已满,最新的记录覆盖原有的记录。通常车辆的回退路径(即泊出路径)为最新的泊入路径,因此,通过这种方法,既能够保证不丢失行驶数据,又能保证车辆回退时能够调用已记录的泊入路径。
在另一些实施例中,可以由用户通过HMI开启记录功能。例如,用户通过HMI向执行层发送开启指令,执行层将开启指令发送给控制层,控制层中的人机交互模块接收到开启指令后,指示数据记录模块记录从信息获取层接收到的行驶数据。
当然,上述两种记录方式可以交替。例如,车辆启动后,即实时记录行驶路径;当用户通过HMI关闭记录功能,控制层停止记录行驶路径。再例如,车辆启动后,默认不记录行驶路径;当用户通过HMI开启记录功能,控制层开始记录行驶路径。
在一些实施例中,目标区域包括多个第一位置点。记录泊入路径的方式可以包括:
在所述车辆泊入所述目标区域的过程中,每达到一个第一位置点,获取表示所述第一位置点所处环境的三维点云、和所述第一位置点的位置坐标;根据所述三维点云计算所述车辆在相邻的每两个第一位置点之间的位姿变换数据;根据所述车辆在相邻的每两个第一位置点之间的位姿变换数据、以及每个第一位置点的位置坐标生成所述泊入路径。
设置第一位置点的一种方式为:当车辆的行驶距离每达到预设距离,即达到一个第一位置点。例如,当车辆行驶路程超过10cm时,即达到一个第一位置点,记录该第一位置点的有效位置坐标、和三维点云,同时存储当前的档位信息。
设置第一位置点的另一种方式为:预先设置记录周期,车辆行驶的时间每间隔记录周期,记录一个第一位置点。例如,当车辆行驶速度大于10迈、小于20迈,每间隔10s记录一个第一位置点;当车辆行驶速度大于20迈、小于30迈,每间隔5s记录一个第一位置点;依次类推,对不同车速设置不同的记录周期。
本申请实施例中,三维点云可以是通过激光雷达获取的。三维点云还可以通过安装在车辆上的摄像头获取。例如,选取车身上有相交视野的摄像头(或双目摄像头、或深度摄像头),预先对其进行参数标定;行驶过程中,利用标定后的摄像头获取环境的三维点云。每到达一个第一位置点,获取一帧三维点云,即相邻的两帧三维点云对应相邻的两个第一位置点。
本申请实施例中,计算相邻的每两个第一位置点之间的位姿变换数据的方式可以为:将相邻的两帧三维点云的ORB特征进行匹配,假设针对这两帧匹配出一组特征点为:
利用矩阵分解(如SVD分解)计算P和P′的位姿变换数据P′=R·P+t,R为旋转矩阵,t为位移矩阵。
通过上述方法,只要获得一个初始位置的坐标,即可根据依次得到的相邻位置点之间的位姿变换数据,得到泊入轨迹。
需要说明的是,本申请实施例中,记录的泊入路径可以指记录的离散数据,包括多个第一位置点各自的位置坐标、以及相邻的每两个位置点之间的位姿变换数据。记录的泊入路径还可以是一条曲线,该曲线根据多个第一位置点各自的位置坐标、以及相邻的每两个位置点之间的位姿变换数据拟合而成。
可选的,在获取每个第一位置点的位姿数据的同时,还可以记录车辆在每个第一位置点的档位信息。如将倒挡记录为-1,将非倒挡记录为1。当然,还可以将不同的前进挡记录为不同的数据,如一档记录为1,二挡记录为2,等等。在此不对档位信息的记录形式做具体限定。记录档位信息是为了后续车辆泊出目标区域的过程中,调整不同的控制策略。
S102,在车辆泊出所述目标区域的过程中,实时获取所述车辆的泊出位置。
本申请实施例中,可由上述实施例所述的控制层中定位计算模块的泊出定位单元执行。
在一些实施例中,在所述车辆泊出所述目标区域的过程中,实时计算所述车辆的位姿信息,该位姿信息记为车辆的泊出位置。具体方法如下:
(1)首先,车辆运动满足阿克曼转向和刚体圆周运动公式:
式中:vr为后轴中点速度,ω为横摆角速度,R为转弯半径,δf为前轮转弯半径,L为轴距。其中,ω为未知数据,R和L为车辆已知参数,δf和vr是通过传感器可以获取到的数据。化简上式可计算横摆角速度为:
式中:i为方向盘的角传动比。
(2)其次,根据车辆运动几何关系进一步得到后轴中点纵、横坐标如下式
式中:Ts为离散计算周期(相邻每两个位置点之间的时间间隔),ωk、θk分别为k时刻的横摆角速度和航向角,xk、yk分别为k时刻相对于起始点的纵、横坐标;vl、vr分别为左右非驱动轮轮速。
实际应用中,考虑到车辆泊出目标区域的过程中,车速并非恒定,且车速和横摆角速度的数据存在一定噪声。如果按照上述计算方式,计算出的泊出位置精度较低。为了提高实时定位的精度,本申请实施例中,对上述计算出的位姿信息进行数据滤波处理,将滤波后的位姿信息记为泊出位置。可选的,可以采用扩展卡尔曼滤波器进行数据滤波处理。具体的,在上述步骤(1)、(2)的基础上,增加步骤(3)的滤波过程,如下:
(3)扩展卡尔曼滤波器
式中:vx,k+1、vy,k+1分别为k+1时刻横、纵向车速,ax、ay分别为横、纵向加速度,W、V分别为过程噪声和测量噪声。其中,W为给定数据,V相当于由上述步骤计算出的ω组成的矩阵。
通过上述数据滤波处理,能够有效滤除噪声数据,有效提高了定位精度。
S103,根据所述泊出位置和所述泊入路径之间的位置偏差确定方向盘转角。
该步骤中,已记录的泊入路径,可以看作是一条参考路径。可以利用现有的导航方法,计算泊出位置和参考路径之间的位置偏差,以确定方向盘转角,进而实现对车辆的控制。
S104,根据所述方向盘转角控制所述车辆沿所述泊入路径泊出所述目标区域。
在一些实施例中,在车辆泊出所述目标区域的过程中,所述车辆控制方法还包括:若车辆在当前位置对应的档位信息和在上一位置对应的档位信息不同,则根据车辆在当前位置对应的档位信息切换所述车辆的档位。
示例性的,如图5所示,车辆泊入目标区域过程中,由泊入起始点到后退位置之间,车辆前进;由换挡位置到泊入终止点之间,车辆后退。相应的,在车辆泊出目标区域过程中,车辆先前进、再后退。当车辆到达换挡位置时,将车辆档位由前进档位换成后退档位。
上述图2所述实施例中,由于车辆泊入目标区域的泊入路径是已完成的路径,说明该路径是能够保证通行的,那么记录该路径,相当于保存了一条参考路径。当车辆需要泊出目标区域时,相当于以已记录的泊入路径为参考路径,控制车辆泊入目标区域。当车辆驶入未知的狭窄区域,且无法通过掉头退出时,通过上述方法,能够自动控制车辆沿原路返回,提高了自动驾驶的智能化程度。
针对上述步骤S103,在一些实施例中,在车辆泊出目标区域的过程中,无论是前进还是后退,均可以采用相同的算法来计算方向盘转角。
但由于车辆前进和后退过程中,车辆与泊入路径之间的几何关系实际是有所不同的,如果按照相同的算法计算方向盘转角,可能导致计算结果的精度较低,进而无法保证车辆精准地沿原路返回。
为了提高控制精度,在一个实施例中,将泊入路径划分为前进与后退的分段路径,为不同的分段路径设置不同的算法。具体的,S103可以包括以下步骤:
I、获取所述车辆在所述泊出位置对应的档位信息,其中,所述档位信息表示所述车辆泊入所述目标区域的过程中、经过泊出位置时的档位。
如上实施例所述,记录的泊入路径可以指记录的离散数据,还可以是拟合出的一条曲线。当泊入路径指离散数据时,相应的,步骤I中,泊入路径中与泊出位置相匹配的位置点可以是,距离泊出位置最近的某个第一位置点。当泊入路径指拟合出的曲线时,泊入路径中与泊出位置相匹配的位置点可以是,与拟合出的曲线距离最近的某个位置点(该位置点不一定是第一位置点)。
当泊入路径中与泊出位置相匹配的位置点为第一位置点时,泊出位置对应的档位信息即为第一位置点的档位信息。当泊入路径中与泊出位置相匹配的位置点不为第一位置点时,可以根据各个第一位置点对应的档位信息,将泊入路径划分为前进子路径和后退子路径,然后判断泊出位置属于前进子路径还是后退子路径,以此判断出泊出位置对应的档位信息。
II、若所述档位信息表示前进,则根据预瞄点与所述泊出位置之间的位置偏差确定所述方向盘转角,其中,所述预瞄点为所述泊入路径中的位置点。
该步骤中,档位信息表示前进,换言之,车辆泊入目标区域的过程中,到达当前位置时为前进状态。相应的,车辆泊出目标区域的过程中,车辆到达当前位置时应为后退状态。此种情况下,车辆与泊入路径之间满足转向几何学,利用后退预瞄跟踪算法确定方向盘转角。具体的,步骤II可以包括:
计算第一横向循迹误差,其中,所述第一横向循迹误差表示所述车辆在所述泊出位置的后轴中心到所述预瞄点的横向距离;
根据所述第一横向循迹误差和第一控制律计算第一前轮转角,其中,所述第一控制律表示所述第一横向循迹误差和车辆的前轮转角之间的函数关系;
根据所述第一前轮转角确定方向盘转角。
参见图3,是本申请实施例提供的后退预瞄跟踪算法的几何示意图。如图3所示,从车轮转角与泊入路径中的预瞄点(gx、gy)之间的关系考虑,预瞄点为从车辆后轴中心出发,到泊入路径距离为ld(预设值)的一点。同时定义车辆后轴中心到预瞄点(gx、gy)的横向距离为第一横向循迹误差eld,由三角几何关系有:
预瞄距离ld与后轴中点v速度呈正相关:
ld=k·v
式中:k为标定参数。车辆的前轮转角为:
δ=tan-1(L/R)
联立以上几式,得到第一控制律为
式中:δ1表示车辆的第一前轮转角。
基于上述第一控制律,可以根据第一横向循迹误差和相关数据,实时计算出车辆前轮转角。由于车辆前轮转角与方向盘转角之间存在确定的转换关系,因此,根据计算出的车辆前轮转角即可确定出方向盘转角。
示例性的,信息获取层将实时获取到的后轴中点速度、当前位置的位置坐标和车辆姿态数据发送给控制层;控制层根据接收到的数据实时计算出第一横向循迹误差,再根据第一横向循迹误差和第一控制律、实时计算出第一前轮转角,并转换为方向盘转角,发送给执行层;执行层根据接收到的方向盘转角控制方向盘转动,并根据信息获取层实时反馈的方向盘转角数据判断方向盘是否转动到位。
III、若所述档位信息表示后退,则根据所述泊出位置与所述泊入路径之间的位置偏差确定所述方向盘转角。
该步骤中,档位信息表示后退,换言之,车辆泊入目标区域的过程中,到达当前位置时为后退状态。相应的,车辆泊出目标区域的过程中,车辆到达当前位置时应为前进状态。此种情况下,车辆与泊入路径之间满足理想阿克曼转向关系,利用前进误差反馈跟踪算法确定方向盘转角。具体的,步骤III可以包括:
计算第二横向循迹误差,其中,所述第二横向循迹误差表示所述车辆在所述泊出位置的前轴中心到所述泊入路径的距离;
计算角度循迹误差,所述角度循迹误差表示所述车辆在所述泊出位置的航向角与所述车辆在所述第二位置点的航向角之间的角度差;
根据所述第二横向循迹误差、所述角度循迹误差和第二控制律计算第二前轮转角,其中,所述第二控制律表示所述第二横向循迹误差、所述角度循迹误差和车辆的前轮转角之间的函数关系;
根据所述第二前轮转角确定方向盘转角。
参见图4,是本申请实施例提供的前进误差反馈跟踪算法的几何示意图。如图4所示,车辆与泊入路径之间满足理想阿克曼转向关系tan(δ)=L/R。将车辆前轴中心至期望轨迹的距离定义为第二横向循迹误差ef,汽车前轮处的角度循迹误差可以表示为θe=θ-θc,式中:θ、θc分别为出泊过程中的航向角和入泊路径中记录的航向角,联立上述两式,得到第二控制律:
式中,δ2为车辆的第二前轮转角。
需要说明的是,图4中所示的XY坐标系,可以是基于出泊起始位置点设定的。换言之,后续实时计算出的数据,都是基于出泊起始位置的。例如,θc相当于车辆在当前位置相对于出泊起始位置的航向角变化值。
基于上述第二控制律,可以根据第二横向循迹误差、角度循迹误差和相关数据,实时计算出第二前轮转角。由于车辆的前轮转角与方向盘转角之间存在确定的转换关系,因此,根据计算出的车辆前轮转角即可确定出方向盘转角。
示例性的,信息获取层将实时获取到的后轴中点速度、当前位置的位置坐标和车辆姿态数据发送给控制层;控制层根据接收到的数据实时计算出第二横向循迹误差和角度循迹误差,再根据第二横向循迹误差、角度循迹误差和第一控制律、实时计算出第二前轮转角,并转换为方向盘转角,发送给执行层;执行层根据接收到的方向盘转角控制方向盘转动,并根据信息获取层实时反馈的方向盘转角数据判断方向盘是否转动到位。
上述实施例中,根据档位的变化,将入泊路径划划分为前进子路径和后退子路径。通过对不同子路径分段控制,能够更加精确地计算出方向盘转角,实现车辆的精准控制。
示例性的,参见图5,是本申请实施例提供的应用场景示意图。如图5中的(a)所示的应用场景,该应用场景中,车辆后退泊入目标区域。在车辆泊出目标区域过程中,控制车辆调用前进策略泊出即可。如图5中的(b)所示的应用场景,该应用场景中,车辆泊入目标区域的过程中,先从泊入起始点前进泊入换挡位置,再切换为后退档位、继续从换挡位置后退到达泊入终止点。相应的,车辆泊出过程中,先调用前进策略控制车辆从泊入终止点泊出到换挡位置,在换挡位置将档位切换为后退档位,再调用后退策略控制车辆从换挡位置泊出到泊入起始点。
一些应用情况中,当车辆成功回到泊入起始点,控制***可以通过HMI提示用户完成泊出,以指示用户切换为人工驾驶模式。
本申请实施例中,由于车辆泊入目标区域的泊入路径是已完成的路径,说明该路径是能够保证通行的,那么记录该路径,相当于保存了一条参考路径。当车辆需要泊出目标区域时,相当于以已记录的泊入路径为参考路径,控制车辆泊入目标区域。当车辆驶入未知的狭窄区域,且无法通过掉头退出时,通过上述方法,能够自动控制车辆沿原路返回,提高了自动驾驶的智能化程度。
进一步的,本申请实施例中,将泊入路径划分为前进与后退的分段路径,为不同的分段路径设置不同的控制算法。有效提高了反向盘转角的计算精度,进而提高了车辆的控制精度。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的车辆控制方法,图6是本申请实施例提供的车辆控制装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图6,该装置包括:
路径记录单元61,用于在车辆泊入目标区域的过程中,记录所述车辆泊入所述目标区域的泊入路径;
位置获取单元62,用于在车辆泊出所述目标区域的过程中,实时获取所述车辆的泊出位置;
角度计算单元63,用于根据所述泊出位置和所述泊入路径之间的位置偏差确定方向盘转角;
车辆控制单元64,用于根据所述方向盘转角控制所述车辆沿所述泊入路径泊出所述目标区域。
可选的,所述目标区域包括多个第一位置点,路径记录单元61还用于:
在所述车辆泊入所述目标区域的过程中,每达到一个第一位置点,获取表示所述第一位置点所处环境的三维点云、和所述第一位置点的位置坐标;
根据多个所述第一位置点的所述三维点云计算所述车辆在每相邻的两个第一位置点之间的位姿变换数据;
根据所述车辆在每相邻的两个第一位置点之间的位姿变换数据、以及每个第一位置点的位置坐标生成所述泊入路径。
可选的,位置获取单元62还用于:
在所述车辆泊出所述目标区域的过程中,实时计算所述车辆的位姿信息;
对所述位姿信息进行数据滤波处理,获得所述泊出位置。
可选的,角度计算单元63还用于:
获取所述车辆在所述泊出位置对应的档位信息,其中,所述档位信息表示所述车辆泊入所述目标区域的过程中、经过所述泊出位置时的档位;
若所述档位信息表示前进,则根据预瞄点与所述泊出位置之间的位置偏差确定所述方向盘转角,其中,所述预瞄点为所述泊入路径中的位置点;
若所述档位信息表示后退,则根据所述泊出位置与所述泊入路径之间的位置偏差确定所述方向盘转角。
可选的,角度计算单元63还用于:
计算第一横向循迹误差,其中,所述第一横向循迹误差表示所述车辆在所述泊出位置的后轴中心到所述预瞄点的横向距离;
根据所述第一横向循迹误差和第一控制律计算第一前轮转角,其中,所述第一控制律表示所述第一横向循迹误差和车辆的前轮转角之间的函数关系;
根据所述第一前轮转角确定方向盘转角。
可选的,角度计算单元63还用于:
计算第二横向循迹误差,其中,所述第二横向循迹误差表示所述车辆在所述泊出位置的前轴中心到所述泊入路径的距离;
计算角度循迹误差,所述角度循迹误差表示所述车辆在所述泊出位置的航向角与所述车辆在所述第二位置点的航向角之间的角度差;
根据所述第二横向循迹误差、所述角度循迹误差和第二控制律计算第二前轮转角,其中,所述第二控制律表示所述第二横向循迹误差、所述角度循迹误差和车辆的前轮转角之间的函数关系;
根据所述第二前轮转角确定方向盘转角。
可选的,车辆控制单元64还用于:
在车辆泊出所述目标区域的过程中,若所述车辆在当前位置对应的档位信息和在上一位置对应的档位信息不同,则根据所述车辆在当前位置对应的档位信息切换所述车辆的档位。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
另外,图6所示的车辆控制装置可以是内置于现有的终端设备内的软件单元、硬件单元、或软硬结合的单元,也可以作为独立的挂件集成到所述终端设备中,还可以作为独立的终端设备存在。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述***中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图7是本申请实施例提供的终端设备的结构示意图。如图7所示,该实施例的终端设备7包括:至少一个处理器70(图7中仅示出一个)处理器、存储器71以及存储在所述存储器71中并可在所述至少一个处理器70上运行的计算机程序72,所述处理器70执行所述计算机程序72时实现上述任意各个车辆控制方法实施例中的步骤。
所述终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,图7仅仅是终端设备7的举例,并不构成对终端设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器70可以是中央处理单元(Central Processing Unit,CPU),该处理器70还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器71在一些实施例中可以是所述终端设备7的内部存储单元,例如终端设备7的硬盘或内存。所述存储器71在另一些实施例中也可以是所述终端设备7的外部存储设备,例如所述终端设备7上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器71还可以既包括所述终端设备7的内部存储单元也包括外部存储设备。所述存储器71用于存储操作***、应用程序、引导装载程序(Boot Loader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行时实现可实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。