Mobile body, control device, control method, and control program
The control device allows mobile bodies to detect and escape stuck states by using sensors, detectors, and executors to autonomously navigate around persistent objects, ensuring effective movement.
Patent Information
- Application Number
- JP2025541621
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2024-08-08
- Filing Date
- 2025-07-15
- Publication Date
- 2026-01-14
- Estimated Expiration
- 2045-07-15
AI Technical Summary
Mobile bodies can become stuck when objects persist in their monitoring area, preventing movement and requiring intervention to escape the stuck state.
A control device equipped with sensors to detect objects, a detector to identify stuck states, a searcher to find escape actions, and an executor to execute these actions, enabling the mobile body to autonomously escape from obstacles.
Enables the mobile body to effectively avoid collisions and escape stuck states by autonomously identifying and maneuvering around persistent objects.
Smart Images

Figure 0007799143000001 
Figure 0007799143000002 
Figure 0007799143000003
Abstract
Description
[Technical Field]
[0001] The technology disclosed herein relates to a moving body, a control device, a control method, and a control program. [Background technology]
[0002] Conventionally, robots have been known as mobile bodies that move autonomously from a starting point to a destination. For example, a mobile body disclosed in Patent Document 1 detects an object such as a human and moves autonomously while avoiding collision with the object. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] Japanese Patent Application Publication No. 2020-046759 Summary of the Invention
[0004] Incidentally, when the mobile body as described above determines that an object exists in a monitoring area set around the mobile body, the mobile body stops moving to avoid a collision with the object. If the object continues to exist in the monitoring area, the mobile body may become unable to move (referred to as a stuck state).
[0005] The technology disclosed herein has been made in consideration of the above points, and its purpose is to deal with the stuck state of the main body of the mobile body.
[0006] The mobile body disclosed herein comprises a mobile body main body, a sensor that detects objects present around the mobile body main body, and a control device that causes the mobile body to move autonomously and stops the mobile body when it determines based on the detection signal of the sensor that an object is present in a monitoring area set around the mobile body, and when the control device causes the mobile body main body to become stuck and unable to move due to the presence of the object in the monitoring area, it causes the mobile body to perform an escape operation to move away from the object.
[0007] The control device disclosed herein is a control device that causes a mobile body to move autonomously and stops the mobile body when it determines that an object is present in a monitoring area set around the mobile body, and is equipped with a detector that detects whether the mobile body is stuck and unable to move based on the presence of the object in the monitoring area, a searcher that searches for an escape action by the mobile body to move away from the object when the detector detects that the mobile body is stuck, and an executor that causes the mobile body to execute the escape action searched for by the searcher.
[0008] The control method disclosed herein is a control method for causing a mobile body to move autonomously and for stopping the mobile body when it is determined that an object is present in a monitoring area set around the mobile body, and includes the steps of detecting whether the mobile body is stuck and unable to move based on the presence of the object in the monitoring area, searching for an escape operation by which the mobile body will move away from the object when it is detected that the mobile body is stuck, and causing the mobile body to execute the escape operation.
[0009] The control program disclosed herein is a control program for causing a mobile body to move autonomously and for stopping the mobile body when it is determined that an object is present in a monitoring area set around the mobile body, and causes a computer to realize the following functions: a function for detecting whether the mobile body is stuck and unable to move based on the presence of the object in the monitoring area; a function for searching for an escape operation by which the mobile body will move away from the object when it is detected that the mobile body is stuck; and a function for causing the mobile body to execute the escape operation.
[0010] According to the moving body, the control device, the control method, and the control program, the moving body can be made to escape from a stuck state. [Brief explanation of the drawings]
[0011] [Figure 1] FIG. 1 is a perspective view of a moving body according to an embodiment. [Figure 2] FIG. 2 is a schematic plan view of the moving body. [Figure 3] FIG. 3 is a diagram illustrating a hardware configuration of the control device. [Figure 4] FIG. 4 is a functional block diagram showing the configuration of the control system of the processor. [Figure 5] FIG. 5 is a schematic plan view conceptually showing a mobile body and a monitoring area set around the mobile body. [Figure 6] FIG. 6 is a flowchart showing the basic operation of a moving object. [Figure 7] FIG. 7 is a block diagram showing the configuration of a control system of a processor in a control device. [Figure 8] FIG. 8 is a schematic plan view conceptually showing various regions set with the main body of the moving body as the reference. [Figure 9] FIG. 9 is a flowchart showing the stuck escape process performed by the processor of the control device. [Figure 10] FIG. 10 is a flowchart of a subroutine of the stack continuation determination process. [Figure 11] FIG. 11 is a flowchart of a subroutine for the stuck escape action search process. [Figure 12] FIG. 12 is a flowchart of a subroutine of the target position calculation process. [Figure 13] FIG. 13 is a schematic plan view showing the farthest candidate position. [Figure 14] FIG. 14 is a schematic plan view showing the farthest candidate position. [Figure 15] FIG. 15 is a flowchart of a subroutine for the parallel movement confirmation process. [Figure 16] FIG. 16 is a schematic plan view showing the monitoring area before reduction. [Figure 17] FIG. 17 is a schematic plan view showing the monitored area after reduction. [Figure 18]FIG. 18 is a schematic plan view showing the monitored area after reduction. [Figure 19] FIG. 19 is a block diagram showing the configuration of a control system of a processor of a control device for a moving body according to the first modification. [Figure 20] FIG. 20 is a flowchart of a subroutine for the stuck escape action search process. [Figure 21] FIG. 21 is a flowchart of a subroutine of the target attitude calculation process. [Figure 22] FIG. 22 is a schematic plan view showing the stacked state of the moving body. [Figure 23] FIG. 23 is a schematic diagram showing a second candidate posture for turning left. [Figure 24] FIG. 24 is a schematic diagram showing a second candidate orientation for clockwise rotation. [Figure 25] FIG. 25 is a schematic diagram showing a third candidate pose for clockwise rotation. [Figure 26] FIG. 26 is a schematic diagram showing a fourth candidate pose for clockwise rotation. [Figure 27] FIG. 27 is a flowchart of a subroutine of the self-axis rotation confirmation process. [Figure 28] FIG. 28 is a schematic diagram illustrating a method for rotating the monitoring area around its own axis so as to correspond to the target attitude. [Figure 29] FIG. 29 is a block diagram showing the configuration of a control system of a processor of a control device for a moving body according to the second modification. [Figure 30] FIG. 30 is a flowchart of a subroutine for the stuck escape action search process. [Figure 31] FIG. 31 is a functional block diagram showing the configuration of a control system of a processor according to the third modification. [Figure 32] FIG. 32 is a side view of the moving body when the robot arm is in the running configuration. [Figure 33] FIG. 33 is a plan view of the moving body when the robot arm is in the running configuration. DETAILED DESCRIPTION OF THE INVENTION
[0012] Exemplary embodiments will be described in detail below with reference to the drawings. FIG. 1 is a perspective view of a moving body 100. The moving body 100 moves autonomously. The moving body 100 includes a moving body main body 1 and a control device 6 that causes the moving body main body 1 to move autonomously. For example, the moving body 100 moves within a facility such as a store, hospital, or nursing home. In addition to moving, the moving body 100 may also perform tasks such as handing over an item or opening and closing a door.
[0013] For example, the mobile body 1 is a mobile robot that includes a robot arm 12. In detail, the mobile body 1 may have a carriage 10, a base 11 mounted on the carriage 10, and a robot arm 12 connected to the base 11.
[0014] The bogie 10 has a defined front-to-rear direction. In this example, the bogie 10 has a generally rectangular planar shape. For example, the longitudinal direction of the rectangle is the front-to-rear direction. The lateral direction of the rectangle is the left-to-right direction.
[0015] The dolly 10 includes a plurality of wheels 13 and is capable of traveling. In this example, the dolly 10 includes four wheels 13. The dolly 10 may be capable of traveling straight and turning. In this example, the dolly 10 is capable of moving forward, backward, left, right, and diagonally while maintaining its posture, i.e., moving in all directions. In other words, the dolly 10 may be capable of translational movement in directions other than the forward and backward direction. Furthermore, the dolly 10 may also be capable of rotating on the spot. For example, the four wheels 13 include a set of wheels 13 aligned in the left-right direction at the front of the bottom of the dolly 10 and another set of wheels 13 aligned in the left-right direction at the rear of the bottom of the dolly 10. The wheels 13 may be arranged to form a rectangle on the bottom of the dolly 10. More specifically, the four wheels 13 are arranged at the four corners of the bottom of the dolly 10.
[0016] Specifically, the wheel 13 may be an omnidirectional wheel. In this example, the wheel 13 is a Mecanum wheel. The wheel 13 has a plurality of barrel-shaped rollers arranged around the outer periphery of the wheel. For example, the rotation axis of each roller is inclined at 45 degrees relative to the axle of the wheel 13.
[0017] The mobile body 1 may have a motor 13a that drives the wheels 13 and an encoder 13b that detects the amount of rotation of the motor 13a (see FIG. 3). In this example, the mobile body 1 has four sets of motors 13a and encoders 13b corresponding to the four wheels 13. The four wheels 13 may be independently driven by the corresponding motors 13a.
[0018] The cart 10 may be able to move in any direction in two dimensions using these four wheels 13. For example, the cart 10 can translate or turn in any direction, including forward / backward, left / right, and diagonal. The cart 10 can also rotate on the spot.
[0019] The base 11 may be mounted on the cart 10. In this example, the base 11 has a shape that resembles the upper half of a human body. The base 11 may be fixed to the cart 10 so as not to be movable.
[0020] The mobile body 1 has two robot arms 12. A hand 14 may be attached to the tip of one of the robot arms 12. The other robot arm 12 does not necessarily have to have a hand 14 attached to the tip.
[0021] The two robot arms 12 are connected to different portions of the base 11. For example, the two robot arms 12 are connected to different portions of the base 11 in the width direction, which is one direction in a plan view. In other words, the width direction is the direction in which the connection portion of one robot arm 12 to the base 11 and the connection portion of the other robot arm 12 to the base 11 are aligned in a plan view. The base 11 may have a front and a back that face opposite each other in a plan view. For example, the front side of the base 11 is the front, and the back side is the rear, defining the front-to-rear direction. The width direction may be a horizontal direction that is perpendicular to the front-to-rear direction. In other words, the width direction is the left-to-right direction relative to the front-to-rear direction. For example, one robot arm 12 is connected to the left side of the base 11, and the other robot arm 12 is connected to the right side of the base 11.
[0022] When the planar shape of the carriage 10 is a substantially rectangular shape having a longitudinal direction and a lateral direction, the width direction substantially coincides with the lateral direction of the planar shape of the carriage 10.
[0023] For example, as shown in FIG. 1, the robot arm 12 has a plurality of links L and a plurality of joints J that connect the links L. The robot arm 12 is configured to operate in three dimensions. In this example, the robot arm 12 is a multi-joint robot arm. That is, the shape of the robot arm 12 may be freely changed by rotating the joints. The robot arm 12 is supported by a base 11.
[0024] For example, the multiple links L include a first link L1, a second link L2, a third link L3, a fourth link L4, a fifth link L5, a sixth link L6, and a seventh link L7, which are arranged in series from the base 11 side. The seventh link L7 is located at the tip of the robot arm 12. For example, the multiple joints J include a first joint J1, a second joint J2, a third joint J3, a fourth joint J4, a fifth joint J5, a sixth joint J6, and a seventh joint J7, which are arranged in series from the base 11 side. The position and orientation of the seventh link L7 have six degrees of freedom, including translational and rotational directions about three orthogonal axes. The robot arm 12 may be a so-called seven-axis robot having seven joints J. In other words, the robot arm 12 has redundancy. Redundancy is a characteristic in which the rotation angles of the multiple joints J corresponding to the position and orientation of the tip of the robot arm 12 are not uniquely determined.
[0025] The base 11 and the first link L1 are rotatably connected by a first joint J1. The first link L1 and the second link L2 are rotatably connected by a second joint J2. The second link L2 and the third link L3 are rotatably connected by a third joint J3. The third link L3 and the fourth link L4 are rotatably connected by a fourth joint J4. The fourth link L4 and the fifth link L5 are rotatably connected by a fifth joint J5. The fifth link L5 and the sixth link L6 are rotatably connected by a sixth joint J6. The sixth link L6 and the seventh link L7 are rotatably connected by a seventh joint J7.
[0026] A hand 14 may be connected to a seventh link L7 at the tip of the robot arm 12. In other words, the hand 14 is connected to the robot arm 12 so as to be rotatable around the rotation axis of the seventh joint J7. The hand 14 is an end effector attached to the robot arm 12.
[0027] In more detail, the multiple joints J may include a joint that functions as a shoulder joint. For example, the multiple joints J include a joint that has the functions of horizontal extension and horizontal flexion in the shoulder joint. The rotation axis of the joint that has the functions of horizontal extension and horizontal flexion in the shoulder joint extends in a substantially vertical direction. The multiple joints J may include a joint that has the functions of extension and flexion in the shoulder joint. The rotation axis of the joint that has the functions of extension and flexion in the shoulder joint extends in a substantially horizontal direction.
[0028] For example, the first joint J1 functions as a shoulder joint of the robot arm 12. The first joint J1 may have the functions of horizontal extension and horizontal flexion at the shoulder joint. The rotation axis of the first joint J1 extends in a substantially vertical direction.
[0029] For example, the second joint J2 functions as a shoulder joint of the robot arm 12. The second joint J2 may have the functions of extension and flexion at the shoulder joint. The rotation axis of the second joint J2 extends in a substantially horizontal direction.
[0030] For example, the third joint J3 functions as a shoulder joint of the robot arm 12. The third joint J3 may have the function of internal rotation and external rotation in a shoulder joint.
[0031] The multiple joints J may include a joint that functions as a wrist joint. For example, the multiple joints J include a joint that has the functions of internal rotation and external rotation or the functions of pronation and supination at the wrist joint. For example, the seventh joint J7 may have the functions of internal rotation and external rotation at the wrist joint. The sixth joint J6 may have the functions of pronation and supination at the wrist joint.
[0032] The multiple joints J may include an intermediate joint between a shoulder joint and a wrist joint. The intermediate joint may also be referred to as an elbow joint. The intermediate joint may have functions of extension and flexion at the intermediate joint, or functions of internal rotation and external rotation at the intermediate joint. The fourth joint J4 may have functions of extension and flexion at the intermediate joint. The fifth joint J5 may have functions of internal rotation and external rotation at the intermediate joint.
[0033] The robot arm 12 has a motor 12a (see FIG. 3) that rotates and drives each joint J. For example, the motor 12a is a servo motor. Each motor 12a has an encoder 12b (see FIG. 3).
[0034] The mobile body 100 may include a sensor 3 that detects objects (hereinafter simply referred to as "peripheral objects") around the mobile body 1. In this disclosure, "objects" includes both inanimate and animate objects. The sensor 3 is disposed on the mobile body 1. For example, the sensor 3 is disposed on the dolly 10. In this example, the sensor 3 is a distance measurement sensor that measures the distance from the sensor 3 to the peripheral objects. For example, the sensor 3 is a LiDAR (Light Detection and Ranging) sensor. The sensor 3 has, for example, a light-emitting unit that emits laser light toward the periphery of the mobile body 1 and a light-receiving unit that receives the laser light reflected off the surface of the peripheral object. The sensor 3 measures the flight time of the laser light emitted from the light-emitting unit, hitting the surface of the peripheral object, and returning to the light-receiving unit. The sensor 3 measures the distance from the sensor 3 to the surface of the peripheral object based on the measured flight time. The sensor 3 may generate point cloud data based on the measured distance. The point cloud data is three-dimensional position information of the surface of the peripheral object. For example, the sensor 3 outputs the calculated point cloud data to the control device 6. The sensor 3 may repeatedly detect surrounding objects at a predetermined detection period while the mobile body 1 is moving. The sensor 3 may output the detection result of the sensor 3, i.e., the point cloud data, to the control device 6 every time the sensor 3 detects a surrounding object.
[0035] In this example, the mobile body 100 is equipped with multiple sensors 3. FIG. 2 is a schematic diagram showing the detection range of the sensor 3. FIG. 2 is a plan view of the mobile body 100, omitting the robot arm 12 and other components. The mobile body 100 may be equipped with a first sensor 3A, a second sensor 3B, and a third sensor 3C. The first sensor 3A, the second sensor 3B, and the third sensor 3C are disposed on the carriage 10. The first sensor 3A is disposed at the front of the carriage 10. For example, the first sensor 3A is disposed on the carriage 10, forward of the base 11 and approximately in the center in the left-right direction. The first sensor 3A detects objects in the three-dimensional space around the mobile body main body 1. The first sensor 3A may be a 3D LiDAR. The first sensor 3A scans the measurement light in the horizontal and vertical directions. In this example, the first sensor 3A scans the measurement light 360 degrees horizontally, as indicated by the two-dot chain line in FIG. 2. In the vertical direction, the first sensor 3A causes the measurement light to scan within a predetermined range including elevation and depression angles.
[0036] The second sensor 3B and the third sensor 3C may be disposed at the rear of the bogie 10. More specifically, the second sensor 3B and the third sensor 3C are disposed on the bogie 10 rearward of the base 11. The second sensor 3B is disposed at the left rear corner of the bogie 10, and the third sensor 3C is disposed at the right rear corner of the bogie 10. The second sensor 3B and the third sensor 3C may detect objects in a two-dimensional space in the horizontal direction around the mobile body 1. For example, the second sensor 3B and the third sensor 3C are 2D LiDARs. The second sensor 3B and the third sensor 3C scan the measurement light in the horizontal direction. The second sensor 3B and the third sensor 3C detect objects in a range in the horizontal direction that cannot be detected by the first sensor 3A. The second sensor 3B scans the measurement light at least to the left rear of the bogie 10. The third sensor 3C scans the measurement light at least to the right rear of the bogie 10. The scanning range of the measurement light by the second sensor 3B and the scanning range of the measurement light by the third sensor 3C partially overlap behind the carriage 10. In this example, the second sensor 3B scans the measurement light horizontally by approximately 270 degrees from the front to the right, including the left area of the mobile body 1, as shown by the dashed line in FIG. 2. The third sensor 3C scans the measurement light horizontally by approximately 270 degrees from the front to the left, including the right area of the mobile body 1, as shown by the dashed line in FIG. 2. The second sensor 3B and the third sensor 3C detect objects at approximately the same height. That is, the scanning plane of the measurement light by the second sensor 3B and the scanning plane of the measurement light by the third sensor 3C are at approximately the same height.
[0037] 2, since the base 11 is disposed behind the first sensor 3A, the first sensor 3A cannot properly scan the measurement light into the range F that overlaps with the base 11. On the other hand, since the second sensor 3B and the third sensor 3C are disposed behind the base 11, the second sensor 3B and the third sensor 3C can also scan the measurement light into the range F.
[0038] Hereinafter, when there is no need to distinguish between the first sensor 3A, the second sensor 3B, and the third sensor 3C, they will be simply referred to as "sensors 3."
[0039] FIG. 3 is a diagram showing the hardware configuration of the control device 6. The control device 6 controls the entire mobile body 1. The control device 6 causes the mobile body 1 to move autonomously while estimating the self-position of the mobile body 1. The control device 6 operates the motor 13a of the wheel 13 to move the mobile body 1. Furthermore, the control device 6 controls the motor 12a of the robot arm 12 to cause the robot arm 12 to perform a predetermined task. The control device 6 has a processor 61, a storage device 62, and a memory 63.
[0040] The processor 61 performs various types of arithmetic processing. For example, the processor 61 is formed of a processor such as a CPU (Central Processing Unit). The processor 61 may be formed of an MCU (Micro Controller Unit), an MPU (Micro Processor Unit), an FPGA (Field Programmable Gate Array), a PLC (Programmable Logic Controller), a system LSI, or the like. The processor 61 operates the motor 13a, causing the mobile body 1 to move autonomously.
[0041] The memory 62 stores programs and various data executed by the processor 61. For example, the memory 62 stores a control program. The memory 62 stores map information related to a map of the environment in which the mobile body 1 moves. For example, the map information includes a three-dimensional map and a two-dimensional map. The three-dimensional map is formed from three-dimensional point cloud data. For example, the three-dimensional map is a three-dimensional point cloud map. In the three-dimensional map, the three-dimensional shapes of obstacles in the environment, such as walls, ceilings, handrails, shelves, tables, or chairs, are represented by point cloud data. The two-dimensional map is a planar map. For example, the two-dimensional map is a two-dimensional occupancy grid map. In the two-dimensional map, the planar shapes of obstacles in the environment, such as walls, ceilings, handrails, shelves, tables, or chairs, are represented. For example, the two-dimensional map is formed by projecting the three-dimensional map onto a plane. The memory 62 is formed from a non-volatile memory, a hard disk drive (HDD), a solid state drive (SSD), or the like. The memory 63 temporarily stores data, etc. For example, the memory 63 is formed of a volatile memory.
[0042] 4 is a functional block diagram showing the configuration of the control system of the processor 61. The processor 61 realizes various functions by reading a control program from the storage device 62 into the memory 63 and expanding it. Specifically, the processor 61 functions as a state estimator 64 that estimates the state of the mobile body 1, a map generator 65 that generates a map of the environment in which the mobile body 1 moves, a path generator 66 that plans a path for the mobile body 1, a trajectory generator 67 that generates a target trajectory according to the path, and a movement controller 68 that moves the mobile body 1 according to the target trajectory. The processor 61 also functions as an operation amount calculator 69 that calculates the operation amount of the motor 13a.
[0043] The state estimator 64 performs self-position estimation. The state estimator 64 receives the detection results of the sensor 3, the detection results of the encoder 13b, and the map information in the memory 62. The map information is, for example, a three-dimensional map. The state estimator 64 compares the detection results of the sensor 3 with the map information to estimate the current position of the mobile body 1, i.e., its self-position. Here, the position of the mobile body 1 also includes the orientation of the mobile body 1, i.e., its attitude.
[0044] In this example, the state estimator 64 performs self-position estimation using the three-dimensional point cloud data of the first sensor 3 A. The state estimator 64 compares environmental information around the mobile body 1 obtained from the three-dimensional point cloud data of the first sensor 3 A with a three-dimensional map, and estimates the position of the mobile body 1 within the environment represented by the three-dimensional map, i.e., the self-position.
[0045] The map generator 65 generates a map based on the detection results of the sensor 3. Specifically, the map generator 65 generates or modifies a three-dimensional map based on the detection results of the sensor 3. In this example, before autonomous movement is performed, the three-dimensional map is generated using SLAM (Simultaneous Localization and Mapping) technology. Specifically, while the mobile body 1 is moving within the environment, the state estimator 64 and the map generator 65 acquire the detection results of the sensor 3 and perform self-location estimation and map generation in parallel. The generated map information, i.e., the three-dimensional map, is stored in the memory 62. When generating the map before autonomous movement is performed, the movement of the mobile body 1 can be performed by manual operation by the user.
[0046] Furthermore, the map generator 65 updates the two-dimensional map. The two-dimensional map can also be updated during autonomous movement. The map generator 65 detects obstacles in the environment based on the detection results of the sensor 3 acquired while the mobile body 1 is moving, and updates the two-dimensional map.
[0047] The route generator 66 reads the destination and map information from the memory 62. The destination is set in advance in the memory 62. The map information at this time is, for example, a two-dimensional map. At this time, the route generator 66 may read intermediate points in addition to the destination. The state quantities (including the estimated position) of the mobile body 1 are input to the route generator 66 from the state estimator 64.
[0048] The path generator 66 generates a path from the current position of the mobile body 1 to the destination based on map information. The path generator 66 references the map information to generate a path that avoids interference with obstacles, etc. If a passage is set in the environment, the path generator 66 generates a path along the passage. For example, the path generator 66 generates a path using an A-star search algorithm, an RRT algorithm, a Dijkstra algorithm, or a geometric approach. The path generator 66 outputs an array of positions through which the mobile body 1 passes as a path to the trajectory generator 67. Each position includes the attitude of the mobile body 1 in addition to position information.
[0049] The trajectory generator 67 generates a target trajectory from the current position of the mobile body 1 according to the generated path. The trajectory generator 67 generates the target trajectory of the mobile body 1 using a predetermined method (for example, line-of-sight guidance law). The state quantities of the mobile body 1 are input to the trajectory generator 67 from the state estimator 64. The trajectory generator 67 calculates a command speed for the mobile body 1.
[0050] Alternatively, the trajectory generator 67 may calculate the command speed by model predictive control (MPC). Model predictive control determines a control input, i.e., a speed command, by sequentially solving an optimization problem based on a model of the mobile body 1. The trajectory generator 67 predicts future state quantities from the current state quantities of the mobile body 1 and obstacles, calculates an optimal path for the mobile body 1, and calculates a moving speed from the current position to the target position to follow that path as a command speed.
[0051] The command speed calculated by the trajectory generator 67 is input to the movement controller 68. The movement controller 68 outputs a command value according to the command speed to the operation amount calculator 69.
[0052] The movement controller 68 executes control to avoid interference between the mobile body 1 and an obstacle. The movement controller 68 monitors the approach of the mobile body 1 to an obstacle based on the detection results of the sensors 3. In this example, the movement controller 68 monitors the approach of the mobile body 1 to an obstacle using all of the detection results of the first sensor 3A, the second sensor 3B, and the third sensor 3C. For example, the movement controller 68 slows down or stops the mobile body 1 depending on the distance between the mobile body 1 and the obstacle.
[0053] The movement controller 68 further executes stop control to avoid a collision between the mobile body 1 and an object. Specifically, the movement controller 68 stops the mobile body 1 when it determines, based on the detection signal from the sensor 3, that an object is present in a monitoring area Z1 set around the mobile body 1.
[0054] 5 is a schematic plan view conceptually showing the mobile body 1 and a monitoring area Z1 set around the mobile body 1. The monitoring area Z1 is an area in which the movement controller 68 stops the movement of the mobile body 1 when the sensor 3 detects an object in the monitoring area Z1. The monitoring area Z1 is set around the mobile body 1. Specifically, the monitoring area Z1 is set within a predetermined range from the periphery of an area that includes the entire mobile body 1 in a plan view. The area that includes the entire mobile body 1 is hereinafter referred to as the occupied area Z0.
[0055] Occupation area Z0 corresponds to the occupied area of the mobile body 1 when viewed in a plan view. The outline of occupation area Z0 is a rectangle circumscribing the outer periphery of the mobile body 1 when viewed in a plan view. In this example, the outer periphery of occupation area Z0 is circumscribing the outer periphery of the bogie 10. The outer periphery of occupation area Z0 is a rectangle. In more detail, occupation area Z0 includes two sides (long sides in this example) extending in the fore-and-aft direction of the mobile body 1 when viewed in a plan view, and two sides (short sides in this example) extending in a direction perpendicular to the fore-and-aft direction. In Figure 5, the outer periphery of occupation area Z0 is indicated by a two-dot chain line.
[0056] The monitoring area Z1 is set within a predetermined range from the periphery of the occupied area Z0 to the outside of the occupied area Z0. The periphery of the monitoring area Z1 follows the periphery of the occupied area Z0. In this example, the outer shape of the monitoring area Z1 is rectangular. In FIG. 5, the monitoring area Z1 is hatched. The periphery of the occupied area Z0 is indicated by a dotted line.
[0057] When an object enters the monitoring area Z1, the movement controller 68 continues to stop the mobile body 1 until the intruding object is no longer present within the monitoring area Z1. For example, when an obstacle such as a moving table enters the monitoring area Z1, the movement controller 68 stops the mobile body 1. After the obstacle moves out of the monitoring area Z1, the movement controller 68 causes the mobile body 1 to travel again.
[0058] The movement controller 68 further executes stuck escape control for escaping from the stuck state of the mobile body 1. Specifically, when the mobile body 1 becomes stuck and unable to move due to the presence of an object in the monitoring area Z1, the movement controller 68 causes the mobile body 1 to execute an escape operation to move away from the object. When the mobile body 1 stops due to the presence of an object in the monitoring area Z1 and the stoppage of the mobile body 1 continues for a predetermined time from the start of the stoppage, the movement controller 68 determines that the mobile body 1 is stuck.
[0059] The manipulated variable calculator 69 distributes the command value to the plurality of motors 13a and calculates the command manipulated variable for each of the plurality of motors 13a. For example, the manipulated variable is the rotation speed or torque of the motor.
[0060] Each motor 13a operates according to a command operation amount. In some cases, the motor 13a is provided with a dedicated controller for operating the motor 13a. For example, if the motor 13a is a servo motor, the motor 13a further includes a servo amplifier. In this case, the servo amplifier operates the motor 13a according to the command operation amount. As a result, the mobile body 1 moves.
[0061] Next, a description will be given of the basic operation of the moving body 100. Fig. 6 is a flowchart of the basic operation of the moving body 100. The moving body 100 repeatedly executes the following processing at a predetermined control cycle.
[0062] First, in step S1, the state estimator 64 acquires surrounding environment information. Specifically, the state estimator 64 acquires the detection signal of the sensor 3 and the detection signal of the encoder 13b.
[0063] Next, in step S2, the state estimator 64 performs self-localization.
[0064] Subsequently, in step S3, the route generator 66 executes route planning, generating a route for the mobile body 1 based on the map information, the estimated position of the mobile body 1, and the destination.
[0065] In step S4, the trajectory generator 67 calculates a command velocity from the estimated position of the mobile body 1 so as to follow the generated path.
[0066] In step S5, the movement controller 68 causes the moving body 1 to move in accordance with the command speed.
[0067] By repeating the above processing, the moving body 100 estimates its own position and moves autonomously to the destination.
[0068] Next, the stuck state escape control of the movement controller 68 will be described in more detail. Fig. 7 is a block diagram showing the configuration of the stuck state escape control system of the movement controller 68. The movement controller 68 has a detector 55, a searcher 56, and an executor 57 as functional blocks. The movement controller 68 may further have a determiner 58 as a functional block.
[0069] The detector 55 detects whether the mobile body 1 is stuck and unable to move due to the presence of an object in the monitoring area Z1. Specifically, the detector 55 detects that the mobile body 1 is stuck when the stop of the mobile body 1 due to the presence of an object in the monitoring area Z1 continues for a predetermined time from the start of the stop.
[0070] When the stuck state of the mobile body 1 occurs, the determiner 58 determines whether or not the stuck state of the mobile body 1 continues after the mobile body 1 has been stopped for a predetermined time. Specifically, the determiner 58 determines whether or not the mobile body 1 is stuck after a predetermined time has elapsed since the detector 55 detected the stuck state of the mobile body 1. More specifically, when the determiner 58 determines that the stuck state of the mobile body 1 continues, it expands the monitoring area Z1. Hereinafter, the expanded monitoring area will be referred to as the monitoring area Z2.
[0071] FIG. 8 is a schematic plan view conceptually showing various areas set based on the mobile body 1. The monitoring area Z2 is an area obtained by uniformly expanding the periphery of the monitoring area Z1 in the front-to-back, left-to-right directions. In this example, the outer shape of the monitoring area Z2 is rectangular. The outer shape of the monitoring area Z2 is similar to the outer shape of the monitoring area Z1.
[0072] The determiner 58 determines that the stuck state of the mobile body 1 has been resolved when the sensor 3 does not detect an object in the monitoring area Z2. The determiner 58 determines that the stuck state of the mobile body 1 continues when the sensor 3 detects an object in the monitoring area Z2.
[0073] The searcher 56 searches for an escape action by which the mobile body 1 moves away from the object when the mobile body 1 becomes stuck. In other words, when the determiner 58 determines that the stuck state of the mobile body 1 continues, the searcher 56 searches for an escape action.
[0074] Specifically, when the mobile body 1 becomes stuck, the searcher 56 searches for a first escape operation that translates the mobile body 1 in a direction away from the object. The translation of the mobile body 1 refers to moving the mobile body 1 in a plane without changing the posture of the mobile body 1.
[0075] In detail, the searcher 56 acquires distance information to the object based on the detection signal from the sensor 3, calculates the target position farthest from the object in the search area Z3 of the sensor 3 based on the distance information, and determines whether the mobile body 1 can move parallel to the target position. When the searcher 56 determines that the mobile body 1 can move parallel to the target position, it searches for parallel movement to the target position as an escape operation.
[0076] As shown in Figure 8, search area Z3 is set to a predetermined range including the mobile body 1 and centered on the mobile body 1. In other words, search area Z3 is set to a predetermined range including the occupied area Z0 and centered on the midpoint of the occupied area Z0. Search area Z3 is larger than monitoring area Z1 and monitoring area Z2. In this example, the outline of search area Z3 is a circle centered on the midpoint of occupied area Z0.
[0077] The searcher 56 also reduces a first region of the monitoring region Z1 that is on the opposite side to the moving direction of the mobile body 1, and determines whether or not the mobile body 1 can escape by a first escape operation. In detail, when the sensor 3 does not detect an object in the monitoring region Z1 with the first region of the monitoring region Z1 reduced, the searcher 56 determines that the mobile body 1 can move parallel to the target position. When the sensor 3 detects an object in the monitoring region Z1, the searcher 56 determines that the mobile body 1 cannot move parallel to the target position.
[0078] The execution unit 57 causes the mobile body 1 to execute an escape action. Specifically, when escape of the mobile body 1 is possible through the first escape action, the execution unit 57 causes the mobile body 1 to execute the first escape action. More specifically, the execution unit 57 translates the mobile body 1 to the target position. In this example, the execution unit 57 translates the mobile body 1 to the target position so that the reference point of the occupied area Z0 coincides with the target position when viewed in a plane. In this example, the reference point of the occupied area Z0 coincides with the midpoint of the occupied area Z0. Note that the execution unit 57 may translate the mobile body 1 so that the reference point of the occupied area Z0 coincides with the target position using any point within the occupied area Z0 as the reference point instead of the midpoint of the occupied area Z0.
[0079] Next, a description will be given of a stuck escape process (one example of a control method) performed by the processor 61 (movement controller 68) of the control device 6 with reference to a flowchart. Fig. 9 is a flowchart showing the stuck escape process performed by the processor 61 of the control device 6.
[0080] First, in step S11, the detector 55 detects the occurrence of a stuck state of the mobile body 1. If the detector 55 does not detect the occurrence of a stuck state of the mobile body 1, the processor 61 ends the stuck escape process. If the detector 55 detects the occurrence of a stuck state of the mobile body 1, in step S12, step S11 is repeated until a predetermined time has elapsed.
[0081] After a predetermined time has elapsed in step S12, the determiner 58 performs a stuck state continuation determination process in step S13. Specifically, the determiner 58 determines whether or not the stuck state of the main body 1 continues.
[0082] In step S14, if the determiner 58 determines that the stuck state of the main body 1 has been resolved, the processor 61 ends the stuck escape processing.
[0083] If the determiner 58 determines in step S14 that the stuck state of the mobile body 1 has not been resolved, the searcher 56 performs a stuck escape action search process in step S15. Specifically, the searcher 56 searches for an escape action in which the mobile body 1 moves away from the object.
[0084] In step S16, if the searcher 56 finds an escape operation, in step S17 the executor 57 causes the mobile body 1 to execute the escape operation. Thereafter, the processor 61 ends the stuck escape process.
[0085] If the searcher 56 cannot find an escape operation in step S16, the processor 61 issues an alert in step S18. For example, the processor 61 notifies the administrator by using light, sound, or the like that the mobile body 1 cannot escape from the stuck state.
[0086] 10 is a flowchart of a subroutine of the stuck state continuation determination process (step S13). First, in step S21, the determiner 58 expands the monitoring area Z1.
[0087] If the sensor 3 does not detect an object in the monitoring area Z2 in step S22, the determiner 58 determines in step S23 that the stuck state of the mobile body 1 has been resolved. After that, the processing of the processor 61 returns to the flowchart of FIG.
[0088] In step S22, if the sensor 3 detects an object in the monitoring area Z2, the determiner 58 determines in step S24 that the stuck state of the mobile body 1 continues. After that, the processing of the processor 61 returns to the flowchart of FIG.
[0089] 11 is a flowchart of a subroutine of the stuck escape operation search process (step S15). First, in step S31, the searcher 56 performs a target position calculation process. Specifically, the searcher 56 acquires distance information to the object based on the detection signal from the sensor 3, and calculates the target position farthest from the object in the search area Z3 of the sensor 3 based on the distance information.
[0090] If the searcher 56 cannot calculate the target position in step S32, the searcher 56 determines that the search for the escape operation has failed in step S36. After that, the processing of the processor 61 returns to the flowchart of FIG.
[0091] If the searcher 56 can calculate the target position in step S32, the searcher 56 performs a parallel movement confirmation process in step S33. Specifically, the searcher 56 determines whether or not the moving body 1 can move parallel toward the target position.
[0092] If the searcher 56 determines in step S34 that translation is not possible, the searcher 56 determines in step S36 that the search for an escape action has failed. After that, the processing of the processor 61 returns to the flowchart of FIG.
[0093] If the searcher 56 determines in step S34 that translation is possible, the searcher 56 determines in step S35 that the search for an escape action has been successful. After that, the processing of the processor 61 returns to the flowchart of FIG.
[0094] 12 is a flowchart of a subroutine of the target position calculation process (step S31). First, in step S41, the searcher 56 calculates the candidate position that is farthest from the object in the search region Z3.
[0095] An example of a method for calculating the farthest candidate position will be described. Fig. 13 is a schematic plan view showing the farthest candidate position. In Fig. 13, the sensor 3 detects a wall W in the monitoring area Z1, and the mobile body 1 is in a stuck state. The wall W is an example of an object. The wall W is represented by point cloud data.
[0096] First, the searcher 56 sets a plurality of candidate positions in the search area Z3. The searcher 56 calculates the shortest distance between each candidate position and the wall W. The searcher 56 selects the candidate position with the greatest shortest distance from the plurality of candidate positions, and sets the selected candidate position as the farthest candidate position 71. In FIG. 13 , the searcher 56 sets the point on the periphery of the search area Z3 that is farthest from the wall W as the farthest candidate position 71.
[0097] In step S42, the searcher 56 determines whether or not the farthest candidate position 71 is the current position of the mobile body 1. Specifically, the searcher 56 determines whether or not the farthest candidate position 71 coincides with the reference point (the midpoint in this example) of the occupied area Z0.
[0098] 13, if the farthest candidate position 71 does not coincide with the reference point of the occupied area Z0, the searcher 56 determines that the farthest candidate position 71 is not the current position of the mobile body 1. Then, in step S43, the searcher 56 sets the farthest candidate position 71 as the target position and determines that the calculation of the target position has been successful. Thereafter, the processing of the processor 61 returns to the flowchart of FIG.
[0099] For example, as shown in Figure 14, when the mobile body 1 is stuck surrounded by walls W on both sides and the farthest candidate position 71 located farthest from the walls W on both sides coincides with the reference point of the occupied area Z0, the searcher 56 determines in step S42 that the farthest candidate position 71 is the current position of the mobile body 1. In detail, there are multiple candidates for the farthest candidate position 71 on a line that is in the search area Z3 and passes through the reference point of the occupied area Z0. In this case, the searcher 56 determines that the candidate that overlaps with the reference point of the occupied area Z0 is the farthest candidate position 71 among the multiple candidates.
[0100] Then, in step S44, the searcher 56 determines that the farthest candidate position 71 is not the target position, and determines that the calculation of the target position has failed. After that, the processing of the processor 61 returns to the flowchart of FIG.
[0101] 15 is a flowchart of a subroutine of the parallel movement confirmation process (step S33). First, in step S51, the searcher 56 reduces the first area of the monitoring area Z1.
[0102] An example of a method for reducing the first region of the monitoring region Z1 will be described. Fig. 16 is a schematic plan view of the monitoring region Z1 before reduction. Fig. 17 is a schematic plan view of the monitoring region Z1 after reduction. The direction of arrow A shown in Figs. 16 and 17 is the direction in which the mobile body 1 moves toward the target position.
[0103] As shown in Fig. 16, the first area of the monitoring area Z1 is an area facing in the opposite direction to the direction of arrow A. Specifically, the outer shape of the monitoring area Z1 is a rectangle including a first side Z11, a second side Z12, a third side Z13, and a fourth side Z14. The first side Z11 and the second side Z12 face in the direction of arrow A, and the third side Z13 and the fourth side Z14 face in the opposite direction to the direction of arrow A. The first area of the monitoring area Z1 is an area corresponding to the third side Z13 and the fourth side Z14.
[0104] As shown in Fig. 17, the searcher 56 reduces the first area of the monitoring area Z1 by matching the third side Z13 and the fourth side Z14 to the outer shape of the occupied area Z0. Note that, as shown in Fig. 18, if the first side Z11 faces in the direction of arrow A and the second side Z12, the third side Z13, and the fourth side Z14 face in the opposite direction to the direction of arrow A, the first area of the monitoring area Z1 becomes the area corresponding to the second side Z12, the third side Z13, and the fourth side Z14. In this case, the searcher 56 reduces the first area of the monitoring area Z1 by matching the second side Z12, the third side Z13, and the fourth side Z14 to the outer shape of the occupied area Z0.
[0105] In step S52, the searcher 56 determines whether or not the sensor 3 has detected an object in the reduced monitoring area Z1.
[0106] For example, as shown in Fig. 17, if there is no wall W in the reduced monitoring area Z1, the sensor 3 does not detect an object in the reduced monitoring area Z1, and therefore in step S53 the searcher 56 determines that the mobile body 1 can move in parallel toward the target position. Thereafter, the processing of the processor 61 returns to the flowchart of Fig. 11.
[0107] On the other hand, if a wall W exists in the reduced monitoring area Z1, the sensor 3 detects an object in the reduced monitoring area Z1, and therefore, in step S54, the searcher 56 determines that the mobile body 1 cannot move parallel to the target position. After that, the processing of the processor 61 returns to the flowchart of FIG. 11.
[0108] According to the above-described moving body 100, when the moving body main body 1 becomes stuck and unable to move due to the presence of an object in the monitoring area Z1, the control device 6 causes the moving body main body 1 to execute an escape operation to move away from the object. As a result, when the moving body main body 1 becomes stuck, the control device 6 can cause the moving body main body 1 to escape from the stuck state, and can deal with the stuck state of the moving body main body 1.
[0109] The escape operation is a first escape operation in which the movable body 1 is translated in a direction away from the object. This allows the control device 6 to translate the movable body 1 in a direction away from the object, thereby allowing the movable body 1 to escape from the stuck state.
[0110] The control device 6 also reduces a first region of the monitoring area Z1 on the opposite side to the direction of movement of the mobile body 1, and determines whether or not escape of the mobile body 1 is possible by a first escape operation, and if escape of the mobile body 1 is possible, causes the mobile body 1 to execute the first escape operation. This allows the control device 6 to reduce the first region of the monitoring area Z1, remove the object that may be causing the mobile body 1 to become stuck from the monitoring area Z1, and determine whether or not a new object will enter the monitoring area Z1. If a new object does not enter the monitoring area Z1, the control device 6 determines that escape of the mobile body 1 is possible by the first escape operation.
[0111] Furthermore, when the mobile body 1 becomes stuck, the control device 6 stops the mobile body 1 for a predetermined time and then causes the mobile body 1 to execute an escape operation while the stuck state of the mobile body 1 continues. This allows the control device 6 to wait for a predetermined time until the object leaves the monitoring area Z1. If the object leaves the monitoring area Z1 within the predetermined time, the control device 6 will not needlessly calculate the escape operation.
[0112] Furthermore, the control device 6 expands the monitoring area Z1 when determining that the mobile body 1 remains stuck. As a result, the control device 6 determines that the mobile body 1 has completed escaping from the stuck state when no object is present in the expanded monitoring area Z1. By using the expanded monitoring area Z1, the control device 6 can reduce the likelihood of the mobile body 1 becoming stuck again immediately after completing its escape.
[0113] The mobile body 1 is a mobile robot that includes a robot arm 12. This allows the mobile body 1 to escape from a stuck state within a facility such as a store, hospital, or nursing home when moving within the facility.
[0114] Variation 1 19 is a block diagram showing the configuration of a control system of a processor 61A (movement controller 68) of a control device 6A of a moving body 100A according to Modification 1. The control device 6A according to Modification 1 differs from the control device 6 according to the embodiment in the processing of the processor 61A. The following mainly describes the configuration of the control device 6A according to Modification 1 that differs from the control device 6 according to the embodiment.
[0115] The processor 61A of the control device 6A according to the first modification has, as functional blocks, a detector 55, a searcher 56, and an executor 57. The processor 61A may further have, as a functional block, a determiner 58. The detector 55 and the determiner 58 are the same as the detector 55 and the determiner 58 described in the embodiment, and therefore a description thereof will be omitted.
[0116] The searcher 56 searches for an escape action by which the mobile body 1 moves away from the object when the mobile body 1 becomes stuck. In other words, when the determiner 58 determines that the stuck state of the mobile body 1 continues, the searcher 56 searches for an escape action.
[0117] Specifically, the searcher 56 searches for a second escape operation in which the mobile body 1 rotates around its own axis so as to increase the distance between the mobile body 1 and the object when the mobile body 1 becomes stuck. Rotation of the mobile body 1 around its own axis means rotating the mobile body 1 around a reference axis of the mobile body 1. The reference axis of the mobile body 1 is a vertical axis that overlaps the mobile body 1 in a planar view. In this example, the reference axis of the mobile body 1 coincides with the midpoint of the occupied area Z0 in a planar view. In other words, rotation of the mobile body 1 around its own axis is rotation around the midpoint of the occupied area Z0 in a planar view. Note that rotation of the mobile body 1 around its own axis may also be rotation around any point that overlaps the occupied area Z0 in a planar view.
[0118] In detail, the searcher 56 acquires distance information to the object based on the detection signal from the sensor 3, calculates a target attitude for rotation of the mobile body 1 around its own axis that will be the farthest from the object based on the distance information, and determines whether the mobile body 1 can assume the target attitude by rotation around its own axis. If the searcher 56 determines that the mobile body 1 can assume the target attitude by rotation around its own axis, it searches for rotation around its own axis to the target attitude as an escape operation.
[0119] Furthermore, the searcher 56 rotates the monitoring area Z1 around its own axis to correspond to the rotation of the mobile body 1 around its own axis, and determines whether or not the mobile body 1 can escape by the second escape operation. That is, the searcher 56 rotates the monitoring area Z1 around the reference axis of the mobile body 1, similar to the rotation of the mobile body 1 around its own axis. In more detail, when the sensor 3 does not detect an object in the monitoring area Z1 in a state in which the monitoring area Z1 has been rotated around its own axis to correspond to the target attitude, the searcher 56 determines that the mobile body 1 can rotate around its own axis toward the target attitude. When the sensor 3 detects an object in the monitoring area Z1, the searcher 56 determines that the mobile body 1 cannot rotate around its own axis toward the target attitude.
[0120] The execution unit 57 causes the mobile body main body 1 to execute an escape action. Specifically, when escape of the mobile body main body 1 is possible through the second escape action, the execution unit 57 causes the mobile body main body 1 to execute the second escape action. More specifically, the execution unit 57 causes the mobile body main body 1 to rotate about its own axis to the target attitude. In this example, the execution unit 57 causes the mobile body main body 1 to rotate about its own axis to the target attitude, with the midpoint of the occupied area Z0 in a plan view as the center.
[0121] Next, the stuckness escape processing (one example of a control method) by the processor 61A of the control device 6A will be described using a flowchart. The stuckness escape processing by the processor 61A is different from the stuckness escape processing by the processor 61 of the embodiment in the content of the stuckness escape operation search processing in step S15 of Fig. 9, but the other processing is the same. The stuckness escape operation search processing by the processor 61A (movement controller 68) will be mainly described below.
[0122] 20 is a flowchart of a subroutine for the stuck escape operation search process. First, in step S61, the searcher 56 performs a target attitude calculation process. Specifically, the searcher 56 acquires distance information from the object based on the detection signal from the sensor 3, and calculates a target attitude for the rotation of the mobile body 1 around its own axis that will be the farthest from the object based on the distance information.
[0123] If the searcher 56 cannot calculate the target attitude in step S62, the searcher 56 determines that the search for an escape operation has failed in step S66. After that, the processing of the processor 61A returns to the flowchart of FIG.
[0124] In step S62, if the searcher 56 can calculate the target attitude, in step S63, the searcher 56 performs an axis rotation confirmation process. Specifically, the searcher 56 determines whether or not the moving body 1 can rotate around its axis toward the target attitude.
[0125] If the searcher 56 determines in step S64 that rotation around its own axis is not possible, the searcher 56 determines in step S66 that the search for an escape operation has failed. After that, the processing of the processor 61A returns to the flowchart of FIG.
[0126] If the searcher 56 determines in step S64 that rotation on its own axis is possible, the searcher 56 determines in step S65 that the search for the escape action has been successful. After that, the processing of the processor 61A returns to the flowchart of FIG.
[0127] 21 is a flowchart of a subroutine of the target attitude calculation process (step S61). First, in step S71, the searcher 56 calculates a candidate attitude that will be the farthest from the object by rotating the mobile body 1 leftward (i.e., counterclockwise) about its own axis.
[0128] An example of a method for calculating the farthest candidate attitude in a counterclockwise rotation on its own axis will be described. Fig. 22 is a schematic plan view showing the stuck state of the mobile body 1. In Fig. 22, the sensor 3 detects a wall W in the monitoring area Z1, and the mobile body 1 is in a stuck state. The wall W is indicated by point cloud data.
[0129] First, the searcher 56 calculates the shortest distance between the first candidate posture of the current moving body 1 and the wall W. More specifically, the searcher 56 calculates the shortest distance between the contour of the occupied area Z0 and the wall W. The searcher 56 may also calculate the shortest distance between the contour of the monitored area Z1 and the wall W.
[0130] Next, as shown in Fig. 23, the searcher 56 rotates the first candidate attitude counterclockwise by a predetermined angle around its own axis to obtain a second candidate attitude. Specifically, the searcher 56 determines the second candidate attitude to be an attitude obtained by rotating a reference line B passing through the midpoint of the occupied area Z0 of the first candidate attitude shown in Fig. 22 counterclockwise by a predetermined angle around its own axis. The predetermined angle is, for example, 5° to 10°. The searcher 56 performs the rotation of the candidate attitude around its own axis in a calculation.
[0131] Next, the searcher 56 calculates the shortest distance between the second candidate posture and the wall W. The searcher 56 compares the shortest distance of the first candidate posture with the shortest distance of the second candidate posture, and selects the candidate posture with the longest shortest distance. In this example, the shortest distance of the first candidate posture is longer than the shortest distance of the second candidate posture, so the searcher 56 selects the first candidate posture.
[0132] Here, since the shortest distance to the subsequent second candidate posture is smaller than the shortest distance to the previous first candidate posture, the searcher 56 does not calculate the shortest distance to the subsequent third candidate posture obtained by rotating the second candidate posture counterclockwise around its own axis by a predetermined angle, and instead sets the previous first candidate posture as the farthest candidate posture.
[0133] In this way, the searcher 56 calculates the shortest distance among multiple candidate orientations while rotating the mobile body 1 counterclockwise around its own axis by a set angle from the reference line B of the first candidate orientation. The set angle is, for example, 90°, which is greater than a predetermined angle. The searcher 56 then selects the candidate orientation with the greatest shortest distance from among the multiple candidate orientations, and sets the selected candidate orientation as the farthest candidate orientation in the counterclockwise direction. In this example, the searcher 56 sets the first candidate orientation as the farthest candidate orientation in the counterclockwise direction.
[0134] In step S72, the searcher 56 calculates the candidate attitude that will be the farthest from the object by rotating the mobile body 1 rightward (i.e., clockwise) around its own axis. This calculation is performed in the same manner as the method for calculating the farthest candidate attitude in the counterclockwise rotation around its own axis described above.
[0135] 22, the searcher 56 calculates the shortest distance between a first candidate posture of the current moving body 1 and the wall W. Next, as shown in FIG. 24, the searcher 56 rotates the first candidate posture clockwise around its own axis by a predetermined angle to obtain a second candidate posture, and calculates the shortest distance between the second candidate posture and the wall W.
[0136] Next, the searcher 56 compares the shortest distance of the first candidate posture with the shortest distance of the second candidate posture, and selects the candidate posture with the longest shortest distance. In this example, the shortest distance of the second candidate posture is longer than the shortest distance of the first candidate posture, so the searcher 56 selects the second candidate posture.
[0137] 25, the searcher 56 rotates the second candidate orientation clockwise around its own axis by a predetermined angle to set it as a third candidate orientation, and calculates the shortest distance between the third candidate orientation and the wall W. The searcher 56 then compares the shortest distance of the selected second candidate orientation with the shortest distance of the third candidate orientation, and selects the candidate orientation with the longest shortest distance. In this example, the shortest distance of the third candidate orientation is longer than the shortest distance of the second candidate orientation, so the searcher 56 selects the third candidate orientation.
[0138] 26, the searcher 56 rotates the third candidate orientation clockwise around its own axis by a predetermined angle to set it as a fourth candidate orientation, and calculates the shortest distance between the fourth candidate orientation and the wall W. The searcher 56 then compares the shortest distance of the selected third candidate orientation with the shortest distance of the fourth candidate orientation, and selects the candidate orientation with the longest shortest distance. In this example, the shortest distance of the third candidate orientation is longer than the shortest distance of the fourth candidate orientation, so the searcher 56 selects the third candidate orientation.
[0139] Here, since the shortest distance to the subsequent fourth candidate posture is smaller than the shortest distance to the previous third candidate posture, the searcher 56 does not calculate the shortest distance to the subsequent fifth candidate posture obtained by rotating the fourth candidate posture clockwise around its own axis by a predetermined angle, and instead sets the previous third candidate posture as the farthest candidate posture.
[0140] In this way, the searcher 56 calculates the shortest distance among multiple candidate orientations while rotating the mobile body 1 clockwise around its own axis by a set angle from the reference line B of the first candidate orientation. Then, the searcher 56 selects the candidate orientation with the greatest shortest distance from among the multiple candidate orientations, and sets the selected candidate orientation as the farthest candidate orientation in the clockwise direction. In this example, the searcher 56 sets the third candidate orientation as the farthest candidate orientation in the clockwise direction.
[0141] In step S73, the searcher 56 compares the shortest distance to the farthest candidate posture in the counterclockwise direction with the shortest distance to the farthest candidate posture in the clockwise direction, and selects the larger candidate posture. The searcher 56 sets the larger candidate posture as the overall farthest candidate posture. In this example, the searcher 56 sets the third candidate posture in the clockwise direction shown in FIG. 25 as the overall farthest candidate posture.
[0142] In step S74, the searcher 56 determines whether the overall farthest candidate orientation is the current orientation of the mobile body 1. Specifically, the searcher 56 determines whether the occupied area Z0 in the farthest candidate orientation matches the occupied area Z0 in the current orientation. In this example, the searcher 56 determines whether the overall farthest candidate orientation shown in FIG. 25 matches the current orientation shown in FIG. 22.
[0143] If the searcher 56 determines in step S74 that the farthest candidate posture of all is not the current posture, the searcher 56 sets the farthest candidate posture of all as the target posture in step S75 and determines that the calculation of the target posture has been successful. After that, the processing of the processor 61A returns to the flowchart of FIG. 20.
[0144] If the searcher 56 determines in step S74 that the farthest candidate posture of all is the current posture, then in step S76 the searcher 56 determines that the farthest candidate posture of all is not the target posture and determines that calculation of the target posture has failed. After that, the processing of the processor 61A returns to the flowchart of FIG. 20.
[0145] In this example, in step S74, the searcher 56 determines that the overall farthest candidate posture shown in FIG. 25 is not the current posture shown in FIG. 22, and in step S75, the searcher 56 sets the overall farthest candidate posture as the target posture and determines that the calculation of the target posture has been successful.
[0146] 27 is a flowchart of the subroutine of the process of confirming rotation about its own axis (step S63). First, in step S81, the searcher 56 rotates the monitoring area Z1 about its own axis so that it corresponds to the target attitude.
[0147] Fig. 28 is a schematic diagram illustrating a method for rotating the monitoring area Z1 around its own axis so that it corresponds to the target posture. In Fig. 28, the monitoring area Z1 and occupied area Z0 corresponding to the current posture are indicated by solid lines, and the monitoring area Z1 and occupied area Z0 corresponding to the target posture are indicated by two-dot chain lines. The current posture corresponds to the current posture shown in Fig. 22, and the target posture corresponds to the overall farthest candidate posture shown in Fig. 25.
[0148] 28, the searcher 56 rotates the monitoring area Z1 of the current attitude around its own axis so that it corresponds to the occupied area Z0 of the target attitude. In other words, the searcher 56 rotates the monitoring area Z1 of the current attitude around its own axis so that it coincides with the monitoring area Z1 of the target attitude. The searcher 56 performs the rotation of the monitoring area Z1 around its own axis in a calculation.
[0149] In step S82, the searcher 56 determines whether or not the sensor 3 has detected an object in the monitoring area Z1 rotated about its own axis.
[0150] For example, as shown in Fig. 28, if there is no wall W in the monitoring area Z1 rotated around its own axis, as indicated by the two-dot chain line, the sensor 3 does not detect an object in the monitoring area Z1 rotated around its own axis, and therefore in step S83 the searcher 56 determines that the mobile body 1 can rotate around its own axis toward the target attitude. After that, the processing of the processor 61A returns to the flowchart of Fig. 20.
[0151] On the other hand, if a wall W exists in the monitoring area Z1 rotated around its own axis, as indicated by the two-dot chain line, the sensor 3 detects an object in the monitoring area Z1 rotated around its own axis, and therefore in step S84 the searcher 56 determines that the mobile body 1 cannot rotate around its own axis toward the target attitude. After that, the processing of the processor 61A returns to the flowchart of FIG.
[0152] According to the control device 6A of the first modification, the escape operation is a second escape operation in which the movable body main body 1 is rotated about its own axis so as to increase the distance between the movable body main body 1 and the object. As a result, the control device 6A rotates the movable body main body 1 about its own axis so as to increase the distance between the movable body main body 1 and the object, and can cause the movable body main body 1 to escape from the stuck state.
[0153] Furthermore, the control device 6A rotates the monitoring area Z1 around its own axis in accordance with the rotation of the mobile body 1 around its own axis, determines whether or not the mobile body 1 can escape by the second escape operation, and if the mobile body 1 can escape by the second escape operation, causes the mobile body 1 to execute the second escape operation. This allows the control device 6A to rotate the monitoring area Z1 around its own axis to remove the object that may be causing the mobile body 1 to become stuck from the monitoring area Z1, and determines whether or not a new object will enter the monitoring area Z1. If no new object enters the monitoring area Z1, the control device 6A determines that the mobile body 1 can escape by the second escape operation.
[0154] The description of the other configurations, actions, and effects will be omitted, but the description of the control device 6 according to the embodiment can be used to describe the control device 6A according to the first modification.
[0155] Variation 2 29 is a block diagram showing the configuration of a control system of a processor 61B (movement controller 68) of a control device 6B of a moving body 100B according to Modification 2. The control device 6B according to Modification 2 differs from the control device 6 according to the embodiment in the processing of the processor 61B. The following will mainly explain the configuration of the control device 6B according to Modification 2 that differs from the control device 6 according to the embodiment.
[0156] A processor 61B of a control device 6B according to Modification 2 has, as functional blocks, a detector 55, a searcher 56, and an executor 57. The processor 61B may further have, as a functional block, a determiner 58. The detector 55 and the determiner 58 are the same as the detector 55 and the determiner 58 described in the embodiment, and therefore a description thereof will be omitted.
[0157] The searcher 56 searches for an escape action by which the mobile body 1 moves away from the object when the mobile body 1 becomes stuck. In other words, when the determiner 58 determines that the stuck state of the mobile body 1 continues, the searcher 56 searches for an escape action.
[0158] Specifically, the searcher 56 determines whether or not the mobile body 1 can escape by a first escape action that translates the mobile body 1 in a direction away from the object. If the searcher 56 determines that the mobile body 1 can escape by the first escape action, it searches for the first escape action as an escape action.
[0159] When it is determined that escape of the mobile body 1 is impossible by the first escape operation, the searcher 56 determines whether escape of the mobile body 1 is possible by a second escape operation in which the mobile body 1 rotates about its own axis so as to increase the distance between the mobile body 1 and the object. When it is determined that escape of the mobile body 1 is possible by the second escape operation, the searcher 56 searches for the second escape operation as an escape operation.
[0160] The executor 57 causes the movable body body 1 to execute an escape action. Specifically, when the movable body body 1 can escape by the first escape action, the executor 57 causes the movable body body 1 to execute the first escape action. When the movable body body 1 cannot escape by the first escape action and can escape by the second escape action, the executor 57 causes the movable body body 1 to execute the second escape action.
[0161] Next, a description will be given of a stuck state escape process (an example of a control method) by the processor 61B (movement controller 68) of the control device 6B using a flowchart. The stuck state escape process by the processor 61B is different from the stuck state escape process by the processor 61 of the embodiment in the content of the stuck state escape operation search process in step S15 of Fig. 9, but the other processes are the same. The following description will focus on the stuck state escape operation search process by the processor 61B.
[0162] Figure 30 is a flowchart of a subroutine for the stuck escape action search process. Steps S91 to S95 in Figure 30 are the same as steps S31 to S35 in Figure 11. Steps S101 to S106 in Figure 30 are the same as steps S61 to S66 in Figure 20. Steps S91 to S95 and steps S101 to S106 will be briefly described below.
[0163] First, in step S91, the searcher 56 performs a target position calculation process. If the searcher 56 cannot calculate the target position in step S92, the searcher 56 performs a target attitude calculation process in step S101.
[0164] If the searcher 56 can calculate the target position in step S92, the searcher 56 performs a parallel movement confirmation process in step S93. If the searcher 56 determines in step S94 that parallel movement is not possible, the searcher 56 performs a target attitude calculation process in step S101.
[0165] If the searcher 56 determines in step S94 that translation is possible, the searcher 56 determines in step S95 that the search for an escape action has been successful. Thereafter, the processing of the processor 61B returns to the flowchart of FIG.
[0166] When the searcher 56 performs the target attitude calculation process in step S101, if the searcher 56 cannot calculate the target attitude in step S102, the searcher 56 determines that the search for the escape operation has failed in step S106. After that, the processing of the processor 61B returns to the flowchart of FIG.
[0167] If the searcher 56 can calculate the target attitude in step S102, the searcher 56 performs a process of confirming rotation around its own axis in step S103. If the searcher 56 determines in step S104 that rotation around its own axis is not possible, the searcher 56 determines in step S106 that the search for the escape operation has failed. Thereafter, the processing of the processor 61B returns to the flowchart of FIG.
[0168] If it is determined in step S104 that the searcher 56 is capable of rotating around its own axis, then in step S105 the searcher 56 determines that the search for the escape action has been successful. Thereafter, the processing of the processor 61B returns to the flowchart of FIG.
[0169] According to the control device 6B of the second modification, the control device 6B determines whether or not escape of the movable body main body 1 is possible by the first escape operation, and if escape of the movable body main body 1 is possible by the first escape operation, causes the movable body main body 1 to execute the first escape operation, and if escape of the movable body main body 1 is not possible by the first escape operation, determines whether or not escape of the movable body main body 1 is possible by the second escape operation, and if escape of the movable body main body 1 is possible by the second escape operation, causes the movable body main body 1 to execute the second escape operation. In this way, when the control device 6B cannot translate the movable body main body 1, it can rotate the movable body main body 1 about its own axis, causing the movable body main body 1 to escape from the stuck state.
[0170] Although the description of other configurations, actions, and effects will be omitted, the description of the control device 6 according to the embodiment and the description of the control device 6A according to variant example 1 can be used to describe the control device 6B according to variant example 2.
[0171] Variation 3 The control device 6 may control the robot arm 12 when performing autonomous movement. Fig. 31 is a functional block diagram showing the configuration of a control system of the processor 61 according to Modification 3. The processor 61 may function as an arm controller 611 that controls the robot arm 12.
[0172] The arm controller 611 operates the robot arm 12. For example, the arm controller 611 transforms the robot arm 12 into a target shape. The arm controller 611 may maintain the robot arm 12 in the target shape. The arm controller 611 may operate the robot arm 12 by continuously changing the shape of the robot arm 12.
[0173] The arm controller 611 generates command values according to a target shape of the robot arm 12. Based on the command values, the arm controller 611 calculates command operation amounts for each of the multiple motors 12a. For example, the operation amounts are the rotational speed or torque of the motors.
[0174] The arm controller 611 may maintain the robot arm 12 in a fixed shape when the moving body 100 is moving, and may operate the robot arm 12 when the robot arm 12 is performing work.
[0175] For example, when the moving body 100 is traveling, the arm controller 611 maintains the robot arm 12 in a traveling shape. In other words, when the moving body 100 is traveling, the arm controller 611 fixes the shape of the robot arm 12 and prohibits the robot arm 12 from moving.
[0176] Fig. 32 is a side view of the mobile body 1 when the robot arm 12 is in the traveling shape. Fig. 33 is a plan view of the mobile body 1 when the robot arm 12 is in the traveling shape.
[0177] For example, the robot arm 12 in the running configuration is positioned at a relatively high position. For example, the robot arm 12 in the running configuration is bent at an intermediate joint between the shoulder joint and the wrist joint, for example, at the fourth joint J4, with the portion between the base 11 and the intermediate joint extending diagonally downward and rearward from the base 11, and the portion between the intermediate joint and the wrist joint extending forward from the intermediate joint. That is, the robot arm 12 in the running configuration has the intermediate joint pulled rearward and bent at the intermediate joint. As a result, the portion of the robot arm 12 closer to the hand than the intermediate joint is positioned at a relatively high position. Furthermore, the hand of the robot arm 12 is positioned relatively rearward.
[0178] The robot arm 12 in the traveling configuration is positioned higher than the first sensor 3A of the mobile body 1. The detection range of the first sensor 3A extends three-dimensionally from the first sensor 3A. The space above the first sensor 3A is included in the detection range of the first sensor 3A. Because the robot arm 12 is positioned above the first sensor 3A, it may block part of the detection range of the first sensor 3A. The detection results of the first sensor 3A that correspond to the robot arm 12 are treated as invalid. The higher the position of the robot arm 12, the farther the robot arm 12 is from the first sensor 3A. The farther the robot arm 12 is from the first sensor 3A, the smaller the area of the detection range of the first sensor 3A that is blocked by the robot arm 12 tends to be. Therefore, in the traveling configuration, the detection range of the first sensor 3A is relatively large.
[0179] Furthermore, the robot arm 12 in the traveling configuration has a relatively small forward protrusion amount from the base 11. As the forward protrusion amount of the robot arm 12 decreases, the detection range of the first sensor 3A is expanded diagonally upward and forward from the first sensor 3A.
[0180] The width direction size of the overall shape of the running-shaped robot arm 12 in a plan view is relatively small. For example, in the running shape, the second link L2 is located at the outermost position in the width direction. Of the multiple links L, the links other than the second link L2 are located more inward in the width direction than the second link L2. By making the width direction size of the overall shape of the running-shaped robot arm 12 in a plan view relatively small, the possibility of interference between the robot arm 12 and other objects located in the width direction during running can be reduced. Note that the running-shaped robot arm 12 may be configured such that the first link L1 and the second link L2 are located forward of the rotation axis of the first joint J1 by rotating the first link L1 forward about the rotation axis of the first joint J1. This further reduces the width direction size of the second links L2 of the two robot arms, i.e., the width direction size of the overall shape of the robot arm 12 in a plan view.
[0181] The overall shape of the robot arm 12 in the traveling configuration in a plan view is contained within the inside of the carriage 10 in the front-to-rear direction. This reduces the possibility of interference between the robot arm 12 and other objects located in the front-to-rear direction when traveling.
[0182] In addition, the shapes of the two robot arms 12 in terms of their running shapes do not have to be completely identical. That is, the shapes of the two robot arms 12 may be slightly different. For example, the height of the tip of one robot arm 12 may be different from the height of the tip of the other robot arm 12. The rotation angle of the seventh joint J7 of one robot arm 12 may be different from the rotation angle of the seventh joint J7 of the other robot arm 12.
[0183] For example, when the robot arm 12 is performing work, the arm controller 611 operates the robot arm 12. In other words, when the robot arm 12 is performing work, the arm controller 611 permits the operation of the robot arm 12 and allows the robot arm 12 to freely operate. For example, after the mobile body 1 has reached its destination, the arm controller 611 operates the robot arm 12 to perform work by the robot arm 12.
[0184] Other Embodiments As described above, the above embodiment has been described as an example of the technology disclosed in this application. However, the technology of the present disclosure is not limited to this and can be applied to embodiments in which modifications, substitutions, additions, omissions, etc. are made as appropriate. Furthermore, the components described in the above embodiment can be combined to create new embodiments. Furthermore, the components described in the accompanying drawings and detailed description may include not only components essential for solving the problem, but also components that are not essential for solving the problem in order to exemplify the technology. Therefore, the fact that these non-essential components are described in the accompanying drawings or detailed description should not be interpreted as immediately determining that these non-essential components are essential.
[0185] For example, the mobile body 1 is not limited to a robot, but may be a mobile device such as a drone, a ship, or a vehicle. The location where the mobile body 1 moves is not limited to a passageway, but may be a road or a waterway. The mobile body 1 does not need to include the robot arm 12. The base 11 may be rotatable relative to the cart 10. The wheels 13 are not limited to omnidirectional wheels. If the wheels 13 are omnidirectional wheels, they may be omniwheels.
[0186] The sensor 3 is not limited to LiDAR. The sensor 3 may be a two-dimensional or three-dimensional camera. The sensor 3 may be a three-dimensional scanner. The sensor 3 may be disposed in a portion of the mobile body 1 other than the carriage 10. The number of sensors 3 is not limited to three. The number of sensors 3 may be one, two, four, or more. The scanning ranges of the measurement light of the first sensor 3A, the second sensor 3B, and the third sensor 3C described above are merely examples. For example, the first sensor 3A may scan the measurement light over an area including at least the area in front of the mobile body 1. The first sensor 3A may scan the measurement light over a range from the left rear to the right rear of the mobile body 1, including the area in front of the mobile body 1. Note that each of the second sensor 3B and the third sensor 3C may scan the measurement light 360 degrees horizontally. The second sensor 3B may scan the measurement light over a predetermined range (not limited to 270 degrees) including the area in the left rear of the mobile body 1. For example, the second sensor 3B may cause the measurement light to scan 360 degrees horizontally. The third sensor 3C may cause the measurement light to scan a predetermined range (not limited to 270 degrees) including the area to the right rear of the mobile body 1. The third sensor 3C may cause the measurement light to scan 360 degrees horizontally.
[0187] In the embodiment, the outer shape of the occupied area Z0 is rectangular, but it may be, for example, a square, a polygon other than a rectangle, or an ellipse. In this case, the outer periphery of the monitored area Z1 follows the outer periphery of the occupied area Z0. In other words, the outer shape of the monitored area Z1 is similar to the outer shape of the occupied area Z0.
[0188] In the embodiment, the processor 61 of the control device 6 has the determiner 58 as a functional block, but the determiner 58 may be omitted.
[0189] In the embodiment, the control device 6 translates the mobile body 1 as the escape operation, but the mobile body 1 may be moved while changing the attitude of the mobile body 1. For example, the control device 6 may revolve the mobile body 1 around a point away from the mobile body 1 in a plan view.
[0190] In variant example 1, the control device 6A rotates the monitoring area Z1 around its own axis to correspond to the rotation of the mobile body 1 around its own axis, and determines whether the mobile body 1 can escape by the second escape operation. However, in addition to rotating the monitoring area Z1 around its own axis, the control device 6A may also reduce the monitoring area Z1 to determine whether the second escape operation is possible.
[0191] In Modification 2, the control device 6B determines whether or not escape of the mobile body body 1 is possible by the first escape action, and then determines whether or not escape of the mobile body body 1 is possible by the second escape action, but the control device may determine whether or not escape of the mobile body body 1 is possible by the second escape action, and then determine whether or not escape of the mobile body body 1 is possible by the first escape action. Specifically, the control device determines whether or not escape of the mobile body body 1 is possible by the second escape action, which rotates the mobile body body 1 about its own axis so as to increase the distance between the mobile body body 1 and the object, and causes the mobile body body 1 to execute the second escape action if escape of the mobile body body 1 is possible by the second escape action, and determines whether or not escape of the mobile body body 1 is possible by the first escape action, which moves the mobile body body 1 in a parallel direction in a direction away from the object if escape of the mobile body body 1 is possible by the second escape action, and causes the mobile body body 1 to execute the first escape action if escape of the mobile body body 1 is possible by the first escape action.
[0192] The flowcharts are merely examples. Steps in the flowcharts may be changed, replaced, added, omitted, etc. as appropriate. The order of steps in the flowcharts may also be changed, and serial processing may be performed in parallel. For example, in Modification 1, the order of steps S71 and S72 in FIG. 21 may be reversed, or they may be performed in parallel. In Modification 2, the order of steps S91 to S95 and steps S101 to S105 in FIG. 30 may be reversed.
[0193] The control method can be realized by other devices without being limited to the above-described control devices 6, 6A, and 6B. The control program can be realized by other devices without being limited to the above-described control devices 6, 6A, and 6B.
[0194] The functionality of the elements disclosed herein may be implemented using one or more circuits or processing circuits, including general-purpose processors, special-purpose processors, integrated circuits, ASICs (Application Specific Integrated Circuits), FPGAs (Field Programmable Gate Arrays), and / or conventional circuitry. The functionality of the elements disclosed herein may be implemented using one or more circuits or processing circuits, including combinations of general-purpose processors, special-purpose processors, integrated circuits, ASICs, FPGAs, and conventional circuitry. The one or more circuits or processing circuits may be programmed using one or more programs stored together or separately in one or more memories or otherwise configured to perform the disclosed functions. A processor is considered a processing circuit or circuitry because it includes transistors and other circuits. A processor may also be a programmed processor that executes a program stored in a memory. In this disclosure, a circuit, unit, or means is hardware that performs the recited functions alone or in combination with each other, or hardware that is programmed to perform the recited functions alone or in combination with each other. The hardware may be any hardware disclosed herein that is programmed or configured to perform the recited functions.
[0195] A computer program containing computer instructions is stored in memory. The computer instructions provide logic and routines that enable hardware to perform the methods disclosed herein. The hardware includes, for example, processing circuits or circuitry. The computer program may be implemented in a known format in a computer-readable storage medium, a computer program product, a memory device, a recording medium such as a CD-ROM or DVD, and / or the memory of FPGAs or ASICs.
[0196] [Aspect] The above-described embodiment is a specific example of the following aspects.
[0197] (Aspect 1) The mobile bodies 100, 100A, 100B each comprise a mobile body 1, a sensor 3 that detects objects present around the mobile body 1, and a control device 6, 6A, 6B that causes the mobile body 1 to move autonomously and stops the mobile body 1 when it determines based on the detection signal of the sensor 3 that an object is present in a monitoring area Z1 set around the mobile body 1, and the control device 6, 6A, 6B causes the mobile body 1 to perform an escape operation to move away from the object when the mobile body 1 becomes stuck and unable to move due to the presence of the object in the monitoring area Z1.
[0198] According to this configuration, when the mobile body 1 becomes stuck, the control devices 6, 6A, 6B can extricate the mobile body 1 from the stuck state, and can deal with the stuck state of the mobile body 1.
[0199] (Aspect 2) In the moving object 100 according to aspect 1, The escape operation is a first escape operation in which the movable body 1 is translated in a direction away from the object.
[0200] According to this configuration, the control device 6 can move the movable body 1 in parallel in a direction away from the object, thereby allowing the movable body 1 to escape from the stuck state.
[0201] (Aspect 3) In the moving object 100 according to the first or second aspect, The control device 6 reduces the area of the monitoring area Z1 opposite to the direction of movement of the mobile body 1, determines whether or not the mobile body 1 can escape by the first escape operation, and if the mobile body 1 can escape by the first escape operation, causes the mobile body 1 to perform the first escape operation.
[0202] According to this configuration, the control device 6 can reduce the first area of the monitoring area Z1 to remove an object that may cause the object to become stuck from the monitoring area Z1, and determine whether a new object will enter the monitoring area Z1.
[0203] (Aspect 4) In the moving body 100A according to any one of the first to third aspects, The escape operation is a second escape operation in which the movable body 1 is rotated about its own axis so that the gap between the movable body 1 and the object increases.
[0204] According to this configuration, the control device 6A can rotate the movable body 1 about its own axis so as to increase the distance between the movable body 1 and the object, thereby allowing the movable body 1 to escape from the stuck state.
[0205] (Aspect 5) In the moving body 100A according to any one of the first to fourth aspects, The control device 6A rotates the monitoring area Z1 on its own axis to correspond to the rotation of the mobile body 1 on its own axis, determines whether the mobile body 1 can escape by the second escape operation, and if the mobile body 1 can escape by the second escape operation, causes the mobile body 1 to perform the second escape operation.
[0206] According to this configuration, the control device 6A rotates the monitoring area Z1 on its own axis to remove an object that may cause the object to become stuck from the monitoring area Z1, and can determine whether a new object has entered the monitoring area Z1.
[0207] (Aspect 6) In the moving body 100B according to any one of the first to fifth aspects, The control device 6B determines whether or not escape of the mobile body 1 is possible by a first escape operation that moves the mobile body 1 parallel in a direction away from the object, and if escape of the mobile body 1 is possible by the first escape operation, causes the mobile body 1 to execute the first escape operation, and if escape of the mobile body 1 is not possible by the first escape operation, determines whether or not escape of the mobile body 1 is possible by a second escape operation that rotates the mobile body 1 about its own axis so as to increase the distance between the mobile body 1 and the object, and if escape of the mobile body 1 is possible by the second escape operation, causes the mobile body 1 to execute the second escape operation.
[0208] According to this configuration, when the control device 6B cannot translate the movable body 1, it can rotate the movable body 1 about its own axis to free the movable body 1 from the stuck state.
[0209] (Aspect 7) In the moving body 100, 100A, or 100B according to any one of aspects 1 to 6, When the mobile body 1 becomes stuck, the control devices 6, 6A, 6B cause the mobile body 1 to perform the escape operation while the stuck state of the mobile body 1 continues after stopping the mobile body 1 for a predetermined time.
[0210] According to this configuration, the control devices 6, 6A, 6B can wait for a predetermined time until the object leaves the monitoring area Z1.
[0211] (Aspect 8) In the moving body 100, 100A, or 100B according to any one of aspects 1 to 7, When determining that the stuck state of the main body 1 continues, the control devices 6, 6A, 6B expand the monitoring area Z1.
[0212] According to this configuration, when no object is present in the expanded monitoring area Z1, the control devices 6, 6A, 6B determine that the mobile body 1 has completed escaping from the stuck state. By using the expanded monitoring area Z1, the control devices 6, 6A, 6B can reduce the likelihood of the mobile body 1 becoming stuck again immediately after completing the escape.
[0213] (Aspect 9) In the moving body 100, 100A, or 100B according to any one of aspects 1 to 8, The mobile body 1 includes a robot arm 12 and is a mobile robot.
[0214] According to this configuration, when the mobile body 1 moves within a facility such as a store, hospital, or nursing home, the mobile body 1 can be released from a stuck state within the facility.
[0215] (Aspect 10) The control devices 6, 6A, 6B cause the mobile body 1 to move autonomously and stop the mobile body 1 when it determines that an object is present in a monitoring area Z1 set around the mobile body 1, and are equipped with a detector 55 that detects whether the mobile body 1 is stuck and unable to move based on the presence of the object in the monitoring area Z1, a searcher 56 that searches for an escape operation by the mobile body 1 to move away from the object when the detector 55 detects that it is stuck, and an executor 57 that causes the mobile body 1 to execute the escape operation searched for by the searcher 56.
[0216] According to this configuration, when the mobile body 1 becomes stuck, the control devices 6, 6A, 6B can extricate the mobile body 1 from the stuck state, and can deal with the stuck state of the mobile body 1.
[0217] (Aspect 11) The control method causes the mobile body 1 to move autonomously and stops the mobile body 1 when it is determined that an object is present in a monitoring area Z1 set around the mobile body 1, and includes detecting whether the mobile body 1 is stuck and unable to move based on the presence of the object in the monitoring area Z1, and when it detects that the mobile body 1 is stuck, searching for an escape operation by which the mobile body 1 will move away from the object, and causing the mobile body 1 to execute the escape operation.
[0218] According to this configuration, when the moving body 1 becomes stuck, the moving body 1 can be released from the stuck state, and the stuck state of the moving body 1 can be dealt with.
[0219] (Aspect 12) The control program is a control program for causing the mobile body 1 to perform autonomous movement and for stopping the mobile body 1 when it is determined that an object exists in a monitoring area Z1 set around the mobile body 1, and causes a computer to realize a function of detecting whether the mobile body 1 is stuck and unable to move based on the presence of the object in the monitoring area Z1, a function of searching for an escape operation for the mobile body 1 to move away from the object when it is detected that the mobile body 1 is stuck, and a function of causing the mobile body 1 to execute the escape operation. According to this configuration, when the moving body 1 becomes stuck, the moving body 1 can be released from the stuck state, and the stuck state of the moving body 1 can be dealt with. [Explanation of symbols]
[0220] 1 Mobile body 3 sensors 6, 6A, 6B Control device 12 Robotic Arm 55 detector 56 Explorer 57 Executor 100, 100A, 100B Mobile Z1 monitoring area
Claims
1. A mobile body; a sensor for detecting an object present around the mobile body; a control device that causes the mobile body to autonomously move and stops the mobile body when it is determined based on the detection signal of the sensor that an object is present in a monitoring area set around the mobile body, the control device, when the moving body becomes stuck due to the presence of the object in the monitoring area, causes the moving body to execute an escape operation to move away from the object; the escape action includes a first escape action of translating the movable body in a direction away from the object, The control device reduces the area of the monitoring area opposite to the direction of movement of the mobile body away from the object, determines whether the mobile body can escape by the first escape action, and if the mobile body can escape by the first escape action, causes the mobile body to perform the first escape action.
2. 2. The moving body according to claim 1, the outer shape of the occupied area of the mobile body is a polygon or an ellipse, the monitoring area is set in a predetermined range from the periphery of the occupied area to the outside of the occupied area, and the outer shape of the monitoring area is a polygon or an ellipse; When the mobile body main body cannot escape by the first escape operation, the control device determines whether the mobile body main body can escape by a second escape operation in which the mobile body main body rotates on its own axis so as to increase the distance between the outline of the occupied area or the outline of the monitored area and the object, and when the mobile body main body can escape by the second escape operation, the control device causes the mobile body main body to perform the second escape operation.
3. 2. The moving body according to claim 1, When the mobile body becomes stuck, the control device causes the mobile body to perform the escape operation while the stuck state of the mobile body continues after stopping the mobile body for a predetermined period of time.
4. 4. The moving body according to claim 3, The control device expands the monitoring area when determining that the stuck state of the main body of the vehicle continues.
5. 5. The moving body according to claim 1, The mobile body is a mobile robot, the mobile body including a robot arm.
6. A control device that causes a moving body to autonomously move and stops the moving body when it is determined that an object is present in a monitoring area set around the moving body, a detector that detects whether the mobile body is stuck based on the presence of the object in the monitoring area; a searcher that searches for an escape action in which the moving body moves away from the object when the detector detects that the moving body is in a stuck state, the escape action including a first escape action in which the moving body moves in parallel in a direction away from the object; an execution unit that causes the main body of the moving object to execute the escape action searched for by the search unit, the searcher reduces an area of the monitoring area on an opposite side to a moving direction of the moving body away from the object, and determines whether or not the moving body can escape by the first escape operation; The execution unit is a control device that causes the mobile body to execute the first escape action when the mobile body can escape by the first escape action.
7. A control method for causing a mobile body to autonomously move and stopping the mobile body when it is determined that an object is present in a monitoring area set around the mobile body, comprising: Detecting whether the mobile body is stuck based on the presence of the object in the monitoring area; When it is detected that the moving body is stuck, searching for an escape action in which the moving body moves away from the object, the escape action including a first escape action in which the moving body moves in a parallel direction in a direction away from the object; causing the moving body to execute the escape operation, searching for the escape behavior includes reducing an area of the monitoring area on an opposite side to a moving direction of the moving body away from the object, and determining whether or not the moving body can escape by the first escape behavior; The control method, wherein executing the escape operation includes causing the mobile body to execute the first escape operation when the first escape operation enables the mobile body to escape.
8. A control program for causing a mobile body to autonomously move and for stopping the mobile body when it is determined that an object is present in a monitoring area set around the mobile body, the control program comprising: a function of detecting whether the mobile body is stuck or not based on the presence of the object in the monitoring area; a function of searching for an escape action in which the moving body moves away from the object when it is detected that the moving body is stuck, the escape action including a first escape action in which the moving body moves in a parallel direction in a direction away from the object; a function of causing the main body of the moving body to execute the escape operation; a function of reducing an area of the monitoring area on the opposite side to a moving direction of the moving body away from the object and determining whether or not the moving body can escape by the first escape operation; a control program for causing a computer to realize a function of causing the mobile body to execute the first escape operation when escape of the mobile body is possible by the first escape operation.
Citation Information
Patent Citations
Mobile robot controller
JP1993061539A
Control method for cleaning robot
JP1997206258A
Obstacle avoiding controller for automatic traveling vehicle
JP1998078823A
Autonomous traveling control device, autonomous traveling control method, and self-propelling vehicle
JP2010079698A
Controller, program, moving body, and moving body control method
JP2022144387A