Next Article in Journal
Measuring Students’ Satisfaction on an XAI-Based Mixed Initiative Tutoring System for Database Design
Next Article in Special Issue
A Systematic Review of Wearable Assistive Technologies for Hearing Impairment: Current Landscape, User Experience, and Future Directions
Previous Article in Journal
Unveiling the Scientific Knowledge Evolution: Carbon Capture (2007–2025)
Previous Article in Special Issue
Deployable and Habitable Architectural Robot Customized to Individual Behavioral Habits
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

Fuzzy Fusion of Monocular ORB-SLAM2 and Tachometer Sensor for Car Odometry

by
David Lázaro Mata
,
José Alfredo Padilla Medina
,
Juan José Martínez Nolasco
,
Juan Prado Olivarez
and
Alejandro Israel Barranco Gutiérrez
*
Departamento de Ingeniería Electrónica y Departamento de Ingeniería Mecatrónica, Tecnológico Nacional de México en Celaya, Antonio García Cubas, Pte #600 Esquina. Av. Tecnológico, Celaya 38010, Mexico
*
Author to whom correspondence should be addressed.
Appl. Syst. Innov. 2025, 8(6), 188; https://doi.org/10.3390/asi8060188
Submission received: 13 October 2025 / Revised: 24 November 2025 / Accepted: 28 November 2025 / Published: 30 November 2025
(This article belongs to the Special Issue Autonomous Robotics and Hybrid Intelligent Systems)

Abstract

Estimating the absolute scale of reconstructed camera trajectories in monocular odometry is a challenging task due to the inherent scale ambiguity in any monocular vision system. One promising solution is to fuse data from different sensors, which can improve the accuracy and precision of scale estimation. However, this approach often requires additional effort in sensor design and data processing. In this paper, we propose a novel method for fusing single-camera data with wheel odometer readings using a fuzzy system. The architecture of the fuzzy system has as inputs the wheel odometer value and the translation and rotation obtained from ORB-SLAM2. It was trained with the ANFIS tool in MATLAB 2014b. Our approach yields significantly better results compared to state-of-the-art pure monocular systems. In our experiments, the average error relative to GPS measurements was only four percent. A key advantage of this method is the elimination of the sensor calibration step, allowing for straightforward data fusion without a substantial increase in data processing demands.

1. Introduction

Many of the current autonomous navigation methods rely heavily on computer vision systems. These systems provide valuable information on the environment in which the vehicle is located, in addition to the fact that, in the event of a jam, they have been shown to be more reliable than wheel odometers [1]. One of the most important tasks for modern navigation systems is odometry, and among techniques providing odometry is visual odometry, which uses the motion of characteristic points in the images to calculate the vehicle’s movement. Specifically, these systems can deliver the 3D relative displacement between a camera taking an image at a time t and the same camera taking an image at t + 1, using the corresponding two-view geometry while the vehicle is moving with the camera attached to the vehicle. A visual odometry system can be monocular or stereo type [2,3,4], and more sensors such as Light Detection and Ranging (LIDAR), the Inertial Measurement Unit (IMU), or the Global Positioning System (GPS) can be added to improve the reliability of the estimation. It is well-known that these systems are limited by occlusion, changes in illumination, noise in the communication channels, and the great processing power necessary to run them. Furthermore, with monocular odometry it is a very difficult challenge to obtain the real displacement, as the typical solution is a scaled version of the real motion [3]. Visual odometry has the advantage that information can be extracted from the images to obtain automatic mapping and thereby achieve simultaneous localization and mapping (SLAM). A SLAM system can calculate the movement to reconstruct a traveled route, as well as locating the vehicle on the created map. Focusing especially on monocular systems, with the absolute scale problem, the current literature shows that the best results are obtained by adding an extra sensor to the system. In [5], the authors propose using GPS and IMU sensors. The main problem with GPS is its lack of precision and its constant need for satellite communication. On the other hand, IMU sensors present electronic noise in their measurements, which may be propagated to the calculation of the movement since a double integral is used to recover the pose. The IMU also has the drawback of having a high computational cost for processing its information [6]. The odometer is another option for a second sensor, as it is cheap, but it has a very low resolution. In this work, we propose using two sensors, a monocular camera and a wheel odometer. As commented above, the monocular camera alone is not capable of establishing an absolute scale for the calculated movement and the odometer has a very low resolution, which is also a problem for odometry. In this context, fuzzy logic (FL) has solved many problems in robotics, control, and pattern recognition, since it offers fast and compact training for problems with nonlinear solutions. Due to the vast range of their applications, they are also known as expert fuzzy systems [7]. FL systems are mainly conformed of three stages: input data fuzzification, inference according to a knowledge base, and output defuzzification [7]. FL allows computers to make human-like decisions in an uncertain world [8,9], which shows a high potential to solve the visual odometry problem. This work introduces a novel fuzzy fusion approach that combines monocular ORB-SLAM2 data with wheel tachometer readings to recover the absolute scale in visual odometry. The proposed system eliminates complex sensor calibration, enabling straightforward integration with minimal computational overhead. Additionally, the authors present a new dataset that includes monocular images, wheel odometer measurements, and GPS ground truth for benchmarking sensor fusion tasks. The fuzzy system architecture, trained using MATLAB’s ANFIS tool, achieves a mean absolute error of approximately 4%, outperforming traditional monocular methods. This solution demonstrates high accuracy in real urban environments, offering a cost-effective and easily deployable alternative to IMU-based systems while maintaining robust performance under challenging conditions.

2. Related Work

We can find different proposals in the literature to improve visual odometry systems per se and others that mix them with SLAM systems. Improvements have been proposed to obtain a smaller error in the reconstruction of the route navigated by the cameras. Because the motion is computed starting from the initial position of the navigation experiment, the error in the final reconstructed route results from the composition of all the estimated displacements, and each error at each step contributes to the final estimation error, although techniques such as bundle adjustment and loop detection can be used to reduce this error accumulation. Among the main challenges to be solved to improve accuracy are the search for characteristic points, the matching step for these characteristic points while avoiding outliers in the process [10], and in some cases the bundle adjustment and/or the loop closing for the adjustment of the scaling factor and the refinement of the route calculated at the end of the process [11]. The bundle adjustment process consists of adjusting the route reconstruction and the 3D map through optimization techniques. On the other hand, the closing loop consists of recognizing places through which the camera has already passed, to improve the position calculation with this information. The first big challenge in visual odometry is the lack of absolute scale, since with a single camera, it is theoretically impossible to estimate the absolute distances of the points of interest with respect to the sensor [12]; i.e., the reconstruction is provided up to an unknown scale factor. The second challenge is the loss of precision under fast movements, as this generates blurring in the images. The third challenge is the accumulation of errors along the path, which is known as drift. The fourth is the need to calibrate the sensor properly. The fifth and last one is the need for careful initialization to start calculating the relative movements [13]. Within the works focused on the improvement of the initialization phase, we can find some such as the one shown in [14], where they propose a new method for the initialization of Visual Odometry (VO) systems. They combine iterative and non-iterative methods and use non-iterative methods to bring the iterative method closer to the local minimum. Because a SLAM system must work for long periods of time, it is necessary to take care of the size of the data it stores. In the case of a visual SLAM system, it is very complicated to save all the images of the trajectory. To solve this problem, only characteristic points of the current zone are used and stored [15]. Within the works focused on characteristic points, the one presented in [16] proposes a direct method for scarce information based only on lines and edges in the image. They use 8-pixel sub-images to improve information extraction, and they show a better performance in real time and in the laboratory compared to that presented by the ORB-SLAM shown in [17]. The main problem they identify is the robustness when working for long periods. On the other hand, in [18], the authors propose a technique that combines a direct method with a two-threaded feature-based method for processing tasks. The first thread estimates the location of the camera, and the second one is in charge of building the 3D map. They use a selector in parallel to avoid processing all the frames of the image. In [19], they present a system that fuses the image-based camera displacement estimation with an IMU so that it can improve the performance of both sensors. They use a Kalman filter to fuse the data from both sensors and obtain a position estimate. Within the works focused on improving the calculation of the camera position, we can find [20], where they use a system capable of working with the depth obtained with different sensors to determine the scale of movement of the camera. This system can work with RGB-D and LIDAR cameras, and one of its main features is flexibility to work with different sensors. They use the KITTI database [21] to evaluate their system. In another work, presented in [22], the authors present a Bayesian inference system that uses probabilistic estimates of the real size of different objects to infer the scale of the movement calculated by a monocular SLAM system. In [6], they present a system relying on a camera combined with an IMU to calculate the movement of a drone. It is a system embedded in a drone, and due to its weight, cost, and dimensions, it is the best proposal they found. It has the advantage of being able to track fast movements due to the sampling time of the inertial sensor. In [23], the authors propose fusing the estimates from a camera and from an IMU. The proposed system has an initialization module, one to eliminate the drift, and one to optimize the position calculation. It is capable of operating at 20 Hz. Within the works focused on the application of artificial intelligence to improve certain aspects of visual odometry, we can find works that improve the detection of circuits or paths already traveled [24] (i.e., loop closure detection). We can also find works such as [5], where they propose using a neural network that delivers direction and movement from data collected with an IMU. They remove the noise presented to the sensor by training the neural network with data contaminated with Gaussian noise to learn to remove it. With this system, which consists of three channels and provides estimates for the change in direction and the change in position, they achieve better performance than Kalman filter systems and they use double integration to obtain the pose from acceleration to velocity and to pose. We can also find approaches using fuzzy systems to improve the route obtained by combining several GPS readings [25], as well as the fusion of sensors with a fuzzy system such as a GPS odometer and stereoscopic camera for the reconstruction of traveled routes [26]. In [27], neural networks are used to improve the results of SLA systems. In contrast with this work, the odometry was obtained through stereo data, and the dataset used was the KITTI dataset [21].
In [28], the authors present a neural network architecture to perform visual odometry. One of the networks is responsible for obtaining points of interest from the images. The system continually improves as it keeps learning. Their method does not require camera calibration to establish the displacement of the vehicle and can work at 20 Hz. Of the existing monocular odometry systems, the most reliable is the ORBSLAM2 system [29]. It gives us rotation and translation from one image to the next. It estimates the translation in the X and Z axes, which is typical for a land vehicle. The information delivered by the ORB-SLAM2 system (which, in this work, is reused in our fuzzy system) is shown in Figure 1 for two examples corresponding to the dataset that we present in Section 3.
It can be seen in Figure 1 how the routes calculated with monocular ORB-SLAM2 are very similar to the ground-truth routes but only up to a scale. Therefore, a desirable upgrade is the recovery of the absolute scale. We have decided to investigate the performance of a fuzzy system to obtain the absolute scale of a monocular SLAM system from the ORBSLAM2 system [29], in combination with the input from a second, very affordable sensor, namely, a wheel odometry system. To facilitate our understanding of the state of the art and available technologies, we have prepared Table 1. In this table, we show three important aspects of the different existing works: the type of algorithm in use, the sensors in use, and the dataset for evaluation.
In this work, a fuzzy fusion method is proposed to properly obtain mono-visual odometry estimates with absolute scale by performing data fusion from a monocular SLAM system and from a tachometer system. In order to properly fuse the information provided by ORB-SLAM2 and the wheel tachometer, a fuzzy system and a signal pre-processing stage were used that converted the x, y coordinates of the ORBSLAM2 into translation and rotation information. With this information, the fuzzy system is responsible for integrating the information with the appropriate priority and magnitude to obtain a more accurate movement. The system has been tested in a real environment, from which we have produced our own database. The camera and the odometer are connected to a Jetson nano board and are used to obtain the data. The ground-truth is obtained with the help of a GPS sensor, which gives the latitude and longitude of the vehicle. The collected data are analyzed offline to design the data fusion system. Subsequently, a part of the data has been used to verify that the method works with small absolute errors. The results show satisfactory odometry estimation. The main contributions of this work are (1) a new system that estimates the visual SLAM absolute scale, with the ORB-SLAM library in monocular mode and using a tachometer as an auxiliary sensor, obtaining an error lower than the error presented by single-camera systems due to the scale estimation and comparable to the ground-truth; (2) a new dataset combining visual (monocular) and wheel odometer information to be used as a benchmarking dataset for fusion tasks, altogether with the GPS ground truth. This new database of monocular images and wheel odometer captures is currently being processed for publication. Our system is easy to calibrate because it only requires calibrating the camera and knowing the distance traveled by the vehicle tire for each pulse. Despite using a low-resolution odometer such as a wheel tachometer, this sensor provides valuable information to improve the estimation of the displacements by applying the fuzzy fusion of both signals.

3. Methodology

In this work, the odometry calculation is presented with the aim of determining the trajectory absolute scale, using a fuzzy system for fusing the information from an odometer in the front wheel and a camera in monocular mode where the XZ plane describes the ground plane.

3.1. Hardware and Dataset Description

An urban environment dataset has been built using a ZED camera with the geometric configuration shown in Figure 2 and a wheel odometer mounted on a car as illustrated in Figure 3. The GPS used to track the car’s path is the Digilent Pmod GPS (Revision B). The Pmod GPS features a GlobalTop FGPMMOPA6H GPS antenna module that uses the MediaTek GPS MT3329, Hsinchu, Taiwan [30]. A 2014 Volkswagen Jetta has been used to travel a route, with the sensors mounted on it, and to acquire the data while the vehicle is moving. The total data consist of 13,900 images and tachometer readings, among which 9800 data points are used for training and 4100 data points are used for testing the data fusion system. The fuzzy system has been designed using the MATLAB toolbox called ANFIS Edit.
Our dataset has been captured within a dense urban area, in the municipality of Apaseo el Grande, México, in the downtown area of the city. In Figure 4, some of the locations in the dataset are captured. As can be seen in Figure 4, along the route where we have captured the sequences, we see slow-moving vehicles in front of the ego vehicle, as well as pedestrians or cyclists. This kind of scenario may lead to problems with ORBSLAM2 as ORB points may be associated with rigid parts of the environment. These types of scenarios are difficult for the ORB-SLAM2, and it can be seen in Figure 1 how large errors can appear in the reconstruction, close to the coordinates (X = −100, Z = 0). This effect is shown by the blue line. The routes are shown in Figure 5. A route of 4.07 km in total distance has been captured and split into two sub-trajectories (Route 1 and Route 2). As can be seen, the two routes are in the same geographic area: Route 1 is 2.9 km long, while Route 2 is 1.17 km long. The ZED camera is installed in the front part of the car to avoid capturing parts of the vehicle. The tachometer sensor is installed on the right front tire, as it is the closest tire to the camera position.
The capturing method consists of saving the image, the time at which the shot is made, and the distance calculated by the wheel odometer. The process delivers a folder with the images of the route and two files. One of the files contains the times and the other the traveled distances, as calculated by the wheel odometer. The capture of the images is performed at a frequency of 15 Hz. The image acquisition and sensor readout are achieved through an NVIDIA Jetson NANO development kit, shown in Figure 6. This board has the option to use GPIO pins, and this option has been used to capture the wheel odometry data. The electrical diagram of the connection is shown in Figure 7.

3.2. ORB-SLAM2

ORB-SLAM2 is an open-source library that performs monocular and stereo SLAM. Its process includes image capture, the extraction of ORB feature points, matching between consecutive images, outlier removal using RANSAC, and rotation and translation calculations. The system also performs bundle adjustment and loop closing to reduce accumulated drift [29].

3.3. Fuzzy Fusion of ORB-SLAM2 and Wheel Odometer

A fuzzy system is used for the data fusion process. This fuzzy system has two sources of information as inputs and one output. The first source of data input is the monocular odometry calculation with the ORB-SLAM2 library, and the second source of data input is the vehicle wheel odometer.
The output of the system is an estimate of the motion with an absolute scale. Unlike conventional logic, fuzzy logic uses degrees between 0 and 1 to generate results. This allows the use of fuzzy systems for control, classification, and data fusion, in the case of this work. Fuzzy systems have three information usage parts: fuzzification, processing, and defuzzification. Fuzzification consists of converting the system input variables to environment variables that the fuzzy system can use. The processing stage consists of using the environment variables in conjunction with the system rules as well as if-else type functions to generate a result for each of the rules. Finally, the defuzzification stage consists of the sum of the results of each rule for each input, obtaining a single output. Fuzzy systems are systems with multiple inputs but only one output. Figure 8 shows the system used in this research. As can be seen in the block diagram, it obtains information on the movement calculated with the odometer and the movement calculated with the camera through the use of the ORB-SLAM2 library on the XZ axis. The signal pre-processing block converts the translation data from the camera to rotation and translation so that the system can know when the vehicle is turning and when it is going straight. The pre-processing block also uses the odometer information to convert it from a lap count to the distance traveled between each acquisition of the camera. The translation fuzzy system is responsible for receiving this information and performing data fusion to generate an output that is expressed in terms of absolute motion. Finally, the path recovery block uses this result for the translation, combined with the rotation, to obtain a movement in terms of coordinates in the XZ plane. The training process is performed with the MATLAB ANFIS tool. This fuzzy system training framework allows us to train them by specifying the type and the number of membership functions for each system input. It also allows us to determine the number of epochs during which the system will be trained. As a training reference (i.e., ground-truth), we use the data from a GPS sensor.
The signal pre-processing block occupies the XZ coordinates of three consecutive vehicle positions. The current position and the two previous ones are required to obtain the translation and rotation that have occurred from the previous position to the current position. As shown in Figure 9, we need to know the increments in the XZ coordinates of the ground vehicle.
As can be seen in Figure 9, we consider 3 consecutive positions of the vehicle and read the translations in the XZ plane from the odometry system.
∆X and ∆Z represent the vehicle’s displacement with respect to each axis of the XZ plane during a time interval ∆t. Approximating the vehicle as a monocycle system, the total displacement v T t and orientation ω T t change in the vehicle can be obtained from the odometry system using Equations (1)–(4):
v T t = X 2 2 + Z 2 2 ,
θ 1 = a r c t a n Z 1 X 1 ,
θ 2 = a r c t a n Z 2 X 2 ,
ω T t = θ 2 θ 2 .
The first angle of the reconstructed route is calculated from the first 2 vehicle positions. Having as the position X 0 , Z 0 , the initial angle ( θ 0 ) is calculated with the coordinates of the second position of the vehicle X 1 , Z 1 .
The first stage of the signal pre-processing block shown in Figure 8 is to calculate the translation v T t with Equation (1). The second stage is to calculate the angular velocity ω T t of the vehicle, as illustrated in Figure 9. To achieve this, first, the rotation θ 1 that the vehicle undergoes when passing from configuration A to configuration B (Equation (2)) is calculated. Then, in the same way, the rotation θ 2 from configuration B to configuration C is computed (Equation (3)). Finally, the current rotation rate of the vehicle is calculated by subtracting the rotations using Equation (4). This block is also responsible for obtaining the movement of the encoder by comparing the current and previous positions.
Once the data provided by the tachometer ( v T ) and the visual odometry system ORB-SLAM2 v O , ω O are obtained, the fuzzy system makes the inference of the corrected translation v F . The output of the fuzzy system depends on the fuzzy rules R v i and the weights W v i of the membership functions, which is shown in Equation (5); the superscripts indicate the information source: T for the tachometer, O for the odometer, and F for the fuzzy system output.
v F = i = 1 N W v i R v i v T , v O , ω O i = 1 N W v i .
In Figure 10, the connection of the data in the fuzzy system is shown. The fuzzy system has 3 inputs: visual odometry angular velocity ω O , visual odometry linear velocity v O , and tachometer linear velocity v T . And R v i = a v T + b v O + c ω O + d where a, b, c, and d are calculated during the training process. All of them are provided by the signal pre-processing block shown in Figure 8.
Once the odometry data from the two sensors have been fused into v F , ω F = ω O , we need to recover the route. For this process, we use the inverse of Equations (1)–(4), where the subscript i in the variables means the current position and the subscript i − 1 means the previous position.
X i = X i 1 + v i F c o s θ i 1 + ω i 1 O t ,
Z i = Z i 1 + v i F s i n θ i 1 + ω i 1 O t ,
θ i = θ i 1 + ω i 1 O t
MATLAB’s ANFIS system [31] has been used to train the fuzzy system; 70% of the captured data is used for training, in different configurations. The other 30% of the data is used for validation. This tool provided by MATLAB uses a set of inputs and desired outputs for training, and using back-propagation, you can tune a given basic fuzzy system. Different configurations of the fuzzy system have been tested with different amounts of Membership Functions (MFs) and types of MF for training. The average errors obtained with the different configurations are shown in Table 2.
As can be seen in Table 2, experiments have been carried out with different types of membership functions. Tests have been performed by training fuzzy systems with three and four membership functions for each of the inputs (translation, rotation, and odometer). There are no significant differences when increasing the number of membership functions from three to four per entry; hence, we have kept four membership functions. The system with the best performance is the system with Gaussian-type membership functions and with four membership functions for each entry (indicated in bold). Using this setup, we create 10 training datasets and train 10 fuzzy systems for cross-validation. The mean absolute error (MAE) of these 10 different fuzzy systems is 0.0408. This error is similar to the first trained system, shown in Table 2.

3.4. Fuzzy System Architecture

This section presents the fuzzy system designed with the methodology proposed in this article. As indicated in Figure 10, this architecture has as inputs ORB-SLAM2_Rotation, ORB-SLAM2_Translation, and TACHOMETER_Translation and as the only output the Corrected_ORB-SLAM2_Translation. Each of the inputs has four Gaussian membership functions. For the ORBSLAM2_Rotation input, the linguistic variables of minimal, moderate, pronounced, and extreme were chosen. This setup can be verified in Figure 11.
For the ORB-SLAM2_Translation input, the linguistic variables of short, close, medium, and long were designed as shown in Figure 12. On the other hand, for the TACHOMETER_Translation input, the linguistic variables of slow, intermediate, quick, and fast were used, as illustrated in Figure 13. As far as the logical rules section of the fuzzy system is concerned, there are sixty-four of them, which are stated below:
The defuzzification stage of the selected fuzzy system is of the Takagi–Sugeno type. The architecture of this stage is explained in Figure 14.
In this case, the output membership functions are of the constant type denoted from out1mf1 to out1mf64 (Constant Rvi values) and the output value is calculated using Equation (5). In the MATLAB toolbox, only one value appears for each of the sixty-four rules of the system, as can be seen in Figure 15.
In order to qualitatively appreciate the nonlinearity of the system with two of its inputs, the output surface dependent on TACHOMETER_Translation and ORBSLAM2_Rotation is shown in Figure 16. For numerical details of membership functions, please refer to Appendix A. And the surface of the output dependent on the ORB-SLAM2_Translation and ORB-SLAM2_Rotation is shown in Figure 17. Numerical details can be found in the fuzzy system MATLAB file: Link to https://drive.google.com/file/d/1MqDNmCq1IaRvC454ShNU5bw6u7hzMGlJ/view?usp=sharing.

3.5. Error Evaluation

In order to estimate the precision of the method presented, we need to calculate the error by comparing the result of this method with the ground-truth path, as can be seen in Equation (9),
E = i = 1 N v i G v i O N
The error is the result of the summation of the absolute errors in every iteration divided on the number of iterations, i.e., the MAE defined above.

4. Results and Discussion

As can be seen in Figure 18 and Figure 19, this data fusion configuration allows us to obtain a very close approximation to the real movement of the vehicle. Route 1 is the training route, containing 70% of the total data, while route 2 is the test route (30% of data). As can be seen in Figure 18 and Figure 19, after data fusion using the fuzzy logic system (red lines), the scale of the reconstructed route is very close to the actual terrain (blue lines), whereas the route obtained using tachometer data and the ORBSLAM2 angle (green lines) deviates from reality. In the case of the training route, the average relative translation error (MAE) is 3%, which is lower than the error in the test route for natural reasons. The average translation error in the test route is around 4% (MAE) because the system is already being tested.
Figure 20 and Figure 21 numerically illustrate the error of the fuzzy logic system and the use of tachometer translation with ORBSLAM2 rotation. This demonstrates the contribution of the fuzzy logic system to error compensation. This also applies to the training route (route 1) and the test route (route 2), resulting in a significant reduction in error, which is visually apparent in Figure 10 and Figure 19.
It is important to acknowledge the inherent limitations of this study. First, the reported performance is conditioned by the test environments used, characterized by adequate lighting, rich visual textures, and trajectories without extreme tire slippage. Error is expected to increase in more adverse scenarios, such as extreme lighting conditions (nighttime, tunnels, snow), heavy rain, or environments with poor and repetitive visual textures. Furthermore, the reliance on a monocular visual sensor makes it susceptible to scaling errors and tracking failures during abrupt movements.

5. Conclusions

In this work, we successfully trained a fuzzy system to estimate absolute motion in a monocular setup by fusing data from a monocular system with measurements from a wheel odometer. We introduce a new method for fuzzy fusion of monocular ORB-SLAM2 and tachometer sensor data for vehicle odometry. This method accurately estimates the absolute scale of motion, synchronizes odometer and camera data, calculates vehicle movement with a high resolution and precision of 4% (MAE), and is easy to train using the ANFIS tool. Our system leverages fuzzy systems technology to combine relative translation and rotation data from ORB-SLAM2 with odometer readings, estimating the actual distance traveled by the vehicle. We generated a database in an urban environment using stereoscopic image captures and wheel odometer measurements, utilizing a JETSON NANO development board and a ZED camera. The total route captured spanned 4.07 km in the town of Apaseo el Grande, Guanajuato, Mexico, as shown in Figure 4. Seventy percent of this dataset was used to train the proposed fuzzy system. The system’s performance in an urban environment with various obstacles yielded a translation error close to 4%, outperforming existing state-of-the-art methods. Future work should focus on applying this approach to open-source systems similar to ORB-SLAM2.

Author Contributions

Conceptualization, A.I.B.G. and D.L.M.; methodology, A.I.B.G.; software, D.L.M.; validation, J.A.P.M.; formal analysis, J.P.O.; investigation, D.L.M.; resources, A.I.B.G., J.J.M.N. and J.P.O.; data curation, J.J.M.N.; writing—original draft preparation, D.L.M.; writing—review and editing; visualization, A.I.B.G.; supervision, A.I.B.G.; project administration, A.I.B.G.; funding acquisition, D.L.M., J.A.P.M., J.P.O., J.J.M.N. and A.I.B.G. All authors have read and agreed to the published version of the manuscript.

Funding

This research was funded by SECIHTI by its programs: “Becas Nacionales” and “Sistema Nacional de Investigadoras e Investigadores”, as well as by the Tecnológico Nacional de México.

Data Availability Statement

More details of this study can be found at https://drive.google.com/file/d/1MqDNmCq1IaRvC454ShNU5bw6u7hzMGlJ/view?usp=sharing (Accessed: 30 November 2025).

Acknowledgments

We want to thank Jean Bernard Hayet from CIMAT for the valuable help.

Conflicts of Interest

The authors declare no conflicts of interest.

Appendix A

To make our experiments reproducible, we detail the coefficients of the output polynomials of the fuzzy system:
out1mf1 = [1.99457956724007 -0.00252587254659136 -0.0944508502111468 0.126736453584103]
out1mf2 = [2.66962198722736 -0.048144864770026 0.0803542031041 -0.104923716202548]
out1mf3 = [3.16800908167522 0.0316133238987368 -0.308237219114 0.115531083174255]
out1mf4 = [-22.1259122563683 1.5038605689575 -8.8013647468881830.7529677117022]
out1mf5 = [2.77682925344479 0.0112302567359591 -0.030925344187-0.0178386327663312]
out1mf6 = [3.09198706675788 0.103348328414236 -0.1208739439209 0.218608917350819]
out1mf7 = [1.63270144606128 -0.0548234486594975 0.294975044384998 -0.194056805236559]
out1mf8 = [6.31958506493954 2.43397144494793 5.16198945815946 -16.1254862480032]
out1mf9 = [2.286896884843 0.0125795930719499 0.0157150346717479 0.0192693578515258]
out1mf10 = [2.19538529274344 -0.0473227073901095 -0.0596367592034096 0.0834184883948428]
out1mf11 = [3.01046670929241 0.011318538117693 0.0661948837869591 -0.0913203883383245]
out1mf12 = [0.66747979185053 -0.943032764056452 0.61755797868654 -2.75181331666654]
out1mf13 = [2.67034821185185 0.0286380944746965 0.246908806153474 -0.211510577559401]
out1mf14 = [1.13697341892118 -0.133687886965311 -0.0633093992753613 0.502255544126949]
out1mf15 = [2.76571784888037 0.201333353877264 -0.00760884496376986 -0.562354113719063]
out1mf16 = [11.5819488258922 -4.72562869175883 2.22274174387577 10.2132235982244]
out1mf17 = [16.3425440833848 -0.378498648584345 6.00452106500021 0.824045445921893]
out1mf18 = [3.32066034241815 1.47356565628273 -1.36613141425108 1.27750338255123]
out1mf19 = [-7.8106335271782 -0.474566612138573 2.04444414953109 -1.53959985873954]
out1mf20 = [59.5644598892773 12.7903942364644 4.21719604430314 -23.0248679202104]
MF21 = ’out1mf21’:’linear’, [-5.14811627721925 -0.210805708813462 1.54647836368903 -2.06840677324619]
MF22 = ’out1mf22’:’linear’, [7.14702928009876 -2.04729182159825 4.02006968942894 -2.41887901349608]
MF23 = ’out1mf23’:’linear’, [6.39162876209182 0.234613620225849 -0.225271531904549 1.14609768993331]
MF24 = ’out1mf24’:’linear’, [8.65519317640425 -12.2950976641945 0.148746847062282 -6.44483336330451]
MF25 = ’out1mf25’:’linear’, [4.25916679962277 -1.24317992548623 -0.0944932521437346 0.098025705579939]
MF26 = ’out1mf26’:’linear’, [1.51868433080538 -0.467684491455118 0.890085311324692 0.485549836325974]
MF27 = ’out1mf27’:’linear’, [-1.07259464034369 1.83362975425891 0.681920413641429 -1.49761128094526]
MF28 = ’out1mf28’:’linear’, [-2.22366289442392 1.90553735021545 0.31449484775736 0.0934409713238908]
MF29 = ’out1mf29’:’linear’, [-6.23582703062928 -2.6661057153199 -6.36727564992697 3.25277847497194]
MF30 = ’out1mf30’:’linear’, [28.1996756128803 5.26208360281581 3.05079127687411 -0.219716851986161]
MF31 = ’out1mf31’:’linear’, [5.64491073237791 -0.13521947183373 0.612715857099049 0.145846806559135]
MF32 = ’out1mf32’:’linear’, [3.54522807928674 3.64272024934926 -5.00947253673146 2.46302860111793]
MF33 = ’out1mf33’:’linear’, [-48.4242262697307 5.30045284411539 -71.0603551929069 -28.6872859509809]
MF34 = ’out1mf34’:’linear’, [-9.58531298326556 -15.8097344735723 11.453280547066 -7.53940562032762]

References

  1. Kim, D.H.; Kim, J.H. Effective background model-based RGB-D dense visual odometry in a dynamic environment. IEEE Trans. Robot. 2016, 32, 1565–1573. [Google Scholar] [CrossRef]
  2. Nilwong, S.; Hossain, D.; Kaneko, S.I.; Capi, G. Deep learning-based landmark detection for mobile robot outdoor localization. Machines 2019, 7, 25. [Google Scholar] [CrossRef]
  3. Zhang, Z.; Zhao, R.; Liu, E.; Yan, K.; Ma, Y.; Xu, Y. A fusion method of 1d laser and vision based on depth estimation for pose estimation and reconstruction. Robot. Auton. Syst. 2019, 116, 181–191. [Google Scholar] [CrossRef]
  4. Nguyen, T.; Mann, G.K.; Vardy, A.; Gosine, R.G. Developing computationally efficient nonlinear cubature kalman filtering for visual inertial odometry. J. Dyn. Syst. Meas. Control Trans. ASME 2019, 141, 081012. [Google Scholar] [CrossRef]
  5. Esfahani, M.A.; Wang, H.; Wu, K.; Yuan, S. Aboldeepio: A novel deep inertial odometry network for autonomous vehicles. IEEE Trans. Intell. Transp. Syst. 2019, 21, 1941–1950. [Google Scholar] [CrossRef]
  6. Lin, Y.; Gao, F.; Qin, T.; Gao, W.; Liu, T.; Wu, W.; Yang, Z.; Shen, S. Autonomous aerial navigation using monocular visual-inertial fusion. J. Field Robot. 2018, 35, 23–51. [Google Scholar] [CrossRef]
  7. Cruz, P.P. Inteligencia Artificial con Aplicaciones a la Ingeniería, 1st ed.; Alfaomega Grupo Editor: Mexico City, Mexico, 2010. [Google Scholar]
  8. Zadeh, L.A. Outline of a new approach to the analysis of complex systems and decision processes. IEEE Trans. Syst. Man Cybern. 1973, 3, 28–44. [Google Scholar] [CrossRef]
  9. Tang, Y.; Pan, Z.; Hu, X.; Pedrycz, W.; Chen, R. Knowledge-induced multiple kernel fuzzy clustering. IEEE Trans. Pattern Anal. Mach. Intell. 2023, 45, 838–855. [Google Scholar] [CrossRef]
  10. Rao, Z.; He, M.; Dai, Y.; Zhu, Z.; Li, B.; He, R. Nlca-net: A non-local context attention network for stereo matching. APSIPA Trans. Signal Inf. Process. 2020, 9, e18. [Google Scholar] [CrossRef]
  11. Taketomi, T.; Uchiyama, H.; Ikeda, S. Visual slam algorithms: A survey from 2010 to 2016. IPSJ Trans. Comput. Vis. Appl. 2017, 9, 16. [Google Scholar] [CrossRef]
  12. Piao, J.C.; Kim, S.D. Adaptive monocular visual-inertial slam for real-time augmented reality applications in mobile devices. Sensors 2017, 17, 2567. [Google Scholar] [CrossRef]
  13. Yang, N.; Wang, R.; Gao, X.; Cremers, D. Challenges in monocular visual odometry: Photometric calibration, motion bias, and rolling shutter effect. IEEE Robot. Autom. Lett. 2018, 3, 2878–2885. [Google Scholar] [CrossRef]
  14. Zhou, K.; Wang, X.; Wang, Z.; Wei, H.; Yin, L. Complete initial solutions for iterative pose estimation from planar objects. IEEE Access 2018, 6, 22257–22266. [Google Scholar] [CrossRef]
  15. Fossen, T.I.; Pettersen, K.Y.; Nijmeijer, H. (Eds.) Sensing and Control for Autonomous Vehicles; Lecture Notes in Control and Information Sciences Series; Springer International Publishing: Cham, Switzerland, 2017; Volume 474, Available online: http://link.springer.com/10.1007/978-3-319-55372-6 (accessed on 20 August 2025).
  16. Engel, J.; Koltun, V.; Cremers, D. Direct sparse odometry. IEEE Trans. Pattern Anal. Mach. Intell. 2018, 40, 611–625. [Google Scholar] [CrossRef] [PubMed]
  17. Mur-Artal, R.; Montiel, J.M.; Tardos, J.D. Orb-slam: A versatile and accurate monocular slam system. IEEE Trans. Robot. 2015, 31, 1147–1163. [Google Scholar] [CrossRef]
  18. Forster, C.; Zhang, Z.; Gassner, M.; Werlberger, M.; Scaramuzza, D. Svo: Semidirect visual odometry for monocular and multicamera systems. IEEE Trans. Robot. 2017, 33, 249–265. [Google Scholar] [CrossRef]
  19. Alatise, M.B.; Hancke, G.P. Pose estimation of a mobile robot based on fusion of imu data and vision data using an extended kalman filter. Sensors 2017, 17, 2164. [Google Scholar] [CrossRef]
  20. Zhang, J.; Kaess, M.; Singh, S. A real-time method for depth enhanced visual odometry. Auton. Robot. 2017, 41, 31–43. [Google Scholar] [CrossRef]
  21. Geiger, A.; Lenz, P.; Stiller, C.; Urtasun, R. Vision meets robotics: The kitti dataset. Int. J. Robot. Res. 2013, 4, 1–6. [Google Scholar]
  22. Sucar, E.; Hayet, J.-B. Bayesian scale estimation for monocular slam based on generic object detection for correcting scale drift. In Proceedings of the 2018 IEEE International Conference on Robotics and Automation (ICRA), Brisbane, Australia, 21–25 May 2018; pp. 5152–5158. [Google Scholar]
  23. Qin, T.; Li, P.; Shen, S. Vins-mono: A robust and versatile monocular visual-inertial state estimator. IEEE Trans. Robot. 2018, 34, 1004–1020. [Google Scholar] [CrossRef]
  24. Gao, X.; Zhang, T. Unsupervised learning to detect loops using deep neural networks for visual slam system. Auton. Robot. 2017, 41, 1–18. [Google Scholar] [CrossRef]
  25. Correa-Caicedo, P.J.; Rostro-González, H.; Rodriguez-Licea, M.A.; Gutiérrez-Frías, O.O.; Herrera-Ramírez, C.A.; Méndez-Gurrola, I.I.; CanoLara, M.; Barranco-Gutiérrez, A.I. Gps data correction based on fuzzy logic for tracking land vehicles. Mathematics 2021, 9, 2818. [Google Scholar] [CrossRef]
  26. Villaseñor-Aguilar, M.J.; Peralta-López, J.E.; Lázaro-Mata, D.; García-Alcalá, C.E.; Padilla-Medina, J.A.; Perez-Pinal, F.J.; VázquezLópez, J.A.; Barranco-Gutiérrez, A.I. Fuzzy fusion of stereo vision, odometer, and gps for tracking land vehicles. Mathematics 2022, 10, 2052. [Google Scholar] [CrossRef]
  27. Lázaro-Mata, D.; Morales-Viscaya, J.-A.; Peralta-Lopez, J.-E.; GomezCortes, J.-C.; Padilla-Medina, J.-A.; Martínez-Nolasco, J.-J.; BarrancoGutiérrez, A.-I. Neural network for improve orb-slam2 on xz plane. In Proceedings of the 2023 IEEE 14th Annual Ubiquitous Computing, Electronics and Mobile Communication Conference (UEMCON), New York, NY, USA, 12–14 October 2023; pp. 0380–0386. [Google Scholar]
  28. Wang, S.; Clark, R.; Wen, H.; Trigoni, N. End-to-end, sequence-tosequence probabilistic visual odometry through deep neural networks. Int. J. Robot. Res. 2018, 37, 513–542. [Google Scholar] [CrossRef]
  29. Mur-Artal, R.; Tardos, J.D. Orb-slam2: An open-source slam system for monocular, stereo, and rgb-d cameras. IEEE Trans. Robot. 2017, 33, 1255–1262. [Google Scholar] [CrossRef]
  30. DIGILENT. Pmod Gps Reference Manual. 2024. Available online: https://digilent.com/reference/pmod/pmodgps/reference-manual?redirect=1 (accessed on 24 September 2024).
  31. Jang, J.-S.R.; Gulley, N. Fuzzy Logic Toolbox Functions. User’s Guide. 2015, p. 208. Available online: http://www.mathworks.com/help/fuzzy/functionlist.html (accessed on 20 August 2025).
Figure 1. Comparison of ground-truth trajectories (in red) and ORB-SLAM2 monocular trajectories (in blue) calculated on route 1 (left) and route 2 (right) for the dataset presented in Section 3.
Figure 1. Comparison of ground-truth trajectories (in red) and ORB-SLAM2 monocular trajectories (in blue) calculated on route 1 (left) and route 2 (right) for the dataset presented in Section 3.
Asi 08 00188 g001
Figure 2. For acquiring our dataset, a ZED camera is installed in front of a car for image capture. In the photograph, it can be seen enclosed in a red rectangle.
Figure 2. For acquiring our dataset, a ZED camera is installed in front of a car for image capture. In the photograph, it can be seen enclosed in a red rectangle.
Asi 08 00188 g002
Figure 3. Wheel odometer setup. Rim with eight magnets and the Hall effect sensor.
Figure 3. Wheel odometer setup. Rim with eight magnets and the Hall effect sensor.
Asi 08 00188 g003
Figure 4. Examples of stereo pairs from our dataset. In the acquired sequences, cyclists and other moving vehicles may make the SLAM task harder.
Figure 4. Examples of stereo pairs from our dataset. In the acquired sequences, cyclists and other moving vehicles may make the SLAM task harder.
Asi 08 00188 g004
Figure 5. Route traveled by our vehicle (Training route in deep blue and validation route in red). (accessed on 27 June 2022). Map data © 2025. Google.
Figure 5. Route traveled by our vehicle (Training route in deep blue and validation route in red). (accessed on 27 June 2022). Map data © 2025. Google.
Asi 08 00188 g005
Figure 6. Route traveled by our vehicle (in black). Source: https://www.google.com.mx/maps/@20.5472292, −100.6841743, 17 z (accessed on 27 June 2022). Map data © 2025. Google.
Figure 6. Route traveled by our vehicle (in black). Source: https://www.google.com.mx/maps/@20.5472292, −100.6841743, 17 z (accessed on 27 June 2022). Map data © 2025. Google.
Asi 08 00188 g006
Figure 7. Wiring diagram of counter for wheel odometer sensor.
Figure 7. Wiring diagram of counter for wheel odometer sensor.
Asi 08 00188 g007
Figure 8. Overview of system for motion recovery with absolute scale.
Figure 8. Overview of system for motion recovery with absolute scale.
Asi 08 00188 g008
Figure 9. Illustration of positions A, B, and C of the vehicle through time.
Figure 9. Illustration of positions A, B, and C of the vehicle through time.
Asi 08 00188 g009
Figure 10. Fuzzy system for signal fusion.
Figure 10. Fuzzy system for signal fusion.
Asi 08 00188 g010
Figure 11. Membership functions of the ORBSLAM2_Rotation input.
Figure 11. Membership functions of the ORBSLAM2_Rotation input.
Asi 08 00188 g011
Figure 12. Membership functions of the ORBSLAM2_Translation input.
Figure 12. Membership functions of the ORBSLAM2_Translation input.
Asi 08 00188 g012
Figure 13. Membership functions of the TACHOMETER_Translation input.
Figure 13. Membership functions of the TACHOMETER_Translation input.
Asi 08 00188 g013
Figure 14. Defuzzification architecture.
Figure 14. Defuzzification architecture.
Asi 08 00188 g014
Figure 15. Fuzzy associative matrix (FAM) that defines the rules between the inputs: rotation estimated by ORB-SLAM2, translation measured by the tachometer and rotation estimated by ORB-SLAM2, for the refinement of the odometry of the vehicle movement.
Figure 15. Fuzzy associative matrix (FAM) that defines the rules between the inputs: rotation estimated by ORB-SLAM2, translation measured by the tachometer and rotation estimated by ORB-SLAM2, for the refinement of the odometry of the vehicle movement.
Asi 08 00188 g015
Figure 16. Surface output dependent on TACHOMETER_Translation (meters), ORB-SLAM2_Rotation (degrees), and output in meters. Where the blue-toned surface represents less compensation and the yellow represents medium compensation.
Figure 16. Surface output dependent on TACHOMETER_Translation (meters), ORB-SLAM2_Rotation (degrees), and output in meters. Where the blue-toned surface represents less compensation and the yellow represents medium compensation.
Asi 08 00188 g016
Figure 17. Surface output dependent on ORBSLAM2_Translation (meters), ORB-SLAM2_Rotation (degrees), and output in meters. Where the blue-toned surface represents less compensation and the yellow represents medium compensation.
Figure 17. Surface output dependent on ORBSLAM2_Translation (meters), ORB-SLAM2_Rotation (degrees), and output in meters. Where the blue-toned surface represents less compensation and the yellow represents medium compensation.
Asi 08 00188 g017
Figure 18. In red, we depict the calculated route, with its dimensions close to the real value in blue. In green, we show the result of combining the translation given by the tachometer and the rotation given by the monocular ORB-SLAM2.
Figure 18. In red, we depict the calculated route, with its dimensions close to the real value in blue. In green, we show the result of combining the translation given by the tachometer and the rotation given by the monocular ORB-SLAM2.
Asi 08 00188 g018
Figure 19. Absolute scale recovery. In red, we depict the calculated route, with its dimensions close to the real value in blue. In green, we show the result of combining the translation given by the tachometer and the rotation given by the monocular ORB-SLAM2.
Figure 19. Absolute scale recovery. In red, we depict the calculated route, with its dimensions close to the real value in blue. In green, we show the result of combining the translation given by the tachometer and the rotation given by the monocular ORB-SLAM2.
Asi 08 00188 g019
Figure 20. Error between tachometer and ORBSLAM2 (in green) versus fuzzy system error when fusing tachometer, ORBSLAM2 translation, and ORBSLAM2 rotation (in red) for route 1.
Figure 20. Error between tachometer and ORBSLAM2 (in green) versus fuzzy system error when fusing tachometer, ORBSLAM2 translation, and ORBSLAM2 rotation (in red) for route 1.
Asi 08 00188 g020
Figure 21. Error between tachometer and ORBSLAM2 (in green) versus fuzzy system error when fusing tachometer, ORBSLAM2 translation, and ORBSLAM2 rotation (in red) for route 2.
Figure 21. Error between tachometer and ORBSLAM2 (in green) versus fuzzy system error when fusing tachometer, ORBSLAM2 translation, and ORBSLAM2 rotation (in red) for route 2.
Asi 08 00188 g021
Table 1. Summary of the state of the art.
Table 1. Summary of the state of the art.
AlgorithmSensorsDataset
VINS [6]Visual
Inertial Odometry
IMU and
CAMERA
VaFRIC
NLCA-NET
[10]
SLAMIMUKITTI and
SceneFlow
Adaptive
monocular visual- inertial slam [12]
SLAMIMUEuRoC
MHI + LHM
[14]
SLAMCAMERACOLLECTED
DSO [16]SLAMCAMERAEuRoC, TUM
and ICL- NUIM
ORB-SLAM
[17]
SLAMCAMERAKITTI
SVO [18]ODOMETRYCAMERAEuRoC, TUM
and ICL- NUIM
POSE ES-
TIMATION [19]
KALMAN
FILTER
CAMERA
and IMU
COLLECTED
A real-time
(VO) [20]
DEPTH
SLAM
RGB-D and
3D LIDAR
KITTI
Bayesian
SCALE SLAM [22]
SLAMCAMERAKITTI
VINS-
MONO [23]
Visual
Inertial Odometry
IMU and
CAMERA
EuRoC MAV
SDA [24]NEURALCAMERATUM and
FABMAP
GPS Data
correction [25]
FUZZYGPSUCI
FUZZY FU-
SION [26]
FUZZYCAMERA,
GPS and ODOME- TER
COLLECTED
Table 2. MAE in translation (TRANS) with different types of membership function (MF).
Table 2. MAE in translation (TRANS) with different types of membership function (MF).
Type of MFMAE TRANS with 3 MFMAE TRANS with 4 MF
Trimf0.040510.04056
Trapmf0.040990.04134
Gbellmf0.040600.04049
Gaussmf0.040710.0404
Gauss2mf0.040520.0405
Pimf0.040960.04164
Dsigmf0.040700.04052
Psigmf0.040700.04052
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Share and Cite

MDPI and ACS Style

Lázaro Mata, D.; Padilla Medina, J.A.; Martínez Nolasco, J.J.; Prado Olivarez, J.; Barranco Gutiérrez, A.I. Fuzzy Fusion of Monocular ORB-SLAM2 and Tachometer Sensor for Car Odometry. Appl. Syst. Innov. 2025, 8, 188. https://doi.org/10.3390/asi8060188

AMA Style

Lázaro Mata D, Padilla Medina JA, Martínez Nolasco JJ, Prado Olivarez J, Barranco Gutiérrez AI. Fuzzy Fusion of Monocular ORB-SLAM2 and Tachometer Sensor for Car Odometry. Applied System Innovation. 2025; 8(6):188. https://doi.org/10.3390/asi8060188

Chicago/Turabian Style

Lázaro Mata, David, José Alfredo Padilla Medina, Juan José Martínez Nolasco, Juan Prado Olivarez, and Alejandro Israel Barranco Gutiérrez. 2025. "Fuzzy Fusion of Monocular ORB-SLAM2 and Tachometer Sensor for Car Odometry" Applied System Innovation 8, no. 6: 188. https://doi.org/10.3390/asi8060188

APA Style

Lázaro Mata, D., Padilla Medina, J. A., Martínez Nolasco, J. J., Prado Olivarez, J., & Barranco Gutiérrez, A. I. (2025). Fuzzy Fusion of Monocular ORB-SLAM2 and Tachometer Sensor for Car Odometry. Applied System Innovation, 8(6), 188. https://doi.org/10.3390/asi8060188

Article Metrics

Back to TopTop