Robot control system, transport system, and robot control method
The robot control system improves self-position estimation accuracy by combining different sensor types and using database-corrected odometry data to maintain precision when image processing fails, addressing the accuracy issues in existing self-localization methods.
Patent Information
- Application Number
- JP2022079239
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2022-05-13
- Publication Date
- 2026-01-15
- Estimated Expiration
- 2042-05-13
AI Technical Summary
Existing self-localization methods for robots, such as those using Visual SLAM and odometry, suffer from accuracy issues due to errors in odometry-based self-location estimation, which accumulate when the first self-location cannot be obtained, leading to lower precision compared to image processing-based methods.
A robot control system that utilizes a server to estimate the robot's position using a combination of different sensor types, including a first sensor for high-accuracy but error-prone image processing and a second sensor for lower-accuracy but less error-prone odometry, by calculating an estimated position based on correspondence information and velocity/attitude ratios stored in a database.
Enables accurate self-position estimation even when the first sensor fails, maintaining the same accuracy as the high-accuracy sensor by correcting the second sensor's data with stored correspondence information, thereby enhancing overall positioning precision.
Smart Images

Figure 0007799554000002 
Figure 0007799554000003 
Figure 0007799554000004
Abstract
Description
[Technical Field]
[0001] The present invention relates to a technique for correcting the self-position of a robot. [Background technology]
[0002] As a self-localization method for automatic guided vehicles (AGVs), a method that combines multiple self-localization methods to improve accuracy and robustness is known, such as a technology that combines a Visual SLAM (SLAM: Simultaneous Localization and Mapping) method (first self-localization method) that uses image feature points with a Wheel Odometry (hereinafter referred to as odometry) method (second self-localization method) that uses wheel rotation information (encoder information).
[0003] Patent document 1 discloses a self-location estimation method in which a calculation accuracy map is created in advance for a first self-location obtained by an image processing-based self-location estimation process and a second self-location obtained by an odometry-based self-location estimation process, and the calculation accuracy recorded in the calculation accuracy map is used to determine the combination ratio of the first self-location and the second self-location.
[0004] On the other hand, FIG. 5 of Patent Document 1 discloses a method for estimating the self-location using only the second self-location when a predetermined number of landmarks or more cannot be detected, i.e., when the first self-location cannot be obtained due to an error.
[0005] Patent Document 2 and Non-Patent Document 1 disclose the basic function of Visual SLAM using image feature points, specifically, a function of detecting a group of image feature points from consecutive camera images and tracking the group of feature points across multiple frames to estimate the vehicle's own position while creating a map. Furthermore, they also disclose a function of estimating the vehicle's own position with high accuracy by matching camera images with a map created using the basic function of Visual SLAM. [Prior art documents] [Patent documents]
[0006] [Patent Document 1] JP 2021-96731 A [Patent Document 2] JP 2017-146952 A [Non-patent literature]
[0007] [Non-Patent Document 1] Shinya Sumikura, Mikiya Shibuya, and Ken Sakurada, "OpenVSLAM: A Versatile Visual SLAM Framework", Open Source Software Competition, October 21-25, 2019, Nice Summary of the Invention [Problem to be solved by the invention]
[0008] Patent Document 1 discloses a method for estimating a self-location using only a second self-location when the first self-location cannot be obtained due to an error. The second self-location obtained by the self-location estimation process using the odometry method is susceptible to the influence of friction or unevenness of the road surface (or floor surface) or wear and tear on the wheels, and has lower accuracy of position estimation than the first self-location obtained by the self-location estimation process using the image processing method.
[0009] Therefore, when the second self-location is used, there is a problem that errors accumulate compared to the first self-location that would have been obtained if no errors had occurred.
[0010] Therefore, the present invention has been made in consideration of the above problems, and aims to improve the accuracy of estimating self-position using information calculated from the second sensor when controlling a robot having a first sensor and a second sensor of different types, when the first self-position calculated from the first sensor cannot be used. [Means for solving the problem]
[0011] The present invention is a robot control system in which a server having a processor and a memory estimates the position of a mobile robot, the mobile robot having a first sensor unit that acquires first sensing information from the running state of the mobile robot, and a second sensor unit that has a sensor different from the first sensor unit and acquires second sensing information from the running state of the mobile robot, the server storing first running state information including a first position and a first attitude at the first position obtained from the first sensing information, and a second velocity and a second attitude of the mobile robot obtained from the second sensing information. The mobile robot has a memory unit that stores correspondence information indicating the correspondence between the first position and second running state information including angular velocity information, in association with the first position, and a calculation unit that is capable of calculating an estimated position of the mobile robot based on the first running state information and the second running state information, wherein the calculation unit calculates the first position and the first attitude information based on first sensing information acquired from the first sensor unit, and if an error occurs when calculating the first position, calculates the estimated position of the mobile robot based on the second running state information acquired from the second sensing information and the correspondence information. [Effects of the Invention]
[0012] Therefore, even if the first position cannot be obtained from the first sensing information of the first sensor unit due to an error, the present invention can calculate the position of the mobile robot with the same accuracy as the first position using the second sensing information of the second sensor unit and the velocity ratio and angular velocity ratio of the correspondence information.
[0013] The details of at least one implementation of the subject matter disclosed herein are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the disclosed subject matter will become apparent from the following disclosure, drawings, and claims. [Brief explanation of the drawings]
[0014] [Figure 1A] FIG. 2 shows the first embodiment of the present invention and is a diagram illustrating a motion model of the robot. [Figure 1B] FIG. 2 shows the first embodiment of the present invention and is a diagram illustrating the relationship between the trajectory of the robot and its own position. [Figure 2] FIG. 2 shows the velocity and angular velocity of the robot according to the first embodiment of the present invention. [Figure 3A] FIG. 1 is a block diagram illustrating an example of hardware of a robot control system according to a first embodiment of the present invention. [Figure 3B] FIG. 1 is a perspective view of a robot according to a first embodiment of the present invention. [Figure 3C] FIG. 1 is a side view of a robot according to a first embodiment of the present invention. [Figure 4] FIG. 1 is a block diagram illustrating an example of software for a robot control system according to a first embodiment of the present invention. [Figure 5] 4 is a flowchart illustrating an example of a self-position correction process according to the first embodiment of the present invention. [Figure 6] 10 is a flowchart illustrating an example of a database search process according to the first embodiment of the present invention. [Figure 7A] FIG. 4 illustrates the first embodiment of the present invention and is a diagram illustrating an example of correction information in the case of going straight. [Figure 7B] FIG. 4 shows the first embodiment of the present invention and is a diagram illustrating an example of correction information in the case of a right turn. [Figure 7C] 10 is a flowchart illustrating an example of correction information in a database according to the first embodiment of the present invention. [Figure 8] FIG. 10 illustrates the first embodiment of the present invention and is a diagram illustrating an example of correction information for each movement type in the case of turning right. DETAILED DESCRIPTION OF THE INVENTION
[0015] Hereinafter, embodiments of the present invention will be described with reference to the drawings. The examples are illustrative for explaining the present invention, and appropriate omissions and simplifications have been made for clarity of explanation. The present invention can be implemented in various other forms. Unless otherwise specified, each component may be singular or plural. The position, size, shape, range, etc. of each component shown in the drawings may not represent the actual position, size, shape, range, etc., in order to facilitate understanding of the invention. Therefore, the present invention is not necessarily limited to the position, size, shape, range, etc. disclosed in the drawings.
[0016] Examples of various types of information may be described using expressions such as "table," "list," and "queue," but the various types of information may also be expressed using data structures other than these. For example, various types of information such as "XX table," "XX list," and "XX queue" may also be expressed as "XX information." When describing identification information, expressions such as "identification information," "identifier," "name," "ID," and "number" are used, but these are interchangeable.
[0017] When there are multiple components with the same or similar functions, they may be described using the same reference numerals with different subscripts. When there is no need to distinguish between these multiple components, the subscripts may be omitted.
[0018] In the embodiments, processing performed by executing a program may be described. Here, a computer executes the program using a processor (e.g., a CPU or a GPU) and performs processing defined by the program using storage resources (e.g., a memory) and interface devices (e.g., a communication port). Therefore, the entity performing the processing by executing the program may be the processor. Similarly, the entity performing the processing by executing the program may be a controller, device, system, computer, or node having a processor. The entity performing the processing by executing the program may be any computing unit, and may include a dedicated circuit that performs specific processing. Here, the dedicated circuit may be, for example, an FPGA (Field Programmable Gate Array), an ASIC (Application Specific Integrated Circuit), or a CPLD (Complex Programmable Logic Device).
[0019] A program may be installed on a computer from a program source. The program source may be, for example, a program distribution server or a computer-readable storage medium. When the program source is a program distribution server, the program distribution server may include a processor and storage resources for storing the program to be distributed, and the processor of the program distribution server may distribute the program to be distributed to other computers. In addition, in the embodiments, two or more programs may be realized as one program, or one program may be realized as two or more programs. [Example]
[0020] The present invention allows an autonomously traveling unmanned guided vehicle to restore its own position with the same accuracy as the first self-position from the driving state calculated from the second sensor, even if the first self-position (self-position 1) calculated from the first sensor cannot be obtained due to an error.
[0021] In this embodiment, an automatic guided vehicle (AGV) is referred to as a robot. The first sensor and the second sensor are configured with different types of sensors, and the position accuracy calculated from the first sensor is higher than the position accuracy calculated from the second sensor.
[0022] The method for restoring the self-position will be explained using Figure 1A. Equation 100 shown in Figure 1A is a motion model of a two-wheel differential drive robot 300. The robot 300 moves in a two-dimensional space of XY and changes its direction of travel by turning. The position of the robot 300 is indicated by x and y coordinates, the direction is indicated by θ, the speed is indicated by ν, and the angular velocity is indicated by ω.
[0023] The above equation 100 is an equation that takes the position and orientation (x(t-1), y(t-1), θ(t-1)), velocity (ν(t)), and angular velocity (ω(t)) of the robot 300 at time t=1, 2, 3, 4, ... as input and calculates the position and orientation (x(t), y(t), θ(t)) of the robot 300 at the next step (time), i.e., an equation that expresses the trajectory of the robot 300.
[0024] In this embodiment, the variable x and subscript t in equation 100 are written as x(t). Variables y, θ, etc. and subscripts are written as y(t) and θ(t). The subscript (t) may also be omitted.
[0025] 1B is a diagram showing the relationship between the trajectory and self-position of robot 300. In the figure, trajectory 101 is the trajectory of self-position 1 calculated from velocity 1 (ν1) and angular velocity 1 (ω1) (110) obtained from a first sensor (described later). Trajectory 102 is the trajectory of self-position 2 calculated from velocity 2 (ν2) and angular velocity 2 (ω2) (111) obtained from a second sensor.
[0026] The sensor for self-position 1 is highly accurate, but is prone to errors called self-position lost, in which the sensor loses track of self-position 1. On the other hand, the sensor for self-position 2 does not generate errors, but is prone to errors in the self-position.
[0027] As described above, the velocity and angular velocity obtained from two types of sensors with different performance and accuracy do not necessarily match, so there is a discrepancy 103 between the two trajectories. The discrepancy 103 is the cumulative distance resulting from the difference between velocity 1 (ν1) and velocity 2 (ν2) and the difference between angular velocity 1 (ω1) and angular velocity 2 (ω2), which are input at each step (t=1, 2, 3, 4, ...).
[0028] To perfectly match the above trajectories 101 and 102, it is sufficient to multiply the velocity ratio (ν1 / ν2) and the angular velocity ratio (ω1 / ω2) by velocity 2 (ν2) and angular velocity ratio (ω2), respectively, so that velocity 2 (ν2) = velocity 1 (ν1) and angular velocity 2 (ω2) = angular velocity 1 (ω1), as shown in equation 112 in FIG. 1B.
[0029] However, in reality, it is difficult to perfectly match the trajectory 101 and the trajectory 102, so the following method is used to attempt to approximate the trajectories.
[0030] First, the velocity ratio (ν1 / ν2) and angular velocity ratio (ω1 / ω2) when the self-position 1 is obtained normally are linked to the position and posture of the robot 300, velocity 2, and angular velocity 2 (x, y, θ, ν2, ω2) and registered as correction information in the database (hereinafter referred to as DB).
[0031] If the self-position 1 cannot be obtained due to an error or the like, the speed ratio and angular velocity ratio that are closest to the current robot state (x, y, θ, ν2, ω2) are searched for and used for correction from the speed ratios and angular velocity ratios registered in the DB. Specifically, the speed 1 and angular velocity 1 that would have been obtained if no error had occurred are calculated by approximating them using the following formulas.
[0032] Speed 1 (approximation) = Speed 2 × Speed ratio obtained by searching the DB Angular velocity 1 (approximation) = angular velocity 2 × angular velocity ratio obtained by searching the DB
[0033] By applying the velocity 1 (approximation) and angular velocity 1 (approximation) calculated from the above equation to the above equation 100, the self-position 1 (approximation) can be calculated. Therefore, with this method, even if the self-position 1 cannot be obtained due to an error, a self-position (corrected self-position) with the same accuracy as the self-position 1 can be restored from the velocity and angular velocity at the self-position 2. Note that the self-position 2 indicates the position and orientation when an error occurs when the robot 300 acquires the self-position 1.
[0034] The hardware configuration of a robot 300 and a robot control system according to an embodiment of the present invention will be described with reference to Figures 3A to 3C. Figure 3A is a block diagram showing an example of hardware for a robot control system. Figure 3B is a perspective view of the robot 300, and Figure 3C is a side view of the robot 300.
[0035] The robot control system of the present invention is composed of a robot 300 and a server 320. Although this embodiment will be described using a simple example of one robot and one server, it is also applicable to a large-scale robot control system with multiple robots 300 and multiple servers 1.
[0036] The robot 300 is an automatic guided vehicle (AGV) intended to transport cargo in a logistics warehouse. The robot 300 is composed of a stereo camera 301, wheels 303 (drive wheels), an encoder 302, a lifter 304 for lifting and lowering cargo, a wheel motor 306 for driving the wheels, a battery 305, a PC1 (307), a power source 308, and driven wheels (not shown) for supporting the load.
[0037] The PC1 (307) is a well-known computer that includes a CPU, memory, a storage device such as an SSD (Solid State Drive), Wi-Fi (or a wireless communication unit), etc. The robot 300 of this embodiment is a differential two-wheel robot that moves forward and turns using two wheels 303, and includes two sets of wheels 303, encoders 302, and wheel motors 306.
[0038] The two wheels 303 are arranged parallel to the direction of travel, and each wheel is fitted with two encoders 302. A battery 305 supplies power to a wheel motor 306, and a power supply 308 supplies power to PC1 (307).
[0039] The server 320 is configured with a PC2 (321) and a power supply 322. The PC2 (321) is a well-known computer configured with a CPU, memory, SSD, WiFi, and the like. The robot 300 and the server 320 are connected via a wireless LAN, and are capable of communicating using a predetermined protocol (for example, TCP).
[0040] The robot 300 of this embodiment is equipped with two types of sensors for recognizing its own position. The first sensor is a stereo camera 301. In this embodiment, the server 320 calculates its own position (self-position 1) from the images taken by the stereo camera 301 using the Visual SLAM function described in Non-Patent Document 1. The Visual SLAM function will be described later.
[0041] The second sensor is a pair of encoders 302. The pair of encoders 302 provide the rotation angles of the left and right wheels 303, and the server 320 calculates the speed and angular velocity from the encoder values. The method for calculating the self-position 1 will be described later.
[0042] Next, the software configuration of the robot 300 and the robot control system according to the first embodiment of the present invention will be described with reference to Fig. 4. Fig. 4 is a block diagram showing an example of software for the robot control system.
[0043] In the figure, block 400 indicates the software configuration that runs on the robot 300, and block 420 indicates the software configuration that runs on the server 320. These pieces of software run on a Linux OS (not shown).
[0044] First, a description will be given of a method for calculating the self-position 1. The image acquisition and distribution unit 401 is a program that acquires stereo images from the stereo camera 301 and distributes them to the Visual SLAM 422.
[0045] Visual SLAM 422 is a program that calculates the self-position 1 using image feature points extracted from stereo images, and functions as a self-position 1 calculation unit. A representative Visual SLAM program is "OpenVSLAM: A Versatile Visual SLAM Framework" in Non-Patent Document 1.
[0046] This program has two modes: one in which map creation and self-localization are performed simultaneously, and the other in which a map created in the first mode is read and the map is compared with camera images to perform self-localization. Visual SLAM 422 in this embodiment is intended to operate in the latter mode.
[0047] Specifically, the Visual SLAM 422 reads a map 421 created in advance, and compares the map 421 with stereo images obtained from the stereo camera 301 to estimate the self-position 1 .
[0048] Visual SLAM 422 outputs the self-position 1 and an error signal as a result of program processing. The self-position 1 is represented by (x, y, θ), where x and y indicate the coordinates of the robot 300 on the map 421, and θ is the orientation of the robot 300 (Equation 100 in FIG. 1A).
[0049] An error signal is output from Visual SLAM 422 when matching between map 421 and stereo camera images fails. That is, Visual SLAM 422 sets the error signal to "1" when self-position 1 cannot be obtained, and sets the error signal to "0" when self-position 1 is obtained and outputs it. Self-position 1 and the error signal are delivered to self-position correction unit 426 at a frequency of, for example, 30 times per second.
[0050] Next, a method for calculating velocity 2 and angular velocity 2 from the encoder 302 will be described. The encoder value acquisition and distribution unit 402 is a program that reads the encoder value indicating the rotation angle of the wheel 303 from the encoder 302 and distributes it to the velocity 2 and angular velocity 2 calculation unit 423.
[0051] The velocity 2 and angular velocity 2 calculation unit 423 obtains and distributes the encoder values of each of the left and right wheels 303 approximately 100 times per second. The velocity 2 and angular velocity 2 calculation unit 423 calculates the travel distance per unit time of each wheel 303 from the increase or decrease in the encoder value per unit time.
[0052] The distance traveled when the wheel 303 makes one rotation (360 degrees) can be calculated by multiplying the diameter of the wheel 303 by the ratio of the circumference of the wheel to the circumference of the robot 300. Therefore, the travel distance of the robot 300 can be calculated by calculating the rotation angle of the wheel 303 from the output of the encoder 302.
[0053] The velocity 2 and angular velocity 2 calculation unit 423 calculates the velocity 2 (ν2) and angular velocity 2 (ω2) of the robot 300 from equation 200 in FIG. 2 when the travel distance of the left wheel is dl and the travel distance of the right wheel is dr, and delivers the velocity 2 (ν2) and angular velocity 2 (ω2) to the self-position correction unit 426.
[0054] The self-position correction unit 426 is a program that receives as input the self-position 1 and error signal delivered from the Visual SLAM 422, and the velocity 2 and angular velocity 2 delivered from the velocity 2 and angular velocity 2 calculation unit 423, and outputs a corrected self-position (estimated position and estimated attitude) using correction information 702 stored in a database (DB) 425 when the self-position 1 cannot be obtained due to an error. Details of this program will be described later.
[0055] On the other hand, the path following program 427 is a program that uses the corrected self-position and path information to make the robot 300 travel along a preset path. The path following program 427 generates information for driving the wheel motors 306, and drives the wheel motors 306 via the motor drive information distribution unit 424 and the motor drive unit 403. Note that the path following program 427, the motor drive information distribution unit 424, and the motor drive unit 403 can be realized by applying well-known or publicly known technologies, so detailed descriptions of their functions will be omitted. This concludes the description of the software blocks.
[0056] Next, the details of the processing performed by the self-position correction unit 426 will be explained using Fig. 5. Fig. 5 is a flowchart showing an example of the self-position correction processing. This processing consists of three processes: a main loop processing (500), a correction information registration processing 510, and a self-position correction processing 520.
[0057] The correction information registration process 510 is a process for registering correction information 702 (see Figure 7C) for restoring a self-position (corrected self-position) with the same accuracy as the first self-position (self-position 1) from the velocity and angular velocity when the error signal becomes "1", and the self-position correction process 520 is a process for correcting the self-position using the registered correction information.
[0058] First, the main loop processing (start 500 to end 508) will be described. The program starts at start 500, and in the subsequent processing 501, the self-position correction unit 426 initializes the variable "previous self-position" to (0, 0, 0). "Previous self-position" is a variable that represents the position and orientation (x, y, θ) of the robot 300, and stores the position and orientation of the robot 300 one step before.
[0059] In the next process 502, the self-position correction unit 426 waits until it receives the self-position 1 and an error signal. The self-position 1 and the error signal are transmitted from the Visual SLAM 422 at a frequency of, for example, 30 times per second.
[0060] Self-position 1 is the position and orientation (x, y, θ) of the robot 300 obtained from Visual SLAM 422. The error signal indicates that no error has occurred when it is "0," and indicates that an invalid value has been set for self-position 1 when it is "1" due to the occurrence of an error.
[0061] After receiving the self-position 1 and the error signal, the self-position correction unit 426 proceeds to process 503. In process 503, the self-position correction unit 426 acquires the velocity 2 and angular velocity 2 transmitted from the velocity 2 and angular velocity 2 calculation unit 423. The velocity 2 and angular velocity 2 are the velocity 2 and angular velocity 2 of the robot 300 calculated from the rotation information of the wheels 303, as described above.
[0062] In process 504, the conditions that the error signal is "0" (self-position 1 was obtained without an error) and the DB registration flag (described later) is "1" (registration is performed in correction information 702 of database 425) are determined, and if the determination result is Yes, correction information registration process 510 is executed.
[0063] The DB registration flag is assumed to be set to "0" or "1" by the user in a program startup argument, but may be set to "0" or "1" according to a predetermined condition during program execution. Details of the correction information registration process 510 will be described later.
[0064] If the determination result of process 504 is No, a determination is made in process 505 as to whether or not to execute self-position correction process 520. Specifically, if the error signal is "1" (an error has occurred and self-position 1 could not be obtained), self-position correction process 520 is executed. Details of self-position correction process 520 will be described later.
[0065] In the next process 506, the self-position correction unit 426 updates the previous self-position so that the self-position 1 can be used as the previous self-position in the next step. The self-position correction unit 426 also outputs the self-position 1 as the corrected self-position. The corrected self-position is the position and orientation (x, y, θ) of the robot 300 after correction in the self-position correction process 520, and if the error signal is "0", the self-position is 1 without correction.
[0066] In the next process 507, a program end determination is made, and if Yes, the program proceeds to end 508 and ends. If No, the program returns to process 502 and continues. The program end determination determines whether or not the self-position correction unit 426 has satisfied a preset end condition.
[0067] In this embodiment, a series of processes from process 502 to process 507 is referred to as one step. One step is executed, for example, at a 1 / 30 second cycle, which is the reception cycle of self-position 1. The above is the main loop process.
[0068] Next, a description will be given of the correction information registration process 510. This process is executed if the self-position 1 is correctly obtained without any error occurring in the process 504 and the DB registration flag is set to "1" (valid).
[0069] In process 511, the self-position correcting unit 426 calculates velocity 1 (ν1) and angular velocity 1 (ω1) at each time t from the previous self-position and self-position 1 using the following equation 201.
[0070]
number
[0071] Specifically, let previous self-position = (x(t-1), y(t-1), θ(t-1)), let self-position 1 = (x(t), y(t), θ(t)), and substitute Δt = 1 / 30 seconds into the above equation 201 to calculate velocity 1 (ν1) and angular velocity 1 (ν1).
[0072] In the next process 512, the self-position correction unit 426 calculates the velocity ratio from velocity 1 and velocity 2, and the angular velocity ratio from angular velocity 1 and angular velocity 2. Furthermore, in the next process 513, the self-position correction unit 426 links the velocity ratio and angular velocity ratio to the previous self-position (x(t-1), y(t-1), θ(t-1)), velocity 2 (ν2), and angular velocity 2 (ω2), and registers them in the correction information 702 of the DB 425. This completes the correction information registration process 510.
[0073] Next, a description will be given of the self-position correction process 520. The self-position correction process 520 is executed when an error occurs in the process 505 and the self-position 1 cannot be obtained.
[0074] In process 521, the self-position correction unit 426 uses the previous self-position (x, y, θ), velocity 2 (ν2), and angular velocity 2 (ω2) as search keys to search for the most matching velocity ratio and angular velocity ratio from the correction information 702 in the DB 425. Details of this process will be described later.
[0075] If a speed ratio and an angular velocity ratio are obtained as search results, the process branches to Yes in the determination of process 522. If a speed ratio and an angular velocity ratio are not obtained, the process branches to No, and in process 532, speed ratio = 1.0 and angular velocity ratio = 1.0 are set. In the next process 524, the estimated values of speed 1 and angular velocity 1 that would have been obtained if no error had occurred are calculated using the following equation 202.
[0076] Speed 1 = Speed 2 x Speed ratio Angular velocity 1 = angular velocity 2 × angular velocity ratio (202)
[0077] In the next process 525, the self-position correction unit 426 calculates the self-position 1 (estimated position and estimated attitude) from the previous self-position, the estimated value of velocity 1, and the estimated value of angular velocity 1 using equation 100 in Fig. 1. Specifically, the self-position 1 (x(t), y(t), θ(t)) is calculated using (x(t-1), y(t-1), θ(t-1)) = previous self-position, ν(t) = velocity 1 (ν1), ω(t) = angular velocity 1 (ω1), and Δt = 1 / 30th of a second.
[0078] When the process 525 is completed, the process proceeds to the process 506. The self-position correction process 520 is completed as described above.
[0079] If an error continues to occur, the self-position correction unit 426 searches for correction information 702 using the self-position 1 (estimated position and estimated attitude), the velocity 2 (ν2) at the estimated position, and the angular velocity 2 (ω2) at the estimated attitude, and obtains the velocity ratio and angular velocity ratio from the search results as described above.
[0080] Then, the self-position correction unit 426 calculates an estimated value of velocity 1 (ν1) at the estimated position and an estimated value of angular velocity 1 (ω1) at the estimated attitude from the acquired velocity ratio and angular velocity ratio, velocity 2 (ν2) at the estimated position, and angular velocity 1 (ω2) at the estimated attitude, and calculates self-position 1 based on the calculated estimated value of velocity 1 (ν1) at the estimated position and the estimated value of angular velocity 1 (ω1) at the estimated attitude.
[0081] Next, details of the DB search process of process 521 in Fig. 5 will be explained using Fig. 6. This process is implemented as a function, for example, and an argument 600 in the figure is an argument of the function.
[0082] The position and orientation (x, y, θ) of the robot 300 are set as the search keys ix, iy, iθ in the arguments, the velocity 2 (ν2) and angular velocity 2 (ω2) are set as inv2, iω2, the search ranges s1, s2, s3, s4, s5 are set as the search ranges of ix, iy, iθ, inv2, iω2, and mode is set as mode=0 to return the velocity and angular velocity with the highest degree of match, and modo=1 to return the average of the matched velocity and angular velocity, and this function is executed by setting it as an argument.
[0083] In process 601, the self-position correction unit 426 searches for the velocity ratio and angular velocity ratio near the current position (x, y) of the robot 300 from the velocity ratios and angular velocity ratios stored in the correction information 702 of the DB 425 using the following conditional expression 203.
[0084] (ix-s1 <x<ix+s1) and (iy-s2<y<iy+s2) ··(203)
[0085] Note that s1 and s2 are constants for searching for data in the vicinity (predetermined range) of the positions ix and iy, which are search keys, and are set in advance. If the self-position correcting unit 426 finds even one velocity ratio and angular velocity ratio, it branches to Yes in process 602, and if not, it branches to No.
[0086] In process 603, the self-position correction unit 426 further narrows down the search to find records from the correction information 702 found in the search that satisfy the following conditional expressions 204 regarding the direction, velocity ratio, and angular velocity ratio.
[0087] (iθ-s3 < θ < iθ+s3) and (iν2-s4 < ν2 < iν2+s4) and (iω2-s5 < ω2 < iω2+s5) ………(204)
[0088] Note that s3, s4, and s5 are constants for searching for data in the vicinity (predetermined range) of the direction θ, velocity 2ν2, and angular velocity 2ω2, which are the second search keys, and are set in advance.
[0089] Since a DB search using many search keys slows down the search speed, in this embodiment, a program (self-position correction unit 426) performs a refined search on the results of a rough search of the correction information 702 in DB 425. If at least one speed ratio and angular velocity ratio is found as a result of the refined search, the process branches to Yes in process 604, and if not found, the process branches to No.
[0090] In process 605, the self-position correction unit 426 branches depending on the search mode (mode). If modo=0, in process 608, the velocity ratio and angular velocity ratio with the highest degree of match are returned.
[0091] Specifically, the self-position correction unit 426 selects and returns the velocity ratio and angular velocity ratio that minimize the Euclidean distance between the variables from the results obtained by the narrowed search.
[0092] If modo=1, in process 607, the self-position correction unit 426 calculates and returns the average of the speed ratio and angular velocity ratio from the results obtained by the narrowed search. If the process branches to No in processes 602 and 604, the self-position correction unit 426 returns "search failed." The above is the details of the DB search process in process 521.
[0093] Next, an example of the robot's operation and the self-position correction unit 426 will be described with reference to Figures 7A and 7B. Figure 7A is a diagram showing an example of correction information when the robot 300 moves straight ahead, and Figure 7B is a diagram showing an example of correction information when the robot 300 turns right.
[0094] In FIG. 7A, a trajectory 700 shows an example in which the robot moves straight in the direction of the arrow, and in FIG. 7B, a trajectory 701 shows an example in which the robot 300 turns right.
[0095] When registering the correction information 702, the robot 300 is moved in the direction of the arrow along the trajectories 700 and 701 in the figure, and the correction information (previous position, velocity 2, angular velocity 2, velocity ratio, angular velocity ratio) 702 is registered in the DB 425.
[0096] The correction information 702 is information that registers the position information (P100 to P120 in FIG. 7A, P200 to P260 in FIG. 7B) acquired from the robot 300 while it is running, and the running state at each position.
[0097] 7C is a diagram showing an example of the correction information 702. The correction information 702 includes a legend 7021, a position 7022, a direction 7023, a speed 7024, a speed ratio 7025, an angular speed ratio 7026, and a remark 7027 in one record.
[0098] The legend 7021 stores an identifier set by the server 320. The position 7022 stores the position (x, y) of the robot 300, and the orientation 7023 stores the orientation θ of the robot 300.
[0099] Velocity 7024 stores a search key consisting of velocity 2 (ν2) and angular velocity 2 (ω2) obtained from the encoder 302. Velocity ratio 7025 stores velocity 2 calculated by the above formula 200. Angular velocity ratio 7026 stores angular velocity ω2 calculated by the above formula 200. Remarks 7027 stores items specified by the server 320.
[0100] The correction information 702 stores a search key consisting of the position 7022 and orientation 7023 of the robot 300, and the velocity 2 (ν2) and angular velocity 2 (ω2) obtained from the encoder 302, in association with a velocity ratio 7025 and an angular velocity ratio 7026.
[0101] In the illustrated example, for the sake of convenience, only a few items of correction information 702 are registered, but in reality, correction information 702 is registered 30 times per second while robot 300 is traveling along a predetermined route, which corresponds to approximately every 2 to 3 cm of the robot's traveling distance.
[0102] 7A and 7B (P110, P220, P230, P240) are correction information for almost the same location, but the orientation, velocity 2 (ν2), and angular velocity 2 (ω2) of robot 300 are different, and correction information (velocity ratio, angular velocity ratio) is registered according to each state. Roughly speaking, P110 in the figures indicates correction information when moving straight, P210 in the figures indicates correction information when decelerating, P220 in the figures indicates correction information when turning right, and P240 in the figures is correction information when turning right while decelerating.
[0103] It is assumed that the robot 300 in the logistics warehouse travels along a predetermined route. Therefore, by collecting correction information 702 while the robot 300 travels along the predetermined route and registering it in the DB 425, correction information 702 near the robot 300 when an error occurs can be reliably obtained.
[0104] 8 is a diagram showing an example of correction information for each type of movement when turning right, etc. When going straight or turning right, correction information 702 according to the type of movement of the robot 300 is considered to be necessary.
[0105] In the figure, trajectories 800L and 800R are the trajectories of the left and right wheels 303 when the robot 300 moves straight ahead. Trajectories 801L and 801R are the trajectories of the left and right wheels 303 when the robot 300 turns right.
[0106] Area 803 is a location where the road surface has a low coefficient of friction and is prone to slipping on wheels 303. In the example shown, robot 300 does not pass over area 803 when traveling straight, but does pass over it when turning right.
[0107] When turning right, it is believed that the wheel 303 is more likely to slip, and therefore the angular velocity ratio (ν1 / ν2) becomes somewhat smaller than 1. On the other hand, when traveling straight, it is believed that an angular velocity ratio that is extremely close to 1 is obtained. Therefore, by registering correction information 702 according to the motion type of the robot 300 (straight traveling, right turning, etc.) at point 802, it is believed that the self-position can be corrected with higher accuracy according to the motion type (straight traveling, right turning, etc.) and the road surface condition, even in the same location.
[0108] As described above, in the first embodiment according to the present invention, even if the first self-location cannot be obtained due to an error, the first self-location can be calculated by correcting the second self-location using the correction information 702. In this case, even if the robot is in the same location, the self-location can be calculated with high accuracy according to the position, posture, and type of motion (direction, straight forward, rotation) of the robot 300.
[0109] In the first embodiment, the stereo camera 301 is used as the first sensor and the odometry is used as the second sensor, but the present invention is not limited to this and any sensor may be used as long as it can detect the position of the robot 300 with high accuracy. For example, a LiDAR (Light Detection And Ranging) may be used as the first sensor, and a GNSS (Global Navigation Satellite System) may be used as the second sensor if the location where the robot 300 is operated is a location where communication with a satellite is possible.
[0110] Furthermore, in the above-described first embodiment, an example was shown in which the server 320 calculates the self-position 1 and corrects the self-position, and then drives the wheel motor 306 at the corrected self-position 1, but this is not limiting. Although not shown in the figures, the map 421, Visual SLAM 422, velocity 2 and angular velocity 2 calculation unit 423, database 425 (correction information 702), self-position correction unit 426, path following program 427, and motor drive information distribution unit 424 may be operated by the robot 300 to correct the self-position.
[0111] Moreover, the first embodiment can be applied to a transport system in which the robot 300 transports objects such as luggage and merchandise. [Example]
[0112] The second embodiment will be described with respect to differences from the first embodiment.
[0113] (1) The following items may be added to the correction information 702 to be registered in the DB 425.
[0114] Adding the item "date and time" makes it possible to selectively search for the latest correction information 702. It also makes it possible to correct for changes in the friction coefficient over time due to the condition of the road surface, aging deterioration of the robot, and the like.
[0115] Adding the items "acceleration" and "angular acceleration" enables the position of the robot 300 to be corrected according to the type of movement in more detail.
[0116] The addition of the item "weight of loaded object" makes it possible to correct the position when the circumference of wheel 303 changes due to the weight of robot 300. However, the item "weight of loaded object" is applicable when wheel 303 is elastically deformed. Also, if wheel 303 is a pneumatic tire, the addition of the item "wheel air pressure" makes it possible to correct when the circumference of wheel 303 changes depending on the air pressure of wheel 303. The addition of the item "wheel circumference" makes it possible to correct when the circumference of wheel 303 changes due to wear of wheel 303.
[0117] The addition of the "Wheel Torque" item allows for correction according to the friction coefficient of the road surface. The addition of the "Temperature" and "Humidity" items allows for correction according to the wetness of the road surface.
[0118] Adding the item "Robot Unique ID" enables corrections according to the habits and characteristics of each individual robot 300.
[0119] (2) In the process 504 of Fig. 5 in the first embodiment, it was stated that "during program execution, the DB registration flags for the velocity ratio and angular velocity ratio may be set to "0" or "1" according to certain conditions." The following describes the conditions for dynamically setting the DB registration flags to "1."
[0120] In a logistics warehouse, the robot 300 may be stopped outside of working hours or during breaks. During such time periods when the robot 300 is not performing transport work, it is possible to set the DB registration flag to 1, run the robot 300 along the route, and update the correction information 702 in the DB 425.
[0121] Visual SLAM 422 reads a map 421 created in advance and compares the map 421 with stereo images obtained from the stereo camera 301 to estimate the vehicle's own position.
[0122] Specifically, Visual SLAM 422 estimates its own position by extracting image feature points from stereo images and comparing them with feature points (map feature points) in a map 421. At this time, the number of image feature points obtained from the stereo camera 301 is compared with the number of feature points in the map 421, and if there is a difference of a certain number or more in the number of feature points, it is considered that a change has occurred in the environment, and the correction information 702 in DB 425 should be updated.
[0123] On the other hand, it is possible to keep the DB registration flag set to 1 and keep registering the correction information 702 such as the speed ratio and acceleration ratio in the DB 425 at all times.
[0124] (3) Regarding the DB registration flag in process 513, in addition to the velocity ratio and angular velocity ratio, it is also possible to store velocity 1 (ν1), angular velocity 1 (ω1), velocity 2 (ν2), and angular velocity 2 (ω2) that can calculate these. The database may be in the form of a key-value store or a JSON document structure. Furthermore, in addition to the rule-based method shown in the first embodiment, the velocity ratio and angular velocity ratio may be calculated using machine learning or other methods with position information, orientation, and velocity (x, y, θ, ν2, ω2) as input.
[0125] (4) The following describes an action of the robot 300 for the purpose of notifying the user when performing the self-position correction process 520 shown in Fig. 5 of the first embodiment. This action is executed during the self-position correction process 520, such as immediately after process 525.
[0126] Specifically, when the self-position correction process 520 is executed, if the self-position correction process 520 continues beyond a certain distance, the robot 300 is stopped. Alternatively, while the self-position correction process 520 is continuously executed, the robot 300 is made to travel at a slower speed than usual. Alternatively, the robot 300 is made to travel while turning on or flashing the lamps (tail lamps, blinkers 309, etc.) on its body, or while speeding up or slowing down the flashing pattern. Alternatively, the robot 300 may be made to travel while sounding the horn 310 or playing music.
[0127] In this way, in a section where the self-position correction process 520 occurs frequently, the robot 300 can emit light or sound to warn of the possibility that some kind of abnormality has occurred.
[0128] <Conclusion> As described above, the robot control system of each of the above embodiments can be configured as follows.
[0129] (1) A robot (300) control system in which a server (320) having a processor and a memory estimates the position of a mobile robot (300), the mobile robot (300) having a first sensor unit (stereo camera 301) that acquires first sensing information (stereo images) from the traveling state of the mobile robot (300), and a second sensor unit (encoder 302) that has a sensor different from the first sensor unit (301) and acquires second sensing information (rotation angle of wheels 303) from the traveling state of the mobile robot (300), the server (320) acquires information on first traveling state including a first position and a first attitude (θ) at the first position obtained from the first sensing information (stereo images), and a second velocity (ν2) and a second angular velocity (ω2) of the mobile robot (300) obtained from the second sensing information (rotation angle of wheels 303). and a calculation unit (self-position correction unit 426) capable of calculating an estimated position (corrected self-position) of the mobile robot (300) based on the information on the first running state and the information on the second running state, wherein the calculation unit (426) calculates the first position and the first attitude (θ) based on first sensing information (stereo images) acquired from the first sensor unit (301), and, if an error occurs when calculating the first position, calculates the estimated position (corrected self-position) of the mobile robot (300) based on the information on the second running state (velocity 2, angular velocity 2) acquired from the second sensing information (rotation angle of the wheels 303) and the correspondence information (correction information 702).
[0130] With the above configuration, even if an autonomously traveling unmanned guided vehicle (mobile robot) is unable to obtain its own position 1 (first position) calculated from the stereo images (first sensing information) of the stereo camera 301 (first sensor unit) due to an error, it is possible to restore its own position (corrected own position) with the same accuracy as the first position from the second traveling state (velocity 2, angular velocity 2) calculated from information from the encoder 302 (second sensor) and the correction information 702 (correspondence information).
[0131] (2) A robot control system according to (1) above, wherein the correspondence information (correction information 702) includes a velocity ratio (ν1 / ν2) between a first velocity (ν1) and a second velocity (ν2) at the first position (self-position 1), and an angular velocity ratio (ω1 / ω2) between a first angular velocity (ω1) and a second angular velocity (ω2) at the first posture (θ).
[0132] With the above configuration, it is possible to calculate velocity 1 (ν1) from velocity 2 (ν2) acquired from encoder 302 and the velocity ratio (ν1 / ν2) recorded in correction information 702, to calculate angular velocity 1 (ω1) from second angular velocity (ω2) acquired from encoder 302 and the angular velocity ratio (ω1 / ω2) recorded in correction information 702, and to calculate corrected self-position (self-position 1) from velocity 1 (ν1) and angular velocity 1 (ω1). As a result, even if self-position 1 cannot be obtained from stereo images due to an error, it is possible to calculate corrected self-position based on velocity 2 and angular velocity 2 acquired from encoder 302, and to restore self-position 1 (corrected self-position) with the same accuracy as self-position 1.
[0133] (3) The robot control system according to (2) above, wherein, when there is no error and the preset registration information (DB registration flag) is valid (“1”), the calculation unit (self-position correction unit 426) acquires the first velocity (ν1) and the first angular velocity (ω1), calculates the velocity ratio (ν1 / ν2) and the angular velocity ratio (ω1 / ω2) from the second velocity (ν2) and the second angular velocity (ω2), and registers the second velocity (ν2), the second angular velocity (ω2), the velocity ratio (ν1 / ν2), and the angular velocity ratio (ω1 / ω2) in the correspondence information (correction information 702) in association with the first position (self-position 1) and the first attitude (θ).
[0134] With the above configuration, when there is no error in the calculation of self-position 1 and the DB registration flag is valid, self-position correction unit 426 acquires velocity 1 and angular velocity 1, and associates the velocity ratio (ν1 / ν2) and angular velocity ratio (ω1 / ω2) from velocity 2 (ν2) and angular velocity 2 (ω2) with self-position 1 and the first attitude (θ), and registers them in the correspondence information (correction information 702), which can be used to restore self-position 1 when an error occurs. Note that velocity 1 and angular velocity 1 may also be calculated from the difference between the previous value and the current value of self-position 1.
[0135] (4) The robot control system according to (2) above, wherein, when the error occurs, the calculation unit (self-position correction unit 426) searches the correspondence information (correction information 702) using information on the first position (self-position 1) and the first orientation (θ) of the mobile robot before the error occurred, the second velocity (ν2), and the second angular velocity (ω2), obtains the velocity ratio (ν1 / ν2) and the angular velocity ratio (ω1 / ω2) from the search results, and calculates the position and orientation of the mobile robot as an estimated position and estimated orientation based on the estimated value of the first velocity (ν1) and the estimated value of the first angular velocity (ω1) from the obtained velocity ratio (ν1 / ν2) and angular velocity ratio (ω1 / ω2), the second velocity (ν2), and the second angular velocity (ω2).
[0136] With the above configuration, if an error occurs in the calculation of self-position 1, self-position correction unit 426 searches correction information 702 using self-position 1 and velocity 2 and angular velocity 2 calculated from information on encoder 302, and acquires the velocity ratio and angular velocity ratio from the search results. Then, self-position correction unit 426 calculates velocity 1 from the velocity ratio and velocity 2, calculates angular velocity 1 from the angular velocity ratio and angular velocity 2, and can calculate self-position 1 and attitude from self-position 1 and the calculated velocity 1 and angular velocity 1.
[0137] (5) In the robot control system described in (4) above, when the error occurs, the calculation unit (self-position correction unit 426) searches the correspondence relationship information (correction information 702) using the estimated position and estimated attitude calculated by the calculation unit (426), the second velocity (ν2) at the estimated position, and the second angular velocity (ω2) at the estimated attitude, acquires the velocity ratio (ν1 / ν2) and the angular velocity ratio (ω1 / ω2) from the search results, and calculates the acquired velocity ratio (ν1 / ν2) and angular velocity ratio (ω1 / ω2). and calculating an estimated value of the first velocity (ν1) at the estimated position and an estimated value of the first angular velocity (ω1) at the estimated posture from (ω1 / ω2), the second velocity (ν2) at the estimated position, and the second angular velocity (ω2) at the estimated posture, and calculating the position and posture of the mobile robot based on the calculated estimated value of the first velocity (ν1) at the estimated position and the estimated value of the first angular velocity (ω1) at the estimated posture.
[0138] With the above configuration, if an error continues to occur in the calculation of the self-position 1, the self-position correction unit 426 can continue to estimate the position and posture of the mobile robot by using the calculated estimated position and estimated posture even while the error continues.
[0139] (6) The robot control system according to (4) above, wherein the calculation unit (self-position correction unit 426) searches the correspondence information (correction information 702) using a first key representing the first position (self-position 1), and further searches the search results using a second key representing a first attitude (θ), a second velocity (ν2), and a second angular velocity (ω2).
[0140] With the above configuration, the self-position correction unit 426 can prevent the DB search speed from slowing down due to the use of multiple search keys by narrowing down the results of a rough search using the first key using the second search key.
[0141] (7) A robot control system according to (2) above, characterized in that the correspondence information (correction information 702) includes the first position (self-position 1), the first attitude (θ), the velocity ratio (ν1 / ν2), and the angular velocity ratio (ω1 / ω2).
[0142] With the above configuration, the correspondence information (correction information 702) can include the first position (self-position 1), the first attitude (θ), the velocity ratio (ν1 / ν2), and the angular velocity ratio (ω1 / ω2).
[0143] (8) The robot control system according to (7) above, wherein the correspondence information (correction information 702) includes at least one of the following in addition to the first position (self-position 1), the first attitude (θ), the velocity ratio (ν1 / ν2), and the angular velocity ratio (ω1 / ω2): date and time, acceleration, angular acceleration, weight of the load, wheel air pressure, wheel circumference, wheel torque, temperature, humidity, and mobile robot (300) unique ID.
[0144] With the above configuration, adding "date and time" allows selective retrieval of the latest correction information 702. Adding "acceleration" and "angular acceleration" allows for more precise correction of the robot 300's position according to the type of movement. Adding "weight of payload" allows for position correction when the circumference of the wheels 303 changes due to the weight of the robot 300. If the wheels 303 are pneumatic tires, adding "wheel air pressure" allows for correction when the circumference of the wheels 303 changes depending on the air pressure of the wheels 303. Adding "wheel circumference" allows for correction when the circumference of the wheels 303 changes due to wear of the wheels 303. Adding "wheel torque" allows for correction according to the friction coefficient of the road surface. Adding "temperature" and "humidity" allows for correction according to the wetness of the road surface. Adding "robot unique ID" allows for correction according to the habits and characteristics of each individual robot 300.
[0145] (9) The robot control system according to (1) above, wherein, when the first position (self-position 1) cannot be acquired due to the error, the calculation unit (self-position correction unit 426) commands the mobile robot (300) to at least one of blinking a lamp (indicator 309) provided on the mobile robot (300), outputting a sound from a horn (310) provided on the mobile robot (300), and slowing down or stopping the mobile robot (300).
[0146] With the above configuration, if an error occurs in the calculation of the self-position 1, the robot 300 can notify the user that an abnormality has occurred in the calculation of the self-position 1 by flashing the blinker 309, sounding the horn 310, or slowing down or stopping the wheel motor 306.
[0147] The present invention is not limited to the above-described embodiments and includes various modifications. For example, the above-described embodiments have been described in detail to clearly explain the present invention, and are not necessarily limited to those including all of the described configurations. Furthermore, it is possible to replace part of the configuration of one embodiment with the configuration of another embodiment, or to add the configuration of another embodiment to the configuration of one embodiment. Furthermore, with respect to part of the configuration of each embodiment, addition, deletion, or substitution of other configurations can be applied alone or in combination.
[0148] Furthermore, the above-described configurations, functions, processing units, and processing means may be partially or entirely implemented in hardware, for example, by designing them as integrated circuits. The above-described configurations and functions may also be implemented in software, with a processor interpreting and executing a program that implements each function. Information such as the programs, tables, and files that implement each function may be stored in a memory, a storage device such as a hard disk or SSD, or a storage medium such as an IC card, SD card, or DVD.
[0149] In addition, the control lines and information lines shown are those that are considered necessary for the explanation, and do not necessarily show all the control lines and information lines in the product. In reality, it can be assumed that almost all components are interconnected. [Explanation of symbols]
[0150] 300 robots 302 Stereo Camera 302 Encoder 303 Wheels 421 Map 422 Visual SLAM 423 Velocity 2, angular velocity 2 calculation section 425 database 426 Self-position correction section 702 Correction Information
Claims
1. A robot control system in which a server having a processor and a memory estimates a position of a mobile robot, The mobile robot is a first sensor unit that acquires first sensing information from a running state of the mobile robot; a second sensor unit having a sensor different from the first sensor unit and configured to acquire second sensing information from the traveling state of the mobile robot; The server a storage unit that stores correspondence information indicating a correspondence between first running state information including a first position and a first orientation at the first position obtained from the first sensing information, and second running state information including a second velocity and a second angular velocity of the mobile robot obtained from the second sensing information, in association with the first position; a calculation unit capable of calculating an estimated position of the mobile robot based on the information on the first running state and the information on the second running state, The calculation unit A robot control system characterized in that the first position and the first attitude are calculated based on first sensing information acquired from the first sensor unit, and if an error occurs when calculating the first position, an estimated position of the mobile robot is calculated based on second running state information acquired from the second sensing information and the correspondence information.
2. 2. The robot control system of claim 1, The correspondence information is a velocity ratio between a first velocity and the second velocity at the first position, and an angular velocity ratio between a first angular velocity and the second angular velocity at the first posture.
3. 3. The robot control system according to claim 2, The calculation unit and, if there is no error and the preset registration information is valid, acquiring the first velocity and the first angular velocity, calculating the velocity ratio from the first velocity and the second velocity, calculating the angular velocity ratio from the first angular velocity and the second angular velocity, and registering the second velocity, the second angular velocity, the velocity ratio, and the angular velocity ratio in the correspondence information in association with the first position and the first attitude.
4. 3. The robot control system according to claim 2, The calculation unit and when the error occurs, searching for the correspondence information using information on the first position and first orientation of the mobile robot before the error occurred, the second velocity, and the second angular velocity, obtaining a velocity ratio and an angular velocity ratio from the search results, calculating an estimated value of the first velocity and an estimated value of the first angular velocity from the obtained velocity ratio and angular velocity ratio, the second velocity, and the second angular velocity, and calculating an estimated position and orientation of the mobile robot based on the calculated estimated value of the first velocity and the first estimated value of the first angular velocity.
5. 5. The robot control system according to claim 4, The calculation unit and when the error occurs, searching the correspondence information using the estimated position and estimated attitude calculated by the calculation unit, the second velocity at the estimated position, and the second angular velocity at the estimated attitude, obtaining a velocity ratio and an angular velocity ratio from the search result, calculating an estimate of the first velocity at the estimated position and an estimate of the first angular velocity at the estimated attitude from the obtained velocity ratio and angular velocity ratio, the second velocity at the estimated position, and the second angular velocity at the estimated attitude, and calculating the position and attitude of the mobile robot based on the calculated estimate of the first velocity at the estimated position and the calculated estimate of the first angular velocity at the estimated attitude.
6. 5. The robot control system according to claim 4, The calculation unit a robot control system characterized in that, when searching for the correspondence information, a search is performed using a first key representing the first position, and the search results are then searched using a second key representing the first attitude, the second velocity, and the second angular velocity.
7. 3. The robot control system according to claim 2, The correspondence information is A robot control system comprising the first position, the first attitude, the velocity ratio, and the angular velocity ratio.
8. 8. The robot control system of claim 7, The correspondence information is A robot control system characterized in that, in addition to the first position, the first attitude, the velocity ratio, and the angular velocity ratio, the information includes at least one of date and time, acceleration, angular acceleration, weight of a payload, wheel air pressure, wheel circumference, wheel torque, temperature, humidity, and a mobile robot unique ID.
9. 2. The robot control system of claim 1, The calculation unit A robot control system characterized in that, when the first position cannot be obtained due to the error, the system instructs the mobile robot to do at least one of flashing a lamp provided on the mobile robot, outputting a sound from a horn provided on the mobile robot, and slowing down and stopping the mobile robot.
10. a server having a processor and a memory; a mobile robot connected to the server and configured to transport an object, The mobile robot is a first sensor unit that acquires first sensing information from a running state of the mobile robot; a second sensor unit having a sensor different from the first sensor unit and configured to acquire second sensing information from the traveling state of the mobile robot; The server a storage unit that stores correspondence information indicating a correspondence between a first position obtained from the first sensing information, first running state information including a first attitude at the first position, and second running state information including a second velocity and a second angular velocity of the mobile robot obtained from the second sensing information, in association with the first position; a calculation unit capable of calculating an estimated position of the mobile robot based on the information on the first running state and the information on the second running state, The calculation unit a conveying system that calculates the first position and the first attitude based on first sensing information acquired from the first sensor unit, and, if an error occurs when calculating the first position, calculates an estimated position of the mobile robot based on second running state information acquired from the second sensing information and the correspondence information.
11. A robot control method in which a server having a processor and a memory estimates a position of a mobile robot, comprising: a first step in which the server acquires first sensing information detected by a first sensor unit of the mobile robot; a second step in which the server acquires second sensing information detected by a second sensor unit different from the first sensor unit of the mobile robot; a third step in which the server stores, in a storage unit, correspondence information indicating a correspondence between first running state information including a first position and a first orientation at the first position obtained from the first sensing information, and second running state information including a second velocity and a second angular velocity of the mobile robot obtained from the second sensing information, in association with the first position; a fourth step in which the server calculates the first position and the first attitude based on first sensing information acquired from the first sensor unit; a fifth step in which, when an error occurs in calculating the first position, the server calculates an estimated position of the mobile robot based on second running state information acquired from the second sensing information and the correspondence information; A robot control method comprising:
Citation Information
Patent Citations
JP146952A
Self-position estimating device and self-position estimating method
JP2011209203A
Mobile body
JP2019053391A
Self-position estimation device
JP2021018638A
JP96731A