Mobile positioning method and device based on combination of monocular vision and odometry
By combining a monocular camera and an odometry system, and utilizing template matching and SURF feature point matching algorithms, along with Kalman filtering, the error problem of odometry and visual odometry in indoor positioning was solved, thus improving positioning accuracy.
Patent Information
- Application Number
- CN202210984973.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2022-06-13
- Filing Date
- 2022-08-17
- Publication Date
- 2026-01-06
- Estimated Expiration
- 2042-08-17
AI Technical Summary
In existing technologies, odometry and visual odometry suffer from inaccurate positioning when used indoors, especially due to insufficient matching of visual feature points caused by roller slippage and difficulties in constructing 3D depth maps.
A method combining a monocular camera and odometry is adopted. Pose transformation data is obtained through template matching and SURF feature point matching algorithms. Visual pose evaluation data is fused using Kalman filtering and combined with odometry data. The pose data is adjusted by weighting coefficients to reduce errors.
By fusing visual and odometry data using Kalman filtering, pose calculation errors are reduced, and the accuracy of indoor mobile positioning is improved.
Smart Images

Figure CN115330879B_ABST
Abstract
Description
Technical Field
[0001] This invention relates to mobile positioning, and more particularly to mobile positioning of robots or unmanned vehicles. Background Technology
[0002] Mobile positioning technology is the core of autonomous navigation systems for robots or unmanned vehicles. Outdoors, mobile positioning can be based on satellite navigation systems. However, indoors, satellite signals are blocked by buildings, rendering satellite navigation systems inoperable. Therefore, odometry is widely used for mobile positioning in robots or unmanned vehicles. Odometry obtains pose transformation data by measuring moving devices such as rollers or tracks, and then calculates the current location. However, due to the problem of slippage on rollers or tracks, the pose transformation data obtained by odometry is inaccurate if slippage occurs, leading to inaccurate positioning.
[0003] In recent years, with the continuous development of computer vision technology, visual positioning technology has become a research hotspot in mobile robotics. There are many existing technologies for visual positioning. Visual odometry is a branch of visual positioning technology. Currently, visual odometry typically involves a camera capturing images in three-dimensional space, then constructing a three-dimensional light field and depth map, and matching the positions of feature points in the three-dimensional space to calculate pose changes. However, in indoor environments, there may be a problem in constructing a three-dimensional deep space field. For example, when the camera is facing a wall, the image captured by the camera is only a part of the wall; in this case, a depth map cannot be constructed, and there are few matching feature points. Summary of the Invention
[0004] The problem this invention aims to solve is the positioning defects of existing odometers and visual odometers.
[0005] To solve the above problems, the present invention adopts the following solution:
[0006] The mobile positioning method based on a combination of monocular vision and odometry according to the present invention includes the following steps:
[0007] Step S1 is used to: continuously receive ground texture images captured by a monocular camera and pose transformation data measured by an odometer, and obtain the pose data and the estimated covariance of the previous moment.
[0008] Step S2 is used to: obtain first pose transformation data by matching the ground texture images captured by the continuously received monocular camera using a template matching algorithm, and then combine the pose data of the previous moment to obtain the current first pose evaluation data, and calculate the template image entropy value; obtain second pose transformation data by matching the ground texture images captured by the continuously received monocular camera using a SURF feature point matching algorithm, and then combine the pose data of the previous moment to obtain the current second pose evaluation data.
[0009] The entropy value of the template image is calculated using the following formula: h = -∑p(i)log(p(i)); where p(i) = n(i) / NT; where n(i) represents the number of pixels with gray value i in the template image, NT is the total number of pixels in the template image, h is the entropy value of the template image, and log is the logarithmic function;
[0010] Step S3 is used to: fuse the current first pose evaluation data and the current second pose evaluation data to obtain the current visual pose evaluation data, and calculate the estimated covariance at the current time; the visual pose evaluation data is fused using the following formula:
[0011] xv(k)=x1(k)+K(k) (x2(k)-x1(k));
[0012] The covariance at the current time is estimated using the following formula:
[0013] Pp(k) = (I - K(k))Pr(k);
[0014] in,
[0015] K(k) = Pr(k) / (Pr(k) + R);
[0016] Pr(k) = Pp(k-1) + Q;
[0017] Where k represents the current time and k-1 represents the previous time;
[0018] xv(k) represents the visual pose evaluation data at the current moment;
[0019] x1(k) and x2(k) are the first pose evaluation data and the second pose evaluation data at the current moment;
[0020] Pp(k-1) is the estimated covariance of the previous time step;
[0021] R and Q are pre-defined matrices;
[0022] I is the identity matrix;
[0023] Step S4 is used to: calculate the difference between the current visual pose evaluation data and the pose transformation data measured by the odometry.
[0024] D(k)=ml(dxv(k)-dxm(k))-ml(dxv(k)+dxm(k))*o_threshold;
[0025] Where dxv(k) is the visual pose transformation evaluation data at the current moment, dxv(k) = xv(k) - x(k-1);
[0026] xv(k) represents the visual pose evaluation data at the current moment; x(k-1) represents the pose data at the previous moment.
[0027] dxm(k) represents the pose transformation data measured by the odometry at the current moment;
[0028] o_threshold is a preset threshold;
[0029] ml is the vector modulo operation;
[0030] D(k) represents the difference between the current visual pose assessment data and the pose transformation data measured by the odometry.
[0031] Step S5 is used to: calculate the current pose data: x(k) = x(k-1) + dx(k);
[0032] Where dx(k) is the current pose transformation data, dx(k) = dxv(k)*a(D(k),h) + dxm(k)*(1-a(D(k),h));
[0033] dxv(k) is the visual pose transformation evaluation data at the current moment, dxv(k) = xv(k) - x(k-1);
[0034] xv(k) represents the visual pose evaluation data at the current moment;
[0035] x(k-1) represents the pose data of the previous time step;
[0036] x1(k) and x2(k) are the first pose evaluation data and the second pose evaluation data at the current moment;
[0037] dxm(k) represents the pose transformation data measured by the odometry at the current moment;
[0038] a(D(k),h) is a fusion scaling factor determined based on the difference D(k) between the current visual pose assessment data and the pose transformation data measured by odometry and the template image entropy value h, where a(D(k),h)∈[0,1].
[0039] Furthermore, in the mobile positioning method based on monocular vision and odometry combination according to the present invention, the fusion ratio coefficient a(D(k),h) is determined as follows: if D(k) is less than or equal to 0, then a(D(k),h) takes the value 0.5; otherwise, a(D(k),h) is an increasing function of h.
[0040] According to the present invention, a mobile positioning device based on a combination of monocular vision and odometry includes the following modules:
[0041] Module M1 is used to: continuously receive ground texture images captured by a monocular camera and pose transformation data measured by an odometer, and acquire the pose data and estimated covariance of the previous moment.
[0042] Module M2 is used to: obtain first pose transformation data by performing template matching algorithm on ground texture images captured by a continuously received monocular camera, and then combine it with the pose data of the previous moment to obtain the current first pose evaluation data, and calculate the template image entropy value; obtain second pose transformation data by performing SURF feature point matching algorithm on ground texture images captured by a continuously received monocular camera, and then combine it with the pose data of the previous moment to obtain the current second pose evaluation data;
[0043] The entropy value of the template image is calculated using the following formula: h = -∑p(i)log(p(i)); where p(i) = n(i) / NT; where n(i) represents the number of pixels with gray value i in the template image, NT is the total number of pixels in the template image, h is the entropy value of the template image, and log is the logarithmic function;
[0044] Module M3 is used to: fuse the current first pose evaluation data and the current second pose evaluation data to obtain the current visual pose evaluation data, and calculate the estimated covariance at the current time; the visual pose evaluation data is fused using the following formula:
[0045] xv(k)=x1(k)+K(k) (x2(k)-x1(k));
[0046] The covariance at the current time is estimated using the following formula:
[0047] Pp(k) = (I - K(k))Pr(k);
[0048] in,
[0049] K(k) = Pr(k) / (Pr(k) + R);
[0050] Pr(k) = Pp(k-1) + Q;
[0051] Where k represents the current time and k-1 represents the previous time;
[0052] xv(k) represents the visual pose evaluation data at the current moment;
[0053] x1(k) and x2(k) are the first pose evaluation data and the second pose evaluation data at the current moment;
[0054] Pp(k-1) is the estimated covariance of the previous time step;
[0055] R and Q are pre-defined matrices;
[0056] I is the identity matrix;
[0057] Module M4 is used to: calculate the difference between the current visual pose assessment data and the pose transformation data measured by the odometry.
[0058] D(k)=ml(dxv(k)-dxm(k))-ml(dxv(k)+dxm(k))*o_threshold;
[0059] Where dxv(k) is the visual pose transformation evaluation data at the current moment, dxv(k) = xv(k) - x(k-1);
[0060] xv(k) represents the visual pose evaluation data at the current moment; x(k-1) represents the pose data at the previous moment.
[0061] dxm(k) represents the pose transformation data measured by the odometry at the current moment;
[0062] o_threshold is a preset threshold;
[0063] ml is the vector modulo operation;
[0064] D(k) represents the difference between the current visual pose assessment data and the pose transformation data measured by the odometry.
[0065] Module M5 is used to calculate the current pose data: x(k) = x(k-1) + dx(k);
[0066] Where dx(k) is the current pose transformation data, dx(k) = dxv(k)*a(D(k),h) + dxm(k)*(1-a(D(k),h));
[0067] dxv(k) is the visual pose transformation evaluation data at the current moment, dxv(k) = xv(k) - x(k-1);
[0068] xv(k) represents the visual pose evaluation data at the current moment;
[0069] x(k-1) represents the pose data of the previous time step;
[0070] x1(k) and x2(k) are the first pose evaluation data and the second pose evaluation data at the current moment;
[0071] dxm(k) represents the pose transformation data measured by the odometry at the current moment;
[0072] a(D(k),h) is a fusion scaling factor determined based on the difference D(k) between the current visual pose assessment data and the pose transformation data measured by odometry and the template image entropy value h, where a(D(k),h)∈[0,1].
[0073] Furthermore, in the mobile positioning device based on the combination of monocular vision and odometry according to the present invention, the fusion ratio coefficient a(D(k),h) is determined as follows: if D(k) is less than or equal to 0, then a(D(k),h) takes the value 0.5; otherwise, a(D(k),h) is an increasing function of h.
[0074] The technical effects of this invention are as follows:
[0075] 1. This invention employs two visual pose calculation methods, which are fused by Kalman filtering to form visual pose data, thereby compensating for the deficiencies of single visual pose calculation and reducing the error in visual pose calculation.
[0076] 2. Visual pose calculation and odometry are fused using weighted coefficients. During fusion, the weighted coefficients are adjusted based on which pose transformation data is better, thereby reducing the error of the overall pose data. Attached Figure Description
[0077] Figure 1 These are data flow diagrams and flowcharts of embodiments of the present invention.
[0078] Figure 2 This is a structural schematic diagram of the robot vehicle according to an embodiment of the present invention. Detailed Implementation
[0079] The present invention will now be described in further detail with reference to the accompanying drawings.
[0080] Figure 2An example of a robotic vehicle is provided. The robotic vehicle has a circuit board 100 inside, wheels 200 at the bottom, and a monocular camera 301 facing the ground at the front. A processor 101 is mounted on the circuit board 100, and an odometer 201 is connected to the wheels 200. The odometer 201 and the monocular camera 301 are connected to the processor 101. In this embodiment, the robotic vehicle moves on the ground by driving the wheels 200 to roll. Corresponding to the wheels 200, the odometer 201 is a wheeled odometer. Those skilled in the art will understand that if the robotic vehicle uses other mobility devices, the corresponding odometer 201 may be different. The motion positioning method based on a combination of monocular vision and odometer in this embodiment is implemented by the processor 101 executing a set of computer program instructions stored in the memory located on the circuit board 100. Specifically, the processor 101 continuously acquires ground texture images captured by the monocular camera 301 and pose transformation data measured by the odometer 201, and then, after analysis by the program executed by the processor 101, finally calculates the current pose of the robotic vehicle. Of course, the calculated pose is not the actual pose, but an estimated one, and therefore contains errors.
[0081] Reference Figure 1 The method for achieving mobile positioning by the processor 101 through executing a program includes the following steps: data receiving step, image analysis step, Kalman filtering step, difference evaluation step, and visual and odometry pose fusion step.
[0082] The data receiving step, also known as step S1, involves continuously receiving ground texture images captured by the monocular camera and pose transformation data measured by the odometry, and acquiring the pose data and estimated covariance from the previous moment. The ground texture image is typically a color ground image. Specifically... Figure 1In the example, the monocular camera is monocular camera 301, and the odometer is odometer 201. The pose transformation data here refers to the change in pose data between two moments. Specifically, the pose transformation data measured by the odometer is the change in pose data between the current moment and the previous moment. Clearly, based on the pose transformation data measured by the odometer and the pose data between the previous moment, the pose data measured by the odometer can be calculated as: xm(k) = x(k-1) + dxm(k). Here, k represents the current moment, k-1 represents the previous moment, xm(k) and dxm(k) represent the pose data and pose transformation data measured by the odometer at the current moment, respectively, and x(k-1) represents the pose data at the previous moment. The pose data and the estimated covariance at the previous moment are stored in memory. The mobile positioning method of this invention is a continuously looping process. The data receiving step, image analysis step, Kalman filtering step, difference assessment step, and visual and odometry pose fusion step constitute the loop body. In each iteration of the loop body, the pose data and estimated covariance at the current moment are saved. In the next iteration, these saved pose data and estimated covariance become the pose data and estimated covariance from the previous moment. Saving the pose data and estimated covariance is necessary because this data is referenced by the steps within the loop body.
[0083] Furthermore, pose data is a vector, which can be represented as (px, py, pa). Here, px, py, and pa represent the horizontal and vertical coordinates and the orientation angle, respectively. Clearly, pose transformation data, which represents the changes in pose data, is also a vector.
[0084] The image analysis step, also known as step S2, involves using a template matching algorithm to match the ground texture images captured by the continuously received monocular camera to obtain the first pose transformation data. This data is then combined with the pose data from the previous moment to obtain the current first pose evaluation data, and the template image entropy value is calculated. Similarly, the image analysis step involves using a SURF feature point matching algorithm to match the ground texture images captured by the continuously received monocular camera to obtain the second pose transformation data. This data is then combined with the pose data from the previous moment to obtain the current second pose evaluation data. Specifically, the image analysis step can be broken down into: Figure 1The three steps are illustrated: template matching, SURF feature point matching, and template image entropy calculation. The template matching step involves using a template matching algorithm to match ground texture images captured by a continuously receiving monocular camera to obtain the first pose transformation data, which is then combined with the pose data from the previous moment to obtain the current first pose evaluation data. The SURF feature point matching step involves using a SURF feature point matching algorithm to match ground texture images captured by a continuously receiving monocular camera to obtain the second pose transformation data, which is then combined with the pose data from the previous moment to obtain the current second pose evaluation data. Image template matching and SURF feature point matching are familiar to those skilled in the art and will not be described in detail here. The template image entropy calculation step calculates the template image entropy value. This entropy value is the information entropy familiar to those skilled in the art, and the calculation formula is: h = -∑p(i)log(p(i)). Here, p(i) is the probability value, h is the template image entropy value, and log is a logarithmic function or logarithmic operation. The object of information entropy calculation here is the template image. The template image comes from the template matching step. Template matching, literally speaking, simply means finding a region of the same image in two or more consecutive ground texture images. This region of the same image is the template, or template image, and is the object of template image entropy calculation. Since the ground texture images were captured at different times, as the robot moves, the position and angle of this region of the same image differ in different ground texture images. Therefore, the changes in position and angle are calculated. The combination of the changes in position and angle is the pose transformation data. Similarly, SURF feature point matching also first obtains pose transformation data. From this, the first pose evaluation data and the second pose evaluation data can be calculated:
[0085] x1(k) = x(k-1) + dx1(k);
[0086] x2(k) = x(k-1) + dx2(k);
[0087] Where x1(k) and x2(k) represent the first pose evaluation data and the second pose evaluation data at the current time, respectively, x(k-1) represents the pose data at the previous time, and dx1(k) and dx2(k) represent the first pose transformation data and the second pose transformation data at the current time, respectively.
[0088] Furthermore, in this embodiment, the probability value p(i) in the template image entropy calculation is the probability of a pixel with grayscale value i in the template image, which can be expressed as: p(i) = n(i) / NT; where n(i) represents the number of pixels with grayscale value i in the template image, NT is the total number of pixels in the template image, and the grayscale value ranges from 0 to 255, for a total of 256 grayscale values. Obviously, if the probability value p(i) corresponding to all 256 grayscale values is 1 / 256, then the template image entropy value h = -∑p(i)log(p(i)) = -256*1 / 256*log(1 / 256) = log256, which is the largest value; if one probability value p(i) is 1 and the others are 0, then the template image entropy value h = 0, which is the smallest value. Therefore, the range of the template image entropy value h depends on the base of the logarithmic function log. If the logarithmic function log is base 2, then log256 = 8, and the corresponding template image entropy value h ranges from [0, 8]. If the logarithmic function log is base 256, then log256 = 1, and the corresponding template image entropy value h ranges from [0, 1]. Furthermore, a template image entropy value h of 0 indicates that the template image is a monochrome image.
[0089] The Kalman filtering step, also known as step S3, fuses the current first pose evaluation data and the current second pose evaluation data to obtain the current visual pose evaluation data, and calculates the estimated covariance at the current time step. The visual pose evaluation data is fused using the following formula: xv(k) = x1(k) + K(k) (x2(k) - x1(k)). The estimated covariance at the current time step is calculated using the following formula: Pp(k) = (I - K(k))Pr(k). In the above formula, K(k) = Pr(k) / (Pr(k) + R); Pr(k) = Pp(k-1) + Q. The four formulas above are simplified from the Kalman filter update equations: xv(k) = x1(k) + K(k)(x2(k) - H*x1(k)), Pp(k) = (I - K(k)*H)Pr(k), K(k) = Pr(k)*HT / (H*Pr(k)*HT + R), and Pr(k) = A*Pp(k-1)*AT + Q. Here, H is the measurement matrix, HT is the transpose of the measurement matrix H, A is the state transition matrix, and AT is the transpose of the state transition matrix. When both the measurement matrix H and the state transition matrix A in the above Kalman filter update equations are identity matrices, the calculation formulas in the steps of this invention can be obtained.
[0090] In the above formula, I is the identity matrix; xv(k) is the visual pose assessment data at the current time; K(k) is the Kalman gain; Pp(k-1) and Pp(k) are the estimated covariances of the previous and current times, respectively, corresponding to the posterior estimated covariance in Kalman filtering; Pr(k) corresponds to the prior estimated covariance in Kalman filtering; R and Q are pre-defined matrices, corresponding to the measurement noise covariance and process noise covariance in Kalman filtering, respectively.
[0091] This step outputs the current visual pose evaluation data xv(k) and the estimated covariance Pp(k) at the current time. The estimated covariance Pp(k) at the current time, once saved, becomes the estimated covariance Pp(k-1) for the previous time step in the next loop, S1. The prior estimated covariance Pr(k) and Kalman gain K(k) are intermediate data. The measurement noise covariance R and process noise covariance Q are preset based on prior experimental data.
[0092] Furthermore, the fusion formula for the aforementioned visual pose evaluation data can also be expressed as: xv(k) = K(k) * x2(k) + (I - K(k))x1(k). If K(k) and I - K(k) are considered as two weighting coefficients, then the visual pose evaluation data can be seen as a weighted average of the first pose evaluation data and the second pose evaluation data. If K(k) is 0, then xv(k) = x1(k); if K(k) is 1, then xv(k) = x2(k).
[0093] The difference assessment step is the same as step S4 mentioned above, which calculates the difference between the current visual pose assessment data and the pose transformation data measured by the odometry. The difference is calculated using the following formula:
[0094] D(k)=ml(dxv(k)-dxm(k))-ml(dxv(k)+dxm(k))*o_threshold.
[0095] Wherein, dxv(k) is the visual pose transformation data at the current moment, which is calculated from the current visual pose evaluation data xv(k), specifically: dxv(k) = xv(k) - x(k-1); o_threshold is a preset threshold; ml is the vector modulo operation; D(k) represents the difference between the current visual pose evaluation data and the pose transformation data measured by the odometry.
[0096] The visual and odometry pose fusion step is the aforementioned step S5, which calculates the current pose data. The current pose data is calculated using the following formula: x(k) = x(k-1) + dx(k). Where x(k) is the pose data at the current moment; dx(k) is the current pose transformation data, which is obtained by fusing the aforementioned visual pose transformation evaluation data dxv(k) at the current moment and the pose transformation data dxm(k) measured by the odometry at the current moment. The current pose transformation data dx(k) is calculated using the following formula: dx(k) = dxv(k)*a(D(k),h) + dxm(k)*(1-a(D(k),h)). Where a(D(k),h) is the fusion ratio coefficient, which is determined by the difference D(k) between the aforementioned current visual pose evaluation data and the pose transformation data measured by the odometry and the aforementioned template image entropy value h, and its value range is [0,1]. In the above formula for fusing the current pose transformation data dx(k), if a(D(k),h) and (1-a(D(k),h)) are considered as two weighting coefficients, then the above formula for fusing the current pose transformation data dx(k) is essentially a weighted average of the visual pose transformation evaluation data dxv(k) at the current moment and the pose transformation data dxm(k) measured by the odometry at the current moment. If the fusion scaling factor a(D(k),h) is 0, then x(k)=x(k-1)+dxm(k); if the fusion scaling factor a(D(k),h) is 1, then x(k)=x(k-1)+dxv(k)=xv(k);
[0097] In this embodiment, the fusion ratio coefficient a(D(k), h) is determined as follows: If D(k) is less than or equal to 0, then a(D(k), h) takes the value of 0.5; otherwise, a(D(k), h) is an increasing function of h. In the simplest case, if the logarithmic function log in the foregoing formula for the entropy value h of the template image has a base of 256 and the entropy value h of the template image takes values from 0 to 1, at this time, a(D(k), h) can directly be equal to h. Alternatively, a threshold value hc is preset, where 0 < hc < log256; when the entropy value h of the template image is from 0 to hc, a(D(k), h) = h * 0.5 / hc; when the entropy value h of the template image is from hc to log256, a(D(k), h) = (0.5h + 0.5log256 - hc) / (log256 - hc). Here, log256 is the maximum value of the entropy value h of the template image. Under the above formula, if the entropy value h of the template image takes the value of 0, at this time, the template image is a monochromatic pattern, that is, the ground is purely white or other colors. In this state, the visual odometer data is actually invalid, that is, the calculated visual pose transformation evaluation data dxv(k) is invalid data. At this time, the fusion ratio coefficient a(D(k), h) is 0, and the finally obtained pose data is x(k) = x(k - 1) + dxm(k), that is, the pose transformation data dxm(k) measured by the odometer is used as the final pose data. If the entropy value h of the template image takes the maximum value, it indicates that the calculated visual pose transformation evaluation data dxv(k) has a relatively high accuracy, and the pose transformation data dxm(k) measured by the odometer may have a slipping problem. At this time, the finally obtained pose data is x(k) = x(k - 1) + dxv(k) = xv(k).
[0098] In addition, it should also be pointed out that the foregoing device of the present invention corresponds to the method, and the modules in the device correspond to the steps in the method, which will not be elaborated herein.
Claims
1. A mobile positioning method based on a combination of monocular vision and odometry, characterized in that, The method comprises the following steps: Step S1, for: continuously receiving the ground texture image shot by the monocular camera and the pose transformation data measured by the odometer, and obtaining the pose data at the previous time and the estimated covariance at the previous time; Step S2, for: obtaining the first pose transformation data by performing template matching algorithm matching on the continuously received ground texture image shot by the monocular camera, then combining the pose data at the previous time to obtain the current first pose evaluation data, and calculating the template image entropy value; obtaining the second pose transformation data by performing SURF feature point matching algorithm matching on the continuously received ground texture image shot by the monocular camera, then combining the pose data at the previous time to obtain the current second pose evaluation data; The template image entropy value is calculated by the following formula: h = -∑p(i)log(p(i)); wherein, p(i) = n(i) / NT; wherein, n(i) represents the number of pixel points with the gray value of i in the template image, NT is the total number of pixels of the template image, h is the template image entropy value, and log is a logarithmic function; Step S3, for: fusing the current first pose evaluation data and the current second pose evaluation data to obtain the current visual pose evaluation data, and calculating the estimated covariance at the current time; the visual pose evaluation data is fused by the following formula: xv(k) = x1(k) + K(k)(x2(k) - x1(k)); The estimated covariance at the current time is calculated by the following formula: Pp(k) = (I - K(k))Pr(k); Wherein, K(k) = Pr(k) / (Pr(k) + R); Pr(k) = Pp(k-1) + Q; Wherein, k represents the current time, and k-1 represents the previous time; xv(k) is the visual pose evaluation data at the current time; x1(k) and x2(k) are the first pose evaluation data and the second pose evaluation data at the current time; Pp(k-1) is the estimated covariance at the previous time; R and Q are pre-set matrices; I is an identity matrix; Step S4, for: calculating the difference between the current visual pose evaluation data and the pose transformation data measured by the odometer: D(k) = ml(dxv(k) - dxm(k)) - ml(dxv(k) + dxm(k))*o_threshold; Wherein, dxv(k) is the visual pose transformation evaluation data at the current time, dxv(k) = xv(k) - x(k-1); xv(k) is the visual pose evaluation data at the current time; x(k-1) is the pose data at the previous time; dxm(k) is the pose transformation data measured by the odometer at the current time; o_threshold is a pre-set threshold value; ml is a vector modulo operation; D(k) represents the difference between the current visual pose evaluation data and the pose transformation data measured by the odometer; Step S5, for: calculating the current pose data: x(k) = x(k-1) + dx(k); dx(k) = dxv(k) * a(D(k), h) + dxm(k) * (1 - a(D(k), h)); dxv(k) is the visual pose transformation evaluation data at the current moment, dxv(k) = xv(k) - x(k-1); xv(k) is the visual pose evaluation data at the current moment; x(k-1) is the pose data at the last moment; x1(k) and x2(k) are the first pose evaluation data and the second pose evaluation data at the current moment; dxm(k) is the pose transformation data measured by the odometry at the current moment; a(D(k), h) is a fusion proportionality coefficient determined according to the difference D(k) between the current visual pose evaluation data and the pose transformation data measured by the odometry and the template image entropy value h, a(D(k), h) ∈ [0, 1]. 2.The monocular vision and odometer combined based mobile positioning method according to claim 1, characterized in that, The fusion proportionality coefficient a(D(k), h) is determined in the following manner: if D(k) is less than or equal to 0, a(D(k), h) takes the value 0.5, otherwise a(D(k), h) is an increasing function of h.
3. Mobile positioning device based on a combination of monocular vision and odometry, characterized in that, The device comprises the following modules: Module M1, configured to continuously receive the ground texture image captured by the monocular camera and the pose transformation data measured by the odometry, and obtain the pose data at the last moment and the estimated covariance at the last moment; Module M2, configured to obtain the first pose transformation data by performing template matching algorithm matching on the continuously received ground texture image captured by the monocular camera, obtain the current first pose evaluation data by combining the pose data at the last moment, and calculate the template image entropy value; obtain the second pose transformation data by performing SURF feature point matching algorithm matching on the continuously received ground texture image captured by the monocular camera, obtain the current second pose evaluation data by combining the pose data at the last moment, and calculate the template image entropy value; The template image entropy value is calculated by the following formula: h = -∑p(i)log(p(i)); wherein p(i) = n(i) / NT; wherein n(i) represents the number of pixel points with the gray value i in the template image, NT is the total number of pixels of the template image, h is the template image entropy value, and log is a logarithmic function; Module M3, configured to fuse the current first pose evaluation data and the current second pose evaluation data to obtain the visual pose evaluation data at the current moment, and calculate the estimated covariance at the current moment; the visual pose evaluation data is fused by the following formula: xv(k) = x1(k) + K(k) (x2(k) - x1(k)); The estimated covariance at the current moment is calculated by the following formula: Pp(k) = (I - K(k))Pr(k); wherein, K(k) = Pr(k) / (Pr(k) + R); Pr(k) = Pp(k-1) + Q; wherein, k represents the current moment, and k-1 represents the last moment; xv(k) is the visual pose evaluation data at the current moment; x1(k) and x2(k) are the first pose evaluation data and the second pose evaluation data at the current moment; Pp(k-1) is the estimated covariance at the last moment; R and Q are pre-set matrices; I is an identity matrix; Module M4 is configured to calculate a difference between the current visual pose evaluation data and the pose transformation data measured by the odometer: D(k) = ml(dxv(k) - dxm(k)) - ml(dxv(k) + dxm(k)) * o_threshold; wherein dxv(k) is the visual pose transformation evaluation data at the current time, dxv(k) = xv(k) - x(k-1); xv(k) is the visual pose evaluation data at the current time; and x(k-1) is the pose data at the previous time; dxm(k) is the pose transformation data measured by the odometer at the current time; o_threshold is a pre-set threshold value; ml is a vector modulus operation; D(k) represents the difference between the current visual pose evaluation data and the pose transformation data measured by the odometer; Module M5 is configured to calculate the current pose data: x(k) = x(k-1) + dx(k); wherein dx(k) is the current pose transformation data, dx(k) = dxv(k) * a(D(k), h) + dxm(k) * (1 - a(D(k), h)); dxv(k) is the visual pose transformation evaluation data at the current time, dxv(k) = xv(k) - x(k-1); xv(k) is the visual pose evaluation data at the current time; x(k-1) is the pose data at the previous time; x1(k) and x2(k) are the first pose evaluation data and the second pose evaluation data at the current time; dxm(k) is the pose transformation data measured by the odometer at the current time; a(D(k), h) is a fusion proportionality coefficient determined according to the difference D(k) between the current visual pose evaluation data and the pose transformation data measured by the odometer and the template image entropy value h, a(D(k), h) e [0, 1].
4. The mobile positioning device based on a combination of monocular vision and odometry according to claim 3, characterized in that, The fusion proportionality coefficient a(D(k), h) is determined in the following manner: if D(k) is less than or equal to 0, a(D(k), h) takes the value 0.5, otherwise a(D(k), h) is an increasing function of h.