Application of Odometry and Dijkstra Algorithm as Navigation and Shortest Path Determination System of Warehouse Mobile Robot

— One of the technologies in the industrial world that utilizes robots is the delivery of goods in warehouses, especially in the goods distribution process. This is very useful, especially in terms of resource efficiency and reducing human error. The existing system in this process usually uses the line follower concept on the robot's path with a camera sensor to determine the destination location. If the line and destination are not detected by the sensor or camera, the robot's navigation system will experience an error. it can happen if the sensor is dirty or the track is faded. The aim of this research is to develop a robot navigation system for efficient goods delivery in warehouses by integrating odometry and Dijkstra's algorithm for path planning. Holonomic robot is a robot that moves freely without changing direction to produce motion with high mobility. Dijkstra's algorithm is added to the holonomic robot to obtain the fastest trajectory. by calculating the distance of the node that has not been passed from the initial position, if in the calculation the algorithm finds a shorter distance it will be stored as a new route replacing the previously recorded route. the distance traversed by the djikstra algorithm is 780 mm while a distance of 1100 mm obtains the other routes. The time for using the Djikstra method is proven to be 5.3 seconds faster than the track without the Djikstra method with the same speed. Uneven track terrain can result in a shift in the robot's position so that it can affect the travel data. The conclusion is that odometry and Dijkstra's algorithm as a planning system and finding the shortest path are very efficient for warehouse robots to deliver goods than ordinary line followers without Dijkstra, both in terms of distance and travel time.


INTRODUCTION
The development of robotics provides conveniences for humans [1][2][3] [4].Robot is a technological product that combines hardware and software with a propulsion program used in a particular job [5][6] [7][8] [9].Many activities that are too heavy for humans can be done easily with the help of robots, such as activities that require large amounts of energy, high costs, fast time and detailed accuracy [10] [11].Warehouse robots for delivery of goods have become an important part of the logistics and delivery of goods in the industry.This system improves operating efficiency and reduces cycle times.To maximize the benefits of this system, it is necessary to determine the fastest path for the robot to deliver goods.
The benefits of robots in industrial activities have been widely used such as delivery of goods, production, packaging, picking, dropping, inventory, unloading, manufacturing processes, controllers and others in accelerating and increasing the quality and quantity of production, like in [12] [13] [14] that develop in industrial robot especially in manufacturing.The application of delivery robots has existed in several developed countries [15] [16].The navigation system usually uses a line follower [17].However, the system is highly dependent on the sensitivity to recognition of the color of the line traversed.If there is a problem in the recognition system, the robot's navigation system will also have a problem [18][19].This must be overcome by the system within the robot itself [20] [21].So the application of odometry is needed as an alternative method that can answer some of the limitations of line follower system [22][23] [24].
The odometry system was chosen in this study because several studies have proven that odometry has high accuracy in measuring the distance, direction and position of the robot without dependence on light and line search [25].Odometry is used to estimate position coordinates relative to the initial position [26] [27].The odometry system requires a rotary encoder sensor to detect the number of wheel rotations [28] [29].Area mapping using the odometry method is to estimate changes in the robot's position over time in a Cartesian diagram [30] [31].The result is data on the coordinates and direction of the robot [32][33] [34].Odometry uses actuator movement data to estimate coordinate changes [35] [36].The robot position coordinates include three parameters, namely the diameter of the free wheel, the number of encoder resolutions and the number of rotary encoder pulses [37][38][39].This data is used as a parameter for robot navigation combined with a holonomic system [40][41].Holonomic is a type of mobile omnidirectional wheel [42][43] [44].It can move without changing direction due to omni wheel kinematics [45][46].It can move forward, backward, slide sideways and rotate in a fixed position so that it is more effective in maneuvering [47][48].Therefore, this study hypothesizes that holonomic can simplify and accelerate mobile robots to maneuver in all directions and follow the application of Dijkstra's algorithm for the effectiveness and speed of distributing goods in warehouses [49] After the path has been mapped, the next step is finding the shortest path in each route on the path map [51].Searching for the shortest route becomes very important in path planning because it is related to delay [52].The smaller the delay, the more reliable a system [53].One of the methods used for this is Dijkstra's algorithm [54].Dijkstra's algorithm was chosen in this study because it is simple to implement and sufficiently detailed considering the load of each path [55].Dijkstra is a shortest route search method that is used in various fields [56], such as in telecommunications [57], regional maps [58], transportation [59], energy [60] and others.Some previous research on robots is [61] which developed a mobile robot navigation system using visual odometry based on ceiling vision.Research [62] developed the design of an omnidirectional wheeled mobile robot.At the same time, research [63] developed a control system for trajectory tracking on an omnidirectional wheeled mobile robot.But they don't consider the shortest path problem.Another research is [64] which proposes the application of Dijkstra's Algorithm in determining the fastest trajectory of a wheeled soccer robot.But it doesn't discuss about path planning method.This research develops the application of Dijkstra's Algorithm and odometry as a navigation system for the fastest path in the warehouse robot delivering goods.This study applies the movement of the holonomic drive system and uses omnidirectional wheels [65].This research has an essential objective in combining the odometry system method and Dijkstra's algorithm to improve the efficiency of warehouse robot operations.The odometry system is used as a path planning method, where encoder or sensor-based odometry allows the robot to determine its position and orientation in a warehouse environment.With this knowledge, the robot can plan an efficient path and avoid obstacles.
In addition, this study also utilizes Dijkstra's algorithm to find the shortest path to maximize the efficiency of robot movement.In this context, Dijkstra's algorithm is used to speed up the process of finding the shortest path from the point of origin to the point of destination in a warehouse whose structure and condition can change.
Therefore, this research contributes to the development of warehouse robot technology by combining the odometry approach and Dijkstra's algorithm.Combining these two methods can increase the robot's operational efficiency, speed up the delivery time of goods, and reduce the potential for damage or errors that may be caused by ineffective navigation.This research also demonstrates the potential use of this technology in the warehouse and other logistics contexts, where efficient and accurate path planning is essential.

A. Omnidirectional Wheel and Odometry
Omni wheels are a special wheel design that has many wheels on the main wheel [66] [67].There are two types of wheels, namely large core wheels and small wheels on a large core wheel that is perpendicular to the core wheel axis [68] [69].In contrast to normal non-holonomic robots, holonomic omni-directional robots can move in all directions without changing the direction of the wheels [70] [71].The omni robot can move forward, backward, slide and rotate in a fixed position, so that the robot is able to maneuver more agile in tight corners [72][73] [74].Omni directional wheels are a type of holonomic mobile robot [75][76] [77].The kinematics of an omni wheel allows position changes between global coordinates and internal configurations [78][79] [80].
Odometry presents changes in data over time [81] [82].Odometry estimates position coordinates relative to the position of the actuator movement data to estimate changes in position coordinates to initial conditions [83] [84].In the wheeled robot odometry system, the sensor used is a rotary encoder to detect the number of wheel rotations [85] [86].Identification of errors is determined from the integration of velocity measurements against time in the position estimation process [87] [88].The robot's relative position can be estimated using the calculation of the number of pulses generated by the rotary encoder sensor for each unit of measure which is then converted into millimeters.The formula for the number of pulses for each freewheel movement is equations (1) and equation ( 2).The differential movement system is carried out by two wheels, namely the right and left wheels.The number of  _ for the right wheel is the ℎ  and the left wheel is the  .The distance between the two wheels is ℎ with distance traveled () and orientation angle (θ), as shown by equations ( 3), (4), and (5).

𝐾 𝑤ℎ𝑒𝑒𝑙 = 2𝜋𝑟
(1) Heading  is the angle in radians.Equation (5) shows that the heading value will be negative if the robot rotates counterclockwise and is positive if the robot rotates clockwise.If the distance and  are known, then the  and  coordinates are obtained using the trigonometry equation.Look at Fig. 1.From the illustration of Fig. 1, the robot coordinates are obtained with equation ( 6) and (7).After that, equations ( 8), ( 9), (10), and ( 11) can be obtained.
=   cos  (7) The direction error value of the robot towards the destination point is calculated by the Pythagorean theorem.The current position and distance to the destination point are calculated using equation ( 6) dan (7).Heading error can be calculated based on the heading of the robot. is the target bearing, namely the angle between the robot's current position and the destination points.Meanwhile, parallel lines are auxiliary lines that are parallel to the  and  .The value of  is obtained by the equation (11).
B. Dijkstra's Algorithm Dijkstra's algorithm is applied to find the shortest path on a directed graph [89][90].This algorithm can also be used for undirected graphs [91] [92].It looks for the shortest path in a number of steps [93] [94].It uses the greedy principle [95] [96].The greedy principle in Dijkstra's algorithm always chooses the position with the smallest weight and includes it in the solution set [97] [98].It performs calculations against all possibilities to find the smallest weight from each node to node [99] [100].The mechanism of Dijkstra's algorithm can be explained in the following steps: • Determine the starting point, then weight the distance from the first node to the nearest node one by one.Dijkstra's algorithm will develop the search for the smallest value step by step.
• Give a distance weight for each point, then set a value of 0 at the initial node and an infinite value for other nodes.
• Consider the untraversed neighboring nodes and calculate their distance from the departure point.If this distance is smaller than the previous distance, delete the old data, save and recalculate the distance data with the new distance.
• Mark the node that has been passed as a "passed node".Passed nodes will never be checked again.The distance that is stored is the last distance and the most minimal weight.
• Set "Node not passed" with the smallest distance from the departure node as the next "Departure Node" and repeat the steps

III. METHODOLOGY
The following Fig. 2 is a block diagram of the warehouse delivery robot system developed in this study.The Arduino microcontroller voltage source comes from a 12V battery which after the buck converter the voltage drops to 5V which is then supplied to the Arduino microcontroller and STM32f103 [101].The motor driver voltage source comes from a 12 V battery to obtain maximum motor rotation speed without going through a buck converter.MPU6050 sensor and DC motor internal encoder (RPM) require 5V voltage.Fig. 3 is the flowchart of the system.System stages include robot operation, trajectory mapping, data processing and movement or action of the robot [102].The first operation on the robot is carried out by the user, namely turning on the power button.Then the user chooses robot mode for mapping or mode for delivery (sender).The mapping area must be formed first so that it can then be traversed [103] [104].
Mapping is done by running the robot manually on its trajectory until it returns to its starting point.With a rotary encoder sensor that is processed using the odometry method, the position of the robot's movement can be recorded [105] [106].If the Robot Movement finds an intersection, the user must press the node button.The robot path is in the form of a graph consisting of "vertex" and "node".
Achmad Ubaidillah, Application of Odometry and Dijkstra Algorithm as Navigation and Shortest Path Determination System of Warehouse Mobile Robot Mapping result data is stored in the microcontroller's internal EEPROM [107].EEPROM was chosen as a storage medium because it has many benefits, including reliable design and performance and easy erasing and programming without disturbing the board.Then the user can carry out the sending process by pressing the keypad button according to the destination node.The robot will send to the destination node according to the previously mapped location.If it reaches the destination rack, the robot will stop.After placing the goods on the appropriate rack, the user presses a button on the keypad to order the robot to return to the starting point.Fig. 4 is the flowchart of robot speed control and shows the flowchart of 3-wheel speed regulation.The system begins by determining the , ,  values on the PID then the encoder sensor reads the motor speed.The result is an RPM value obtained through the calculation of treeomniwheel kinematics.This value is then processed by the PID and used as a PWM value to move the robot according to its destination.If the robot has not reached its destination, the process will continuously loop back to the initial process until the robot reaches its destination.If it reaches the destination, then the process is complete.5 is the flowchart of node mapping system.Retrieval of node data is carried out by the user by moving the robot manually.The first step determines the starting position or the position when the robot is in standby mode, and the motor is off.The robot must be reset first by pressing the reset button provided.Then the user must determine all the node points on the track, including the stops on each rack.The second step is to map the nodes by delivering the robot to each node by pressing the '#' key.The '#' key is pressed to save the coordinate value made at each robot stop.The last step is to press the '*' button.This is done if all nodes have been mapped, and all node data will be stored in EEPROM to proceed to the following process.In the process of using Dijkstra's algorithm, neighbors must first be identified at each node.The identification of neighboring nodes is made by entering each weight via the keypad.Fig. 5. Flowchart of node mapping Fig. 6 shows the process of weighting neighboring nodes.The process of assigning weights to neighboring nodes must be carried out according to the path that has been planned and converted to a data graph stored in a matrix variable, with as many dimensions as the nodes that have been stored.Initially, all element values will be assigned a temporary value, namely ∞.In the conversion process, the node elements that have neighbors are updated with the value of the elements while the other nodes still have a value of ∞.The updated value is the value of the distance between the nodes and their neighboring nodes.7 is the flowchart of Dijkstra Application.Fig. 7 is a flowchart of applying Dijkstra's algorithm to find the shortest route from several paths.The Dijkstra process compares all the path weights to be selected by: • Give the value of the weight of the distance from one node to another then determine the departure node with a value of 0 and ∞ at the other nodes.
• If node A to B has a distance value of 5 and from node B to point C has a value of 2. So, the distance to node C through node B is 5 + 2 = 7.If this distance is smaller than the previously recorded distance, delete the old data and resave the new distance value.
• Mark the nodes that have been skipped as 'skipped nodes'.Missed nodes will never be checked again and the distance stored is the last distance from the departure node and the minimum distance value.
• Determine the node that has not been passed with the smallest distance value from the departure node as the next departure node and continue by repeating step 3. Then check again if the destination is not the same as the source, then  =  + 1 and the process returns to the beginning.If the destination is the same as the source, the process will continue to determine whether  < .If yes, it will be counted until the last stage, then the process is complete and the data is saved.RESULT AND DISCUSSION As in research [64], which applied Dijkstra's algorithm to a wheeled mobile robot in a soccer robot game, this research applies and combines the Odometry method as a path mapper with Dijkstra's algorithm as a finder of the shortest path applied to warehouse robots.This research examines the movement of warehouse robots using the Djikstra algorithm and odometry as a mapping navigation system.The robot has dimensions of 30 cm in diameter and 14 cm in height.It uses a keypad as the tool's operating buttons and a 20x4 LCD as an interface.Testing the odometry method aims to determine the actual position of the robot, bearing angle (direction), and the distance from the current position of the robot to a predetermined destination point.The odometry method is used to measure changes in the position of a moving object, such as a warehouse robot in this case, which is based on data analysis from sensors installed on the robot.
Odometry, in the context of robotics, usually involves the use of sensors such as wheel encoders, which measure the rotation of the wheels and therefore the movement of the robot.Using this data, in combination with knowledge of wheel size and wheel-to-movement ratio, the odometry method can estimate the robot's position.
In this test, the odometry method refers to certain mathematical equations related to the movement and orientation of the robot.For example, a change in position can be calculated by integrating the speed of the robot against time, and a change in orientation can be calculated by considering the number of revolutions of the wheels and the width of the distance between the wheels.At this stage, testing is done manually to verify the accuracy of the odometry method.This involves performing calculations based on mathematical equations and comparing the results with the actual data from the robot's sensors.By carrying out tests like this, it can be ensured that the odometry method works effectively and reliably for use in warehouse robot navigation systems.
The accuracy of the odometry method is very important because it is the basis for the robot to plan routes and navigate its environment.If the estimated position or orientation of the robot is inaccurate, it may cause the robot to crash into obstacles or fail to reach its destination.Therefore, it is important to carry out thorough testing and verification of this method.The first test is three omni directions.This test aims to determine and compare the speed of the three wheels used, namely 1, 2, and 3 which is then multiplied by a certain multiplier, in this case the multiplier factor is 100 rpm.The following is an example of a calculation involving bearing parameters calculated using the odometry method.Table I is a three omni-direction calculation based on angles. is the speed of the robot obtained from the encoder sensor on each motor.

Calculation
The next result is trajectory mapping.The purpose of mapping is to find out the coordinates of each node and the distance between nodes.Then the process of determining the shortest path is done by Dijkstra's algorithm.
In the mapping process, the selection of the position of the node point is determined by the user by pressing the (#) button.The coordinate value of the node will be read and stored in the nodeMapp variable.The nodeMapp variable is a matrix variable with dimensions of 2x50, where row 0 is used to store  values and row 1 to store  values.The "nodeCount" variable will store the total value of the many nodes stored.If the user presses ( * ), the mapping will stop and continue to the next step.Fig. 13 shows the track scheme used and mapped.Table II is the coordinate position value at each node.The data is coordinate values in millimeters resulting from direct mapping.The data will then be converted to the path graph and determine whether the node has neighbors.
The main variables that will be used as data containers are "neighbourn" and "graphMapp".The "neighbourn" variable is used to store neighboring node data.The procedure for entering neighboring nodes is done by pressing the number on the keypad available on the robot.if the ( * ) button is pressed, it will switch to the next node to be entered by its neighboring nodes.After all the neighboring nodes have been entered, the program will continue to convert the data into a path graph.
The "graphMapp" variable is the result of calculating the distance from the selected node to its neighboring nodes by applying the odometry method, the results of which will be used as weights for calculations in Dijkstra.if the selected node has no neighbors, then the value will be left 0 and not changed.Only nodes that have neighbors will have a value greater than zero as shown in Fig. 14.Fig. 14 is a path scheme obtained from the results of the "graphMapp" variable data.
Following is an experiment from the initial node = 0 and the destination node = 7.Then there are 3 path routes that can be traversed to node 7. Then the shortest path is produced, Achmad Ubaidillah, Application of Odometry and Dijkstra Algorithm as Navigation and Shortest Path Determination System of Warehouse Mobile Robot namely (0-3-7).Table III shows the results of comparing distances and times from node 0 to node 7 using Dijkstra's algorithm without Dijkstra.The test results show that using Dijkstra's algorithm, the robot is able to cover a distance of 780 mm.However, if using other routes (for example, routes designed manually or using a different path planning algorithm), the distance traveled by the robot is 1100 mm.That is, the use of Dijkstra's algorithm shows a higher effectiveness of 29.09%, seen from the decrease in the distance traveled.
In addition, Dijkstra's algorithm is also effective in designing the shortest path from node 0 to node 7. Based on the data, using Dijkstra's algorithm, the robot can reach its destination by traveling a distance of 1570 mm and a time of 18.5 seconds.Without using Dijkstra's algorithm, the distance covered is 1900 mm with a time of 23.7 seconds.This means that with Dijkstra's algorithm, we are able to get an effectiveness of 17.37% in terms of distance and time traveled.
This comparison shows how Dijkstra's algorithm can significantly improve the effectiveness and efficiency of warehouse robot operations.In this context, effectiveness is measured in terms of decreasing the distance traveled and decreasing the time required to reach the goal.Therefore, these results confirm the superiority of Dijkstra's algorithm in planning warehouse robot paths compared to other methods.

V. CONCLUSION
Based on this research, it can be concluded that the combination of the odometric system method and Dijkstra's algorithm can be applied to warehouse robots for goods delivery and is proven to be more effective and efficient both in distance and time compared to systems without Dijkstra.The results showed that the implementation of Dijkstra's algorithm resulted in the fastest running, which was 17% shorter distance and 33% faster time than the line follower system without Dijkstra's application.
The limitation of this research is that testing and application of the odometry system and Dijkstra's algorithm have not been carried out on a large scale or prototype.In the existing literature, similar studies have been carried out on a larger scale, involving different types of barriers and other environmental variables.However, this research is more focused on implementing and incorporating the odometry system and Dijkstra's algorithm.
The practical implication of this research is that this technology, if widely applied, can generate significant cost efficiencies in warehouse operations.This efficiency can be measured in terms of absorption of shooting range and travel time, which has a direct impact on reducing operational costs and increasing productivity.
For future research, it is recommended to carry out the test in an authentic warehouse considering the mass of goods and the speed of delivery.In addition, consideration of the GPS for large areas and other shortest displacements also needs to be considered.
In closing, this study shows great potential in using the odometry system and Dijkstra's algorithm in the context of warehouse robots.Despite the limitations in the research scale, the results make an essential contribution in this field and pave the way for further research that can optimize warehouse operations with this technology.
[50].Achmad Ubaidillah, Application of Odometry and Dijkstra Algorithm as Navigation and Shortest Path Determination System of Warehouse Mobile Robot

Fig. 2 .
Fig. 2. Block diagram of the robotic system

Fig. 4 .
Fig.4.Flowchart of robot speed control Fig.5is the flowchart of node mapping system.Retrieval of node data is carried out by the user by moving the robot manually.The first step determines the starting position or the position when the robot is in standby mode, and the motor is off.The robot must be reset first by pressing the reset button provided.Then the user must determine all the node points on the track, including the stops on each rack.The second step is to map the nodes by delivering the robot to each node by pressing the '#' key.The '#' key is pressed to save the coordinate value made at each robot stop.The last step is to press the '*' button.This is done if all nodes have been mapped, and all node data will be stored in EEPROM to proceed to the following process.In the process of using

Fig.
Fig.7is the flowchart of Dijkstra Application.Fig.7is a flowchart of applying Dijkstra's algorithm to find the shortest route from several paths.The Dijkstra process compares all the path weights to be selected by:

Fig. 7 .
Fig. 7. Flowchart of Dijkstra ApplicationFig.8is the flowchart of trajectory.Fig.8is the process for obtaining trajectory data from Dijkstra's algorithm.The main parameter used is the value of the "target" variable which stores the value of the destination node.The weight of the path is then searched for and stored in the "Trajectory" variable until the "destination" variable value is the same as the initial or source node value.Trajectory data is taken from Trajectory data [] or lines in the graph.The process begins with the initialization of the source, destination and variable  which is then in the decision stage if  >  then the process is complete.If  <  then the trajectory [] is the same as the data trajectory [ − ].Then check again if the destination is not the same as the source, then  =  + 1 and the process returns to the beginning.If the destination is the same as the source, the process will continue to determine whether  < .If yes, it will be counted until the last stage, then the process is complete and the data is saved.

Fig. 8 .
Fig. 8. Flowchart of Trajectory The hardware requirements for realizing the wheeled robot planning in this study are: • STM32F103C8T6 • Motor DC • Battery managemen System 12 V • Driver L298N • 3 Omni Wheel • Motor dc JGA 25 100 RPM • Buck Converter • Acrylic 3mm • Sensor of Rotary Encoder • Sensor of IMU • Sensor of encoder RPM internal motor IV.RESULT AND DISCUSSION

Fig. 9 ,
Fig. 10, Fig. 11 and Fig. 12 are the view of robot.Achmad Ubaidillah, Application of Odometry and Dijkstra Algorithm as Navigation and Shortest Path Determination System of Warehouse Mobile Robot

Fig. 9 .
Fig. 9. Front view of the robot

TABLE I .
TESTING OF THREE OMNI-DIRECTION

TABLE II .
MAPPING RESULT

TABLE III .
RESULTS OF COMPARISON OF ROUTE DISTANCE DATA WITH DIJKSTRA AND WITHOUT DIJKSTRA