Slipping detection method, mobile robot and storage medium
By combining the data from the odometer and inertial measurement unit to generate the SLAM pose queue, the mobile robot can accurately detect slippage, solving the problem of poor map quality of the mobile robot and improving the accuracy of the map.
Patent Information
- Application Number
- CN202411384531.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2024-09-30
- Publication Date
- 2025-02-14
AI Technical Summary
During the process of building the map, due to adverse factors such as low sensor accuracy and slippage, the map quality is poor and inaccurate, and most mobile robots lack effective slip detection functions.
By obtaining the translation distance queue collected by the odometer and the rotation angle queue collected by the inertial measurement unit, an SLAM pose queue is generated, and the two are combined to determine whether the mobile robot slips.
This method can accurately detect translation slip and rotation slip, improve the accuracy of slip detection, and thus improve the quality of map.
Smart Images

Figure CN119439182A_ABST
Abstract
Description
Technical Field
[0001] The present application belongs to the field of robotics technology, and specifically relates to a slip detection method, a mobile robot and a storage medium. Background Art
[0002] With the development of artificial intelligence, the research on mobile robots has received more and more attention and investment, and the positioning, map creation and acquisition of mobile robots are hot research issues in the field of robotics. Mobile robots rely on maps for walking, positioning and path planning, so good mapping effects can make mobile robots more intelligent.
[0003] However, in the process of mobile robot mapping, there are many unfavorable factors such as low sensor accuracy and slippage, which affect the map quality. At present, most mobile robots do not have the function of slippage detection or the accuracy of slippage detection is low, resulting in poor and inaccurate map quality. Summary of the invention
[0004] In view of this, the embodiments of the present application provide a slip detection method, a mobile robot and a storage medium, which can effectively improve the accuracy of slip detection and help improve map quality.
[0005] In a first aspect, an embodiment of the present application provides a skidding detection method, the method comprising:
[0006] Get the translation distance queue and the rotation angle queue, where the translation distance queue is collected by the odometer and the rotation angle queue is collected by the inertial measurement unit;
[0007] Generate a SLAM pose queue based on the translation distance queue and the rotation angle queue;
[0008] According to the translation distance queue, rotation angle queue and SLAM posture queue, it is determined whether the mobile robot is slipping.
[0009] In some embodiments, generating a SLAM pose queue according to a translation distance queue and a rotation angle queue includes:
[0010] Determine the translation speed at the current frame time according to the translation distance queue, and determine the rotation speed at the current frame time according to the rotation angle queue;
[0011] The translation speed at the current frame time and the rotation speed at the current frame time are used to calculate the translation increment and the rotation increment from the previous frame time to the current frame time respectively;
[0012] According to the SLAM pose at the previous frame time, the translation increment and rotation increment from the previous frame time to the current frame time, the SLAM pose at the current frame time is determined, and the SLAM pose at the current frame time is added to the SLAM pose queue.
[0013] In some embodiments, determining the SLAM pose at the current frame time according to the SLAM pose at the previous frame time, the translation increment and the rotation increment from the previous frame time to the current frame time includes:
[0014] The SLAM pose at the previous frame time is added with the translation increment and rotation increment from the previous frame time to the current frame time to obtain the pose prediction value of the SLAM pose at the current frame time;
[0015] According to the pose prediction value and the current frame point cloud, the SLAM pose at the current frame time is determined.
[0016] In some embodiments, determining the SLAM pose at the current frame time according to the pose prediction value and the current frame point cloud includes:
[0017] Perform coordinate transformation on the current frame point cloud according to the predicted pose value to obtain the transformed point cloud;
[0018] The transformed point cloud is mapped to the grid map for matching, and the pose prediction value is adjusted according to the matching situation to obtain the SLAM pose at the current frame time.
[0019] In some embodiments, determining whether the mobile robot is slipping according to the translation distance queue, the rotation angle queue, and the SLAM pose queue includes:
[0020] Determine a first translation cumulative value according to the translation distance queue, and determine a first rotation cumulative value according to the rotation angle queue;
[0021] If the first translation cumulative value is greater than or equal to the first threshold or the first rotation cumulative value is greater than or equal to the second threshold, it is determined whether the mobile robot slips according to the first translation cumulative value, the first rotation cumulative value and the SLAM pose queue.
[0022] In some embodiments, determining whether the mobile robot slips according to the first translation cumulative value, the first rotation cumulative value, and the SLAM pose queue includes:
[0023] Determine a second translation cumulative value and a second rotation cumulative value according to the SLAM pose queue;
[0024] Calculate a translation difference between the first translation cumulative value and the second translation cumulative value, and a rotation difference between the first rotation cumulative value and the second rotation cumulative value;
[0025] If the translation difference is greater than or equal to the translation deviation threshold, or the rotation difference is greater than or equal to the rotation deviation threshold, it is determined that slip occurs.
[0026] In some embodiments, if it is determined that slippage occurs, generating a SLAM pose queue according to the translation distance queue and the rotation angle queue also includes:
[0027] Determine the translation speed and rotation speed at the next frame time according to the SLAM pose queue;
[0028] The translation speed and rotation speed at the next frame time are used to calculate the translation increment and rotation increment from the current frame time to the next frame time respectively;
[0029] According to the SLAM pose at the current frame time, the translation increment and rotation increment from the current frame time to the next frame time, the SLAM pose at the next frame time is determined, and the SLAM pose at the next frame time is added to the SLAM pose queue.
[0030] In some embodiments, when the difference between the most recent time index in the SLAM pose queue and the head time index thereof reaches a detection period, it is started to determine whether the mobile robot has slipped according to the translation distance queue, the rotation angle queue and the SLAM pose queue; and / or,
[0031] The head time indexes of the translation distance queue, rotation angle queue and SLAM pose queue are updated according to the detection cycle.
[0032] In a second aspect, an embodiment of the present application provides a mobile robot, comprising:
[0033] at least one processor;
[0034] A memory communicatively connected to at least one processor; wherein the memory stores instructions executable by at least one processor, and the instructions are executed by at least one processor so that the at least one processor can perform the slip detection method as described in the first aspect.
[0035] In a third aspect, an embodiment of the present application provides a computer-readable storage medium, which stores computer-executable instructions, and the computer-executable instructions are used to enable a computer device to execute the slip detection method of the first aspect.
[0036] Some embodiments of the present application provide a method for slip detection, including: obtaining a translation distance queue and a rotation angle queue, wherein the translation distance queue is collected by an odometer, and the rotation angle queue is collected by an inertial measurement unit; generating a SLAM posture queue according to the translation distance queue and the rotation angle queue; determining whether the mobile robot is slipping according to the translation distance queue, the rotation angle queue and the SLAM posture queue. In this embodiment, slip detection is performed based on the posture changes represented by the translation distance queue and the rotation angle queue, and the posture changes represented by the SLAM posture queue. Compared with slip detection based on posture changes sensed by a single odometer and an inertial measurement unit, this solution combines two posture changes to accurately detect translation slip and rotation slip, making slip detection accurate and helping to improve map quality. BRIEF DESCRIPTION OF THE DRAWINGS
[0037] Figure 1 Schematic diagram of the application environment of the skid detection method in some embodiments of the present application;
[0038] Figure 2 This is a hardware structure block diagram of a mobile robot in some embodiments of the present application;
[0039] Figure 3 This is a flow chart of a skidding detection method in some embodiments of the present application;
[0040] Figure 4 This is a schematic diagram related to SLAM pose matching in some embodiments of the present application;
[0041] Figure 5 This is a schematic diagram of a grid map with unclear boundaries after the mobile robot is fused and updated in some embodiments of the present application;
[0042] Figure 6 This is a schematic diagram of a grid map with clear boundaries after fusion and updating by a mobile robot in some embodiments of the present application;
[0043] Figure 7 This is a schematic diagram of the specific process of SLAM pose matching in some embodiments of the present application. DETAILED DESCRIPTION
[0044] The present application is described in detail below in conjunction with specific embodiments. The following embodiments will help those skilled in the art to further understand the present application, but do not limit the present application in any form. It should be noted that, for those of ordinary skill in the art, several variations and improvements can also be made without departing from the concept of the present application. These all belong to the protection scope of the present application.
[0045] In order to make the purpose, technical solution and advantages of the present application more clearly understood, the present application is further described in detail below in conjunction with the accompanying drawings and embodiments. It should be understood that the specific embodiments described herein are only used to explain the present application and are not used to limit the present application.
[0046] It should be noted that, if there is no conflict, the various features in the embodiments of the present application can be combined with each other, all within the scope of protection of the present application. In addition, although the functional module division is performed in the device schematic diagram and the logical order is shown in the flow chart, in some cases, the steps shown or described can be performed in a sequence different from the module division in the device or the flow chart. In addition, the words "first", "second", "third", etc. used herein do not limit the data and execution order, but only distinguish the same items or similar items with basically the same functions and effects.
[0047] Unless otherwise defined, all technical and scientific terms used in this specification have the same meaning as those commonly understood by those skilled in the art to which this application belongs. The terms used in this specification and in the specification of this application are only for the purpose of describing specific embodiments and are not intended to limit this application. The term "and / or" used in this specification includes any and all combinations of one or more of the related listed items.
[0048] In addition, the technical features involved in each embodiment of the present application described below can be combined with each other as long as they do not conflict with each other.
[0049] In an embodiment of the present application, the mobile robot may be a mobile device capable of providing functional services, for example, it may be a cleaning robot, a pet robot, a delivery robot, a nursing robot, a remote monitoring robot, a sweeping robot, and other robots. The mobile robot can automatically complete the work in cooperation with the base station, and here, the base station is an electronic device that cooperates with the mobile robot to automatically complete the work. It can be understood that the function of the base station is based on the functional configuration of the corresponding mobile robot. In some embodiments, the mobile robot may be a delivery robot, and the corresponding base station may provide charging services, docking services, or material replenishment for the delivery robot. In some embodiments, the mobile robot may be a cleaning robot, and the corresponding base station may provide the cleaning robot with services such as docking, charging, water replenishment, sewage discharge, detergent replenishment, self-cleaning, and drying.
[0050] The following uses the robot as a cleaning robot to illustrate the application environment of the slip detection method in the present application.
[0051] See also Figure 1 , Figure 1 Schematic diagram of the application environment of a slip detection method provided in an embodiment of the present application. Figure 1As shown, the cleaning robot 100 is located on the ground, which may be the ground of a living room or an office, etc. The place where the cleaning robot 100 is located includes objects such as a base station 200, a desk, a flower pot, and a sofa.
[0052] The free walking of the cleaning robot 100 is mainly completed by the modules of mapping, positioning, navigation and obstacle avoidance. The map built by the cleaning robot 100 is the key to its autonomous positioning, path planning, navigation and obstacle avoidance.
[0053] In some embodiments, the cleaning robot 100 is equipped with a laser radar and / or a visible light camera, wherein the laser radar scans the surrounding environment of the cleaning robot 100 to obtain a laser point cloud. The visible light camera shoots the surrounding environment of the cleaning robot 100 to obtain an image. The laser radar and the visible light camera are respectively connected to the controller for communication, and the laser point cloud and the image are sent to the controller respectively. The controller calls the pre-set map-building program in the memory of the cleaning robot 100 to build a map based on the laser point cloud and / or the image. Among them, the map-building program may include a program corresponding to the SLAM algorithm (Simultaneous Localization and Mapping, SLAM), which is not described in detail here. In some embodiments, the map is a grid map. The map is saved in the memory of the cleaning robot 100. When the robot moves, the controller calls the map as the basis for autonomous positioning, path planning and obstacle avoidance.
[0054] It is understandable that the SLAM algorithm has both positioning and navigation functions. During the positioning process, the laser radar is controlled to rotate at high speed to emit laser, measure the distance between the cleaning robot and the obstacle, and combine the map to determine the relative position between the cleaning robot and the obstacle, so as to achieve positioning. In some embodiments, the cleaning robot 100 can be visually positioned based on a visible light camera. During the navigation process, cleaning control is performed based on positioning and cleaning tasks, each area to be cleaned is cleaned one by one, and a full coverage cleaning path is planned in each area to be cleaned to complete the corresponding cleaning task. At the same time, the cleaning robot can collect point cloud data of the surrounding environment based on sensors such as laser radar and depth cameras to extract key features from it, such as edges, corners, planes, etc.; then match the current point cloud features with the features in the existing grid map; based on the point cloud matching results, estimate the current posture (position and orientation) of the robot in the map, merge the current point cloud data with the map, and update the map information, such as adding new obstacles, updating the location of known obstacles, and adjusting the map resolution.
[0055] The cleaning robot 100 can be configured into any suitable shape to achieve specific business function operations. For example, in some embodiments, the cleaning robot 100 can be a mobile robot based on a SLAM system. The cleaning robot 100 includes but is not limited to a sweeping robot, a vacuuming robot, a mopping robot, or a floor washing robot.
[0056] In some embodiments, the cleaning robot 100 may include a robot body, a laser radar, a controller, and a walking mechanism. The robot body is the main structure of the cleaning robot 100, and can be selected according to the actual needs of the cleaning robot 100. The corresponding shape structure and manufacturing material (such as hard plastic or metal such as aluminum, iron, etc.) can be selected, for example, it is set to a relatively flat cylindrical shape commonly seen in the cleaning robot 100.
[0057] The walking mechanism is a structural device arranged on the robot body to provide mobility for the cleaning robot 100. The walking mechanism can be implemented by any type of mobile device, such as rollers, crawlers, etc.
[0058] The laser radar is arranged on the body of the cleaning robot 100, and is used to sense obstacles in the surrounding environment of the mobile cleaning robot 100, scan and obtain laser point cloud data, and send it to the controller so that the controller can build a map based on the laser point cloud data and perform walking obstacle avoidance, etc. In some embodiments, the laser radar includes pulse laser radar, continuous wave laser radar and other radars.
[0059] The controller is an electronic computing core built into the robot body, which is used to perform logical operations to achieve intelligent control of the cleaning robot. The controller is connected to the laser radar and is used to build a map based on the laser point cloud data and control the cleaning robot to walk. It is also used to control cleaning based on the map and cleaning tasks, and update the map during the walking cleaning process.
[0060] It is understood that the controller can be a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a single chip microcomputer, an ARM (Acorn RISC Machine) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination of these components. The controller can also be any conventional processor, controller, microcontroller or state machine. The controller can also be implemented as a combination of computing devices, for example, a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors combined with a DSP and / or any other such configuration, or a combination of one or more of a microcontroller unit (MCU), a field programmable gate array (FPGA), and a system on chip (SoC).
[0061] In some embodiments, the robot body may further include a clean water tank, a sewage tank, a detergent box, a dust collection box, and the like. In this embodiment, the base station 200 includes a base, a cleaning device, a water supply device, a dust collection device, a power supply device, a detergent replenishing device, and a sewage collection device (not shown). The base, the cleaning device, the water supply device, the dust collection device, the power supply device, the detergent replenishing device, and the sewage collection device are not shown in the figure. The base is used to dock the cleaning robot, the cleaning device is used to clean the cleaning robot, the water supply device is used to supply water to the cleaning robot and / or to the cleaning device, and the dust collection device is used to collect dust in the dust collection box of the cleaning robot. The power supply device is used to charge the cleaning robot. The sewage collection device is used to collect sewage in the sewage tank of the cleaning robot.
[0062] It is understandable that the surface of the base station 200 for approaching the cleaning robot 100 matches the shape of the cleaning robot. For example, the cleaning robot 100 is commonly a relatively flat cylindrical shape, and accordingly, the base station 200 is provided with an open docking cavity for accommodating the cleaning robot 100, and the docking cavity is semi-cylindrical, and its surface is an arc surface. In some embodiments, the radius of the docking cavity is 5-10 cm larger than the radius of the cleaning robot, so that when the cleaning robot 100 is docked with the base station 200, the cleaning robot 100 is accommodated in the docking cavity.
[0063] It should be noted that, depending on the tasks to be completed, in addition to the above functional modules, the main body of the cleaning robot can also be equipped with one or more other different functional modules (such as a water tank, a mop, etc.) to cooperate with each other to perform corresponding tasks.
[0064] Some cleaning robots known to the inventors of this application will update maps in real time during operation. If the cleaning robot is dragged or slips, causing its position to be incorrect, then continuing to update the map will cause overlapping images, making the map information inconsistent with the actual environment. Therefore, the robot needs to perform slip detection during the map update process to help it build a more accurate map. However, most of the popular robots currently do not have the function related to slip detection, resulting in poor quality of the map updated by the robot under unfavorable factors such as slipping.
[0065] In some other solutions known to the inventor, the mobile robot determines whether a slip occurs through the translation information and rotation information collected by the sensor. Although this solution enables the mobile robot to have the function related to slip detection, it can only determine whether the mobile robot has a rotation slip through the translation information and rotation information, and cannot determine whether the mobile robot has a translation slip. Therefore, the above solution cannot completely detect the slip of the mobile robot. In this case, the quality and effect of the map updated by the mobile robot still have problems.
[0066] In view of this, some embodiments of the present application provide a skidding detection method, first obtaining a translation distance queue and a rotation angle queue, wherein the translation distance queue is collected by an odometer, and the rotation angle queue is collected by an inertial measurement unit. Then, a SLAM pose queue is generated according to the translation distance queue and the rotation angle queue. Finally, according to the translation distance queue, the rotation angle queue and the SLAM pose queue, it is determined whether the mobile robot is skidding.
[0067] In this embodiment, the pose changes represented by the translation distance queue and the rotation angle queue, as well as the pose changes represented by the SLAM pose queue, are combined to perform slip detection based on these two pose changes. Compared with slip detection based on pose changes sensed by a single odometer and inertial measurement unit, this solution combines two pose changes to accurately detect translation slip and rotation slip, making slip detection accurate and helping to improve map quality.
[0068] The following describes the skidding detection method provided by the embodiment of the present application in combination with the exemplary application and implementation of the mobile robot provided by the embodiment of the present application. Figure 3 , Figure 3 It is a flow chart of the slip detection method provided in the embodiment of the present application. It can be understood that the execution subject of the slip detection method can be one or more processors of the mobile robot.
[0069] like Figure 3 As shown, the method S100 includes but is not limited to the following steps:
[0070] S10: Obtain the translation distance queue and the rotation angle queue.
[0071] Among them, the translation distance queue is collected by the odometer, which is a sensor for measuring and recording the moving distance of the mobile robot. In some embodiments, the odometer can be a wheel encoder, a camera, or a laser radar, etc. Exemplarily, the odometer is a wheel encoder installed on the driving wheel of the mobile robot, and the wheel encoder calculates the moving distance and direction of the mobile robot by detecting the number of rotations and speed of the wheel. It can be understood that the odometer collects signals at a certain frequency and calculates the accumulated translation distance, and the translation distance generated with the timestamp is the translation distance queue. In some embodiments, the head timestamp of the translation distance queue can be the moment when the mobile robot is started this time, or it can be a moment after the startup, or it can be updated and adjusted according to a period.
[0072] The rotation angle queue is collected by an inertial measurement unit. The inertial measurement unit usually includes an accelerometer and a gyroscope. The accelerometer can measure the acceleration of the robot along three axes, and the gyroscope can measure the angular velocity of the robot around these three axes. Here, the inertial measurement unit collects angle information at a certain frequency and calculates the accumulated rotation angle. The rotation angle generated with the timestamp is the rotation angle queue. In some embodiments, the head timestamp of the rotation angle queue is the start time of the slip detection. For example, the start time of the slip detection can be the moment when the mobile robot is started this time, or it can be a moment after the start, or it can be updated and adjusted according to the detection cycle.
[0073] In some embodiments, the acquisition frequency of the odometer and the inertial measurement unit is the same, for example, 50 Hz. Therefore, the timestamps of the translation distance queue and the rotation angle queue are the same. Thus, the translation distance and rotation angle at the same time can be obtained.
[0074] The translation distance queue and the rotation angle queue are continuously updated after the mobile robot is started. In some embodiments, a detection cycle is set, and the head time index of the queue is the detection start time. When the head time index of the distance queue reaches the detection cycle, a slip detection is judged, and then the head time index of the queue is reset to the current time. That is, the translation distance queue and the rotation angle queue are updated according to the detection cycle. Among them, the detection cycle can be 1 second, 2 seconds or 3 seconds, which is not limited here. Exemplarily, a slip detection is performed at the current frame time, and after detecting and determining that a slip occurs, the head time index of the translation distance queue and the rotation angle queue is updated to the current frame time. A slip detection is performed at the current frame time, and no slip is detected, and the head time index of the translation distance queue and the rotation angle queue is also updated to the current frame time. Among them, the current frame time refers to the moment when the current frame point cloud is acquired, and the head time index refers to the timestamp of the first element in the queue.
[0075] S20: Generate a SLAM pose queue according to the translation distance queue and the rotation angle queue.
[0076] Among them, the SLAM pose queue includes the SLAM pose corresponding to the timestamp. It can be seen that the SLAM pose includes a rotation matrix and a translation vector, which reflects the position and direction of the mobile robot in the world coordinate system and is used to guide the transformation from the world coordinate system to the laser radar coordinate system. In some embodiments, the SLAM pose can be obtained by using a pose estimation algorithm based on environmental information obtained by sensors such as laser radar, camera or inertial measurement unit.
[0077] In this solution, the SLAM pose is generated based on the pose changes represented by the translation distance queue and the rotation angle queue. The SLAM pose corresponds to the point cloud frame generated by the laser radar acquisition, that is, the time index of the SLAM pose queue is the same as the time of the point cloud frame. Among them, the time index is the timestamp corresponding to the element in the SLAM pose queue.
[0078] In some embodiments, when the difference between the most recent time index in the SLAM pose queue and the head time index thereof reaches the detection period, the judgment of the slip detection is started, that is, the following step S30 is executed to determine whether the mobile robot has slipped according to the translation distance queue, the rotation angle queue and the SLAM pose queue. When the current slip detection ends, the head time of the SLAM pose queue is reset.
[0079] For example, when slip detection is performed at the current frame time, after slip is detected and confirmed, the head time index of the translation distance queue, rotation angle queue, and SLAM pose queue are all updated to the current frame time. When slip detection is performed at the current frame time, if slip is not detected, the head time index of the translation distance queue, rotation angle queue, and SLAM pose queue are also updated to the current frame time. Among them, the current frame time refers to the time when the current frame point cloud is obtained, and the head time index refers to the timestamp of the first element in the queue.
[0080] In this embodiment, by setting the detection cycle, the translation distance queue, the rotation angle queue and the SLAM posture queue are updated based on the detection cycle. On the one hand, the use of the queue data within the detection cycle for slip detection is conducive to the real-time and accuracy of slip detection. On the other hand, performing slip detection in cycles can effectively save computing power, improve operating speed, and ensure the accuracy of detection.
[0081] In some embodiments, the above step S20 specifically includes:
[0082] S21: Determine the translation speed at the current frame time according to the translation distance queue, and determine the rotation speed at the current frame time according to the rotation angle queue.
[0083] Among them, the current frame moment refers to the moment corresponding to the current frame of the laser radar scanning point cloud. It can be understood that in the working process of the mobile robot, the rates or periods of data collection and transmission of different sensors are not exactly the same. Sensors with different frequencies can provide different types of information. For example, the inertial measurement unit may work at one frequency, while the laser radar may work at another frequency. By fusing these data of different frequencies, the mobile robot can obtain more comprehensive environmental information. For example, when the mobile robot is working, the operating frequency of the odometer is 50Hz, the operating frequency of the inertial measurement unit is 50Hz, and the operating frequency of the laser radar is 5Hz. When the most recent point cloud frame pcf_a is generated, its moment moment_a is the current frame moment, and when the most recent point cloud frame pcf_b is generated, its moment moment_b is the current frame moment.
[0084] As can be seen from the above content, the translation distance queue is the movement information of the mobile robot that changes over time and is collected by the odometer. The difference between the first and last values of the translation distance queue can be used to obtain the change in the movement distance of the mobile robot in the corresponding time period. For example, if the first value of the translation distance queue is distance_(1) and the last value is distance_(2), then the change in the movement distance of the mobile robot in the corresponding time period is distance_(2)-distance_(1). The rotation angle queue is the angle transformation information of the mobile robot that is accumulated over time and is collected by the inertial measurement unit. The movement angle of the mobile robot in the corresponding time period can be obtained by the difference between the first and last values of the rotation angle queue. For example, if the first value of the rotation angle queue is angle_sum(1) and the last value is angle_(2), then the movement angle of the mobile robot in the corresponding time period is angle_sum(1)=angle_(2)-angle_(1). The above corresponding duration is the duration from the head time of the odometer and inertial measurement unit to the current frame time. The translation speed and rotation speed of the mobile robot at the current frame time can be determined through the above-collected translation distance queue and rotation angle queue and their respective corresponding durations.
[0085] For example, if the head time of the odometer and inertial acquisition unit is t1, and the current frame time of the generated point cloud frame is t2, then the acquisition duration t3 = t2-t1. In this case, if the head value of the translation distance queue is distance_(1) and the tail value is distance_(2), then the translation speed at the current frame time is translation_s(1) = (distance_(2)-distance_(1)) / t3; in this case, if the head value of the rotation angle queue is angle_(1) and the tail value is angle_(2), then the rotation speed at the current frame time is angle_s(1) = (angle_(2)-angle_(1)) / t3.
[0086] S22: Calculate the translation increment and rotation increment from the previous frame time to the current frame time respectively using the translation speed at the current frame time and the rotation speed at the current frame time.
[0087] The time of the previous frame before the current frame of the point cloud is the previous frame time. The duration between the current frame time and the previous frame time varies with the point cloud generation frequency. For example, if the point cloud generation frequency is 5Hz, the duration between the current frame time and the previous frame time is 0.2s; if the point cloud generation frequency is 10Hz, the duration between the current frame time and the previous frame time is 0.1s.
[0088] From the above content, it can be known that the translation speed and rotation speed at the current frame moment can be obtained through the translation distance queue and the rotation angle queue. By multiplying the translation speed, rotation speed and the duration between the previous frame moment and the current frame moment at the current frame moment, the cumulative translation distance and cumulative rotation angle of the mobile robot from the previous frame moment to the current frame moment can be obtained. The above-mentioned cumulative translation distance is the translation increment, and the above-mentioned cumulative rotation angle is the rotation increment. It can be seen that the translation increment and rotation increment from the previous frame moment to the current frame moment can be calculated based on the obtained translation speed, rotation speed and the duration between the current frame moment and the previous frame moment. For example, if the translation speed at the current frame time is translation_s(1), the rotation speed at the current frame time is angle_s(1), and the duration between the previous frame time and the current frame time is duration(1), then the translation increment from the previous frame time to the current frame time is translation_i(1) = translation_s(1)*duration(1), and the rotation increment from the previous frame time to the current frame time is rotation_i(1) = angle_s(1)*duration(1).
[0089] S23: Determine the SLAM pose at the current frame time according to the SLAM pose at the previous frame time, the translation increment and the rotation increment from the previous frame time to the current frame time, and add the SLAM pose at the current frame time to the SLAM pose queue.
[0090] It can be seen from the foregoing that the translation increment and rotation increment from the previous frame moment to the current frame moment represent the cumulative translation distance change and cumulative rotation angle change of the mobile robot during the duration from the previous frame moment to the current frame moment. It can be seen that the SLAM pose at the current frame moment is determined according to the SLAM pose at the previous frame moment, the translation increment and rotation increment from the previous frame moment to the current frame moment. For example, the translation increment and rotation increment are added to the SLAM pose at the previous moment to obtain the SLAM pose at the current moment. Then the acquired SLAM pose at the current frame moment is added to the SLAM pose queue. In this way, a SLAM pose queue is generated for subsequent slip detection.
[0091] In some embodiments, the above step S23 "determine the SLAM pose at the current frame time according to the SLAM pose at the previous frame time, the translation increment and the rotation increment from the previous frame time to the current frame time." specifically includes:
[0092] S231: Add the translation increment and rotation increment from the previous frame time to the current frame time to the SLAM pose at the previous frame time to obtain the pose prediction value of the SLAM pose at the current frame time.
[0093] The SLAM pose at the previous frame time includes a translation vector and a rotation matrix. Here, the translation vector is added with a translation increment, and the rotation matrix is added with a rotation increment to preliminarily obtain the pose prediction value of the SLAM pose at the current frame time.
[0094] S232: Determine the SLAM pose at the current frame time according to the pose prediction value and the current frame point cloud.
[0095] From the above content, we can know that the pose prediction value is based on the theoretical pose of the mobile robot at the current frame time estimated by the odometer and inertial measurement unit. In order to make the SLAM pose accurate, the pose prediction value is adjusted and verified using the current frame point cloud to obtain the SLAM pose at the current frame time.
[0096] The pose prediction value obtained by the above method is verified according to the current frame point cloud to determine the SLAM pose of the mobile robot at the current frame moment. Compared with directly using the pose prediction value as the SLAM pose at the current frame moment, in this embodiment, the SLAM pose is determined by combining sensor data such as odometer, inertial measurement unit and laser radar, so that the SLAM pose is more accurate. Based on the mobile robot updating the map according to the SLAM pose, the current frame point cloud data of the mobile robot in the map update process has a high degree of matching with the grid map, which improves the quality of the mobile robot updating the map.
[0097] In some implementations, the above step S232 specifically further includes:
[0098] S2321: Perform coordinate transformation on the current frame point cloud according to the predicted pose value to obtain a transformed point cloud.
[0099] S2322: Map the transformed point cloud to the grid map for matching, adjust the pose prediction value according to the matching situation, and obtain the SLAM pose at the current frame time.
[0100] The position and orientation of the mobile robot in the world coordinate system are reflected based on the posture, which is used to guide the transformation from the world coordinate system to the lidar coordinate system. Therefore, the coordinates of the current frame point cloud are transformed according to the posture prediction value, that is, the coordinates of each point in the current frame point cloud are multiplied by the posture prediction value to obtain the transformed point cloud.
[0101] Then, the transformed point cloud is mapped to the grid map for matching, and the pose prediction value is adjusted according to the matching situation to obtain the SLAM pose at the current frame time. It can be understood that the grid map is updated as the point cloud is updated. Here, the grid map is the corresponding grid map at the previous frame time. Mapping the transformed point cloud to the grid map means projecting the coordinates of each point in the transformed point cloud to the grid map.
[0102] like Figure 4 As shown, the black grid 110 in the grid map is the obstacle grid, and the point cloud 120 is the point cloud data scanned by the mobile robot 100 at the current frame time. Figure 5 As shown in FIG. 1 , if the matching degree between the point cloud 120 and the black grid 110 is low and the overlap is not high, the boundary of the fused and updated map is blurred or overlapped, and the quality is low. Figure 6 As shown, if the point cloud 120 has a high matching degree with the black grid 110, the boundary of the fused and updated map is clear and of high quality. Therefore, in order to make the point cloud 120 and the black grid 110 have a high matching degree, the point cloud 120 and the black grid 110 are matched and checked by a preset matching method.
[0103] See also Figure 7, there is a deviation between the predicted pose value and the actual pose. The calculated predicted pose value is used as the initial pose, and the actual pose is searched within a certain range of the predicted pose value. Figure 7 As shown, the predicted posture of the mobile robot 100 is located in the grid 131 labeled 1, and the actual posture may be located in the grids 130 labeled 1-6. The posture values (such as grid coordinates and rotation angles) within the range of the grid 130 can be traversed by translation and rotation. For example, starting from the rotation angle of -35° at grid 1, each rotation of 5° until the rotation angle reaches 35°, the traversal at grid 1 is completed, and the traversal at other grids such as 2 and 3 is performed by analogy. While the posture values are traversed, the point cloud 120 is matched with the black grid 110, and the matching score is calculated according to the probability of the point in the grid, and the posture with the highest score is used as the SLAM posture at the current frame time.
[0104] In this embodiment, the transformed point cloud after the current frame point cloud is transformed according to the pose prediction value is combined, and the pose prediction value is adjusted based on the matching of the transformed point cloud to the grid map, so that the accurate SLAM pose can be matched and traversed. That is, the SLAM pose can make the current frame point cloud match the grid map at the previous frame time, thereby effectively reducing the overlapping phenomenon and facilitating the update of the grid map with clear and accurate boundaries.
[0105] S30: Determine whether the mobile robot is slipping according to the translation distance queue, the rotation angle queue and the SLAM posture queue.
[0106] The translation distance queue and the rotation angle queue can characterize the posture change, and the SLAM posture queue can also characterize the posture change. In this embodiment, the posture change characterized by the translation distance queue and the rotation angle queue, as well as the posture change characterized by the SLAM posture queue, are combined to perform slip detection based on these two posture changes. Compared with slip detection based on posture changes sensed by a single odometer and inertial measurement unit, this solution combines the two posture changes to accurately detect translation slip and rotation slip, making slip detection accurate and helping to improve map quality.
[0107] In some embodiments, the above step S30 specifically further includes:
[0108] S31: Determine a first translation cumulative value according to the translation distance queue, and determine a first rotation cumulative value according to the rotation angle queue.
[0109] S32: If the first translation cumulative value is greater than or equal to the first threshold or the first rotation cumulative value is greater than or equal to the second threshold, determine whether the mobile robot slips based on the first translation cumulative value, the first rotation cumulative value and the SLAM posture queue.
[0110] During the process of slip detection of the mobile robot, the odometer and the inertial measurement unit start to collect relevant data at their own working frequencies respectively, and store the corresponding data in the form of a queue according to time, wherein the first data collection time at the head of the queue is the start time of slip detection. According to the translation distance queue stored by the mobile robot, the first translation cumulative value can be determined, and the above-mentioned first translation cumulative value is the cumulative increment of the translation distance of the mobile robot from the start of slip detection to the current latest data collection time. According to the rotation angle queue stored by the mobile robot, the first rotation cumulative value can be determined, and the above-mentioned first rotation cumulative value is the cumulative increment of the rotation angle of the mobile robot from the start of slip detection to the current latest data collection time.
[0111] In some embodiments, the change amount of two adjacent translation distances in the translation distance queue is calculated, and the change amount of all adjacent two translation distances is added to obtain the first translation cumulative value. In some embodiments, the change amount of two adjacent rotation angles in the rotation angle queue is calculated, and the change amount of all adjacent two rotation angles is added to obtain the first rotation cumulative value.
[0112] It can be understood that if the first translation cumulative value is greater than or equal to the first threshold, it means that there is a translation increment and the mobile robot moves, wherein the first threshold may be 0.01 meters. If the first rotation cumulative value is greater than or equal to the second threshold, it means that there is a rotation increment and the mobile robot rotates, wherein the second threshold may be 2°. The first threshold and the second threshold may be determined according to actual conditions and are not limited here. Wheel slippage may occur only when a translation increment or a rotation increment occurs, thereby determining whether the mobile robot slips based on the first translation cumulative value, the first rotation cumulative value and the SLAM pose queue.
[0113] For example, if the first translation accumulated value of the mobile robot at the current moment is translation_cv(1)=0.02m, the first rotation accumulated value rotation_cv(1)=3°, the pre-set first threshold is translation_t(1)=0.01m, and the second threshold is rotation_t(1)=2°, since translation_cv(1)>translation_t(1), rotation_cv(1)>rotation_t(1), it means that the mobile robot moves and rotates within the detection period. Therefore, it is necessary to determine whether the mobile robot slips based on the first translation accumulated value, the first rotation accumulated value and the SLAM posture queue. If the first translation cumulative value of the mobile robot at the current moment is translation_cv(2)=0.005m, the first rotation cumulative value is rotation_cv(2)=1°, the preset first threshold is translation_t(1)=0.01m, and the second threshold is rotation_t(1)=2°, since translation_cv(2)<translation_t(1), rotation_cv(2)<rotation_t(1)=2°, it means that the mobile robot has not moved or rotated during the detection cycle, and there is no need to perform slip detection. Reset the head time of the translation distance queue, rotation angle queue, and SLAM pose queue to the current time to enter the next detection cycle.
[0114] In this embodiment, by acquiring the translation increment (i.e., the first translation cumulative value) and the rotation increment (i.e., the first rotation cumulative value) within the detection cycle, further slip detection is performed when the existence of the translation increment is detected based on the first translation cumulative value or when the existence of the rotation increment is detected based on the first rotation cumulative value. Compared with performing slip detection on the mobile robot in each detection cycle, this method can reduce the computational burden of the mobile robot by adding a possibility detection before further slip detection, and saves more computing power.
[0115] In some embodiments, in the above step S32, "determining whether the mobile robot slips according to the first translation cumulative value, the first rotation cumulative value and the SLAM pose queue" specifically includes:
[0116] S321: Determine a second translation cumulative value and a second rotation cumulative value according to the SLAM pose queue.
[0117] S322: Calculate the translation difference between the first translation cumulative value and the second translation cumulative value, and the rotation difference between the first rotation cumulative value and the second rotation cumulative value.
[0118] S323: If the translation difference is greater than or equal to the translation deviation threshold, or the rotation difference is greater than or equal to the rotation deviation threshold, it is determined that slippage occurs.
[0119] The second translation cumulative value of the SLAM posture queue is the cumulative increment of the translation distance of the mobile robot during the detection period. The second rotation cumulative value of the SLAM posture queue is the cumulative increment of the rotation angle of the mobile robot during the detection period. The second translation cumulative value reflects the translation change of the SLAM posture, and the second rotation cumulative value reflects the rotation change of the SLAM posture.
[0120] It can be understood that the first translation cumulative value reflects the translation change sensed by the odometer, and the first rotation cumulative value reflects the rotation change sensed by the inertial measurement unit. Under normal non-slip conditions, the two translation changes are nearly the same, the two rotation changes are nearly the same, and the difference is within the normal range. If the mobile robot slips or other abnormal conditions occur, the difference between the two translation changes exceeds the normal range, or the difference between the two rotation changes exceeds the normal range.
[0121] Therefore, the corresponding translation difference is calculated based on the first translation cumulative value and the second translation cumulative value, and the corresponding rotation difference is calculated based on the first rotation cumulative value and the second rotation cumulative value. If the calculated translation difference is greater than or equal to the preset translation deviation threshold, or the rotation difference is greater than or equal to the preset rotation deviation threshold, it is determined that the mobile robot is slipping.
[0122] For example, if the first translation cumulative value translation_cv(1) of the mobile robot at the current moment is 0.02m, the second translation cumulative value translation_cv(2) is 0.06m, and the translation deviation threshold translation_dif_t is 0.03m, then the corresponding translation difference translation_dif(1) is 0.04m. If the first rotation cumulative value rotation_cv(1) is 3°, the second rotation cumulative value rotation_cv(2) is 15°, and the rotation deviation threshold rotation_dif_t is 10°, then the corresponding rotation difference rotation_dif(1) is 12°. Since translation_dif(1)>translation_dif_t, rotation_dif(1)>rotation_dif_t, it can be determined that the mobile robot is slipping. If the first translation accumulated value translation_cv(1) of the mobile robot at the current moment is 0.02m, the second translation accumulated value translation_cv(3) is 0.04m, and the translation deviation threshold translation_dif_t is 0.03m, then the corresponding translation difference translation_dif(2) is 0.02m - translation_cv(1) - 0.02m. If the first rotation accumulated value rotation_cv(1) is 3°, and the second rotation accumulated value rotation_cv(3) is 10°, then the corresponding rotation difference rotation_dif(2) is 7° - rotation_cv(1). Since translation_dif(2) is less than translation_dif_t and rotation_dif(3) is less than rotation_dif_t, it can be determined that the mobile robot has not slipped.
[0123] In some embodiments, if the first translation cumulative value translation_cv(1) of the mobile robot at the current moment is 0.02m, the second translation cumulative value translation_cv(3) is 0.04m, and the translation deviation threshold translation_dif_t is 0.03m, then the corresponding translation difference translation_dif(2) is 0.02m - translation_cv(1) - 0.02m; if the first rotation cumulative value rotation_cv(1) is 3°, and the second rotation cumulative value rotation_cv(2) is 15°, then the corresponding rotation difference rotation_dif(1) is 12° - rotation_cv(1); since translation_dif(2) < translation_dif_t, rotation_dif(1) > rotation_dif_t, it can be determined that the mobile robot is slipping.
[0124] In this embodiment, by comparing the translation changes sensed by the odometer with the translation changes of the SLAM posture, and comparing the rotation changes sensed by the inertial measurement unit with the rotation changes of the SLAM posture, translational slip and rotational slip can be accurately detected, making slip detection accurate, which is beneficial to improving map quality.
[0125] In some embodiments, the aforementioned step S20 generates a SLAM pose queue according to the translation distance queue and the rotation angle queue, and further includes:
[0126] S24: Determine the translation speed and rotation speed at the next frame time according to the SLAM posture queue.
[0127] S25: Calculate the translation increment and rotation increment from the current frame time to the next frame time respectively using the translation speed and rotation speed at the next frame time.
[0128] S26: Determine the SLAM pose at the next frame time according to the SLAM pose at the current frame time, the translation increment and the rotation increment from the current frame time to the next frame time, and add the SLAM pose at the next frame time to the SLAM pose queue.
[0129] If it is detected that the mobile robot slips during operation, the SLAM pose at the next frame is calculated using the data in the SLAM pose queue at the current frame. Specifically, when slipping is detected, the translation vector in the SLAM pose at the end of the SLAM pose queue is subtracted from the translation vector in the SLAM pose at the head of the queue to obtain a translation change value, and this translation change value is divided by the difference between the timestamp at the end of the queue and the timestamp at the head of the queue to obtain the translation speed at the next frame. The rotation vector in the SLAM pose at the end of the SLAM pose queue is subtracted from the rotation vector in the SLAM pose at the head of the queue to obtain a rotation change value, and this rotation change value is divided by the timestamp at the end of the queue and the timestamp at the head of the queue to obtain the rotation speed at the next frame.
[0130] Therefore, the translation increment and rotation increment from the current frame time to the next frame time can be calculated according to the translation speed and rotation speed at the next frame time. The translation increment is the translation speed multiplied by the time difference between the current frame time and the next frame time, and the rotation increment is the rotation speed multiplied by the time difference between the current frame time and the next frame time. The SLAM pose at the current frame time is added to the translation increment and rotation increment from the current frame time to the next frame time to obtain the SLAM pose at the next frame time, and the SLAM pose at the next frame time is added to the SLAM pose queue.
[0131] In this embodiment, after detecting that the mobile robot has slipped, the SLAM posture of the mobile robot at the next frame is determined according to the SLAM posture queue information at the current frame. Among them, the SLAM posture at the current frame is the posture information of the mobile robot that is more accurate after matching. Therefore, compared with obtaining the posture information of the mobile robot at the next frame through the translation distance queue and the rotation angle queue after slipping, the posture information of the mobile robot after slipping determined in this way can be more accurate, so that when the mobile robot updates the map, even if abnormal situations such as slipping occur, it can use more accurate posture information to update the map and obtain a higher quality map.
[0132] In summary, the embodiment of the present application combines the posture changes represented by the translation distance queue and the rotation angle queue, as well as the posture changes represented by the SLAM posture queue, and performs slip detection based on these two posture changes. Compared with slip detection based on posture changes sensed by a single odometer and inertial measurement unit, this solution combines two posture changes to accurately detect translation slip and rotation slip, making slip detection accurate and helping to improve map quality.
[0133] The embodiment of the present application also provides a computer-readable storage medium, which stores computer-executable instructions, and the computer-executable instructions are used to enable an electronic device to execute the slip detection method provided by the embodiment of the present application.
[0134] In some embodiments, the storage medium may be a memory such as FRAM, ROM, PROM, EPROM, EE PROM, flash memory, magnetic surface memory, optical disk, or CD-ROM; or may be various devices including one or any combination of the above memories.
[0135] In some embodiments, executable instructions may be in the form of a program, software, software module, script or code, written in any form of programming language (including compiled or interpreted languages, or declarative or procedural languages), and may be deployed in any form, including as a stand-alone program or as a module, component, subroutine or other unit suitable for use in a computing environment.
[0136] As an example, executable instructions may, but do not necessarily, correspond to a file in a file system, may be stored as part of a file that stores other programs or data, for example, in one or more scripts in a Hypertext Markup Language (HTML) document, in a single file dedicated to the program in question, or in multiple coordinated files (for example, files storing one or more modules, subroutines, or code portions).
[0137] As an example, executable instructions may be deployed to be executed on one computing device (including devices such as smart terminals and servers), or on multiple computing devices located in one location, or on multiple computing devices distributed in multiple locations and interconnected by a communication network.
[0138] Finally, it should be noted that the above embodiments are only used to illustrate the technical solutions of the present invention, rather than to limit them. Under the concept of the present invention, the technical features in the above embodiments or different embodiments may also be combined, the steps may be implemented in any order, and there are many other changes in different aspects of the present invention as described above, which are not provided in detail for the sake of simplicity. Although the present invention has been described in detail with reference to the aforementioned embodiments, those skilled in the art should understand that they may still modify the technical solutions described in the aforementioned embodiments, or make equivalent replacements for some of the technical features therein. However, these modifications or replacements do not deviate the essence of the corresponding technical solutions from the scope of the technical solutions of the embodiments of the present invention.
Claims
1. A skid detection method, characterized in that: include: Acquire a translation distance queue and a rotation angle queue, wherein the translation distance queue is acquired by an odometer, and the rotation angle queue is acquired by an inertial measurement unit; Generate a SLAM pose queue according to the translation distance queue and the rotation angle queue; Whether the mobile robot slips is determined according to the translation distance queue, the rotation angle queue and the SLAM posture queue.
2. The method according to claim 1, characterized in that The step of generating a SLAM pose queue according to the translation distance queue and the rotation angle queue comprises: Determine the translation speed at the current frame time according to the translation distance queue, and determine the rotation speed at the current frame time according to the rotation angle queue; Calculating the translation increment and the rotation increment from the previous frame moment to the current frame moment respectively by using the translation velocity at the current frame moment and the rotation velocity at the current frame moment; The SLAM pose at the current frame moment is determined according to the SLAM pose at the previous frame moment, the translation increment and the rotation increment from the previous frame moment to the current frame moment, and the SLAM pose at the current frame moment is added to the SLAM pose queue.
3. The method according to claim 2, characterized in that Determining the SLAM pose at the current frame time according to the SLAM pose at the previous frame time, the translation increment and the rotation increment from the previous frame time to the current frame time includes: Add the translation increment and rotation increment from the previous frame time to the current frame time to the SLAM pose at the previous frame time, to obtain a pose prediction value of the SLAM pose at the current frame time; The SLAM pose at the current frame moment is determined according to the pose prediction value and the current frame point cloud.
4. The method according to claim 3, characterized in that Determining the SLAM pose at the current frame time according to the pose prediction value and the current frame point cloud includes: Performing coordinate transformation on the current frame point cloud according to the predicted pose value to obtain a transformed point cloud; The transformed point cloud is mapped to a grid map for matching, and the posture prediction value is adjusted according to the matching situation to obtain the SLAM posture at the current frame time.
5. The method according to claim 1, characterized in that The step of determining whether the mobile robot slips according to the translation distance queue, the rotation angle queue, and the SLAM posture queue includes: Determine a first translation cumulative value according to the translation distance queue, and determine a first rotation cumulative value according to the rotation angle queue; If the first translation cumulative value is greater than or equal to a first threshold or the first rotation cumulative value is greater than or equal to a second threshold, it is determined whether the mobile robot slips based on the first translation cumulative value, the first rotation cumulative value and the SLAM pose queue.
6. The method according to claim 5, characterized in that The step of determining whether the mobile robot slips according to the first translation cumulative value, the first rotation cumulative value, and the SLAM pose queue includes: Determine a second translation cumulative value and a second rotation cumulative value according to the SLAM pose queue; Calculating a translation difference between the first translation cumulative value and the second translation cumulative value, and a rotation difference between the first rotation cumulative value and the second rotation cumulative value; If the translation difference is greater than or equal to a translation deviation threshold, or the rotation difference is greater than or equal to a rotation deviation threshold, it is determined that slip occurs.
7. The method according to claim 6, characterized in that If it is determined that slippage occurs, generating a SLAM pose queue according to the translation distance queue and the rotation angle queue also includes: Determine the translation speed and rotation speed at the next frame time according to the SLAM posture queue; Calculating the translation increment and rotation increment from the current frame time to the next frame time respectively by using the translation speed and rotation speed at the next frame time; The SLAM pose at the next frame time is determined according to the SLAM pose at the current frame time, the translation increment and the rotation increment from the current frame time to the next frame time, and the SLAM pose at the next frame time is added to the SLAM pose queue.
8. The method according to claim 1, characterized in that When the difference between the most recent time index in the SLAM pose queue and the head time index thereof reaches a detection period, the process of determining whether the mobile robot has slipped based on the translation distance queue, the rotation angle queue and the SLAM pose queue is started; and / or, The translation distance queue, the rotation angle queue and the SLAM posture queue are updated according to the detection cycle respectively.
9. A mobile robot, characterized in that: include: at least one processor; A memory communicatively connected to the at least one processor; wherein the memory stores instructions executable by the at least one processor, the instructions being executed by the at least one processor so that the at least one processor can execute the slip detection method as described in any one of claims 1-8.
10. A computer-readable storage medium, characterized in that: The computer-readable storage medium stores computer-executable instructions, and the computer-executable instructions are used to enable a computer device to execute the slip detection method according to any one of claims 1-8.