An unmanned vehicle positioning system, method, device and electronic device

By combining the Scan Context global descriptor and Monte Carlo positioning method, using multi-line lidar point cloud data for unmanned vehicle positioning, the problem that traditional Monte Carlo positioning fails to fully utilize multi-line lidar information is solved, and higher positioning accuracy and computing efficiency are achieved.

CN114063092BActive Publication Date: 2025-07-01ARMY ENG UNIV OF PLA +1
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202111362797.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2021-11-17
Publication Date
2025-07-01
Estimated Expiration
2041-11-17

AI Technical Summary

Technical Problem

In the prior art, traditional Monte Carlo positioning uses the information of single-line lidar to locate based on two-dimensional grid maps, and fails to fully utilize the perception information of multi-line lidar.

Method used

The unmanned vehicle positioning method combining Scan Context global descriptor and Monte Carlo positioning is adopted. By acquiring and processing multi-line lidar point cloud data, the raster sampling and descriptor database is established using the Lego-LOAM algorithm framework and KD-Tree, and the odometer sampling motion model and the Monte Carlo positioning algorithm of Scan Context are used to calculate the relative positioning posture of the unmanned vehicle.

Benefits of technology

The utilization rate of unmanned vehicle multi-line lidar information is improved, the real-time positioning and computing speed are enhanced, and the problem that traditional Monte Carlo positioning fails to make full use of multi-line lidar information.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114063092B_ABST
    Figure CN114063092B_ABST
Patent Text Reader

Abstract

The present invention provides an unmanned vehicle positioning system, method, device and electronic device, including: S101, acquiring point cloud data recorded when the unmanned vehicle drives through the entire working environment; S102, based on the point cloud data, obtaining the original position information of the point cloud data through an algorithm based on the Lego-LOAM algorithm framework; S103, performing grid sampling on the point cloud data to obtain a descriptor database and a KD-Tree; S104, obtaining particles through an odometer sampling motion model by combining a Monte Carlo localization algorithm of Scan Context; S105, finding the binary group closest to each particle from the descriptor database through the KD-Tree, calculating the similarity between the Scan Context descriptor generated by the current lidar scan and the descriptor in the binary group, and obtaining the relative pose of the unmanned vehicle relative to the original position information at present. To solve the problem in the prior art that traditional Monte Carlo localization uses the information of a single-line lidar for positioning based on a two-dimensional grid map, without making full use of the sensing information of a multi-line lidar.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This unmanned vehicle positioning method relates to the technical field of unmanned vehicle positioning, and particularly relates to an unmanned vehicle positioning system, method, device and electronic device. Background Art

[0002] The autonomous navigation technology of unmanned vehicles is usually composed of three sub-technologies: map building, unmanned vehicle positioning, and path planning. The prerequisite for an unmanned vehicle to be able to move and work in a production environment is to have a global map, which is usually built using the Simultaneous Localization and Mapping (SLAM) technology. Given a map, a known starting position, and a target position, an unmanned vehicle can obtain a feasible path with the help of a path planning algorithm. During the autonomous navigation process, the unmanned vehicle needs to know its position in the map in real time in order to re-plan the path in real time.

[0003] Visible light cameras and multi-line lidars are currently the two mainstream environmental perception sensors for unmanned vehicles. Visible light cameras have the advantages of high resolution and the ability to perceive color information. However, the fatal flaw is that they cannot directly perceive distance information. Even though there are currently technologies using deep learning to obtain depth information, they are still in the laboratory stage and cannot meet the stability requirements of the industrial field. Multi-line lidars can actively obtain the distance information of obstacles within a 360° viewing angle and have no requirements for the light in the production environment. Therefore, in current industrial production, multi-line lidars still dominate the environmental perception sensors of unmanned vehicles. Summary of the Invention

[0004] The purpose of the present invention is to provide an unmanned vehicle positioning system, method, device and electronic device. The unmanned vehicle positioning system can solve the problem in the prior art that traditional Monte Carlo positioning uses the information of a single-line lidar based on a two-dimensional grid map for positioning and does not make full use of the perception information of a multi-line lidar.

[0005] To achieve the above purpose, the present invention provides the following technical solutions:

[0006] An unmanned vehicle positioning method, the method specifically includes:

[0007] S101, obtaining the point cloud data of the unmanned vehicle driving through the entire working environment;

[0008] S102, based on the point cloud data, obtaining the original position information of the point cloud data through an algorithm based on the Lego-LOAM algorithm framework;

[0009] S103, performing grid sampling on the point cloud data to obtain a descriptor database and a KD-Tree;

[0010] S104. Obtain particles through the Monte Carlo localization algorithm that combines the motion model sampled by the odometer and the Scan Context.

[0011] S105. Use a KD-Tree to find the closest binary tuple to each particle in the descriptor database, calculate the similarity between the Scan Context descriptor generated by the current lidar scan and the descriptor in the binary tuple, and obtain the relative pose of the unmanned vehicle relative to the original position information.

[0012] Based on the above technical solution, the present invention can also be improved as follows:

[0013] Further, the specific steps of S103 are as follows:

[0014] S1031. Obtain a subset of the position set L through grid sampling Obtain the corresponding subset of the point cloud set P according to the index mapping relationship

[0015] S1032. For each frame of point cloud P in the subset Generate its corresponding Scan Context descriptor D, combine the descriptor D with the corresponding position L to obtain a binary tuple <D, L> composed of the descriptor and the corresponding position, and obtain the descriptor database according to the binary tuple.

[0016] S1033. Build a KD-Tree corresponding to the position set L for all position sets L.

[0017] S1034. Store the descriptor database and the KD-Tree on the disk.

[0018] Further, the specific steps of obtaining the relative pose of the unmanned vehicle relative to the origin of the global map in S105 are as follows:

[0019] S1051. Initialize the particle swarm and generate M particles to represent the initial pose of the unmanned vehicle.

[0020] S1052. After the unmanned vehicle moves for a unit time, successively input the M particles into the state transition equation to obtain the predicted particles.

[0021] S1053. Input the M particles into the observation model in sequence, calculate the probability of generating an observation for each particle pose, and use the probability as the weight of the particle.

[0022] S1054. Randomly extract M new particles from the M particles according to the weight size.

[0023] S1055. Repeat steps S1052 - S1054.

[0024] Further, the method further includes:

[0025] S106, encapsulating the Scan Context global descriptor and the Monte Carlo localization algorithm into a node in ROS, and subscribing to the point cloud data topic of the lidar driver node and the odometry data topic of the odometry driver node through the ROS node.

[0026] A lidar point cloud recording module, which is used to record the point cloud data of the unmanned vehicle driving through the entire working environment;

[0027] A processing module, which is connected to the lidar point cloud recording module, and is used to input the point cloud data into an algorithm based on the Lego-LOAM algorithm framework to obtain the original position information of the point cloud data;

[0028] A grid sampling module, which is connected to the processing module, and is used to perform grid sampling on the point cloud data to obtain a descriptor database and a KD-Tree;

[0029] A calculation module, which is connected to the processing module and the grid sampling module, and is used to find the binary group closest to each particle from the descriptor database through the KD-Tree, calculate the similarity between the Scan Context descriptor generated by the current lidar scan and the descriptor in the binary group, and obtain the relative pose of the unmanned vehicle relative to the original position information.

[0030] Further, the grid sampling module is further used for:

[0031] Obtaining a subset of the position set L through grid sampling Obtaining a corresponding subset of the point cloud set P according to the index mapping relationship

[0032] For each frame of point cloud P in the subset generating its corresponding Scan Context descriptor D, combining the descriptor D with the corresponding position L to obtain a binary group <D, L> composed of the descriptor and the corresponding position, and obtaining the descriptor database according to the binary group;

[0033] Building a KD-Tree corresponding to the position set L for all the position sets L;

[0034] Storing the descriptor database and the KD-Tree to the disk.

[0035] Further, the calculation module is further used for:

[0036] Initializing the particle swarm and generating M particles to represent the initial pose of the unmanned vehicle;

[0037] Bring M particles into the state transition equation in sequence to obtain the predicted particles.

[0038] Bring M particles into the observation model in sequence, calculate the probability of generating an observation for each particle pose, and use the probability as the weight of the particle.

[0039] Randomly extract M new particles from the M particles according to the weight size.

[0040] Furthermore, the unmanned vehicle positioning system further includes:

[0041] An encapsulation module, which is used to encapsulate the Scan Context global descriptor and the Monte Carlo localization algorithm into a node in ROS. The ROS node subscribes to the point cloud data topic of the lidar driver node and subscribes to the odometer data topic of the odometer driver node.

[0042] An unmanned vehicle positioning device includes: a memory, a processor, and a computer program stored on the memory and executable on the processor. When the computer program is executed by the processor, the steps of the unmanned vehicle positioning method are implemented.

[0043] An electronic device, characterized in that an information transmission implementation program is stored on the electronic device. When the program is executed by the processor, the steps of the unmanned vehicle positioning method are implemented.

[0044] The present invention has the following advantages:

[0045] The unmanned vehicle positioning method of the present invention proposes a way of unmanned vehicle positioning that combines the Scan Context global descriptor and Monte Carlo localization, improves the defect that traditional Monte Carlo only uses single-line information for matching on a 2D grid map, and improves the utilization rate of multi-line lidar information of the unmanned vehicle. The original recorded point cloud data is downsampled in grids, and the KD-Tree is used to complete the nearest neighbor of the position of a certain Monte Carlo particle at the current moment in the descriptor database, improving the real-time performance and operation rate of positioning. It solves the problem that traditional Monte Carlo localization in the prior art uses the information of a single-line lidar for positioning based on a two-dimensional grid map and does not fully utilize the perception information of the multi-line lidar. BRIEF DESCRIPTION OF THE DRAWINGS

[0046] In order to more clearly illustrate the technical solutions in one or more embodiments of this specification or the prior art, the following will briefly introduce the drawings required for the description of the embodiments or the prior art. Obviously, the drawings in the following description are only some embodiments recorded in this specification. For those of ordinary skill in the art, other drawings can be obtained based on these drawings without creative efforts.

[0047] Figure 1 This is the flowchart of the unmanned vehicle positioning method in the embodiment of the present invention;

[0048] Figure 2 This is the specific flowchart of S105 in the embodiment of the present invention;

[0049] Figure 3 This is the specific flowchart of S103 in the embodiment of the present invention;

[0050] Figure 4 This is the schematic diagram of the unmanned vehicle positioning system in the embodiment of the present invention;

[0051] Figure 5 This is the structural schematic diagram of the unmanned vehicle in the embodiment of the present invention;

[0052] Figure 6 This is the schematic diagram of the working environment in the embodiment of the present invention;

[0053] Figure 7 This is the schematic diagram of the decomposition of the movement process in the embodiment of the present invention;

[0054] Figure 8 This is the flowchart of the unmanned vehicle positioning method in the embodiment of the present invention.

[0055] Laser point cloud recording module 10, processing module 20, grid sampling module 30, calculation module 40, odometer 50, multi-line lidar 60, first area 70, second area 80. Detailed implementation manners

[0056] In order to enable those skilled in the art of the present technology to better understand the technical solutions in one or more embodiments of this specification, the following will clearly and completely describe the technical solutions in one or more embodiments of this specification with reference to the accompanying drawings in one or more embodiments of this specification. Obviously, the described embodiments are only a part of the embodiments of this specification, rather than all of the embodiments. Based on one or more embodiments of this specification, all other embodiments obtained by those of ordinary skill in the art without creative efforts shall fall within the protection scope of this unmanned vehicle positioning method.

[0057] As Figure 1 shown, a method for positioning an unmanned vehicle, the method specifically includes:

[0058] S101, recording point cloud data;

[0059] In this step, record the point cloud data of the unmanned vehicle driving through the entire working environment;

[0060] Recording point cloud data means placing the unmanned vehicle in the working environment, opening the laser point cloud recording software, and under the remote control of the operator, the unmanned vehicle drives through the entire working environment. This unmanned vehicle positioning method uses the "rosbag record" command of the Robot Operating System (ROS) to record data.

[0061] The requirements for the driving route of the unmanned vehicle during the data recording stage in this unmanned vehicle positioning method are as follows: the route should cover the entire working environment as much as possible. For areas with narrow lanes (lane width less than parameter w), as shown by the first area 70 in Figure 6, the operator only needs to make the unmanned vehicle drive as much as possible in the middle of the lane. For areas with wide lanes, as Figure 6 shown by the second area 80 in Figure, the operator needs to control the unmanned vehicle to drive back and forth to cover this area at a parallel track interval lower than w.

[0062] All the point clouds obtained by recording data are denoted as One frame of point cloud is expressed as P = {p i}.

[0063] S102. Obtain the original position information of the point cloud data;

[0064] In this step, the point cloud data is input into an algorithm based on the Lego-LOAM algorithm framework to obtain the original position information of the point cloud data;

[0065] This unmanned vehicle positioning method uses the Lego-LOAM algorithm framework to complete the creation of a 3D point cloud map. Lego-LOAM is one of the most popular algorithms in the current lidar SLAM field. LOAM is a lidar SLAM algorithm framework proposed in 2014. It uses the linear features and plane features of the point cloud to complete the point cloud registration of Scan-to-Scan at the front end, and uses LM at the back end to optimize the pose. Lego-LOAM is a new framework derived from the Lego-LOAM algorithm framework. Compared with LOAM, Lego-LOAM mainly realizes lightweight and ground optimization, utilizes the information of the ground plane around the unmanned vehicle, changes the back end to a two-step LM optimization, and in addition, Lego-LOAM also adds a loop detection algorithm, which can reduce the cumulative error to an acceptable range in an environment with loops, facilitating the generation of a globally consistent map.

[0066] This unmanned vehicle positioning method uses the recorded point cloud data as the input of the Lego-LOAM algorithm, and finally outputs a 3D point cloud map in the ".pcd" format and the poses of all the original point clouds relative to the starting point. As a simultaneous localization and mapping algorithm, Lego-LOAM completes both localization and incremental map creation during its execution, so it can finally output both. The purpose of using Lego-LOAM in this unmanned vehicle positioning method is not to use the output 3D point cloud map, but to obtain the original position information of the recorded point cloud data it outputs.

[0067] Denote the set of original position information output by Lego-LOAM as L = {L1, L2,...}, which corresponds one-to-one with the point cloud set P. Among them, L = [L x , L y , L yaw , which are the Cartesian coordinates and heading angles relative to the starting point of data acquisition respectively.

[0068] S103, obtain the descriptor database and KD-Tree;

[0069] In this step, grid sampling is performed on the point cloud data to obtain the descriptor database and KD-Tree;

[0070] During the process of point cloud data acquisition, the lidar usually outputs point cloud frames at a frequency of 10Hz, and the speed of the unmanned vehicle is usually slow, so the point cloud frames are relatively dense; in addition, there is also a requirement to drive back and forth to better cover the working environment with the collected data, and the trajectory may overlap. Therefore, it is necessary to downsample the original point cloud set. Grid sampling is performed on the position set L. Let the side length of the grid be w. For all positions falling within a certain grid, which is a subset of L, select the position closest to the center of the grid.

[0071] After grid sampling, a subset of the position set L is obtained According to the index mapping relationship, a subset of the corresponding point cloud set P is obtained

[0072] The global descriptor is a compression and generalization of the point cloud frame. A good global descriptor can describe the discriminative structural information of the original point cloud with a feature vector of extremely small dimension. Scan Context is a very popular global descriptor for laser point clouds at present. Compared with other global descriptors, the advantages of Scan Context are: it is a non-histogram statistical descriptor, and the descriptor generation efficiency is high; it has rotational invariance, which is convenient for obtaining heading angle information.

[0073] The generation method of the Scan Context descriptor is very simple. Taking the position of the lidar as the center, it is divided into r rings (Ring) in the radial direction (from the center to the maximum sensor sensing distance), and the direction angle is divided into s sectors (Sector). The area where the ring and the sector intersect is called a bin. The height value of the highest point among all the points falling into the bin is used as the feature value of the bin. Arranging the feature values of all bins in adjacent order into a two-dimensional array, the Scan Context descriptor corresponding to this frame of point cloud is obtained.

[0074] For the set of point clouds after sampling For each frame of point cloud P in it, generate its corresponding Scan Context descriptor D, and combine it with the corresponding position L to obtain a binary tuple <D, L> composed of the descriptor and the corresponding position. Finally, obtain a set D containing all binary tuples, which is called the descriptor database.

[0075] For a specified position, it is necessary to find the descriptor closest to this position in the descriptor database. If linear search is used, this process is very time-consuming. To speed up the search, a KD-Tree corresponding to all position sets L is established, denoted as T.

[0076] Save the descriptor database and the KD-Tree to the disk, and the deployment process finally ends.

[0077] S104, obtain particles;

[0078] In this step, particles are obtained through the Monte Carlo localization algorithm that combines the odometry sampling motion model with the Scan Context;

[0079] S105, obtain the relative pose;

[0080] In this step, find the binary tuple closest to each particle through the KD-Tree from the descriptor database, calculate the similarity between the Scan Context descriptor generated by the current lidar scan and the descriptor in the binary tuple, and obtain the relative pose of the unmanned vehicle relative to the origin of the global map.

[0081] Monte Carlo localization is the application of particle filtering in the localization of unmanned vehicles. Particle filtering is a non-parametric implementation of Bayesian filtering. Its main idea is to represent the distribution of the state with a series of random state samplings. The non-parametric characteristics of particle filtering enable it to represent a wider space than the Gaussian distribution and have better ability for non-linear transformation.

[0082] Monte Carlo localization uses M particles to represent the possible poses of the unmanned vehicle in the map. At the same time, each of these M particles has a weight, which is used to represent the credibility of the pose of the unmanned vehicle corresponding to this particle. As the unmanned vehicle moves, the poses and weights of these particles are continuously iteratively updated. After a period of time, these particles will converge around the real position of the unmanned vehicle. At this time, the mean value of these particles is a relatively reliable estimated value of the pose of the unmanned vehicle.

[0083] As Figure 2 shown, the specific steps are as follows:

[0084] S1051, generate M particles;

[0085] In this step, initialize the particle swarm and generate M particles to represent the initial pose of the unmanned vehicle;

[0086] S1052, obtain the predicted particles;

[0087] In this step, after the unmanned vehicle moves for a unit time, successively bring the M particles into the state transition equation to obtain the predicted particles;

[0088] S1053, bring the M particles into the observation model;

[0089] In this step, successively bring the M particles into the observation model, calculate the probability of generating the observation under the pose of each particle, and use the probability as the weight of the particle;

[0090] S1054, randomly select M new particles according to the weight size;

[0091] In this step, randomly select M new particles from the M particles according to the weight size;

[0092] S1055, repeat steps S1052 - S1054.

[0093] In this step, repeat steps S1052 - S1054.

[0094] Motion model:

[0095] The Monte Carlo localization algorithm combined with Scan Context proposed by this unmanned vehicle localization method adopts the odometer 50 sampling motion model. The unmanned vehicle has installed the odometer 50 module. The odometer 50 has its own coordinate system, and the positioning program module can conveniently read the coordinates of the unmanned vehicle in the odometer coordinate system at any time. The odometer 50 is usually implemented by wheel encoders. Due to drift and slip, there is no fixed coordinate transformation between the odometer coordinate system and the world coordinate system. Therefore, this motion model uses relative motion information as control:

[0096] Represents the pose of the driverless vehicle in the odometer coordinate system;

[0097] As Figure 7 shown, to simplify the motion process, the process from to is decomposed into three steps to obtain three parameters:

[0098] Initial rotation δ rot1 ;

[0099] Translation δ trans ;

[0100] Second rotation δ rot2 ;

[0101] And assume that the errors of these three parameters all follow a normal distribution with a mean of 0 and different variances:

[0102]

[0103] Among them, α1α1α3 are the inherent parameters of the driverless vehicle chassis and need to be obtained by statistical means.

[0104] Next, taking the prediction process of a particle as an example, briefly describe the usage method of this motion model:

[0105] Assume that the pose of the particle before prediction is x t =(x y θ) T .

[0106] First, the positioning program module stores the pose of the driverless vehicle in the odometer coordinate system at time t-1 After moving for a unit time, that is, at time t, the positioning program module reads the pose of the driverless vehicle in the odometer coordinate system at this moment again Using simple geometric operations, the values of the three parameters of the precise motion can be calculated:

[0107]

[0108] Then, for this particle, add Gaussian errors with random sampling to these three parameter values:

[0109]

[0110] Among them, sample(σ 2 ) is a function used to sample from a normal distribution with a mean of 0 and a variance of σ 2 .

[0111] Finally, using simple geometric operations, the pose of the particle after prediction can be calculated:

[0112]

[0113] Observation model:

[0114] The proposed Monte Carlo localization algorithm combined with Scan Context adopts the Scan Context matching observation model. The basic idea of the Scan Context matching model is as follows: taking the pose of the particle as the assumed pose of the unmanned vehicle, converting the current lidar scan frame into a Scan Context descriptor, calculating the distance between it and the descriptor in the descriptor database that is closest to the current position, and then using a probability model to convert the distance into a probability, which is the probability that the current lidar observation holds under the pose corresponding to the particle.

[0115] Denote the Scan Context descriptor generated by the current multi-line lidar 60 scan of the unmanned vehicle as D cur . Assume the pose of the particle is x t =(x y θ) T , use the KD-Tree nearest neighbor search algorithm to find the nearest binary tuple <D, L> from T, and denote this nearest distance as d. Then, use the Scan Context descriptor similarity calculation module 40 to calculate the similarity s between D cur and D. The Scan Context descriptor similarity is usually calculated using the cosine distance.

[0116] Finally, the similarity needs to be converted into a probability. Use a normal distribution (standard deviation is σ hit ), a point cloud distribution, and a uniform distribution to mix-model the lidar measurement error, and the mixing weights are z hit , z rand , z max . To compensate for the reduction in descriptor similarity caused by the distance between the particle and L, design the probability value to be inversely proportional to the distance d, where ε is a parameter. The conversion to probability is:

[0117]

[0118] where Normal(x, σ) is used to calculate the probability of x in the normal distribution with a mean of 0 and a variance of σ 2 .

[0119] Pseudo-code of the localization algorithm:

[0120] Based on the above description, the pseudo-code of the Monte Carlo localization algorithm combined with Scan Context can be obtained:

[0121]

[0122]

[0123] Aiming at the problem that traditional Monte Carlo localization uses the information of a single-line lidar for localization based on a two-dimensional grid map and fails to fully utilize the sensing information of a multi-line lidar, this unmanned vehicle localization method provides an unmanned vehicle localization method that combines a ScanContext global descriptor with Monte Carlo localization. This method makes full use of the sensing information of the multi-line lidar and has higher robustness compared with traditional Monte Carlo localization.

[0124] The overall framework of Monte Carlo localization combined with the Scan Context descriptor has a deployment process including three steps: recording environmental point cloud data, simultaneous localization and mapping creation, and generating a descriptor database. Monte Carlo localization based on Scan Context mainly consists of a motion model and an observation model.

[0125] The unmanned vehicle localization algorithm proposed by this unmanned vehicle localization method requires the unmanned vehicle to adopt a two-wheel differential wheeled chassis or a crawler chassis and be equipped with accurate left and right wheel encoder odometers 50. The motion model of Monte Carlo localization takes the relative odometry information of the odometer 50 as input, and poor odometer 50 feedback will directly affect the localization effect. In terms of environmental perception sensors, this unmanned vehicle localization method requires the unmanned vehicle to be equipped with a multi-line lidar 60, which is installed on the top of the unmanned vehicle and has an unobstructed 360° viewing angle range. A schematic diagram of an unmanned vehicle that meets the above requirements is as Figure 5 shown.

[0126] Based on the above technical solutions, the present invention can also be improved as follows:

[0127] As Figure 3 shown, the specific steps of S103 include:

[0128] S1031, obtaining a subset of the position set and a subset of the point cloud set;

[0129] In this step, a subset of the position set L is obtained through grid sampling and a corresponding subset of the point cloud set P is obtained according to the index mapping relationship

[0130] S1032, obtaining a descriptor database;

[0131] In this step, for each frame of point cloud P in the subset its corresponding Scan Context descriptor D is generated, and the descriptor D is combined with the corresponding position L to obtain a binary group <D, L> composed of the descriptor and the corresponding position. The descriptor database is obtained according to the binary group;

[0132] S1033, build a KD-Tree;

[0133] In this step, build a KD-Tree corresponding to the position set L for all position sets L;

[0134] S1034, store the descriptor database and the KD-Tree on disk;

[0135] In this step, store the descriptor database and the KD-Tree on disk.

[0136] As Figure 8 shown, further, the method further includes:

[0137] S106, package the unmanned vehicle positioning method into a node in ROS.

[0138] In this step, package the Scan Context global descriptor and the Monte Carlo localization algorithm into a node in ROS. The ROS node subscribes to the point cloud data topic of the lidar driver node and subscribes to the odometry data topic of the odometry driver node.

[0139] As Figure 4 shown, an unmanned vehicle positioning system includes:

[0140] A laser point cloud recording module 10, which is used to record the point cloud data of the unmanned vehicle driving through the entire working environment;

[0141] A processing module 20, which is connected to the laser point cloud recording module 10 and is used to input the point cloud data into an algorithm based on the Lego-LOAM algorithm framework to obtain the original position information of the point cloud data;

[0142] A grid sampling module 30, which is connected to the processing module 20 and is used to perform grid sampling on the point cloud data to obtain a descriptor database and a KD-Tree;

[0143] A calculation module 40, which is connected to the processing module 20 and the grid sampling module 30, and is used to find the binary group closest to each particle from the descriptor database, calculate the similarity between the Scan Context descriptor generated by the current lidar scan and the descriptor in the binary group, and obtain the relative pose of the unmanned vehicle relative to the origin of the global map.

[0144] Further, the grid sampling module 30 is further used for:

[0145] Obtain a subset of the position set L through grid sampling Obtain a corresponding subset of the point cloud set P according to the index mapping relationship

[0146] For each frame of point cloud P in the subset generate its corresponding Scan Context descriptor D, combine the descriptor D with the corresponding position L to obtain a binary tuple <D, L> composed of the descriptor and the corresponding position, and obtain the descriptor database according to the binary tuple;

[0147] Build a KD-Tree corresponding to the position set L for all position sets L;

[0148] Store the descriptor database and the KD-Tree on the disk.

[0149] Furthermore, the calculation module 40 is further configured to:

[0150] Initialize the particle swarm and generate M particles to represent the initial pose of the driverless vehicle;

[0151] Successively bring the M particles into the state transition equation to obtain the predicted particles;

[0152] Successively bring the M particles into the observation model, obtain the probability that an observation can be generated under the pose of each particle, and use the probability as the weight of the particle;

[0153] Randomly extract M new particles from the M particles according to the weight size.

[0154] Furthermore, the driverless vehicle positioning system further includes:

[0155] An encapsulation module, which is used to encapsulate the Scan Context global descriptor and the Monte Carlo positioning algorithm into a node in ROS, and the ROS node subscribes to the point cloud data topic of the lidar driver node and subscribes to the odometer data topic of the odometer driver node.

[0156] A driverless vehicle positioning device includes: a memory, a processor, and a computer program stored on the memory and executable on the processor. When the computer program is executed by the processor, the steps of the driverless vehicle positioning method are implemented.

[0157] An electronic device, characterized in that an information transmission implementation program is stored on the electronic device, and when the program is executed by a processor, the steps of the driverless vehicle positioning method are implemented.

[0158] The process of using the driverless vehicle dynamic obstacle removal system is as follows:

[0159] In use, view overlapping points are obtained through a frustum culling filter; a bidirectional search is performed on the point cloud views of the overlapping part according to the view overlapping points through a kd-tree; a false trajectory of the dynamic object's movement is determined; and the false trajectory and the dynamic obstacle generating the false trajectory are removed.

[0160] It should be noted that the embodiments of the storage medium in this specification and the embodiments of the blockchain-based service providing method in this specification are based on the same inventive concept. Therefore, the specific implementation of this embodiment can refer to the corresponding blockchain-based service providing method described above, and the repeated parts will not be elaborated.

[0161] The specific embodiments of this specification have been described above. Other embodiments are within the scope of the appended claims. In some cases, the actions or steps recited in the claims can be performed in a different order than in the embodiments and still achieve the desired results. Additionally, the processes depicted in the drawings do not necessarily require the specific order or continuous order shown to achieve the desired results. In certain embodiments, multitasking and parallel processing are also possible or may be advantageous.

[0162] In the 1930s, it was obvious to distinguish whether an improvement in a technology was a hardware improvement (e.g., improvement in circuit structures such as diodes, transistors, switches, etc.) or a software improvement (improvement in method flows). However, with the development of technology, many improvements in method flows today can be regarded as direct improvements in hardware circuit structures. Almost all designers obtain the corresponding hardware circuit structures by programming the improved method flows into the hardware circuits. Therefore, it cannot be said that an improvement in a method flow cannot be implemented with a hardware entity module. For example, a Programmable Logic Device (PLD) (e.g., a Field Programmable Gate Array (FPGA)) is such an integrated circuit whose logical function is determined by the user programming the device. Designers can program by themselves to "integrate" a digital system on a piece of PLD, without having to ask a chip manufacturer to design and produce a dedicated integrated circuit chip. Moreover, nowadays, instead of manually fabricating integrated circuit chips, this programming is mostly implemented using "logic compiler" software, which is similar to the software compiler used in program development and writing. The original code before compilation also has to be written in a specific programming language, which is called a Hardware Description Language (HDL), and there is not only one type of HDL, but many types, such as ABEL (Advanced Boolean Expression Language), AHDL (Altera Hardware Description Language), Confluence, CUPL (Cornell University Programming Language), HDCal, JHDL (Java Hardware Description Language), Lava, Lola, MyHDL, PALASM, RHDL (Ruby Hardware Description Language), etc. Currently, the most commonly used are VHDL (Very-High-Speed Integrated Circuit Hardware Description Language) and Verilog. Those skilled in the art should also be aware that by simply performing a little logical programming on the method flow with the above-mentioned several hardware description languages and programming it into the integrated circuit, it is easy to obtain the hardware circuit that implements the logical method flow.

[0163] The controller can be implemented in any suitable manner. For example, the controller can take the form of, for example, a microprocessor 202 or a processor 202 and a computer-readable medium storing computer-readable program code (such as software or firmware) executable by the (micro)processor 202, logic gates, switches, an application specific integrated circuit (ASIC), a programmable logic controller, and an embedded microcontroller. Examples of the controller include, but are not limited to, the following microcontrollers: ARC 625D, Atmel AT91SAM, Microchip PIC18F26K20, and Silicone Labs C8051F320. The memory controller can also be implemented as part of the control logic of the memory. Those skilled in the art also know that, in addition to implementing the controller in the form of pure computer-readable program code, it is entirely possible to logically program the method steps to enable the controller to be implemented in the form of logic gates, switches, application specific integrated circuits, programmable logic controllers, embedded microcontrollers, etc. to achieve the same function. Therefore, such a controller can be considered a hardware component, and the devices included therein for implementing various functions can also be regarded as the structures within the hardware component. Or even, the devices for implementing various functions can be regarded as either software modules for implementing the method or structures within the hardware component.

[0164] The systems, devices, modules, or units illustrated in the above embodiments can be specifically implemented by computer chips or entities, or by products with certain functions. A typical implementation device is a computer. Specifically, the computer can be, for example, a personal computer, a laptop computer, a cellular phone, a camera phone, a smart phone, a personal digital assistant, a media player, a navigation device, an email device, a game console, a tablet computer, a wearable device, or any combination of these devices.

[0165] For the convenience of description, when describing the above devices, they are described separately as various units according to their functions. Of course, when implementing the embodiments of this specification, the functions of each unit can be implemented in the same or multiple software and / or hardware.

[0166] Those skilled in the art should understand that one or more embodiments of this specification can be provided as a method, a system, or a computer program product. Therefore, one or more embodiments of this specification can take the form of a complete hardware embodiment, a complete software embodiment, or an embodiment combining software and hardware aspects. Moreover, this specification can take the form of a computer program product implemented on one or more computer-usable storage media (including but not limited to disk memories, CD-ROMs, optical memories, etc.) containing computer-usable program code.

[0167] This specification is described with reference to the flowcharts and / or block diagrams of methods, apparatuses (systems), and computer program products according to embodiments of the specification. It should be understood that each flow and / or block in the flowchart and / or block diagram, and the combination of flows and / or blocks in the flowchart and / or block diagram, can be implemented by computer program instructions. These computer program instructions can be provided to the processor 202 of a general-purpose computer, a special-purpose computer, an embedded processor, or other programmable data processing device to generate a machine, such that the instructions executed by the processor 202 of the computer or other programmable data processing device produce means for implementing the functions specified in the Figure 1 one or more flows and / or blocks Figure 1 one or more blocks.

[0168] These computer program instructions can also be stored in a computer-readable memory that can direct a computer or other programmable data processing device to work in a specific manner, such that the instructions stored in the computer-readable memory produce a manufacture including instruction means that implement the functions specified in the Figure 1 one or more flows and / or blocks Figure 1 one or more blocks.

[0169] These computer program instructions can also be loaded onto a computer or other programmable data processing device, such that a series of operational steps are executed on the computer or other programmable device to generate a computer-implemented process, and thus the instructions executed on the computer or other programmable device provide steps for implementing the functions specified in the Figure 1 one or more flows and / or blocks Figure 1 one or more blocks.

[0170] In a typical configuration, a computing device includes one or more processors 202 (CPUs), an input / output interface, a network interface, and a memory.

[0171] The memory may include non-permanent memory in the form of computer-readable media, random access memory (RAM), and / or non-volatile memory such as read-only memory (ROM) or flash RAM. The memory is an example of computer-readable media.

[0172] A computer-readable medium includes permanent and non-permanent, removable and non-removable media and can implement information storage by any method or technology. The information can be computer-readable instructions, data structures, program modules, or other data. Examples of computer storage media include, but are not limited to, phase change memory (PRAM), static random access memory (SRAM), dynamic random access memory (DRAM), other types of random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technologies, compact disc read-only memory (CD-ROM), digital versatile disc (DVD) or other optical storage, magnetic cassette tapes, magnetic tape magnetic disk storage or other magnetic storage devices, or any other non-transitory medium that can be used to store information accessible by a computing device. As defined in the positioning method for the driverless vehicle, a computer-readable medium does not include transitory computer-readable media, such as modulated data signals and carrier waves.

[0173] It should also be noted that the term "comprising", "including" or any other variation thereof is intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but also other elements not expressly listed, or elements inherent to such process, method, article, or apparatus. Without further limitation, an element defined by the statement "comprising an..." does not exclude the presence of additional identical elements in the process, method, article, or apparatus that comprises the element.

[0174] One or more embodiments of this specification can be described in the general context of computer-executable instructions executed by a computer, such as program modules. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform specific tasks or implement specific abstract data types. One or more embodiments of this specification can also be practiced in a distributed computing environment where tasks are performed by remote processing devices connected through a communication network. In a distributed computing environment, program modules can be located in local and remote computer storage media including storage devices.

[0175] Each embodiment in this specification is described in a progressive manner. For the same or similar parts among the embodiments, reference can be made to each other. Each embodiment focuses on the differences from other embodiments. In particular, for system embodiments, since they are basically similar to method embodiments, the description is relatively simple, and reference can be made to the corresponding parts of the method embodiments for related content.

[0176] The above are only examples of the method for positioning the driverless vehicle, and are not intended to limit the method for positioning the driverless vehicle. For those skilled in the art, various modifications and variations can be made to the method for positioning the driverless vehicle. Any modifications, equivalent replacements, improvements, etc. made within the spirit and principle of the method for positioning the driverless vehicle shall be included within the scope of the claims of the method for positioning the driverless vehicle.

Claims

1. A method for positioning an unmanned vehicle, characterized in that, The method specifically includes: S101. Obtain the point cloud data of the unmanned vehicle driving through the entire working environment during recording; S102. Based on the point cloud data, obtain the original position information of the point cloud data through an algorithm based on the Lego-LOAM algorithm framework; S103. Perform grid sampling on the point cloud data to obtain a descriptor database and a KD-Tree (a tree data structure in k-dimensional space); S103 specifically includes: S1031, obtaining a subset of the original position information set L through grid sampling obtaining a corresponding subset of the point cloud set P according to the index mapping relationship S1032, for a subset generate the corresponding Scan Context descriptor D for each frame of point cloud P therein, combine the descriptor D with the corresponding position L to obtain a binary tuple <D, L> composed of the descriptor and the corresponding position, and obtain the descriptor database according to the binary tuple; S1033. Establish a KD-Tree corresponding to the set L of all original position information for the set L of original position information; S1034. Store the descriptor database and the KD-Tree on the disk; S104. Obtain particles through an odometer sampling motion model by combining the Monte Carlo localization algorithm of Scan Context; S105. Find the binary group closest to each particle from the descriptor database through the KD-Tree, calculate the similarity between the Scan Context descriptor generated by the current lidar scan and the descriptor in the binary group, and obtain the relative pose of the unmanned vehicle relative to the original position information at present.

2. The method for positioning an unmanned vehicle according to claim 1, wherein The obtaining of the relative pose of the unmanned vehicle relative to the original position information in S105 specifically includes: S1051. Initialize the particle swarm and generate M particles to represent the initial pose of the unmanned vehicle; S1052. After the unmanned vehicle moves for a unit time, successively input the M particles into the state transition equation to obtain the predicted particles; S1053. Input the M particles into the observation model in sequence, obtain the probability that an observation can be generated under the pose of each particle, and use the probability as the weight of the particle; S1054. Randomly extract M new particles from the M particles according to the weight size; S1055. Repeat steps S1052 to S1054.

3. The method for positioning an unmanned vehicle according to claim 1, wherein The method further includes: S106. Package the Scan Context global descriptor and the Monte Carlo localization algorithm into a node in ROS, and subscribe to the point cloud data topic of the lidar driver node and the odometer data topic of the odometer driver node through the ROS node.

4. An unmanned vehicle positioning system, characterized in that, It includes: A laser point cloud recording module, which is used to record the point cloud data of the unmanned vehicle driving through the entire working environment; A processing module, which is connected to the laser point cloud recording module and is used to input the point cloud data into an algorithm based on the Lego-LOAM algorithm framework to obtain the original position information of the point cloud data; A grid sampling module, which is connected to the processing module and is used to perform grid sampling on the point cloud data to obtain a descriptor database and a KD-Tree; The grid sampling module is further used for: Obtain a subset of the original position information set L through grid sampling Obtain the corresponding subset of the point cloud set P according to the index mapping relationship For a subset Generate the corresponding Scan Context descriptor D for each frame of point cloud P, combine the descriptor D with the corresponding position L to obtain a binary tuple <D, L> composed of the descriptor and the corresponding position, and obtain the descriptor database according to the binary tuple; Establishing a KD-Tree corresponding to the set L of all original position information for the set L of original position information; Storing the descriptor database and the KD-Tree on the disk; A calculation module, which is connected to the processing module and the grid sampling module, is configured to find, through a KD-Tree in a descriptor database, the binary tuple closest to each particle, calculate the similarity between the Scan Context descriptor generated by the current lidar scan and the descriptor in the binary tuple, and obtain the relative pose of the current autonomous vehicle with respect to the original position information.

5. The unmanned vehicle positioning system according to claim 4, characterized in that, The calculation module is further configured to: Initialize a particle swarm and generate M particles to represent the initial pose of the autonomous vehicle; Successively input the M particles into the state transition equation to obtain the predicted particles; Successively input the M particles into the observation model, obtain the probability of generating an observation for each particle pose, and use the probability as the weight of the particle; Randomly extract M new particles from the M particles according to the weight size.

6. The unmanned vehicle positioning system according to claim 5, characterized in that, The autonomous vehicle positioning system further includes: An encapsulation module, which is configured to encapsulate the Scan Context global descriptor and the Monte Carlo localization algorithm into a node in ROS. The ROS node subscribes to the point cloud data topic of the lidar driver node and subscribes to the odometer data topic of the odometer driver node.

7. An unmanned vehicle positioning device, characterized in that, including: A memory, a processor, and a computer program stored on the memory and executable on the processor. When the computer program is executed by the processor, the steps of the autonomous vehicle positioning method according to any one of claims 1 to 3 are implemented.

8. An electronic device, characterized in that, An information transmission implementation program is stored on the electronic device. When the program is executed by the processor, the steps of the autonomous vehicle positioning method according to any one of claims 1 to 3 are implemented.

Citation Information

Patent Citations

  • Method And Device For Real-Time Mapping And Localization

    CN107709928A

  • Global fusion positioning method based on self-adaptive Monte Carlo and feature matching

    CN109682382A