Robot and method for stacking boxes
By receiving sensor data of the vision system in the robot data processing hardware and performing compensation distance correction, combined with specific movement strategies and force feedback control, the robot's power and perception error problems when placing the box is solved, and the quality of precise placing and placing of the box is improved.
Patent Information
- Application Number
- CN202080033354.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-03-27
- Filing Date
- 2020-03-12
- Publication Date
- 2025-03-04
- Estimated Expiration
- 2040-03-12
AI Technical Summary
The prior art is difficult to effectively solve the problem of power problems and perception errors in robots when placing boxes.
By receiving sensor data from the vision system in the robot data processing hardware, the compensation distance is determined to correct the difference between the actual position and the perceived position of the box, and ensure the accurate placement of the box at the target position through specific movement strategies and force feedback control.
It realizes precise control of the robot when placing the box, avoids gaps and damage between the boxes, and improves the efficiency and quality of placing.
Smart Images

Figure CN113784825B_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to stacking boxes. Background Art
[0002] A robot is generally defined as a reprogrammable, multifunctional manipulator designed to move materials, parts, tools, or specialized equipment through variable programmed motions to perform a task. A robot can be a physically anchored manipulator (e.g., an industrial robot arm), a mobile robot that moves throughout an environment (e.g., using legs, wheels, or traction-based mechanisms), or some combination of a manipulator and a mobile robot. Robots are used in a variety of industries, including, for example, manufacturing, transportation, hazardous environments, exploration, and healthcare. Each of these industries includes or relies on some degree of logistics and / or interaction with packaged goods. Therefore, the ability to palletize boxes can enhance the functionality of robots and provide additional benefits to these industries. Summary of the invention
[0003] One aspect of the present disclosure provides a method for stacking boxes. The method includes receiving a target box position of a box held by a robot at data processing hardware of the robot. The box has a top surface, a bottom surface, and a side surface. The method also includes positioning the box at an initial position adjacent to the target box position by the robot, and tilting the box at an angle relative to a ground plane by the robot, the angle being formed between the ground plane and the bottom surface of the box. The method also includes shifting the box from the initial position along a first direction to a first alignment position satisfying a threshold first alignment distance by the robot, and shifting the box from the first alignment position along a second direction to a target box position satisfying a threshold second alignment distance by the robot. The method also includes releasing the box from the robot by the robot, the release of the box causing the box to pivot toward the boundary edge of the target box position.
[0004] Implementations of the present disclosure may include one or more of the following optional features. In some implementations, the initial position includes an offset relative to the target box position in a first direction and a second direction. Here, the method may include: receiving sensor data from a vision system of the robot at data processing hardware; and determining, by the data processing hardware, a first compensation distance in the first direction and a second compensation distance in the second direction, the first compensation distance and the second compensation distance compensating for the difference between the actual position of the box and the perceived position of the box based on the sensor data. When receiving sensor data from the vision system, the initial position includes: a first offset relative to the target box position in the first direction based on the first compensation distance; and a second offset relative to the target box position in the second direction based on the second compensation distance.
[0005] In some examples, shifting the box from the initial position in the first direction to the first alignment position includes determining that the box experiences a threshold contact force or a threshold velocity before a threshold first alignment distance is satisfied, and shifting the box from the first alignment position in the second direction to the target box position includes determining that the box experiences a threshold contact force or a threshold velocity before a threshold second alignment distance is satisfied. Before the threshold first alignment distance or the threshold second alignment distance is satisfied, the method may include determining that the box has moved in a respective one of the first direction or the second direction for a threshold period of time.
[0006] In some configurations, positioning the box at the initial position includes holding the box above the target box position without contacting adjacent boxes. Releasing the box from the robot can cause the box to abut against one or more adjacent boxes. The target box position can be located on a pallet configured to support a plurality of boxes. The robot can include a manipulator arm having an end effector configured to grab the box. Here, the end effector can include a plurality of suction cups configured to apply suction to grab the box.
[0007] In some embodiments, the robot includes: an inverted pendulum body having a first end, a second end, and a plurality of joints; an arm coupled to the inverted pendulum body at a first joint among the plurality of joints, the arm including an end effector configured to grasp a box; at least one leg having a first and a second end, the first end coupled to the inverted pendulum body at a second joint among the plurality of joints; and a drive wheel rotatably coupled to the second end of the at least one leg, the drive wheel configured to move the robot according to rolling contact with a ground plane. The at least one leg may include a right leg having a first and a second end, the first end of the right leg prismatically coupled to the second end of the inverted pendulum body, the right leg having a right drive wheel rotatably coupled to the second end of the right leg. The at least one leg may also include a left leg having a first and a second end, the first end of the left leg prismatically coupled to the second end of the inverted pendulum body, the left leg having a left drive wheel rotatably coupled to the second end of the left leg. The robot may include a balancing body disposed on the inverted pendulum body and configured to move relative to the inverted pendulum body.
[0008] Another aspect of the present disclosure provides a robot for stacking boxes. The robot includes a body having one or more joints and an arm connected to the body at a first joint in the one or more joints, the arm including an end effector. The robot also includes data processing hardware and memory hardware in communication with the data processing hardware. The memory hardware stores instructions that, when executed on the data processing hardware, cause the data processing hardware to perform operations. The operations include receiving a target box position of a box grasped by the end effector, the box having a top surface, a bottom surface, and a side surface. The operations also include instructing the robot to position the box at an initial position adjacent to the target box position, and instructing the robot to tilt the box at an angle relative to a ground plane, the angle being formed between the ground plane and the bottom surface of the box. The operations also include instructing the robot to shift the box from the initial position along a first direction to a first alignment position that satisfies a threshold first alignment distance; instructing the robot to shift the box from the first alignment position along a second direction to a target box position that satisfies a threshold second alignment distance; and instructing the robot to release the box from the end effector, the release of the box causing the box to pivot toward a boundary edge of the target box position.
[0009] This aspect may include one or more of the following optional features. In some examples, the second direction is perpendicular to the first direction. The initial position may include an offset relative to the target box position in the first direction and the second direction. The operation may include: receiving sensor data from a vision system of the robot; and determining a first compensation distance in the first direction and a second compensation distance in the second direction, the first compensation distance and the second compensation distance compensating for the difference between the actual position of the box and the perceived position of the box based on the sensor data. Here, the initial position includes: a first offset relative to the target box position in the first direction based on the first compensation distance; and a second offset relative to the target box position in the second direction based on the second compensation distance.
[0010] In some configurations, shifting the box from the initial position in a first direction to a first alignment position includes determining that the box experiences a threshold contact force or a threshold velocity before a threshold first alignment distance is satisfied; and shifting the box from the first alignment position in a second direction to a target box position includes determining that the box experiences a threshold contact force or a threshold velocity before a threshold second alignment distance is satisfied. Prior to satisfying the threshold first alignment distance or the threshold second alignment distance, the operation includes determining that the box has moved in a respective one of the first direction or the second direction for a threshold period of time.
[0011] In some embodiments, positioning the box at the initial position includes holding the box above the target box position without contacting adjacent boxes. Releasing the box from the robot can cause the box to abut against one or more adjacent boxes. The target box position can be located on a pallet configured to support multiple boxes. The end effector can include multiple suction cups configured to apply suction to grab the box.
[0012] In some examples, the robot includes: at least one leg having a first and a second end, the first end being coupled to a body at a second joint of a plurality of joints; and a drive wheel rotatably coupled to the second end of the at least one leg, the drive wheel being configured to move the robot based on rolling contact with a ground plane. The at least one leg includes a right leg having a first and a second end and a left leg having a first and a second end. The first end of the right leg is prismatically coupled to the body, the right leg having a right drive wheel rotatably coupled to the second end of the right leg. The first end of the left leg is prismatically coupled to the body, the left leg having a left drive wheel rotatably coupled to the second end of the left leg.
[0013] The details of one or more embodiments of the disclosure are set forth in the accompanying drawings and the description below. Other aspects, features, and advantages will be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0014] Figure 1A is a perspective view of an example of a robot grasping a box within an environment.
[0015] Figure 1B is a perspective view of an example of a robot.
[0016] Figure 1C yes Figure 1B A schematic diagram of an example arrangement of a robotic system.
[0017] Figure 2A is used for Figure 1A Schematic diagram of an example stacker of a robot.
[0018] Figure 2B yes Figure 1A A top view of an example of a robot positioning a grasped box on a stack of boxes on a pallet.
[0019] Figure 2C yes Figure 1A A front view of an example of a robot positioning a grasped box on a stack of boxes on a pallet.
[0020] Figure 2D yes Figure 1A Side view of an example of a robot positioning a grasped box on a stack of boxes on a pallet.
[0021] Figure 2E yes Figure 1A A top view of an example of a robot moving a grasped box in a first direction relative to a stack of boxes on a pallet.
[0022] Figure 2F yes Figure 1A A front view of an example of a robot moving a grasped box in a first direction relative to a stack of boxes on a pallet.
[0023] Figure 2G yes Figure 1A A side view of an example of a robot moving a grasped box in a first direction relative to a stack of boxes on a pallet.
[0024] Figure 2H yes Figure 1A A top view of an example of a robot moving a grasped box in a second direction relative to a stack of boxes on a pallet.
[0025] Fig.2I yes Figure 1A A front view of an example of a robot moving a grasped box in a second direction relative to a stack of boxes on a pallet.
[0026] Figure 2J yes Figure 1A A side view of an example of a robot moving a grasped box in a second direction relative to a stack of boxes on a pallet.
[0027] Figure 2K yes Figure 1A An overhead view of an example of a robot releasing a grasped box into position on a stack of boxes on a pallet.
[0028] Figure 2L yes Figure 1A A front view of an example of a robot releasing a grasped box into position on a stack of boxes on a pallet.
[0029] Figure 2M yes Figure 1A Side view of an example of a robot releasing a grasped box into position on a stack of boxes on a pallet.
[0030] Figure 3 is an example arrangement of an operation in which a robot stacks boxes within an environment.
[0031] Figure 4 is a schematic diagram of an example computing device that can be used to implement the systems and methods described herein.
[0032] The same reference symbols in different drawings denote the same elements. DETAILED DESCRIPTION
[0033] Logistics has evolved to package and / or ship goods of all shapes and sizes. With this development, more and more packaged goods, such as boxes, are flowing through various logistics channels. In particular, consumer demand for packaged goods has increased significantly in recent decades due to, among other reasons, the increase in online shopping. Today, large shipping companies are estimated to ship millions of packages every day. As part of shipping logistics, it is often necessary to perform certain tasks related to boxes, such as counting, sorting, transporting, palletizing, etc. These tasks may be required in and out of facilities of various businesses, warehouses, operation centers, etc. Currently, the tasks associated with packaging boxes of goods consume countless manpower and time. In addition, while speed and accuracy may be critical, these tasks are often monotonous, tedious, time-consuming and / or laborious.
[0034] Due to the inherent nature of human fatigue and its adverse effects on human accuracy, these tasks are often better suited for robots. Robots can perform box-related tasks in a repeatable and / or reliable manner without getting tired. Advantageously, some aspects of transportation logistics already involve equipment and / or machining. For example, a transportation environment often includes equipment such as computers, scanners, scales, conveyors, or forklifts. By using a robot to perform box tasks, the robot can consolidate the role of that equipment. In some cases, the robot can be more easily integrated with the equipment and / or related logistics systems. Based on these and other advantages, a robot that can accurately and efficiently stack boxes within a work environment can greatly benefit the development of the logistics field.
[0035] Figure 1A 1 is an example of a robot 100 operating in a work environment 10 including at least one box 20. Here, the work environment 10 includes a plurality of boxes 20, 20a-n stacked on a pallet 30 located on the ground 12. Typically, the box 20 is used to package goods for protection, ease of transportation, stackability, etc. The box 20 typically has a structure similar to a rectangular prism or a cuboid. The box 20 includes corners 22 where the edges 24 of the faces 26 intersect. As a rectangular prism, the box 20 includes six faces 26 (also referred to as the surface of the box 20 or the side of the box 20), wherein each face 26 is a rectangle formed by the boundaries of four edges 24. Each face 26 corresponds to a surface in a spatial plane, wherein the intersection of two planes forms an edge 24. A corner 22 refers to a point or vertex where at least two edges 24 (e.g., two edges of a two-dimensional corner or three edges of a three-dimensional corner) typically intersect at a 90-degree angle (i.e., a right angle). The box 20 has eight corners 22 (i.e., vertices) and twelve edges 24. In logistics, the box 20 typically includes a stock keeping unit (SKU) (e.g., in the form of a barcode) corresponding to the goods contained in the box 20. When stacked (ie, stacked on a pallet 30), the SKU or barcode is typically located on an exposed face 26 of the box 20.
[0036] The work environment 10 may include, for example, a storage facility, a distribution center, or an operations center. The robot 100 may move (e.g., drive) on the floor 12 to detect and / or manipulate (e.g., stack) boxes 20 within the work environment 10. For example, the pallet 30 corresponds to a transport truck loaded by the robot 100. The robot 100 may be associated with the shipping and / or receiving stages of logistics, where the robot 100 stacks the boxes 20 for logistics operations or inventory management.
[0037] A pallet 30 generally refers to a flat platform structure (i.e., a deck) that supports goods and allows the goods to be transported as a unit (or unit load). The pallet 30 includes an entry point that enables lifting equipment (e.g., forklifts, skid loader, trailer, pallet truck, front-end loader, etc.) to work to lift the pallet 30 for transportation and facilitate movement. The edge of the pallet 30 forms the boundary of the goods supported by the pallet 30. The goods on the pallet 30 are generally packaged in boxes 20, which form a stack on the top of the pallet 30. The pallet 30 can contain any number of boxes 20 of various shapes and sizes. In order to effectively utilize space, the pallet 30 can generally include a stacking structure of boxes 20 defined by layers L (or rows). The number of layers L or the number of boxes 20 constituting the layer L can vary according to the size and / or shape of the box 20. In some configurations, the size of the pallet 30 is based on an acceptable height (from the top of the deck of the pallet 30 to the top of the top box 20) and / or an acceptable shipping weight. This may vary depending on the type of goods contained within the boxes 20 of the pallet 30. For simplicity, Figure 2B-2M Usually depicted with two layers L,L 1–2 A pallet 30 is a container that is transported on a shelf or a transport container. The container 30 is a container that is transported on a shelf or a transport container. The container 30 is a container that is transported on a shelf or a transport container. The container 30 is a container that is transported on a shelf or a transport container. The container 30 is a container that is transported on a shelf or a transport container. The container 30 is a container that is transported on a shelf or a transport container. The container 30 is a container that is transported on a shelf or a transport container. The container 30 is a container that is transported on a shelf or a transport container. The container 30 is a container that is transported on a shelf or a transport container. The container 30 is a container that is transported on a shelf or a transport container. The container 30 is a container that is transported on a shelf or a transport container.
[0038] Historically, the term "stacking" means placing or stacking cargo boxes 20 on pallets 30. However, stacking has evolved to more generally refer to placing or stacking cargo boxes 20 on any surface to form a collection unit, even if pallets 30 are usually convenient surfaces on which boxes 20 are stacked for transportation purposes. The goal of stacking is to form a tightly packed stack of boxes 20. The tightly packed stack of boxes 20 has minimal to no space between the boxes, so that the spatial relationship of the boxes 20 within the stack plays a role in protecting and / or reducing movement (e.g., by utilizing friction between the surfaces of adjacent boxes) during transportation. In addition, in the case of little to no gaps between the boxes 20, the boxes 20 can form a collection unit, and its mass is more likely to resist relative movement during transportation. In other words, the total mass of the boxes 20 will require a greater force to generate momentum, which may damage, topple or generally separate the boxes 20 in the stack. By stacking the boxes 20 without space or gaps between the boxes 20, stacking prevents gaps from allowing the boxes 20 to move around or push during transportation of the pallet 30. Although the system of robot 100 is shown as stacking boxes 20 on pallet 30 for simplicity, the robot 100 may be configured to stack (ie, place / position) boxes 20 together on any surface.
[0039] Stacking boxes 20 seems to be an ideal task for robots, but robots are often not coordinated with tasks. First, robots can be designed to have considerable power to quickly perform tasks and / or perform tasks that require more than the power of ordinary people. Using this power, when trying to stack boxes 20 together, the robot can easily push, slide or dump boxes 20. In order to solve the problem of robot power, the robot can work according to commands and feedback of executing commands. Here, when the robot applies a strong force on the box 20 to cause a collision with another box 20, the robot equipment is not enough to compensate for the impact before moving another box 20 to an undesirable position. By moving another box 20 to an undesirable position, the robot may damage the integrity of the stacking box 20 unit (such as dumping boxes or stacking boxes with too much space between each other). Another problem of the robot is that when manipulating the box 20, the inaccuracy and / or tolerance between the robot's system and the actual position of the box 20 stacking may cause the box 20 with a gap or space to be placed between adjacent boxes 20. Similar effects may occur between the robot sensing that it holds the box 20 in space and the place where it actually holds the box 20. For example, if the robot actually lifts box 20 at a position that differs from its perceived lifting position by several inches, when the box is placed down, the box 20 will transfer these several inches of difference to the touchdown position of the box 20, resulting in a potential gap of several inches between the placed box 20 and other boxes 20. These problems are further complicated when the boxes 20 contain goods with different weights or weight distributions. For example, if the robot places the box 20 too quickly, even if the placement of the box 20 does not cause a collision with an adjacent box 20, the goods within the placed box 20 may have momentum due to the movement of the robot during the placement of the box 20, thereby causing a collision with an adjacent box 20. Due to these problems, simply moving the box 20 to the target position in the stack of boxes 20 without considering these problems may result in poor stacking. This is particularly true when any one or combination of these problems is caused by the robot placing the box 20 multiple times during stacking. In other words, if the pallet 30 includes two layers of L 1–2 , each layer L has four boxes 20, and the robot unfortunately has eight chances to destroy the integrity of the pallet unit. Here, in order to solve these problems, such as Figures 1A-1C The illustrated robot 100 includes a system for reliably and repeatedly palletizing boxes 20 .
[0040] refer to Figure 1B , the robot 100 has a vertical gravity axis V along the direction of gravity g and a center of mass CM, which is the point where the robot 100 has zero mass and distribution. The robot 100 also has a vertical axis V gThe pose P of the CM is used to define a particular posture or stance taken by the robot 100. The pose of the robot 100 may be defined by the orientation or angular position of an object in space.
[0041] The robot 100 generally includes a body 110 and one or more legs 120. Depending on the tasks to be performed in the work environment 10, the body 110 of the robot 100 can be a single structure or a more complex design. The body 110 can allow the robot 100 to balance, sense the work environment 10, power the robot 100, assist with tasks within the work environment 10, or support other components of the robot 100. In some examples, the robot 100 includes a two-part body 110. For example, the robot 100 includes an inverted pendulum body (IPB) 110, 110a (i.e., referred to as the torso 110a of the robot 100) and a balancing body (CBB) 110, 110b (i.e., referred to as the tail 110b of the robot 100) disposed on the IPB 110a.
[0042] The body 110 (e.g., IPB 110a or CBB 110b) has a first end 112 and a second end 114. For example, IPB 110a has a first end 112a and a second end 114a, while CBB 110b has a first end 112b and a second end 114b. In some embodiments, CBB 110b is disposed on the second end 114a of IPB 110a and is configured to move relative to IPB 110a. In some examples, the balancing body 110b includes a battery for powering the robot 100. Rear joint J B The CBB 110b may be rotatably coupled to the second end 114a of the IPB 110a to allow the CBB 110b to rotate relative to the IPB 110a. B It can be called a pitch joint. In the example shown, the rear joint J B The CBB 110 b is supported to allow the CBB 110 b to rotate about a vertical axis V perpendicular to the gravity of the robot 100. g The lateral axis (y-axis) extending from the front-back axis (x-axis) may represent the current direction of travel of the robot 100. The movement of the CBB 110b relative to the IPB 110a is determined by the movement relative to the vertical gravity axis V g The CM of the robot 100 is moved to change the posture P of the robot 100. The rotary actuator or rear joint actuator A, A B (e.g. tail actuator or balanced body actuator) can be located at the rear joint J B A rotary actuator A is located at or near the CBB 110b (e.g., the tail) and is used to control the movement of the CBB 110b (e.g., the tail) around the lateral axis (y-axis). BThis may include electric motors, electro-hydraulic servos, piezoelectric actuators, solenoid actuators, pneumatic actuators, or other actuator technologies suitable for accurately effecting movement of the CBB 110b relative to the IPB 110a.
[0043] The rotational movement of the CBB 110b relative to the IPB 110a changes the posture of the robot 100 for balancing and maintaining the robot 100 in an upright position. For example, similar to the rotation of the flywheel in a conventional inverted pendulum flywheel, the CBB 110b is rotated relative to the vertical axis V of gravity. g The rotation of the posterior joint J B The torque M is generated / applied at CBB , to change the posture P of the robot 100. By moving the CBB 110b relative to the IPB 110a to change the posture P of the robot 100, the CM of the robot 100 is moved relative to the vertical axis V of gravity. g The CBB 110b is movable to balance and maintain the robot 100 in an upright position when the robot 100 moves and / or carries a load. However, compared to the flywheel portion in a conventional inverted pendulum flywheel having a mass oriented at a moment point, the CBB 110b includes a mass oriented at a moment point at the rear joint J. B In some configurations, the corresponding mass of the moment applied at the rear joint J can be used. B The gyroscope at the bottom of the robot 100 replaces the CBB 110b and rotates and applies a torque (rotational force) to balance and keep the robot 100 in an upright position.
[0044] The CBB 110b can be moved around the posterior joint J in both clockwise and counterclockwise directions. B The CBB 110b may rotate (e.g., pitch) (e.g., in a "pitch direction" about the y-axis) to produce an oscillating (e.g., rocking) motion. The movement of the CBB 110b between positions relative to the IPB 110a causes the CM of the robot 100 to shift (e.g., lower toward the ground 12 or raise away from the ground 12). The CBB 110b may oscillate between movements to produce a rocking motion. The rotation speed of the CBB 110b may be constant or varied (accelerating or decelerating) when moving relative to the IPB 110a, depending on how quickly the posture P of the robot 100 needs to be changed in order to dynamically balance the robot 100.
[0045] The legs 120 are motion-based structures (e.g., legs and / or wheels) configured to move the robot 100 in the work environment 10. The robot 100 may have any number of legs 120 (e.g., a quadruped with four legs, a biped with two legs, a hexapod with six legs, a spider robot with eight legs, etc.). For example, the robot 100 may have a single base or leg 120 that serves as a motion-based structure, with one or more wheels extending from the base to contact a surface in order to move the robot 100 around the work environment 10. Here, for simplicity, the robot 100 is generally shown and described as having two legs 120, 120a-b.
[0046] As a two-legged robot 100, the robot includes a first leg 120, 120a and a second leg 120, 120b. In some examples, each leg 120 includes a first end 122 and a second end 124. The second end 124 corresponds to an end of the leg 120 that contacts or is adjacent to a contact surface (e.g., the ground) of the robot 100 so that the robot 100 can traverse a component of the working environment 10. For example, the second end 124 corresponds to a foot of the robot 100 that moves according to a gait pattern. In some embodiments, the robot 100 moves according to a rolling motion, so that the robot 100 includes a drive wheel 130. The drive wheel 130 can be a supplement or a replacement for the foot-shaped component of the robot 100. For example, the robot 100 is capable of moving according to a walking motion and / or a rolling motion. Here, Figure 1B The robot 100 depicted in FIG. 1 shows a first end 122 coupled to the body 110 (e.g., at IPB 110a), while a second end 124 is coupled to a drive wheel 130. By coupling the drive wheel 130 to the second end 124 of the leg 120, the drive wheel 130 can rotate about the axis of the coupling to move the robot 100 in the work environment 10.
[0047] The hip joint J on each side of the body 110 H (For example, regarding the sagittal plane P of the robot 100 S Symmetrical first hip joint J H ,J Ha and the second hip joint J H ,J Hb ) The first end 122 of the leg 120 can be rotatably coupled to the second end 114 of the body 110 to allow at least a portion of the leg 120 to move / pitch relative to the body 110 about the lateral axis (y-axis). For example, the first end 122 of the leg 120 (e.g., the first leg 120a or the second leg 120b) is at the hip joint J. H The leg 120 is coupled to the second end 114a of the IPB 110a to allow at least a portion of the leg 120 to move / pitch relative to the IPB 110a about the lateral axis (y-axis).
[0048] Leg actuator A,A L Can be used with each hip joint H Related (e.g. first leg actuator A L ,A La and the second leg actuator A L ,A Lb ). and hip jointJ H Related leg actuator A L The upper portion 126 of the leg 120 (e.g., the first leg 120a or the second leg 120b) can be caused to move / pitch relative to the body 110 (e.g., the IPB 110a) about the lateral axis (y-axis). In some configurations, each leg 120 includes a corresponding upper portion 126 and a corresponding lower portion 128. The upper portion 126 can be moved from the hip joint J at the first end 122. H Extend to the corresponding knee jointJ K , and the lower part 128 can be from the knee joint J K Extends to the second end 124. With the knee joint J K Related knee joint actuators A, A K The lower portion 128 of the leg 120 may be caused to move / pitch relative to the upper portion 126 of the leg 120 about the lateral axis (y-axis).
[0049] Each leg 120 may include a corresponding ankle joint J A , which is configured to rotatably couple the drive wheel 130 to the second end 124 of the leg 120. For example, the first leg 120a includes a first ankle joint J A ,J Aa The second leg 120b includes a second ankle joint J A ,J Ab Here, the ankle joint J A Axle A may be associated with the drive wheel 130, which is coupled to the drive wheel 130 for common rotation and extends substantially parallel to the lateral axis (y-axis). The drive wheel 130 may include a corresponding torque actuator (drive motor) A, A T , which is configured to apply a corresponding axial torque for the ankle joint J A The drive wheels 130 are rotated to move the drive wheels 130 along the front-back axis (x-axis) on the ground 12 (which may be interchangeably referred to as the work surface 12 or the ground plane 12). For example, the shaft torque may cause the drive wheels 130 to rotate in one direction to move the robot 100 in a forward direction along the front-back axis (x-axis), and / or cause the drive wheels 130 to rotate in the opposite direction to move the robot 100 in a rearward direction along the front-back axis (x-axis).
[0050] In some embodiments, the legs 120 are prismatically coupled to the body 110 (eg, IPB 110a) such that the length of each leg 120 can be adjusted via the hip joint J.H The corresponding actuator nearby (e.g. leg actuator A L ), set at the hip joint J H and knee joint K The leg actuator A is expanded and contracted by a pair of pulleys (not shown) and a timing belt (not shown) rotating the synchronous pulleys. L A linear actuator or a rotary actuator may be included. Here, a controller 142 (e.g., Figure 1C The control system 140 of the embodiment of the present invention can actuate the actuator associated with each leg 120 to rotate the corresponding upper portion 126 relative to the body 110 (e.g., IPB 110a) in one of the clockwise direction or the counterclockwise direction, thereby rotating the corresponding lower portion 128 relative to the upper portion 126 about the corresponding knee joint J in the other of the clockwise direction or the counterclockwise direction. K The leg 120 is rotated to prismatically extend / expand the length of the leg 120. Alternatively, instead of a dual-link leg, at least one leg 120 may include a single link that prismatically extends / retracts linearly so that the second end 124 of the leg 120 moves prismatically along a linear track away from / toward the body 110 (e.g., IPB 110a). In other configurations, the knee joint J K A corresponding rotary actuator can be used as the knee actuator A K Instead, a pair of synchronous pulleys are used to rotate the lower portion 128 relative to the upper portion 126.
[0051] The respective axle torques applied to each drive wheel 130 (e.g., the first drive wheel 130, 130a associated with the first leg 120a and the second drive wheel 130, 130b associated with the second leg 120b) can be varied to maneuver the robot 100 through the ground 12. For example, an axle torque applied to the first drive wheel 130a that is greater than the axle torque applied to the second drive wheel 130b can cause the robot 100 to turn left, while an axle torque applied to the second drive wheel 130b that is greater than the axle torque applied to the first drive wheel 130 can cause the robot 100 to turn right. Similarly, applying substantially the same amount of axle torque to each drive wheel 130 can cause the robot 100 to move substantially straight through the ground 12 in a forward or backward direction. The magnitude of the axle torque applied to each drive wheel 130 also controls the speed of the robot 100 along the front-to-back axis (x-axis). Alternatively, the drive wheels 130 can rotate in opposite directions to allow the robot 100 to change direction by rotating on the ground 12. Thus, each axle torque may be applied to a corresponding drive wheel 130 independently of the axle torque (if any) applied to the other drive wheel 130 .
[0052] In some examples, the body 110 (e.g., at the CBB 110b) further includes at least one non-driven wheel (not shown). The non-driven wheel is typically passive (e.g., a passive caster) such that the movement of the non-driven wheel is dominated by other driven wheels or movements associated with the robot 100. For example, the non-driven wheel does not contact the ground 12 unless the body 110 moves to a posture P in which the body 110 (e.g., the CBB 110b) is supported by the ground 12.
[0053] In some embodiments, the robot 100 further includes one or more accessories, such as an articulated arm 150 (also referred to as an arm or manipulator arm) disposed on the body 110 (e.g., on the IPB 110a) and configured to move relative to the body 110. The articulated arm 150 can have one or more degrees of freedom (e.g., from being relatively fixed to being able to perform a variety of tasks in the work environment 10). Here, Figure 1B The illustrated articulated arm 150 has five degrees of freedom. Figure 1B The articulated arm 150 is shown disposed on the first end 112 of the body 110 (e.g., at the IPB 110a), but the articulated arm 150 may be disposed in other configurations on any portion of the body 110. For example, the articulated arm 150 is disposed on the CBB 110b or on the second end 114a of the IPB 110a.
[0054] The articulated arm 150 extends between a proximal first end 152 and a distal second end 154. The arm 150 may include one or more arm joints J between the first end 152 and the second end 154. A , where each arm joint J A The arm 150 is configured to be able to articulate in the working environment 10. These arm joints J A The arm member 156 of the arm 150 may be coupled to the body 110, or two or more arm members 156 may be coupled together. For example, the first end 152 is at the first articulated arm joint J A1 The first articulated arm joint J is connected to the main body 110 (e.g., IPB 110a) at a position similar to a shoulder joint. A1 Set at hip J H between (e.g., at the center of the body 110 along the sagittal plane P of the robot 100 S In some examples, the first articulated arm joint J A1 The proximal first end 152 of the arm 150 is rotatably coupled to the body 110 (eg, IPB 110a) to enable the arm 150 to rotate relative to the body 110 (eg, IPB 110a). For example, the arm 150 can move / pitch relative to the body 110 around the lateral axis (y-axis).
[0055] In some embodiments, such as Figure 1B , the arm 150 includes a second arm joint J A2 (e.g. similar to the elbow joint) and the third arm joint J A3 (For example, similar to the wrist joint). Second arm joint J A2 The first arm member 156a is coupled to the second arm member 156b such that the members 156a-b can rotate relative to each other and the body 110 (e.g., IPB 110). Depending on the length of the arm 150, the second end 154 of the arm 150 coincides with one end of the arm member 156. For example, although the arm 150 may have any number of arm members 156, Figure 1B An arm 150 having two arm members 156a-b is depicted such that the end of the second arm member 156b coincides with the second end 154 of the arm 150. Here, at the second end 154 of the arm 150, the arm 150 includes an end effector 160 configured to perform a task within the work environment 10. The end effector 160 may be located at the arm joint J A At (for example, at the third arm joint J A3 The end effector 160 may include one or more end effector actuators A, A EE , for gripping / grasping an object. For example, the end effector 160 includes one or more suction cups as the end effector actuator A EE , to grasp or clamp an object by providing a vacuum seal between the end effector 160 and a target object (e.g., a target box).
[0056] The articulated arm 150 can move / pitch relative to the main body 110 (e.g., IPB 110a) about the lateral axis (y-axis). For example, the articulated arm 150 can rotate relative to the main body 110 about the lateral axis (y-axis) in the direction of gravity to lower the CM of the robot 100 when performing a turning maneuver. The CBB 110b can also simultaneously rotate relative to the IPB 110 about the lateral axis (y-axis) in the direction of gravity to help lower the CM of the robot 100. Here, the articulated arm 150 and CBB 110b can offset any displacement of the CM of the robot 100 in the forward or backward direction along the front-back axis (x-axis) while still achieving a downward displacement of the CM of the robot 100 closer to the ground 12.
[0057] refer to Figure 1C, the robot 100 includes a control system 140 that is configured to monitor and control the operation of the robot 100. In some embodiments, the robot 100 is configured to operate autonomously and / or semi-autonomously. However, a user may also operate the robot 100 by providing commands / instructions to the robot 100. In the example shown, the control system 140 includes a controller 142 (e.g., data processing hardware) and memory hardware 144. The controller 142 may include its own memory hardware or utilize the memory hardware 144 of the control system 140. In some examples, the control system 140 (e.g., with the controller 142) is configured to communicate with an actuator A (e.g., back actuator A). B , Leg actuator A L , Knee actuator A K , Drive belt actuator, Rotary actuator, End effector actuator A EE The control system 140 may communicate (e.g., command movement) with the robot 100 to enable the robot 100 to move in the work environment 10. The control system 140 is not limited to the components shown and may include additional components (e.g., a power supply) or fewer components without departing from the scope of the present disclosure. These components may communicate via wireless or wired connections and may be distributed across multiple locations on the robot 100. In some configurations, the control system 140 interfaces with a remote computing device and / or user. For example, the control system 140 may include various components for communicating with the robot 100, such as a joystick, buttons, a transmitter / receiver, a wired communication port, and / or a wireless communication port, for receiving input from a remote computing device and / or user, and providing feedback to a remote computing device and / or user.
[0058] The controller 142 corresponds to data processing hardware that may include one or more general purpose processors, digital signal processors, and / or application specific integrated circuits (ASICs). In some embodiments, the controller 142 is a dedicated embedded device that is configured to perform specific operations with one or more subsystems of the robot 100. The memory hardware 144 communicates with the controller 142 and may include one or more non-transitory computer-readable storage media, such as volatile and / or non-volatile storage components. For example, the memory hardware 144 may be associated with one or more physical devices that communicate with each other and may include optical, magnetic, organic, or other types of memory or storage devices. The memory hardware 144 is particularly configured to store instructions (e.g., computer-readable program instructions) that, when executed by the controller 142, cause the controller 142 to perform a number of operations, such as, but not limited to, changing the posture P of the robot 100 to maintain balance, manipulating the robot 100, detecting objects, transporting objects, and / or performing other tasks within the work environment 10. The controller 142 may perform operations based on direct or indirect interaction with the sensor system 170.
[0059] The sensor system 170 includes one or more sensors 172, 172a-n. The sensor 172 may include an image sensor (e.g., a visual sensor or a perception sensor), an inertial sensor (e.g., an inertial measurement unit (IMU)), and / or a motion sensor. Some examples of the image sensor 172 include a camera such as a monocular camera or a stereo camera, a time-of-flight (TOF) depth sensor, a scanning light detection and ranging (LIDAR) sensor, or a scanning laser detection and ranging (LADAR) sensor. More generally, the sensor 172 may include one or more of the following: a force sensor, a torque sensor, a velocity sensor, an acceleration sensor, a position sensor (linear and / or rotational position sensor), a kinematic sensor, a positioning sensor, a load sensor, a temperature sensor, a touch sensor, a depth sensor, an ultrasonic ranging sensor, an infrared sensor, and / or an object sensor. In some examples, the sensor 172 has a corresponding field of view that defines a sensing range or area corresponding to the sensor 172. Each sensor 172 may be pivotable and / or rotatable so that the sensor 172 may change its field of view, for example, about one or more axes (e.g., an x-axis, a y-axis, or a z-axis relative to the ground 12). In some embodiments, the body 110 of the robot 100 includes a sensor system 170 having a plurality of sensors 172 around the body to collect sensor data 174 in all directions around the robot 100. Additionally or alternatively, the sensors 172 of the sensor system 170 may be mounted on the arm 150 of the robot 100 (e.g., in conjunction with one or more sensors 172 mounted on the body 110). The robot 100 may include any number of sensors 172 as part of the sensor system 170 to generate sensor data 172 for the work environment 10 around the robot 100. For example, as the robot 100 maneuvers around the work environment 10, the sensor system 170 collects posture data of the robot 100, which includes inertial measurement data (e.g., measured by an IMU). In some examples, the posture data includes kinematic data and / or orientation data about the robot 100.
[0060] When measuring the field of view with the sensor 172, the sensor system 170 generates sensor data 174 (also referred to as image data 174) corresponding to the field of view. For the image sensor 172, the sensor 172 may capture images 176 as the sensor data 174 at a specific frequency, so that the sensor data 174 includes frames F of the field of view corresponding to the time interval. In a configuration where the sensor system 170 includes multiple image sensors 172, the sensor system 170 may be configured to control the direction (e.g., field of view) of each sensor 172 so that more than one field of view corresponding to the image sensor 172 overlaps to allow different types of image data 174 to be used together for image processing. In some examples, the sensor system 170 includes at least one monocular camera as a first sensor 172, 172a and at least one depth sensor (e.g., a stereo camera, LIDAR, TOF, etc.) as a second sensor 172, 172b. The sensors 172a-b may overlap their fields of view. With overlapping fields of view, sensors 172a-b capture monocular images (ie, two-dimensional) and depth images (ie, three-dimensional) for the same field of view (or nearly the same field of view depending on where the sensors are mounted) of working environment 10 at the same time.
[0061] Sensor data 174, such as image data, posture data, inertial data, kinematic data, etc., collected by the sensor system 170 and related to the environment 10 may be transmitted to the control system 140 (e.g., the controller 142 and / or the memory hardware 144) of the robot 100. In some examples, the sensor system 170 collects and stores the sensor data 174 (e.g., in the memory hardware 144 or in memory hardware associated with a remote resource in communication with the robot 100). In other examples, the sensor system 170 collects the sensor data 174 in real time and processes the sensor data 174 without storing the raw (i.e., unprocessed) sensor data 174. In other examples, the controller system 140 and / or the remote resource stores the processed sensor data 174 and the raw sensor data 174. The sensor data 174 from the sensors 172 may allow the system of the robot 100 to detect and / or analyze conditions regarding the robot 100. For example, the sensor data 174 may allow the control system 140 to manipulate the robot 100 , change the posture of the robot 100 , and / or actuate various actuators A for moving / rotating mechanical components of the robot 100 .
[0062] In some examples, such as Figure 1C The sensor system 170 includes a wrist joint J mounted on or connected to the arm 150. A3One or more sensors 172. For example, the wrist sensor 172 is a six-axis force / torque sensor 172. Here, the sensor 172 senses the force on the box 20 held by the robot 100. The stacker 200 uses this force on the box 20 held by the robot 100 to indirectly detect the interaction between the box 20 held by the robot 100 and one or more other boxes 20. In some embodiments, the stacker 200 determines (or receives from another system of the robot 100) the speed of the box 20 held by the robot 100 based on the joints J of the robot 100. In other words, using the sensor system 170, the robot 100 can determine the speed corresponding to each joint J and the drive wheel 130. Based on these speeds, the robot 100 determines how fast the end effector 160 is moving with the box 20, and uses this to derive the speed of the box 20.
[0063] In some configurations, the robot 100 uses a similar approach for force sensing. More specifically, the robot 100 can determine the force at the end effector 160 based on a combination of the force about one or more joints J and the kinematics of the robot 100. This approach may prove difficult when the design of the robot 100 emphasizes speed and / or precision. For example, when the force is based on the force of the end effector 160 other than the wrist joint J, the end effector 160 may be more accurate than the wrist joint J. A3 Other joints (such as shoulder joints) A1 ) When determining the force, the acceleration of the end effector 160 will cause the robot 100 to sense the inertial force of the inertial mass (e.g., at the shoulder joint J A1 In the case of , the inertial force of the arm 150) and the force at the end effector 160. Therefore, when the robot 100 wants to minimize computing resources and / or prevent potential inaccuracies, the robot 100 is at the position closest to the end effector 160 (e.g., the wrist joint J A3 ) senses forces around the end effector 160.
[0064] In some examples, the robot 100 uses joint force feedback control and end effector impedance control to make the end effector 160 motion compliant. For example, the impedance control is based on the impedance from the end effector 160 mounted on or connected to the wrist joint J. A3 The impedance control may be enhanced by force feedback from the wrist sensor 172 (e.g., sensing the end effector 160). Here, the impedance control includes as input a desired end effector position and a measured end effector position. Optionally, other inputs to the impedance control may include a desired end effector velocity and / or acceleration and a measured end effector velocity and / or acceleration. Given these inputs, the impedance control outputs a desired end effector force. In some embodiments, the impedance control is configured such that the relationship between these inputs and outputs corresponds to a spring-like property, such as stiffness, damping, or inertia.
[0065] In order to build a stack of boxes 20 in a tightly packed manner, the robot 100 must overcome the error between where the robot 100 thinks something is and where it is actually located (i.e., perception error). For example, when the robot 100 uses a vision system (i.e., vision-based sensor 172) to identify the location of a box 20 held by the robot 100 or to identify a target location of a box 20 to be placed on a pallet 30 (e.g., target box location 202 ( Figure 2A )), both positions have a certain degree of error. Relying solely on these perceptions of the robot 100 will translate these errors into placement errors during stacking. To cope with the uncertainty of the perception of the robot 100, the robot 100 is configured to use one or more movements of the box 20 it holds to sense its target position for entering the box 20. In contrast, conventionally, the robot is programmed to where the box 20 should go, and the robot tends to rigidly move the box 20 to that location. This conventional approach makes it easy for the robot 100 to damage and / or interfere with other boxes nearby.
[0066] The box 20 held by the robot 100 is referred to as a “grasped box 20 G When the robot 100 couples itself to the box 20 using the end effector 160 of the arm 150, the box 20 is grasped by the robot 100. Figure 1A As shown, the robot 100 uses an end effector 160 (e.g., an end effector actuator A) of an arm 150. EE ) in the grabbed box 20 G The top surface 26, 26 T Grasp the box 20. For example, the end effector 160 uses the end effector actuator A EE The robot 100 grasps the box 20 by the suction force of the suction cup. In other examples, the robot 100 has more than one arm 150, and the box 20 is grasped by at least two arms 150 together by pressing the arms 150 against the sides (i.e., the faces 26) of the box 20. Regardless of the grasping method, the stacker 200 is configured to hold the grasped box 20. G Placed at the target box locations 202 to form a stack of boxes 20 with minimal to no space between the boxes 20 in the stack (eg, adjacent boxes effectively fit or abut).
[0067] refer to Figure 2A The stacker 200 includes a positioner 210 and an aligner 220. The stacker 200 is configured to receive a box 20 for grabbing. G The target box position 202, which identifies the box 20 where the grasped GThe target box location 202 may be within an existing stack of boxes 20 (e.g., on a pallet 30) or within a starting box stack 20. In an ideal world, the robot 100 would place the grabbed box 20 G The target box position 202 is placed therein, and the stack of boxes 20 at that position will not be destroyed. However, due to perception errors, control tolerances and / or box differences, the box 20 that is grasped may be G Moving to the target box location 202 may disturb other boxes 20. Instead, the stacker 200 systematically attempts to sense the box 20 being grasped. G When a position with an acceptable spatial relationship to adjacent boxes 20 is reached. In some examples, the stacker 200 considers minimal to no gaps between adjacent boxes 20 to be an acceptable spatial relationship.
[0068] The positioner 210 is configured to hold the captured box 20 G The robot 100 is placed at an initial position 212 adjacent to the target box position 202. The initial position 212 is intended to be a space that is not occupied by another object (e.g., another box 20). For example, the initial position 212 is offset from the target box position 202 to start the stacking process at an unoccupied position so that the robot 100 can accurately sense the box 20 being grasped. G When encountering another box 20.
[0069] Figure 2B-2D The box 20 is grasped at the initial position 212 G In some embodiments, Figure 2B As shown, the initial position 212 includes an offset (Offset, or offset) 214 in a first direction (e.g., y direction) and an offset 214 in a second direction (e.g., x direction). In some examples, the system of the robot 100, such as Figure 2AThe stacker 200 of the robot 100 determines an offset 214 based on the sensor data 174 from the sensor system 170. Using the sensor data 174, the robot 100 determines that the offset 214 is a first compensated distance in a first direction (e.g., an x-direction) and a second compensated distance in a second direction (e.g., a y-direction). Here, the offset 214 compensates for the perception errors of the robot 100 (e.g., the difference between the actual position of the box 20 and the perceived position of the box 20 based on the sensor data 174). The robot 100 can be configured to determine typical values of these errors in order to generate the offset 214. In some examples, the offset 214 takes into account errors such as the position of the end effector 160, the position of the box 20 relative to the end effector 160, and / or the position of the box 20 corresponding to the stacking of the box 20 relative to the robot 100. When the robot 100 determines the first compensation distance and the second compensation distance based on the error amount (e.g., the average error amount), the initial position 212 is defined by the first offset 214, 214a in the first direction (e.g., the x-direction) and the second offset 214, 214b in the second direction (e.g., the y-direction). Each offset 214 may additionally include a tolerance to ensure that the initial position 212 is not occupied. In other words, if the offset 214 is only equal to the average error in each direction, the initial position 212 may be occupied or partially occupied. For example, if the typical error is 3 cm, the offset 214 may total 5 cm to include an additional tolerance of 2 cm.
[0070] refer to Figure 2C and 2D In some configurations, the locator 210 will grab the box 20 G Positioned above the target box position 202 (with respect to the z direction) without touching the adjacent box 20. G The hover state is positioned above the target box position 202. When the grabbed box 20 G When moving to the target box position 202, the stacker 200 can remove the grabbed box 20 G and friction between other boxes 20. In the absence of friction, the robot 100 can more easily sense the grasped box 20 G The contact force between the box 20 and the other box 20. G The aligner 220 can be kept at a certain height above the target box position 202 so that the aligner 220 can release the grabbed box 20 G The aligner 220 releases the gripped box 20 G The amount of lowering the box can vary according to the variable, such as the grabbed box 20 in the hover state G height, the operating speed of the robot 100 and / or the box 20 grasped GThe contents (if the robot 100 lifts / carries the grabbed box 20 G (when known or determined based on sensor 172).
[0071] Continue to refer Figure 2A and 2C The positioner 210 is configured to tilt the grasped box 20 at a certain angle relative to the ground 12 (or ground plane). G In other words, the box 20 is grabbed G The bottom surface 26, 26 B (ie, bottom surface 26) is angled with ground surface 12. In some examples, the grasped box 20 G Tilt upward toward the adjacent box 20. Here, when the box 20 is grasped G When R is released by robot 100 ( Figure 2L ), the now released box 20 will pivot toward the adjacent box 20 so that the sides 24 and faces 26 of the pivoted box 20 abut the sides 24 and faces 26 of the adjacent box 20, resulting in little to no gaps between the boxes 20 (e.g., Figure 2K-2M In other words, the edge 24 of the box 20 released by the robot 100 (e.g., Fig.2I Side 24 shown G ) can use the face 26 of the adjacent box 20 as a guide to achieve the target box position 202 due to the tilt (e.g., the mating relationship between the opposing face 26 of the released box 20 and the adjacent box 20). In some examples, such as in Figure 2C and 2D In the example, the locator 210 can be used to grab the box 20 G The box 20 that is tilted and grasped at or before the initial position 212 G In other examples, when the aligner 220 moves the grasped box 20 from the initial position 212 G When the positioner 210 tilts the box 20 G .
[0072] Continue to refer Figure 2A The aligner 220 of the stacker 200 is configured to hold the grabbed box 20 G Move from the initial position 212 to the target box position 202. When the grasped box 20 G When the aligner 220 moves to the target box position 202 or as close to the target box position 202 as other boxes 20 allow, the aligner 220 releases the grabbed box 20 G To grab the box 20 G Place in an appropriate location (e.g. Figure 2K-2M In some examples, the aligner 220 moves the captured box 20 in two different motions.G , to achieve the alignment position 222 near or at the target box position 202. For example, Figure 2E-2G The aligner 220 is shown along the first direction D 1 Displace the grasped box 20 (e.g., in the y direction) G ,and Figures 2H-2J The aligner 220 is shown along the second direction D 2 (e.g. x direction) shift the grasped box 20 G In some examples, the first direction D 1 Perpendicular to the second direction D 2 In some embodiments, the aligner 220 displaces the grasped box 20 along a motion vector having a component in a first direction and a component in a second direction. G (For example, the aligner 220 displaces the grasped box 20 at a certain angle in the xy plane G ). Additionally or alternatively, because the working environment 10 is a three-dimensional space, the motion vector may include a third direction (e.g., the motion vector includes a component in the z direction). Figure 2B-2J Indicating that the aligner 220 can be moved sequentially in each direction, the aligner 220 can also be configured to shift the grasped box 20 sequentially and / or in all directions in any direction in three-dimensional space simultaneously. G When the aligner 220 moves the grasped box 20 in a given direction G When the stacker 200 and / or the aligner 220 are moved, they monitor certain conditions.
[0073] In some examples, the aligner 220 moves the captured box 20 G , until the grabbed box 20 G Arrived at the aligned position 222. For illustration, from Figure 2B-2D arrive Figure 2E-2G , the aligner 220 has already grasped the box 20 G From the initial position 212 ( Figure 2B ) moves to the first alignment position 222a ( Figure 2E-2G ). In some examples, when the aligner 220 grabs the box 20 G Along the first direction D 1 When shifting from the initial position 212 to the first alignment position 222, 222a, the aligner 220 determines whether the first alignment position 222a satisfies a threshold first alignment distance 224, 224a (e.g., Figure 2E The threshold first alignment distance 224a corresponds to the distance that the aligner 220 can move in a given direction to grasp the box 20. G In the case of limited distance, the stacker 200 prevents the box 20 from being grabbed. GThe robot 100 may deviate too far from the target box position 202. For example, without a limited distance, the robot 100 may grasp the box 20 G Completely remove the box 20 stack while waiting for a contact force or a specific speed to stop the grasped box 20 G The limited distance can also prevent the aligner 220 from moving the captured box 20 G For example, a box 20 in a stack of boxes 20 may be significantly offset from its ideal position. G In order to abut against the box 20 which is deviated from the position with a large offset, the box 20 grasped G In some examples, the threshold alignment distance 224 corresponds to the distance at which the aligner 220 is allowed to move the grasped box 20 G The maximum moving distance.
[0074] refer to Figures 2H-2J , the aligner 220 is in the second direction D 2 Box 20 grabbed by the admiral G From the first alignment position 222a (eg Figure 2E-2G As shown in FIG. 1 , the aligner 220 is shifted to the target box position 202 (or as close to the target box position 202 as permitted). 2 Box 20 grabbed by the admiral G When shifting from the first alignment position 222 to the target box position 202, the aligner 220 determines whether the movement to the target box position 202 satisfies a threshold second alignment distance 224, 224b (e.g., Figure 2H ). In some examples, the threshold second alignment distance 224b has the same size as the threshold first alignment distance 224a. In other examples, these threshold alignment distances 224 are different due to the shape of the box 20. For example, each box 20 can be an elongated rectangular prism, so that the threshold alignment distance 224 along the length of the rectangular prism is greater than the threshold alignment distance 224 corresponding to the width of the rectangular prism.
[0075] During the movement of the aligner 220, before the threshold alignment distance 224 occurs, the grasped box 20 G Other conditions may be implemented. For example, the stacker 200 may sense that the contact force F thresh or threshold speed v thresh , grabbed box 20 G The movement should be stopped (i.e., the first alignment position 222 or the target box position 202 has been achieved). In other words, the threshold contact force F thresh Or threshold speed v thresh Indicates the box to grab 20 GThe resistance caused by the adjacent box 20 is encountered. Here, the stacker 200 ideally hopes to cause a non-destructive, completely inelastic collision so that the grabbed box 20 G and adjacent boxes 20 to form an acceptable spatial relationship for stacking boxes 20 (e.g., boxes 20 that are not grasped) G The adjacent box 20 is knocked out of position and / or there is no gap that is not conducive to transportation). In this way, the threshold contact force F thresh Refers to the magnitude of the force that is required to grasp the box during stacking. G Contact has been initiated with at least one adjacent box 20, but the force has not yet been of such magnitude as to significantly disturb at least one adjacent box 20 (e.g., not of such magnitude as to overcome the static friction). In a similar manner, the threshold velocity v thresh refers to an indication that the robot 100 (eg, via the end effector 160 ) is generating a moving force, but due to the resistance caused by the adjacent box 20 , the grasped box 20 G The speed at which we no longer move. For example, the threshold speed v thresh Set to zero to indicate that the box is grabbed 20 G No movement. In some examples, the threshold contact force F thresh and / or threshold speed v thresh As vectors, the stacker 200 can use the total magnitude of these vectors (e.g., in a three-dimensional working environment) or the components of these vectors (e.g., when the aligner 220 is currently moving and grasping the box 20 G direction) to determine whether these thresholds are met.
[0076] In some examples, the threshold contact force F thresh The size of the contact force F is task specific. For example, the robot 100 receives instructions indicating boxes 20 to be stacked together and information about these boxes 20. Here, the information may include the weight of each box 20. Other types of information include the material type of the box itself (e.g., a standard corrugated box or a surface-coated box), so that the robot 100 can take into account the coefficient of friction between the boxes 20 during stacking. Based on this information, the robot 100 can configure the threshold contact force F thresh For example, the stacker 200 sets the threshold contact force F thresh The threshold contact force F is set to correspond to the maximum force that the robot 100 can exert on the box 20, which is less than the force F expected to move the previously placed box 20. In some embodiments, the sensor 172 of the robot 100 determines the weight of each previously placed box 20 and uses the determined weight to set the threshold contact force F. thresh In some examples, the stacker 200 uses a combination of impedance control and force feedback control to actively limit the force that the robot 100 applies to the box 20 (ie, setting a threshold contact force Fthresh ). For example, the robot 100 limits the desired end effector force from the impedance control to be less than the force expected to move the previously placed box 20 (e.g., taking into account the physical properties of the previously placed box 20, such as mass, friction coefficient, etc.). By limiting the desired end effector force, the impedance control limits the force that the robot 100 exerts on the grasped box 20. G The force on the box is limited to 20 G Box 20 grabbed when touching adjacent box 20 G In other methods, the stacker 200 constrains the end effector 160 and the grasped box 20 G The kinetic energy of the robot 100 is such that the energy value applied to the placed or existing box 20 on the pallet 30 either does not move the placed box 20 or can only move the placed box 20 an acceptable distance. This condition may be when the robot 100 fails to detect the grasped box 20. G and another box 20. Here, the acceptable distance may also take into account the amount of energy that will be dissipated by friction (eg, the robot 100 knows the box material and / or the friction coefficient between the boxes 20).
[0077] In some examples, the stacker 200 is configured to move the captured box 20 between the aligner 220. G When the stacker 200 is positioned, the previously placed box 20 is considered during contact detection. By considering the previously placed box 20, the stacker 200 can potentially increase its contact sensitivity. In other words, the stacker 200 can use the previously placed box 20 to detect the contact. G The stacker 200 can determine the proximity of the grasped box 20 based on the robot 100's knowledge of the previously placed boxes 20. G The forces experienced (e.g., at the wrist joint J around the end effector 160) A3 force experienced at the location) and / or the box 20 grasped G For example, when contact is desired, the stacker 200 may change the threshold contact force F by a specific weight. thresh Or threshold speed v thresh In some examples, a particular weight may correspond to a probability distribution representing the contact confidence of the stacker 200 .
[0078] In some examples, the stacker 200 includes an aligner 220 that moves the grasped box 20 in a given direction. G The threshold time period T thresh Here, the condition may indicate that the aligner 220 does not move the grasped box 20 sufficiently. GTo meet the threshold alignment distance 224, but also not experience the threshold contact force F thresh Or threshold speed v thresh In this case, the aligner 220 is configured to stop the moving grasped box 20 G , to minimize potential interruptions between boxes 20. When the stacker 200 encounters some noise at the sensor 172 or fails to detect contact with another box 20, the threshold time period T thresh When this occurs, the threshold time period T thresh is the settling time that minimizes problems due to lack of detection, since contact will only occur for the threshold period T thresh exist.
[0079] Figure 3 is an example of a method 300 for stacking a box 20. In operation 302, the method 300 receives a box 20 for holding by a robot. G The target box position is 202. Box 20 G Having a top surface 26 T , bottom surface 26 B and side surface 26. At operation 304, method 300 places box 20 G The method 300 is positioned at the initial position 212 adjacent to the target box position 202. At operation 306, the method 300 tilts the box 20 at an angle relative to the ground plane 12. G Here, the angle is formed between the ground plane 12 and the box 20 G The bottom surface 26 B At operation 308, the method 300 moves the box 20 from the initial position 212 along the first direction D 1 The method 300 moves the box 20 to the first alignment position 222a that satisfies the threshold first alignment distance 224a. G From the first alignment position 222a along the second direction D 2 The method 300 releases the box 20 from the robot 100 at operation 312 and moves to the target box position 202 that satisfies the threshold second alignment distance 224b. G Here, box 20 G The release of Box 20 G Pivot towards the border edge of the target box location 202 .
[0080] In some embodiments, the box 20 G From the initial position 212 along the first direction D 1 Moving to the first alignment position 222a includes determining that the box 20 is moving to the first alignment position 222a before the threshold first alignment distance 224a is met. G Experience threshold contact force F threshOr threshold speed v thresh In these embodiments, the box 20 G From the first alignment position 222a along the second direction D 2 Moving to the target box position 202 also includes determining that the box 20 G Experience threshold contact force F thresh Or threshold speed v thresh In some examples, the method 300 determines that the box 20 is aligned before the threshold first alignment distance 224a or the threshold second alignment distance 224b is met. G Already in the first direction D 1 Or the second direction D 2 The threshold time period T is moved in one direction of thresh .
[0081] Figure 4 4 is a schematic diagram of an example computing device 400 that can be used to implement the systems and methods described in this document. Computing device 400 is intended to represent various forms of digital computers, such as laptops, desktop computers, workstations, personal digital assistants, servers, blade servers, mainframes, and other suitable computers. The components shown here, their connections and relationships, and their functions are exemplary only and are not meant to limit the implementation of the inventions described and / or claimed in this document.
[0082] The computing device 400 includes a processor 410 (e.g., data processing hardware), a memory 420 (e.g., memory hardware), a storage device 430, a high-speed interface / controller 440 connected to the memory 420 and a high-speed expansion port 450, and a low-speed interface / controller 460 connected to a low-speed bus 470 and the storage device 430. Each component 410, 420, 430, 440, 450, and 460 is interconnected using various buses and can be installed on a common motherboard or in other appropriate ways. The processor 410 can process instructions for execution within the computing device 400, including instructions stored in the memory 420 or on the storage device 430, to display graphical information of a graphical user interface (GUI) on an external input / output device, such as a display 480 coupled to the high-speed interface 440. In other embodiments, multiple processors and / or multiple buses and multiple memories and multiple types of memories can be used appropriately. In addition, multiple computing devices 400 can be connected, each device providing a portion of the necessary operations (e.g., as a server group, a group of blade servers, or a multi-processor system).
[0083] Memory 420 stores information non-temporarily within computing device 400. Memory 420 may be a computer-readable medium, a volatile storage unit, or a non-volatile storage unit. Non-temporary memory 420 may be a physical device used to temporarily or permanently store programs (e.g., instruction sequences) or data (e.g., program state information) for use by computing device 400. Examples of non-volatile memory include, but are not limited to, flash memory and read-only memory (ROM) / programmable read-only memory (PROM) / erasable programmable read-only memory (EPROM) / electrically erasable programmable read-only memory (EEPROM) (e.g., commonly used for firmware, such as bootloaders). Examples of volatile memory include, but are not limited to, random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), phase change memory (PCM), and disk or tape.
[0084] The storage device 430 can provide mass storage for the computing device 400. In some embodiments, the storage device 430 is a computer-readable medium. In various embodiments, the storage device 430 can be a floppy disk device, a hard disk device, an optical disk device or a tape device, a flash memory or other similar solid-state storage device, or a device array, including devices in a storage area network or other configuration. In other embodiments, a computer program product is tangibly contained in an information carrier. The computer program product includes instructions that, when executed, perform one or more methods, such as the above method. The information carrier is a computer or machine-readable medium, such as a memory 420, a storage device 430, or a memory on a processor 410.
[0085] The high-speed controller 440 manages bandwidth-intensive operations of the computing device 400, while the low-speed controller 460 manages less bandwidth-intensive operations. This division of responsibilities is exemplary only. In some embodiments, the high-speed controller 440 is coupled to the memory 420, the display 480 (e.g., through a graphics processor or accelerator), and the high-speed expansion port 450 that can accept various expansion cards (not shown). In some embodiments, the low-speed controller 460 is coupled to the storage device 430 and the low-speed expansion port 490. The low-speed expansion port 490, which can include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), can be coupled to one or more input / output devices, such as a keyboard, a pointing device, a scanner, or a network device, such as a switch or a router, for example, through a network adapter.
[0086] As shown, computing device 400 can be implemented in a variety of different forms. For example, it can be implemented as a standard server 400a, or multiple implementations in a group of such servers 400a as a laptop 400b, or implemented as part of a rack server system 400c.
[0087] Various implementations of the systems and techniques described herein can be realized in digital electronic and / or optical circuits, integrated circuits, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and / or combinations thereof. These various implementations may include implementations in one or more computer programs executable and / or interpretable on a programmable system including at least one programmable processor, which may be special purpose or general purpose, coupled to receive data and instructions from and send data and instructions to a storage system, at least one input device, and at least one output device.
[0088] These computer programs (also referred to as programs, software, software applications, or code) include machine instructions for a programmable processor and may be implemented in high-level procedural and / or object-oriented programming languages and / or assembly / machine languages. As used herein, the terms "machine-readable medium" and "computer-readable medium" refer to any computer program product, non-transitory computer-readable medium, apparatus, and / or device (e.g., disk, optical disk, memory, programmable logic device (PLD)) for providing machine instructions and / or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal for providing machine instructions and / or data to a programmable processor.
[0089] The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating outputs. These processes and logic flows can also be performed by dedicated logic circuits, such as FPGAs (field programmable gate arrays) or ASICs (application-specific integrated circuits). For example, processors suitable for executing computer programs include general-purpose and special-purpose microprocessors, and any one or more processors of any type of digital computer. Typically, the processor will receive instructions and data from a read-only memory or a random access memory or both. The basic elements of a computer are a processor for executing instructions and one or more storage devices for storing instructions and data. Typically, a computer will also include one or more large-capacity storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, or operably coupled to receive data from or transmit data to, or both. However, a computer does not need to have such a device. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and storage devices, including, for example, semiconductor storage devices, such as EPROMs, EEPROMs, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[0090] To provide interaction with a user, one or more aspects of the present disclosure may be implemented on a computer having a display device, such as a CRT (cathode ray tube), LCD (liquid crystal display) monitor, or touch screen, for displaying information to the user, and optionally having a keyboard and a pointing device, such as a mouse or trackball, through which the user can provide input to the computer. Other types of devices may also be used to provide interaction with the user; for example, the feedback provided to the user may be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user may be received in any form, including sound, voice, or tactile input. In addition, the computer may interact with the user by sending documents to and receiving documents from a device used by the user; for example, by sending a web page to a web browser on a user's client device in response to a request received from the web browser.
[0091] Many embodiments have been described. However, it should be understood that various modifications can be made without departing from the concept and scope of the present disclosure. Therefore, other embodiments are within the scope of the following claims.
Claims
1. A method for stacking boxes, comprising: A target box position (202) of a box (20) held by the robot (100) is received at data processing hardware (142) of the robot (100), the box (20) having a top surface (26, 26 T )、bottom surface(26、26 B ) and lateral surfaces (26); Positioning the box (20) by the robot (100) at an initial position (212) adjacent to the target box position (202); The box (20) is tilted by the robot (100) at an angle relative to the ground plane (12), the angle being formed between the ground plane (12) and the bottom surface of the box (20); The robot (100) shifts the box (20) from an initial position (212) along a first direction (D1) to a first alignment position (222, 222a) that satisfies a threshold first alignment distance (224, 224a); The robot (100) shifts the box (20) from a first alignment position (222, 222a) along a second direction (D2) to a target box position (202) that satisfies a threshold second alignment distance (224, 224b); and The box (20) is released from the robot (100) by the robot (100), the release of the box (20) causing the box (20) to pivot toward a boundary edge (24) of a target box location (202).
2. The method according to claim 1, wherein: The second direction (D2) is perpendicular to the first direction (D1).
3. The method according to claim 1 or 2, wherein: The initial position (212) includes an offset (214) relative to the target box position (202) in the first direction (D1) and the second direction (D2).
4. The method according to claim 1 or 2, further comprising: receiving sensor data (174) from a vision system of the robot (100) at the data processing hardware (142); as well as A first compensation distance in a first direction (D1) and a second compensation distance in a second direction (D2) are determined by data processing hardware (142), the first compensation distance and the second compensation distance compensating for a difference between an actual position of the box (20) and a perceived position of the box (20) based on sensor data (174), wherein the initial position (212) includes: a first offset (214, 214a) relative to the target box position (202) in a first direction (D1) based on a first compensation distance; and A second offset (214, 214b) relative to the target box position (202) in a second direction (D2) based on a second compensation distance.
5. The method according to claim 1 or 2, wherein: Shifting the box (20) from the initial position (212) along a first direction (D1) to a first aligned position (222, 222a) includes determining that the box (20) experiences a threshold contact force (F) before a threshold first alignment distance (224, 224a) is met. thresh ) or threshold speed (v thresh );and Shifting the box (20) from the first alignment position (222, 222a) to the target box position (202) along the second direction (D2) includes determining that the box (20) experiences a threshold contact force (F) before a threshold second alignment distance (224, 224b) is met. thresh ) or threshold speed (v thresh ).
6. The method according to claim 1 or 2, wherein: Before a threshold first alignment distance (224, 224a) or a threshold second alignment distance (224, 224b) is met, determining that the box (20) has moved in a respective one of the first direction (D1) or the second direction (D2) for a threshold time period (T thresh ).
7. The method according to claim 1 or 2, wherein: Positioning the box (20) at the initial position (212) includes holding the box (20) above the target box position (202) without contacting an adjacent box (20).
8. The method according to claim 1 or 2, wherein: Releasing a box (20) from the robot (100) causes the box (20) to abut against one or more adjacent boxes (20).
9. The method according to claim 1 or 2, wherein: The target box location (202) is located on a pallet (30) configured to support a plurality of boxes (20).
10. The method according to claim 1 or 2, wherein: The robot (100) includes a manipulator arm (150) having an end effector (160) configured to grasp a box (20).
11. The method according to claim 10, wherein: The end effector (160) includes a plurality of suction cups configured to apply suction to grasp the box (20).
12. The method according to claim 1 or 2, wherein: The robot (100) comprises: An inverted pendulum body (110) having a first end (112), a second end (114) and a plurality of joints (J); The arm (150) has a first joint (J, J) among a plurality of joints (J). A1 ) is connected to the inverted pendulum body (110), the arm (150) comprising an end effector (160) configured to grasp the box (20); At least one leg (120) having first and second ends (122, 124), the first end (122) being disposed at a second joint (J, J4) of a plurality of joints (J) H ) is connected to the inverted pendulum body (110); and A drive wheel (130) is rotatably coupled to the second end (124) of the at least one leg (120), the drive wheel (130) being configured to move the robot (100) based on rolling contact with a ground plane (12).
13. The method according to claim 12, wherein: The at least one leg (120) comprises: a right leg (120, 120a) having first and second ends (122, 124), the first end (122) of the right leg (120, 120a) being prismatically coupled to the second end (114) of the inverted pendulum body (110), the right leg (120, 120a) having a right drive wheel (130, 130a) rotatably coupled to the second end (124) of the right leg (120, 120a); and A left leg (120, 120b) having first and second ends (122, 124), the first end (122) of the left leg (120, 120b) being prismatically coupled to the second end (114) of the inverted pendulum body (110), the left leg (120, 120b) having a left drive wheel (130, 130b) rotatably coupled to the second end (124) of the left leg (120, 120b).
14. The method according to claim 12, wherein: The robot (100) further comprises a balancing body (110, 110b) arranged on the inverted pendulum body (110) and configured to move relative to the inverted pendulum body (110).
15. A robot (100) for stacking boxes, comprising: a body (110) comprising one or more joints (J); An arm (150) having a first joint (J, J) among the one or more joints (J) A1 ) is connected to the main body (110), the arm (150) comprising an end effector (160); Data processing hardware (142); and Memory hardware (144) in communication with the data processing hardware (142), the memory hardware (144) storing instructions that, when executed on the data processing hardware (142), cause the data processing hardware (142) to perform operations including: A target box position (202) is received for a box (20) held by a robot (100), the box (20) having a top surface (26, 26 T )、bottom surface(26、26 B ) and lateral surfaces (26); instructing the robot (100) to position the box (20) at an initial position (212) adjacent to the target box position (202); instructing the robot (100) to tilt the box (20) at an angle relative to the ground plane (12), the angle being formed between the ground plane (12) and the bottom surface of the box (20); Instructing the robot (100) to shift the box (20) from an initial position (212) along a first direction (D1) to a first alignment position (222, 222a) that satisfies a threshold first alignment distance (224, 224a); Instructing the robot (100) to shift the box (20) from the first alignment position (222, 222a) along the second direction (D2) to a target box position (202) that satisfies a threshold second alignment distance (224, 224b); and The robot (100) is instructed to release the box (20) from the robot (100), the release of the box (20) causing the box (20) to pivot toward a boundary edge (24) of the target box location (202).
16. The robot (100) according to claim 15, wherein: The second direction (D2) is perpendicular to the first direction (D1).
17. The robot (100) according to claim 15 or 16, wherein: The initial position (212) includes an offset (214) relative to the target box position (202) in the first direction (D1) and the second direction (D2).
18. The robot (100) according to claim 15 or 16, wherein: The operations further include: receiving sensor data (174) from a vision system of the robot (100); and Determining a first compensation distance in a first direction (D1) and a second compensation distance in a second direction (D2), the first compensation distance and the second compensation distance compensating for a difference between an actual position of the box (20) and a perceived position of the box (20) based on sensor data (174), wherein the initial position (212) includes: a first offset (214, 214a) relative to the target box position (202) in a first direction (D1) based on a first compensation distance; and A second offset (214, 214b) relative to the target box position (202) in a second direction (D2) based on a second compensation distance.
19. The robot (100) according to claim 15 or 16, wherein: Shifting the box (20) from the initial position (212) along a first direction (D1) to a first aligned position (222, 222a) includes determining that the box (20) experiences a threshold contact force (F) before a threshold first alignment distance (224, 224a) is met. thresh ) or threshold speed (v thresh );and Shifting the box (20) from the first alignment position (222, 222a) to the target box position (202) along the second direction (D2) includes determining that the box (20) experiences a threshold contact force (F) before a threshold second alignment distance (224, 224b) is met. thresh ) or threshold speed (v thresh ).
20. The robot (100) according to claim 15 or 16, wherein: Before a threshold first alignment distance (224, 224a) or a threshold second alignment distance (224, 224b) is met, determining that the box (20) has moved in a respective one of the first direction (D1) or the second direction (D2) for a threshold time period (T thresh ).
21. The robot (100) according to claim 15 or 16, wherein: Positioning the box (20) at the initial position (212) includes holding the box (20) above the target box position (202) without contacting an adjacent box (20).
22. The robot (100) according to claim 15 or 16, wherein: Releasing a box (20) from the robot (100) causes the box (20) to abut against one or more adjacent boxes (20).
23. The robot (100) according to claim 15 or 16, wherein: The target box location (202) is located on a pallet (30) configured to support a plurality of boxes (20).
24. The robot (100) according to claim 15 or 16, wherein: The end effector (160) includes a plurality of suction cups configured to apply suction to grasp the box (20).
25. The robot (100) according to claim 15 or 16, wherein: The robot further comprises: At least one leg (120) having first and second ends (122, 124), the first end (122) being disposed at a second joint (J, J4) of a plurality of joints (J) H ) is connected to the main body (110); and A drive wheel (130) is rotatably coupled to the second end (124) of the at least one leg (120), the drive wheel (130) being configured to move the robot (100) based on rolling contact with a ground plane (12).
26. The robot (100) according to claim 25, wherein: The at least one leg comprises: a right leg (120, 120a) having first and second ends (122, 124), the first end (122) of the right leg (120, 120a) being prismatically coupled to the second end (114) of the body (110), the right leg (120, 120a) having a right drive wheel (130, 130a) rotatably coupled to the second end (124) of the right leg (120, 120a); and A left leg (120, 120b) having first and second ends (122, 124), the first end (122) of the left leg (120, 120b) being prismatically coupled to the second end (114) of the body (110), the left leg (120, 120b) having a left drive wheel (130, 130b) rotatably coupled to the second end (124) of the left leg (120, 120b).
Citation Information
Patent Citations
Single-arm stacker crane
CN101920851A
Automated truck unloader for unloading / unpacking product from trailers and containers
CN105143075A