Robot and method for stacking boxes

文档序号:1957577 发布日期:2021-12-10 浏览:13次 中文

阅读说明:本技术 码放盒子的机器人和方法 (Robot and method for stacking boxes ) 是由 N.内维尔 K.布兰克斯波尔 J.巴里 A.D.珀金斯 于 2020-03-12 设计创作,主要内容包括:一种用于码放的方法(300),包括接收由机器人(100)抓取的盒子(20)的目标盒子位置(202)。该方法还包括将盒子定位在邻近目标盒子位置的初始位置(212),并且以相对于地平面(12)一定角度倾斜盒子。该方法还包括将盒子从初始位置沿第一方向(D-(1))移位到满足阈值第一对准距离(224、224a)的第一对准位置(222、222a),将盒子从第一对准位置沿第二方向(D-(2))移位到满足阈值第二对准距离(224、224b)的目标盒子位置,以及释放由机器人保持的盒子。盒子的释放导致盒子朝向目标盒子位置的边界边缘(24)枢转。(A method (300) for palletizing includes receiving a target cassette position (202) of a cassette (20) grasped by a robot (100). The method also includes positioning the box at an initial position (212) adjacent to the target box position and tilting the box at an angle relative to a ground plane (12). The method further comprises bringing the cassette from the initial position in a first direction (D) 1 ) Shifting to a first alignment position (222, 222a) satisfying a threshold first alignment distance (224, 224a), the cassette from the first alignment position in a second direction (D) 2 ) Shifting to a target cassette position that satisfies a threshold second alignment distance (224, 224b), and releasing the cassette held by the robot. The release of the cassette causes the cassette to pivot towards the boundary edge (24) of the target cassette position.)

1. A method, comprising:

receiving, at data processing hardware (142) of a robot (100), a target cassette position (202) of a cassette (20) held by the robot (100), the cassette (20) having a top surface (26, 26)T) Bottom surfaces (26, 26)B) And a side surface (26);

positioning the cassette (20) at an initial position (212) adjacent the target cassette position (202) by the robot (100);

tilting the box (20) by the robot (100) at an angle relative to the ground plane (12), the angle being formed between the ground plane (12) and a bottom surface of the box (20);

the cassette (20) is moved by the robot (100) from an initial position (212) in a first direction (D)1) Shifting to a first alignment position (222, 222a) that satisfies a threshold first alignment distance (224, 224 a);

the cassette (20) is aligned by the robot (100) from the first alignment position (222, 222a) in the second direction (D)2) Shifting to a target cassette position (202) that satisfies a threshold second alignment distance (224, 224 b); and

releasing the cassette (20) from the robot (100) by the robot (100), the releasing of the cassette (20) causing the cassette (20) to pivot towards the boundary edge (24) of the target cassette position (202).

2. Method according to claim 1, wherein said second direction (D)2) Perpendicular to the first direction (D)1)。

3. The method according to claim 1 or 2, wherein the initial position (212) comprises in the first direction (D)1) And a second direction (D)2) An offset (214) relative to the target cassette position (202).

4. The method of any of claims 1-3, further comprising:

receiving sensor data (174) from a vision system of the robot (100) at the data processing hardware (142); and

determining in a first direction (D) by data processing hardware (142)1) And in a second direction (D)2) And the first compensation distance and the second compensation distance compensate for a difference between an actual position of the cassette (20) and a perceived position of the cassette (20) based on the sensor data (174), wherein the initial position (212) comprises:

in a first direction (D) based on a first compensation distance1) A first offset (214, 214a) from the target cassette position (202); and

in a second direction (D) based on a second compensation distance2) A second offset (214, 214b) with respect to the target cassette position (202).

5. The method of any one of claims 1-4, wherein:

the cassette (20) is moved from an initial position (212) in a first direction (D)1) Shifting to the first alignment position (222, 222a) includes determining that the cassette (20) experiences a threshold contact force (F) before a threshold first alignment distance (224, 224a) is metthresh) Or threshold speed (v)thresh) (ii) a And is

The cassette (20) is moved from the first alignment position (222, 222a) in a second direction (D)2) Shifting to a target cassette position (202) includes determining that the cassette (20) experiences a threshold contact force (F) before a threshold second alignment distance (224, 224b) is metthresh) Or threshold speed (v)thresh)。

6. The method of any of claims 1-4, wherein determining that the cassette (20) has been in the first direction (D) is performed before a threshold first alignment distance (224, 224a) or a threshold second alignment distance (224, 224b) is met1) Or a second direction (D)2) Is moved in a respective one of the directions by a threshold time period (T)thresh)。

7. The method of any of claims 1-6, wherein positioning the cassette (20) in the initial position (212) includes holding the cassette (20) above the target cassette position (202) without contacting an adjacent cassette (20).

8. Method according to any of claims 1-7, wherein releasing a cassette (20) from the robot (100) causes the cassette (20) to abut one or more adjacent cassettes (20).

9. The method of any of claims 1-8, wherein the target box location (202) is located on a pallet (30) configured to support a plurality of boxes (20).

10. The method of any of claims 1-9, wherein the robot (100) comprises a manipulator arm (150) having an end effector (160) configured to grasp a cassette (20).

11. The method of claim 10, wherein the end effector (160) comprises a plurality of suction cups configured to apply suction to grasp a cassette (20).

12. The method according to any one of claims 1-9, 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);

an arm (150) at a first joint (J, J) of the plurality of joints (J)A1) Coupled to the inverted pendulum body (110), the arm (150) including an end effector (160) configured to grasp the cartridge (20);

at least one leg (120) having first and second ends (122, 124), the first end (122) being at a second joint (J, J) of the plurality of joints (J)H) Is coupled to the inverted pendulum body (110); and

a drive wheel (130) rotatably coupled to the second end (124) of the at least one leg (120), the drive wheel (130) configured to move the robot (100) according to a rolling contact with the ground plane (12).

13. The method of 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, 120 a); 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, 120 b).

14. The method of claim 12, wherein the robot (100) further comprises a balancing body (110, 110b) disposed on the inverted pendulum body (110) and configured to move relative to the inverted pendulum body (110).

15. A robot (100) comprising:

a body (110) comprising one or more joints (J);

an arm (150) at a first joint (J, J) of the one or more joints (J)A1) To a body (110), the arm (150) including 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 comprising:

a target cassette position (202) to receive a cassette (20) held by the robot (100), the cassette (20) having a top surface (26, 26)T) Bottom surfaces (26, 26)B) And a side surface (26);

instructing the robot (100) to position the cassette (20) at an initial position (212) adjacent to the target cassette 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 a bottom surface of the box (20);

instructing the robot (100) to move the cassette (20) from the home position (212) in a first direction (D)1) Shifting to a first alignment position (222, 222a) that satisfies a threshold first alignment distance (224, 224 a);

instructing the robot (100) to move the cassette (20) from the first aligned position (222, 222a) in the second direction (D)2) Shifting to a target cassette position (202) that satisfies a threshold second alignment distance (224, 224 b); and

instructing the robot (100) to release the cassette (20) from the robot (100), the release of the cassette (20) causing the cassette (20) to pivot towards the boundary edge (24) of the target cassette position (202).

16. Robot (1) according to claim 1500) Wherein the second direction (D)2) Perpendicular to the first direction (D)1)。

17. The robot (100) of claim 15 or 16, wherein the initial position (212) is comprised in the first direction (D)1) And a second direction (D)2) An offset (214) relative to the target cassette position (202).

18. The robot (100) of any of claims 15-17, wherein the operations further comprise:

receiving sensor data (174) from a vision system of a robot (100); and

is determined in a first direction (D)1) And in a second direction (D)2) And the first compensation distance and the second compensation distance compensate for a difference between an actual position of the cassette (20) and a perceived position of the cassette (20) based on the sensor data (174), wherein the initial position (212) comprises:

in a first direction (D) based on a first compensation distance1) A first offset (214, 214a) from the target cassette position (202); and

in a second direction (D) based on a second compensation distance2) A second offset (214, 214b) with respect to the target cassette position (202).

19. The robot (100) of any of claims 15-18, wherein:

the cassette (20) is moved from an initial position (212) in a first direction (D)1) Shifting to the first alignment position (222, 222a) includes determining that the cassette (20) experiences a threshold contact force (F) before a threshold first alignment distance (224, 224a) is metthresh) Or threshold speed (v)thresh) (ii) a And is

The cassette (20) is moved from the first alignment position (222, 222a) in a second direction (D)2) Shifting to the target cassette position (202) includes determining that the cassette (20) experiences a threshold contact force (224, 224b) before a threshold second alignment distance (224, 224b) is metFthresh) Or threshold speed (v)thresh)。

20. The robot (100) of any of claims 15-18, wherein it is determined that a cassette (20) has been in the first direction (D) before a threshold first alignment distance (224, 224a) or a threshold second alignment distance (224, 224b) is met1) Or a second direction (D)2) Is moved in a respective one of the directions by a threshold time period (T)thresh)。

21. The robot (100) of any of claims 15-20, wherein positioning the cassette (20) in the initial position (212) includes holding the cassette (20) above the target cassette position (202) without contacting an adjacent cassette (20).

22. The robot (100) of any of claims 15-21, wherein releasing a cassette (20) from the robot (100) causes the cassette (20) to abut one or more adjacent cassettes (20).

23. The robot (100) of any of claims 15-22, wherein the target box location (202) is located on a pallet (30) configured to support a plurality of boxes (20).

24. The robot (100) of any of claims 15-23, wherein the end effector (160) comprises a plurality of suction cups configured to apply suction to grasp a cassette (20).

25. The robot (100) of any of claims 15-24, wherein the robot further comprises:

at least one leg (120) having first and second ends (122, 124), the first end (122) being at a second joint (J, J) of the plurality of joints (J)H) Is coupled to the body (110); and

a drive wheel (130) rotatably coupled to the second end (124) of the at least one leg (120), the drive wheel (130) configured to move the robot (100) according to a rolling contact with the ground plane (12).

26. The robot (100) of 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, 120 a); 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, 120 b).

Technical Field

The present disclosure relates to stacking boxes.

Background

A robot is generally defined as a reprogrammable multi-function manipulator designed to move materials, parts, tools or specialized equipment through variable programmed motions to perform tasks. The robot may be a physically anchored manipulator (e.g., an industrial robot arm), a mobile robot that moves throughout the environment (e.g., using legs, wheels, or traction-based mechanisms), or some combination of manipulators and mobile robots. 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. Thus, the ability to stack the cassettes may enhance the functionality of the robot and provide additional benefits to these industries.

Disclosure of Invention

One aspect of the present disclosure provides a method for stacking cassettes. The method includes receiving, at data processing hardware of the robot, a target cassette position for a cassette held by the robot. The box has a top surface, a bottom surface, and side surfaces. The method also includes positioning, by the robot, the box at an initial position adjacent to the target box position, and tilting, by the robot, the box at an angle relative to the ground plane, the angle formed between the ground plane and a bottom surface of the box. The method also includes displacing, by the robot, the cassette from the initial position in the first direction to a first alignment position that satisfies a threshold first alignment distance, and displacing, by the robot, the cassette from the first alignment position in the second direction to a target cassette position that satisfies a threshold second alignment distance. The method also includes releasing the cassette from the robot by the robot, the releasing of the cassette causing the cassette to pivot toward the boundary edge of the target cassette position.

Implementations of the disclosure may include one or more of the following optional features. In some embodiments, the initial position comprises an offset in a first direction and a second direction relative to the target cartridge position. 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 a difference between the actual position of the cartridge and the perceived position of the cartridge based on the sensor data. When receiving sensor data from a vision system, the initial position comprises: a first offset in a first direction relative to a target cassette position based on a first compensation distance; and a second offset in a second direction relative to the target cartridge position based on the second compensation distance.

In some examples, displacing the cassette from the initial position in the first direction to the first aligned position includes determining that the cassette is subjected to a threshold contact force or a threshold speed before a threshold first alignment distance is met; and shifting the cassette from the first alignment position to the target cassette position in the second direction includes determining that the cassette experiences a threshold contact force or a threshold velocity before a threshold second alignment distance is met. Before the threshold first alignment distance or the threshold second alignment distance is met, the method may include determining that the cassette has moved in a respective one of the first direction or the second direction for a threshold period of time.

In some configurations, positioning the cassette in the initial position includes holding the cassette above the target cassette position without contacting an adjacent cassette. Releasing the cassette from the robot may cause the cassette to abut one or more adjacent cassettes. The target box location may be located on a pallet configured to support a plurality of boxes. The robot may include a manipulator arm having an end effector configured to grasp the cassette. Here, the end effector may include a plurality of suction cups configured to apply suction to grasp the cassette.

In some embodiments, the robot comprises: 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 of the plurality of joints, the arm comprising an end effector configured to grasp a cassette; at least one leg having first and second ends, the first end coupled to the inverted pendulum body at a second joint of 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 the ground level. The at least one leg may include a right leg having first and second ends, the first end of the right leg being prismatically (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 further include a left leg having first and second ends, the first end of the left leg being 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 balance body provided on the inverted pendulum body and configured to move relative to the inverted pendulum body.

Another aspect of the present disclosure provides a robot for stacking cassettes. The robot includes a body having one or more joints and an arm coupled to the body at a first joint of 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 cassette position of a cassette grasped by an end effector, the cassette having a top surface, a bottom surface, and side surfaces. The operations further include instructing the robot to position the cassette at an initial position adjacent to the target cassette position, and instructing the robot to tilt the cassette at an angle relative to a ground plane, the angle formed between the ground plane and a bottom surface of the cassette. The operations further include instructing the robot to shift the cassette from the initial position in a first direction to a first alignment position that satisfies a threshold first alignment distance; instructing the robot to displace the cassette from the first alignment position in the second direction to a target cassette position that satisfies a threshold second alignment distance; and instructing the robot to release the cassette from the end effector, the release of the cassette causing the cassette to pivot toward the boundary edge of the target cassette position.

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 in the first direction and the second direction relative to the target cartridge position. The operations 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 a difference between an actual position of the cassette and a sensed position of the cassette based on the sensor data. Here, the initial position includes: a first offset in a first direction relative to a target cassette position based on a first compensation distance; and a second offset in a second direction relative to the target cartridge position based on the second compensation distance.

In some configurations, displacing the cassette from the initial position in the first direction to the first aligned position includes determining that the cassette experiences a threshold contact force or a threshold velocity before a threshold first alignment distance is met; and shifting the cassette from the first alignment position to the target cassette position in the second direction includes determining that the cassette experiences a threshold contact force or a threshold speed before a threshold second alignment distance is met. Prior to satisfying the threshold first alignment distance or the threshold second alignment distance, the operations include determining that the cassette has moved in a respective one of the first direction or the second direction for a threshold period of time.

In some embodiments, positioning the cassette in the initial position includes holding the cassette above the target cassette position without contacting an adjacent cassette. Releasing the cassette from the robot may cause the cassette to abut one or more adjacent cassettes. The target box location may be located on a pallet configured to support a plurality of boxes. The end effector may include a plurality of suction cups configured to apply suction to grasp the cassette.

In some examples, a robot includes: at least one leg having first and second ends, the first end coupled to the body at a second joint of 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 the ground level. The at least one leg includes a right leg having first and second ends and a left leg having first and second ends. A first end of the right leg is prismatically coupled to the body, the right leg having a right drive wheel rotatably coupled to a second end of the right leg. A first end of the left leg is prismatically coupled to the body, the left leg having a left drive wheel rotatably coupled to a second end of the left leg.

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.

Drawings

FIG. 1A is a perspective view of an example of a robot grasping a cassette within an environment.

Fig. 1B is a perspective view of an example of a robot.

Fig. 1C is a schematic diagram of an example arrangement of the system of the robot of fig. 1B.

FIG. 2A is a schematic diagram of an example sizer for the robot of FIG. 1A.

FIG. 2B is a top view of an example of the robot of FIG. 1A positioning a gripped box at a box stack on a pallet.

Fig. 2C is a front view of an example of the robot of fig. 1A positioning a gripped box at a box stack on a pallet.

FIG. 2D is a side view of an example of the robot of FIG. 1A positioning a gripped box at a box stack on a pallet.

FIG. 2E is a top view of an example of the robot of FIG. 1A moving a gripped cassette in a first direction relative to a stack of cassettes on a pallet.

Fig. 2F is a front view of an example of the robot of fig. 1A moving a gripped cassette in a first direction relative to a stack of cassettes on a pallet.

Fig. 2G is a side view of an example of the robot of fig. 1A moving a gripped cassette in a first direction relative to a stack of cassettes on a pallet.

FIG. 2H is a top view of an example of the robot of FIG. 1A moving a gripped cassette in a second direction relative to a stack of cassettes on a pallet.

FIG. 2I is a front view of an example of the robot of FIG. 1A moving a gripped cassette in a second direction relative to a stack of cassettes on a pallet.

FIG. 2J is a side view of an example of the robot of FIG. 1A moving a gripped cassette in a second direction relative to a stack of cassettes on a pallet.

Fig. 2K is a top view of an example of the robot of fig. 1A releasing a gripped box to the position of the box stack on the pallet.

Fig. 2L is a front view of an example of the robot of fig. 1A releasing a gripped box to the position of the box stack on the pallet.

Fig. 2M is a side view of an example of the robot of fig. 1A releasing a gripped box to the position of a box stack on a pallet.

FIG. 3 is an example arrangement of operations of a robot to stack a cassette within an environment.

FIG. 4 is a schematic diagram of an example computing device that may be used to implement the systems and methods described herein.

Like reference symbols in the various drawings indicate like elements.

Detailed Description

Logistics has evolved to pack and/or transport goods of various shapes and sizes. With this development, more and more packaged goods such as boxes flow in various distribution channels. In particular, in recent decades, consumer demand for packaged goods has increased dramatically due to the increase of online shopping and the like. Today, large shipping companies estimate that millions of packages are shipped each day. As part of the shipping logistics, it is often necessary to perform certain tasks related to the boxes, such as counting, sorting, transporting, palletizing, etc. These tasks may be required for access facilities of various enterprises, warehouses, operation centers, and the like. Currently, the tasks associated with packaging cargo boxes consume an infinite amount of labor and time. Moreover, while speed and accuracy may be critical, these tasks tend to be tedious, time consuming, and/or laborious.

These tasks are generally more suitable for robots due to the inherent nature of human fatigue and its adverse effect on human accuracy. The robot can perform the cassette-related tasks in a repeatable and/or reliable manner without experiencing fatigue. Advantageously, certain aspects of transportation logistics have been directed to instrumentation and/or machining. For example, a transportation environment typically includes a computer, scanner, scale, conveyor, or forklift. By using a robot to perform the task of the box, the robot can consolidate the role of the device. In some cases, the robot may be more easily integrated with the device and/or associated logistics system. Based on these and other advantages, a robot that can accurately and efficiently stack cassettes in a work environment can greatly facilitate the development of the field of logistics.

Fig. 1A is an example of a robot 100 operating within a work environment 10 including at least one cassette 20. Here, work environment 10 includes a plurality of boxes 20, 20a-n stacked on a pallet 30 located on a floor 12. Generally, the box 20 is used to package goods for protection, ease of transport, stackable, and the like. The cassette 20 generally has a structure similar to a rectangular prism or a rectangular parallelepiped. The box 20 includes corners 22 where edges 24 of faces 26 meet. As a rectangular prism, the box 20 includes six faces 26 (also referred to as faces of the box 20 or sides of the box 20), where each face 26 is a rectangle formed by the boundaries of four sides 24. Each face 26 corresponds to a surface in a spatial plane, wherein the intersection of the two planes forms an edge 24. Corner 22 refers to a point or vertex where at least two sides 24 (e.g., two sides of a two-dimensional corner or three sides of a three-dimensional corner) meet generally at a 90 degree angle (i.e., a right angle). The box 20 has eight corners 22 (i.e., vertices) and twelve sides 24. In logistics, the box 20 typically includes a Stock Keeping Unit (SKU) (e.g., in the form of a bar code) corresponding to the goods contained within the box 20. When stacked (i.e., stacked on a pallet 30), the SKU or bar code is typically located on the exposed face 26 of the box 20.

Work environment 10 may include, for example, a storage facility, a distribution center, or a operations center. Robot 100 may move (e.g., travel) on ground 12 to detect and/or manipulate cassettes 20 (e.g., palletize) within 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 a shipping and/or receiving phase of logistics, wherein the robot 100 stacks the boxes 20 for logistics operations or inventory management.

Pallet 30 generally refers to a flat platform structure (i.e., deck) that supports cargo and allows the cargo to be transported as a unit (or unit load). The pallet 30 includes access points that enable lifting equipment (e.g., forklifts, skid loaders, trailers, pallet jacks, front end loaders, etc.) to operate to lift the pallet 30 for transportation and easy movement. The edges of pallet 30 form the boundaries of the cargo supported by pallet 30. The goods on the pallet 30 are typically packaged in boxes 20, the boxes 20 forming a stack on top of the pallet 30. Pallet 30 may contain any number of boxes 20 of various shapes and sizes. To make efficient use of space, pallet 30 may generally include a stacked configuration of boxes 20 defined by layers L (or rows). The number of layers L or the number of cassettes 20 constituting the layers L may vary depending on the size and/or shape of the cassettes 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 be based on the box contained in the pallet 30The type of cargo within the child 20 varies. For simplicity, FIGS. 2B-2M are generally depicted as having two layers L, L1–2Wherein each level L comprises four boxes 20, 20 a-d. Typically, the boxes 20 on or between layers L will be interlocked to aid in the stability of the pallet 30 during transport. Pallet 30 may thus refer to the physical structure supporting box 20 and the unit of box 20. Pallet 30 may be referred to by: their structure (e.g., block pallets, strip pallets, wing pallets, flush pallets, reversible pallets, non-reversible pallets, etc.), their material (e.g., non-slip pallets, metal pallets, wooden pallets, paper pallets, etc.), or through their entry points (e.g., two-way pallets or four-way pallets).

Historically, the term "palletizing" means placing or stacking cargo boxes 20 on pallets 30. However, palletizing has evolved to more generally refer to placing or stacking cargo boxes 20 on any surface to form a collective unit, even though the pallet 30 is typically a convenient surface on which to stack the boxes 20 for shipping purposes. The goal of stacking is to form a close-coupled stack of cassettes 20. The close-coupled stack of cassettes 20 has minimal to no space between the cassettes so that the spatial relationship of the cassettes 20 within the stack serves to protect and/or reduce movement (e.g., by utilizing friction between surfaces of adjoining cassettes) during shipping. Further, with little to no clearance between the cassettes 20, the cassettes 20 may form a collective unit whose masses are more likely to resist relative movement during transport. In other words, the overall mass of the cassette 20 will require more force to create momentum that may damage, topple, or generally separate the cassette 20 within the stack. By stacking the boxes 20 without spaces or gaps between the boxes 20, stacking the prevention gaps allows the boxes 20 to move around or jostle during transport of the pallet 30. Although the system of robot 100 is shown with boxes 20 stacked on pallets 30 for simplicity, robot 100 may be configured to stack (i.e., place/position) boxes 20 together on any surface.

Stacking the cassettes 20 appears to be an ideal task for the robot, but the robot is often not coordinated with the task. HeadFirst, robots can be designed to have considerable strength to perform tasks quickly and/or to perform tasks that require more strength than the average person. With this force, the robot can easily push, slide, or dump the cassettes 20 when attempting to stack the cassettes 20 together. To address the issue of robot strength, the robot may work according to commands and feedback of the execution of the commands. Here, when the robot exerts a strong force on the cartridge 20 to cause a collision with another cartridge 20, the robot equipment is insufficient to compensate for the impact before moving another cartridge 20 to an undesired position. By moving another cassette 20 to an undesired location, the robot may compromise the integrity of the stacked cassette 20 units (e.g., dump cassettes or stacked cassettes that have too much space between each other). Another problem with robots is that inaccuracies and/or tolerances between the system of the robot and the actual position of the stack of cassettes 20 may result in placing cassettes 20 with gaps or spaces between adjacent cassettes 20 when manipulating the cassettes 20. A similar effect may occur between where the robot senses that it is spatially holding the cassette 20 and where it actually holds the cassette 20. For example, if the robot actually lifts cassette 20 at a position that is several inches from its perceived lifting position, when the cassette is lowered, cassette 20 will transfer the several inch difference to the ground-contacting position of cassette 20, resulting in a potential gap of several inches between the placed cassette 20 and other cassettes 20. These problems can be further compounded when the box 20 contains goods having different weights or weight distributions. For example, if the robot places the box 20 too fast, 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 the adjacent box 20. Because of these problems, simply moving the cassette 20 to a target position in the stack of cassettes 20 without regard to these problems may result in poor stacking. This is particularly true when any one or combination of these issues are multiple times the cassette 20 is placed by the robot during stacking. In other words, if pallet 30 includes two layers L1–2With four boxes 20 per level L, the robot has eight unfortunate opportunities to breakThe integrity of the pallet unit. Here, in order to solve these problems, the robot 100 shown in fig. 1A to 1C includes a system for reliably and repeatedly stacking the cassettes 20.

Referring to fig. 1B, the robot 100 has a vertical gravity axis V along the gravity directiongAnd a centroid CM, which is the point at which the robot 100 has a mass zero and a distribution. The robot 100 also has a vertical gravity axis V based ongTo 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.

The robot 100 generally includes a body 110 and one or more legs 120. The body 110 of the robot 100 may be a unitary structure or a more complex design depending on the task to be performed in the work environment 10. The body 110 may allow the robot 100 to balance, perceive the work environment 10, power the robot 100, assist 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 Inverted Pendulum Bodies (IPBs) 110, 110a (i.e., referred to as a trunk 110a of the robot 100) and balance bodies (CBBs) 110, 110b (i.e., referred to as a tail 110b of the robot 100) provided on the IPB 110 a.

The main body 110 (e.g., IPB 110a or CBB110 b) 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 CBB110b has a first end 112b and a second end 114 b. In some embodiments, the CBB110b is disposed on the second end 114a of the IPB 110a and is configured to move relative to the IPB 110 a. In some examples, the balancing body 110b includes a battery for powering the robot 100. Posterior joint JBThe CBB110b may be rotatably coupled to the second end 114a of the IPB 110a to allow the CBB110b to rotate relative to the IPB 110 a. Posterior joint JBMay be referred to as a pitch joint. In the example shown, the posterior joint JBSupporting the CBB110b to allow the CBB110b to surround a vertical axis V of gravity perpendicular to the robot 100gAnd a transverse axis (y-axis) that extends along the fore-aft axis (x-axis). The front-to-back axis (x-axis) may represent the current direction of travel of the robot 100. CBB110b relative toMovement of the IPB 110a through the axis of gravity V relative to verticalgThe CM of the robot 100 is moved to change the posture P of the robot 100. Rotary or posterior joint actuator A, AB(e.g., caudal actuators or balance body actuators) may be located at the posterior joint JBAt or near the location of the CBB110b (e.g., the tail) for controlling movement about the lateral axis (y-axis). Rotary actuator ABMay include electric motors, electro-hydraulic servos, piezoelectric actuators, solenoid actuators, pneumatic actuators, or other actuator technologies suitable for precisely effecting movement of the CBB110b relative to the IPB 110 a.

The rotational movement of the CBB110b relative to the IPB 110a changes the pose of the robot 100 for balancing and maintaining the robot 100 in an upright position. For example, the CBB110b is similar to the rotation of a flywheel in a conventional inverted pendulum flywheel, with respect to the vertical axis of gravity VgRotation of (D) in the posterior joint JBTo generate/apply a moment MCBBTo change the pose P of the robot 100. By moving the CBB110b relative to the IPB 110a to change the pose P of the robot 100, the CM of the robot 100 is oriented relative to the vertical axis of gravity VgTo balance and maintain the robot 100 in an upright position in the event that the robot 100 moves and/or carries a load. However, in contrast to the flywheel portion in a conventional inverted pendulum flywheel having a mass oriented at the moment point, the CBB110b includes a joint J at the posteriorBThe respective mass of applied torque excursion. In some configurations, a posterior joint J may be usedBInstead of the CBB110b, a gyroscope is provided to rotate and apply a moment (rotational force) to balance and maintain the robot 100 in an upright position.

The CBB110b may surround the posterior joint J in both clockwise and counterclockwise directionsBRotation (e.g., pitch) about the y-axis (e.g., in the "pitch direction") to produce an oscillating (e.g., roll) motion. Movement of the CBB110b relative to the IPB 110a between positions causes the CM of the robot 100 to shift (e.g., lower toward the ground 12 or raise away from the ground 12). The CBB110b may oscillate between motions to produce a rocking motion. The rotational speed of the CBB110b may be constant or variable (accelerating or decelerating) when moving relative to the IPB 110a, depending on whether it is moving relative to the IPB 110aHow quickly the dynamically balancing robot 100 needs to change the pose P of the robot 100.

Legs 120 are motion-based structures (e.g., legs and/or wheels) configured to move robot 100 within work environment 10. The robot 100 may have any number of legs 120 (e.g., a quadruped with four legs, a bipod with two legs, a hexapod with six legs, an eight-leg spider robot, etc.). For example, the robot 100 may have a single base or leg 120 that functions 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, 120 a-b.

As a two-legged robot 100, the robot includes a first leg 120, 120a and a second leg 120, 120 b. 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 such that the robot 100 may traverse components of the work 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 such that the robot 100 includes drive wheels 130. The drive wheels 130 may be in addition to or in place of the foot members of the robot 100. For example, the robot 100 can move according to walking motions and/or rolling motions. Here, the robot 100 depicted in fig. 1B shows a first end 122 coupled to the main body 110 (e.g., at IPB 110a) and a second end 124 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 may rotate about the axis of the coupling to move the robot 100 within the work environment 10.

Hip joint J on each side of the body 110H(e.g., sagittal plane P for robot 100)SSymmetrical first hip joint JH,JHaAnd the second hip joint JH,JHb) The first end 122 of the leg 120 may be rotatably coupled to the second end 114 of the body 110 to allow at least a portion of the leg 120 to surround a transverse axis (y-axis) relative to the body 110) Pan/tilt. 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 JHTo the second end 114a of the IPB 110a to allow at least a portion of the legs 120 to move/tilt about a transverse axis (y-axis) relative to the IPB 110 a.

Leg actuators A, ALCan be connected with each hip joint JHCorrelation (e.g. first leg actuator a)L,ALaAnd a second leg actuator AL,ALb). Hip joint JHAssociated leg actuator ALThe upper portion 126 of the leg 120 (e.g., the first leg 120a or the second leg 120b) may be caused to move/tilt about a lateral axis (y-axis) relative to the main body 110 (e.g., IPB 110 a). In some configurations, each leg 120 includes a respective upper portion 126 and a respective lower portion 128. The upper portion 126 may extend from the hip joint J at the first end 122HExtend to the respective knee joint JKAnd the lower portion 128 may extend from the knee joint JKTo the second end 124. To the knee joint JKRelated knee joint actuator A, AKThe lower portion 128 of the leg 120 may be caused to move/tilt about a lateral axis (y-axis) relative to the upper portion 126 of the leg 120.

Each leg 120 may include a respective ankle joint JAConfigured 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 JA,JAaAnd the second leg 120b includes a second ankle joint JA,JAb. Here, the ankle joint JAMay be associated with an axle coupled for common rotation with the drive wheel 130 and extending substantially parallel to the transverse axis (y-axis). The drive wheels 130 may include respective torque actuators (drive motors) a, aTConfigured to apply a respective axial torque for encircling the ankle joint JADrive wheel 130 is rotated to move drive wheel 130 along a fore-aft axis (x-axis) over ground surface 12 (which may be interchangeably referred to as work surface 12 or ground plane 12). For example, the axle torque may cause the drive wheels 130 to rotate in a direction to move the robot 100 in a forward direction along the front-to-back axis (x-axis) and/or cause the drive wheels 130 to rotate in an opposite direction to move the robot 100 in a rearward direction along the front-to-back axis (x-axis).

In some embodiments, legs 120 are prismatically coupled to body 110 (e.g., IPB 110a) such that the length of each leg 120 may be via hip JHNearby corresponding actuators (e.g. leg actuator a)L) Is arranged at the hip joint JHAnd knee joint JKA pair of pulleys (not shown) nearby and a timing belt (not shown) that the timing pulley rotates to expand and contract. Each leg actuator aLA linear actuator or a rotary actuator may be included. Here, a control system 140 having a controller 142 (e.g., as shown in FIG. 1C) can actuate the actuator associated with each leg 120 to rotate the respective upper portion 126 in one of a clockwise or counterclockwise direction relative to the body 110 (e.g., IPB 110a) to surround the respective knee joint J in one of a clockwise or counterclockwise direction relative to the upper portion 126 by rotating the respective lower portion 128 in the other of the clockwise or counterclockwise direction relative to the upper portion 126KRotates to extend/expand the length of the leg 120 prismatically. Alternatively, instead of a two-link leg, at least one leg 120 may comprise a single link that prismatically linearly extends/retracts such that second end 124 of leg 120 prismatically moves away/towards body 110 (e.g., IPB 110a) along a linear track. In other configurations, the knee joint JKCorresponding rotary actuators may be employed as knee actuators AKInstead of a pair of timing pulleys rotating the lower portion 128 relative to the upper portion 126.

The respective axle torques applied to each drive wheel 130 (e.g., first drive wheel 130, 130a associated with first leg 120a and second drive wheel 130, 130b associated with second leg 120b) may be varied to steer robot 100 across ground surface 12. For example, a shaft torque applied to the first driving wheel 130a greater than a shaft torque applied to the second driving wheel 130b may cause the robot 100 to turn to the left, and a shaft torque applied to the second driving wheel 130b greater than that applied to the first driving wheel 130 may cause the robot 100 to turn to the right. Similarly, applying substantially the same amount of axle torque to each drive wheel 130 may cause the robot 100 to pass substantially straight across the ground 12 in a forward or rearward 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 may rotate in the opposite direction to allow the robot 100 to change direction by rotating on the ground 12. Thus, each axle torque may be applied to the respective drive wheel 130 independently of the axle torque (if any) applied to the other drive wheel 130.

In some examples, the body 110 (e.g., at the CBB110 b) also includes at least one non-drive wheel (not shown). The non-driven wheels are typically passive (e.g., passive casters) such that the motion of the non-driven wheels is governed by other driven wheels or motions 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 where the body 110 (e.g., CBB110 b) is supported by the ground 12.

In some embodiments, the robot 100 also 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. Articulated arm 150 may have one or more degrees of freedom (e.g., from being relatively fixed to being able to perform a variety of tasks in work environment 10). Here, the articulated arm 150 shown in fig. 1B has five degrees of freedom. Although fig. 1B shows the hinge arm 150 disposed on the first end 112 of the main body 110 (e.g., at the IPB 110a), the hinge arm 150 may be disposed on any portion of the main body 110 in other configurations. For example, the hinge arm 150 is disposed on the CBB110b or on the second end 114a of the IPB 110 a.

The hinge 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 154AWherein each arm joint JAConfigured to enable articulation of the arm 150 in the work environment 10. These arm joints JAThe arm members 156 of the arms 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 a first articulated arm joint JA1(e.g., similar to a shoulder joint) to the main body 110 (e.g., IPB 110 a). In some configurations, the first articulated arm joint JA1Is arranged at the hip joint JHE.g., at the center of the body 110 along the sagittal plane P of the robot 100SAligned). In some examples, the first hinge arm is articulatedNode JA1The proximal first end 152 of the arm 150 is rotatably coupled to the body 110 (e.g., IPB 110a) to enable the arm 150 to rotate relative to the body 110 (e.g., IPB 110 a). For example, the arm 150 may move/tilt about a lateral axis (y-axis) relative to the body 110.

In some embodiments, such as fig. 1B, the arm 150 includes a second arm joint JA2(e.g. like elbow joint) and third arm joint JA3(e.g., like a wrist joint). Second arm joint JA2The first arm member 156a is coupled to the second arm member 156b such that these 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 an arm member 156. For example, although the arm 150 may have any number of arm members 156, FIG. 1B depicts the arm 150 having two arm members 156a-B 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 tasks within the work environment 10. The end effector 160 may be at the arm joint JAWhere (e.g. at the third arm joint J)A3At) is disposed on the second end 154 of the arm 150 to allow the end effector 160 multiple degrees of freedom during operation. End effector 160 may include one or more end effector actuators a, aEEFor gripping/grabbing objects. For example, end effector 160 includes one or more suction cups as end effector actuator AEETo grasp or clamp an object by providing a vacuum seal between end effector 160 and the target object (e.g., target cassette).

The articulated arm 150 can move/tilt about a lateral axis (y-axis) relative to the main body 110 (e.g., IPB 110 a). For example, the articulated arm 150 may rotate about a lateral axis (y-axis) relative to the body 110 in the direction of gravity to lower the CM of the robot 100 when performing a turning maneuver. The CBB110b may also be simultaneously rotated about the lateral axis (y-axis) in the direction of gravity relative to the IPB 110 to help lower the CM of the robot 100. Here, the articulated arm 150 and CBB110b may counteract any displacement of the CM of the robot 100 in a forward or rearward direction along the front-to-rear axis (x-axis), while still enabling downward displacement of the CM of the robot 100 closer to the ground 12.

Referring to fig. 1C, the robot 100 includes a control system 140 configured to monitor and control the operation of the robot 100. In some embodiments, the robot 100 is configured for autonomous and/or semi-autonomous operation. However, the 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 with actuator a (e.g., back actuator a)BLeg actuator ALKnee actuator AKDrive belt actuator, rotary actuator, end effector actuator AEEEtc.) to enable the robot 100 to move within 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 of the robot 100. In some configurations, control system 140 interfaces with a remote computing device and/or user. For example, control system 140 may include various components for communicating with robot 100, such as a joystick, buttons, transmitters/receivers, wired communication ports, and/or wireless communication ports for receiving inputs from and providing feedback to remote computing devices and/or users.

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 configured to perform certain operations with one or more subsystems of the robot 100. The memory hardware 144 is in communication 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. The memory hardware 144 is configured to store, among other things, 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 pose 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.

The sensor system 170 includes one or more sensors 172, 172 a-n. The sensors 172 may include image sensors (e.g., visual sensors or perception sensors), inertial sensors (e.g., Inertial Measurement Units (IMUs)), and/or motion sensors. Some examples of image sensors 172 include cameras such as monocular or stereo cameras, time-of-flight (TOF) depth sensors, scanning light detection and ranging (LIDAR) sensors, or scanning laser detection and ranging (LADAR) sensors. More generally, the sensors 172 may include one or more of the following: force sensors, torque sensors, speed sensors, acceleration sensors, position sensors (linear and/or rotational position sensors), kinematic sensors, positioning sensors, load sensors, temperature sensors, touch sensors, depth sensors, ultrasonic ranging sensors, infrared sensors, and/or object sensors. In some examples, the sensor 172 has a respective field of view that defines a sensing range or region corresponding to the sensor 172. Each sensor 172 may be pivotable and/or rotatable such that the sensor 172 may vary the 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 surrounding the body to collect sensor data 174 for 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 surrounding the robot 100. For example, as the robot 100 maneuvers around the work environment 10, the sensor system 170 collects pose data of the robot 100, which includes inertial measurement data (e.g., measured by the IMU). In some examples, the pose data includes kinematic data and/or orientation data about the robot 100.

When the field of view is measured 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 an image 176 as sensor data 174 at a particular frequency such that the sensor data 174 includes frames F of a field of view corresponding to a time interval. In configurations where the sensor system 170 includes multiple image sensors 172, the sensor system 170 may be configured to control the orientation (e.g., field of view) of each sensor 172 such that more than one field of view corresponding to the image sensors 172 overlap 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 the first sensor 172, 172a and at least one depth sensor (e.g., stereo camera, LIDAR, TOF, etc.) as the second sensor 172, 172 b. The sensors 172a-b may overlap their fields of view. With overlapping fields of view, the sensors 172a-b capture monocular images (i.e., two-dimensional) and depth images (i.e., three-dimensional) at the same time for the same field of view of the work environment 10 (or nearly the same field of view depending on the sensor mounting location).

Sensor data 174, such as image data, pose data, inertial data, kinematic data, etc., collected by the sensor system 170 associated with the environment 10 may be communicated 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 sensor data 174 (e.g., in memory hardware 144 or 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 and processes the sensor data 174 in real-time without storing raw (i.e., unprocessed) sensor data 174. In other examples, the controller system 140 and/or the remote resource stores processed sensor data 174 and raw sensor data 174. Sensor data 174 from the sensors 172 may allow the systems of the robot 100 to detect and/or analyze conditions about the robot 100. For example, the sensor data 174 may allow the control system 140 to manipulate the robot 100, change the pose of the robot 100, and/or actuate various actuators a for moving/rotating mechanical components of the robot 100.

In some examples, such as fig. 1C, the sensor system 170 includes a wrist joint J mounted or coupled to the arm 150A3The one or more sensors 172. For example, wrist sensor 172 is a six-axis force/torque sensor 172. Here, the sensor 172 senses the force on the cassette 20 held by the robot 100. The stacker 200 uses this force on the cassette 20 held by the robot 100 to indirectly detect the interaction between the cassette 20 held by the robot 100 and one or more other cassettes 20. In some embodiments, the palletizer 200 determines (or receives from another system of the robot 100) a speed of the cassette 20 held by the robot 100 based on the joint J of the robot 100. In other words, with the sensor system 170, the robot 100 can determine a speed corresponding to each joint J and the drive wheel 130. Based on these speeds, robot 100 determines how fast end effector 160 moves with cassette 20 and uses this to derive the speed of cassette 20.

In some configurations, robot 100 uses a similar method for force sensing. More specifically, the robot 100 may determine the force at the end effector 160 based on a combination of forces 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 places importance on speed and/or accuracy. For example, when based on the wrist joint JA3Other joints J (e.g. shoulder joint J)A1) In determining the force, acceleration of end effector 160 will cause robot 100 to sense the inertial force of the inertial mass (e.g., at shoulder joint J)A1The inertial force of arm 150) and the force at end effector 160. Thus, when robot 100 wants to minimize computational resources and/or prevent potential inaccuracies, robot 100 is in a position closest to end effector 160 (e.g., wrist J joint)A3) Forces around end effector 160 are sensed.

In some examples, robot 100 uses joint force feedback control and end effector impedance control to compliment the end effector 160 motion. For example, impedance control is based on signals from a sensor mounted on or coupled to wrist joint JA3Force feedback of wrist sensor 172 is enhanced (e.g., sensing end effector 160). Here, impedance control includes as inputs a desired end effector position and a measured end effector position. Alternatively, other inputs to 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 controls the output of the 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 characteristic, such as stiffness, damping, or inertia.

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 located and where it is actually located (i.e., the perception error). For example, when the robot 100 uses a vision system (i.e., vision-based sensor 172) to identify the position of the box 20 held by the robot 100 or to identify a target position (e.g., target box position 202 (fig. 2A)) of the box 20 to be placed on the pallet 30, there is a degree of error in both positions. Relying solely on these senses of the robot 100 translates these errors into placement errors during stacking. To account for the perceived uncertainty of robot 100, robot 100 is configured to use one or more motions of cassette 20 it holds to feel it enters a target location of cassette 20. Instead, traditionally, the robot is programmed to where the cassette 20 should go, and the robot tends to move the cassette 20 to that location rigidly. This conventional approach makes it very easy for the robot 100 to damage and/or interfere with other cassettes in the vicinity.

The cassette 20 held by the robot 100 is referred to as a "grabbed cassette 20G". When robot 100 couples itself to cassette 20 using end effector 160 of arm 150, cassette 20 is robotically coupled to100, grabbing. As shown in FIG. 1A, robot 100 uses end effector 160 of arm 150 (e.g., using end effector actuator A)EE) At the time of grasping the cassette 20G26, 26 ofTThe cassette 20 is grasped. For example, end effector 160 is utilized as end effector actuator AEEThe cassette 20 is grasped by suction force of the suction cups. In other examples, the robot 100 has more than one arm 150 and the at least two arms 150 collectively grasp the cassette 20 by pressing the arms 150 toward each other against the sides (i.e., face 26) of the cassette 20. Regardless of the grasping method, the palletizer 200 is configured to grasp the cassette 20GAre placed at the target cassette position 202 to form a stack of cassettes 20 with minimal to no space between the cassettes 20 of the stack (e.g., adjacent cassettes effectively mate or abut).

Referring to fig. 2A, the stacker 200 includes a locator 210 and an aligner 220. The stacker 200 is configured to receive a cassette 20 for graspingGA target cassette location 202 identifying the cassette 20 in which the gripper is positionedGThe position of (a). The target box location 202 may be within an existing stack of boxes 20 (e.g., on a pallet 30) or may initiate a stack of boxes 20. In the ideal world, the robot 100 would grasp a cassette 20GIs placed in the target cassette position 202 and the stack of cassettes 20 in that position is not destroyed. However, due to sensing errors, control tolerances, and/or cassette differences, the cassette 20 to be graspedGMoving to the target cassette position 202 may disturb other cassettes 20. Rather, the sizer 200 systematically attempts to sense the captured cassette 20GWhen a position is reached that has an acceptable spatial relationship with the adjacent cassette 20. In some examples, the sizer 200 considers a minimum to no gap between adjacent boxes 20 to be an acceptable spatial relationship.

The retainer 210 is configured to retain a cassette 20GIs placed at an initial position 212 adjacent to the target cassette position 202. The initial position 212 is intended to be a space not occupied by another object (e.g., another cassette 20). For example, the initial position 212 is offset from the target cassette position 202 to begin the stacking process from an unoccupied position so that the robot 100 can accurately sense the gripped cassette 20GWhen another cassette 20 is encountered.

FIGS. 2B-2D show the grasped cassette 20 in an initial position 212GExamples of (2). In some embodiments, as shown in fig. 2B, the initial position 212 includes an Offset 214 in a first direction (e.g., the y-direction) and an Offset 214 in a second direction (e.g., the x-direction). In some examples, a system of the robot 100, such as the palletizer 200 of fig. 2A, determines the 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 compensation distance in a first direction (e.g., the x-direction) and a second compensation distance in a second direction (e.g., the y-direction). Here, the offset 214 compensates for a perceived error of the robot 100 (e.g., a difference between an actual position of the cassette 20 and a perceived position of the cassette 20 based on the sensor data 174). The robot 100 may be configured to determine typical values for these errors in order to generate the offset 214. In some examples, offset 214 accounts for errors such as the position of end effector 160, the position of cassette 20 relative to end effector 160, and/or the position of cassette 20 corresponding to the stack of cassettes 20 relative to robot 100. When the robot 100 determines the first and second compensated distances based on the error amount (e.g., the average error amount), the initial position 212 is defined by first offsets 214, 214a in a first direction (e.g., the x-direction) and second offsets 214, 214b in a 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 3cm, the offset 214 may amount to 5cm to include an additional tolerance of 2 cm.

Referring to fig. 2C and 2D, in some configurations, the positioner 210 will grasp a cassette 20GPositioned above (relative to the z-direction) the target cassette position 202 without contacting an adjacent cassette 20. By means of a cassette 20 to be grippedGHovering state positioned above target box position 202 when a grasped box 20GMoving to the target cassette position 202, the stacker 200 may eliminate the gripped cassette 20GAnd other cartridges 20. Without friction, the robot 100 may more easily sense the gripped cassette 20GAnd other contact forces between the cassette 20. Due to the gripped cassette 20GMay remain at a height above the target cassette position 202 so that the aligner 220 may release the gripped cassette 20GThe cassette was previously lowered. Aligner 220 is releasing a gripped cassette 20GThe amount of previously lowered boxes may vary depending on variables such as the grasped box 20 in a hovering stateGHeight of the robot 100, operating speed of the robot 100 and/or cassette 20 graspedGIf the gripped cassette 20 is lifted/carried at the robot 100GWhen known or determined based on the sensor 172).

With continued reference to fig. 2A and 2C, the positioner 210 is configured to tilt the cassette 20 grasped at an angle relative to the ground 12 (or ground plane)G. In other words, the gripped cassette 20GBottom surfaces 26, 26 ofB(i.e., bottom surface 26) forms an angle with the ground 12. In some examples, a grabbed cassette 20GAngled upwardly toward the adjacent cassette 20. Here, when the cassette 20 is graspedGWhen R is released by robot 100 (fig. 2L), the now released cassette 20 will pivot toward the adjacent cassette 20 such that the sides 24 and faces 26 of the pivoted cassette 20 abut the sides 24 and faces 26 of the adjacent cassette 20, resulting in little to no gap between the cassettes 20 (e.g., as shown in fig. 2K-2M). In other words, the robot 100 releases the edge 24 of the cassette 20 (e.g., the edge 24 as shown in FIG. 2I)G) The faces 26 of adjacent cassettes 20 may be used as guides to achieve the target cassette position 202 due to the tilt (e.g., mating relationship between the opposite faces 26 of the released cassette 20 and the adjacent cassette 20). In some examples, such as in fig. 2C and 2D, the positioner 210 may be at the cassette 20 being graspedGObliquely grasped cassette 20 at or before initial position 212G. In other examples, the grabbed cassette 20 is moved when the aligner 220 moves from the home position 212GAt the time, the retainer 210 slantingly holds the cassette 20G

With continued reference to FIG. 2A, the aligner 220 of the stacker 200 is configured to hold the gripped cassette 20GFrom the initial position 212 to the target cassette position 202. When the cassette 20 is graspedGWhen moved to the target cassette position 202 or as close to the target cassette position 202 as other cassettes 20 allow, the aligner 220 releases the gripped cassette 20GTo grasp the cassette 20GPlaced in position (e.g., as shown in fig. 2K-2M). In some examples, aligner 220 moves a gripped cassette 20 in two different motionsGTo achieve the alignment position 222 near or at the target cassette position 202. For example, FIGS. 2E-2G illustrate the aligner 220 being in a first direction D1The gripped cassette 20 is displaced (e.g., in the y-direction)GWhile FIGS. 2H-2J illustrate the aligner 220 in a second direction D2The gripped cassette 20 is displaced (e.g., in the x-direction)G. In some examples, the first direction D1Perpendicular to the second direction D2. In some embodiments, aligner 220 shifts the grabbed cassette 20 along a motion vector having a component of a first direction and a component of a second directionG(e.g., aligner 220 angularly displaces the grasped cassette 20 in the x-y planeG). Additionally or alternatively, because work 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). Thus, even though fig. 2B-2J indicate that aligner 220 may be moved sequentially in each direction, aligner 220 may be configured to simultaneously displace grasped cassettes 20 sequentially in any direction and/or in all directions in three-dimensional spaceG. When the aligner 220 moves the gripped cassette 20 in a given directionGIn time, the code applicator 200 and/or aligner 220 monitor conditions during the move.

In some examples, aligner 220 moves the gripped cassette 20GUp to the gripped cassette 20GReaching the alignment position 222. To illustrate, from FIGS. 2B-2D to FIGS. 2E-2G, aligner 220 has grasped cassette 20GFrom the initial position 212 (fig. 2B) to a first aligned position 222a (fig. 2E-2G). In some examples, the cassette 20 will be grasped when the aligner 220 is to capture itGAlong a first direction D1When shifted from the initial position 212 to the first alignment positions 222, 222a, the aligner 220 doesIt is determined whether the first alignment position 222a satisfies a threshold first alignment distance 224, 224a (e.g., as shown in fig. 2E). The threshold first alignment distance 224a corresponds to the box 20 that the aligner 220 may move to grasp in a given directionGA finite distance of (a). In the case of a limited distance, the stacker 200 prevents the gripped cassette 20GToo far away from the target cassette position 202. For example, without a limited distance, the robot 100 may grasp a cassette 20GCompletely removing the stack of cassettes 20 while waiting for a contact force or a specific speed to stop the grasping of the cassette 20GIs moved. The limited distance may also prevent aligner 220 from moving the captured cassette 20GThe misalignment is exacerbated. For example, the cassettes 20 in a stack of cassettes 20 may be significantly offset from their ideal positions. If the aligner 220 moves the gripped cassette 20GBy abutting the cassette 20 deviated from the position having the large deviation, the cassette 20 is graspedGMisalignment will also be shared. In some examples, the threshold alignment distance 224 corresponds to the cassette 20 that the aligner 220 is allowed to move to graspGThe maximum moving distance of.

Referring to FIGS. 2H-2J, the aligner 220 is in the second direction D2Cassette 20 to be grippedGFrom the first aligned position 222a (shown in fig. 2E-2G) to the target cassette position 202 (or as allowed near the target cassette position 202). When the aligner 220 is in the second direction D2Cassette 20 to be grippedGWhen shifted from the first alignment position 222 to the target cassette position 202, the aligner 220 determines whether the movement to the target cassette position 202 satisfies a threshold second alignment distance 224, 224b (e.g., as shown in fig. 2H). In some examples, the threshold second alignment distance 224b has the same size as the threshold first alignment distance 224 a. In other examples, these threshold alignment distances 224 differ due to the shape of the cassette 20. For example, each box 20 may be an elongated rectangular prism such that a threshold alignment distance 224 along the length of the rectangular prism is greater than a threshold alignment distance 224 corresponding to the width of the rectangular prism.

During movement of aligner 220, the gripped cassette 20 occurs before threshold alignment distance 224 occursGMay realize othersAnd (4) conditions. For example, the code device 200 may sense a contact force F due to a threshold valuethreshOr threshold speed vthreshA grabbed cassette 20GThe movement should be stopped (i.e., the first alignment position 222 or the target cassette position 202 has been achieved). In other words, the threshold contact force FthreshOr threshold speed vthreshGripping indicating cassette 20GThe resistance caused by the adjacent cassette 20 is encountered. Here, the sizer 200 desirably causes a non-destructive, substantially inelastic impact such that the captured cartridge 20GForming an acceptable spatial relationship with adjacent cassettes 20 for stacking cassettes 20 (e.g., cassettes 20 that are not grippedGKnock adjacent cassettes 20 out of position and/or have no gaps that would be detrimental to shipping). Thus, the threshold contact force FthreshRefers to the amount of force that represents the cassette 20 being grasped during stackingGContact with at least one adjacent cassette 20 has been initiated, but the force is not of a magnitude to significantly interfere with at least one adjacent cassette 20 (e.g., is not of sufficient magnitude to overcome stiction). In a similar respect, the threshold speed vthreshRefers to a cartridge 20 that indicates that the robot 100 (e.g., via end effector 160) is generating a moving force, but is grasping due to resistance caused by an adjacent cartridge 20GThe speed at which it no longer moves. For example, the threshold velocity vthreshSet to zero to indicate a gripped cassette 20GThere is no movement. In some examples, the threshold contact force FthreshAnd/or threshold speed vthreshRepresented as a vector. As vectors, coder 200 may use the total magnitude of these vectors (e.g., in a three-dimensional work environment) or the components of these vectors (e.g., at the time aligner 220 is currently moving the gripped cassette 20)GIn the direction of) to determine whether these thresholds are met.

In some examples, the threshold contact force FthreshIs task specific. For example, the robot 100 receives instructions indicating cassettes 20 to be stacked together and information about these cassettes 20. Here, the information may include the weight of each cassette 20. Other types of information include the type of material of the box itself (e.g., a standard corrugated paper box or a surface-coated box)Sub) so that the robot 100 can take into account the coefficient of friction between the cassettes 20 during stacking. Based on this information, the robot 100 may configure a threshold contact force Fthresh. For example, the scrambler 200 applies a threshold contact force FthreshSet to correspond to the maximum force that the robot 100 can exert on the cassette 20 that is less than the force F expected to move a previously placed cassette 20. In some embodiments, the sensor 172 of the robot 100 determines the weight of each previously placed cassette 20 and uses the determined weight to set the threshold contact force Fthresh. In some examples, the sizer 200 uses a combination of impedance control and force feedback control to actively limit the force applied by the robot 100 on the cassette 20 (i.e., to set the threshold contact force F)thresh). 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 cassette 20 (e.g., taking into account physical properties of the previously placed cassette 20, such as mass, coefficient of friction, etc.). The impedance control limits the robot 100 application to the grasped cassette 20 by limiting the desired end effector forceGTo limit the amount of force applied to the cassette 20 when it is graspedGThe cassette 20 being grasped when contacting an adjacent cassette 20GThe forces that may be transmitted. In other methods, the indexer 200 constrains the end effector 160 and the gripped cassette 20GSuch that the amount of energy applied to a placed or existing box 20 on pallet 30 either does not move the placed box 20 or can only move the placed box 20 an acceptable distance. Such a condition may be that the robot 100 fails to detect a gripped cassette 20GAnd another cartridge 20. Here, the acceptable distance may also take into account the amount of energy that will be dissipated by friction (e.g., the robot 100 knows the coefficient of friction between the cassette material and/or the cassette 20).

In some examples, the stacker 200 is configured to move the grasped cassette 20 at the aligner 220GPreviously placed cassettes 20 are considered during contact detection. By taking into account the previously placed cassette 20, the sizer 200 can potentially increase its touch sensitivity. In other words, the stacker 200 may utilize the gripped cassette 20GAnd other known proximity between the cassettes 20. The palletizer 200 may grasp the cartridges 20 by grasping the cartridges 20 based on the knowledge of the robot 100 about the previously placed cartridges 20GExperienced forces (e.g., wrist J around end effector 160)A3The forces experienced) and/or the cassette 20 being graspedGThe velocity of (a) applies a weight to achieve increased sensitivity. For example, when contact is desired, the code applicator 200 may vary the threshold contact force F by a particular weightthreshOr threshold speed vthresh. In some examples, the particular weight may correspond to a probability distribution representing a contact confidence of the coder 200.

In some examples, the palletizer 200 includes an aligner 220 to move the grasped cassette 20 in a given directionGIs a threshold period of time Tthresh. Here, the condition may state that the aligner 220 does not sufficiently move the grasped cassette 20GTo meet the threshold alignment distance 224, but also not experience the threshold contact force FthreshOr threshold speed vthreshThe fact (1). In this case, the aligner 220 is configured to stop moving the grasped cassette 20GTo minimize potential interruptions between cassettes 20. The threshold time period T is when the sizer 200 encounters some noise at the sensor 172 or fails to detect contact with another cartridge 20threshIt may be advantageous. When this occurs, the threshold period of time TthreshIs a set time to minimize problems due to lack of detection, since the contact will only be for the threshold time period TthreshAre present.

Fig. 3 is an example of a method 300 for stacking cassettes 20. At operation 302, the method 300 receives a cassette 20 for holding by a robotGThe target cassette position 202. Box 20GHaving a top surface 26TBottom surface 26BAnd a side surface 26. At operation 304, the method 300 places the cassette 20GIs positioned at an initial position 212 adjacent to the target cassette position 202. At operation 306, method 300 tilts box 20 at an angle relative to ground plane 12G. Here, the angle is formed between the ground plane 12 and the box 20GBottom surface 26 ofBIn the meantime. At operation 308, the method 300 willThe cassette 20 is in a first direction D from an initial position 2121Shifted to a first alignment position 222a that satisfies a threshold first alignment distance 224 a. At operation 310, the method 300 places the cassette 20GFrom the first aligned position 222a along the second direction D2Shifted to the target cassette position 202 that satisfies the threshold second alignment distance 224 b. At operation 312, method 300 releases cassette 20 from robot 100G. Here, the cassette 20GResults in cassette 20GPivoting towards the boundary edge of the target box location 202.

In some embodiments, cassette 20 is packagedGFrom the initial position 212 in the first direction D1Moving to the first alignment position 222a includes determining that the cassette 20 is in the first alignment position before the threshold first alignment distance 224a is metGSubject to a threshold contact force FthreshOr threshold speed vthresh. In these embodiments, the cassette 20 is usedGFrom the first aligned position 222a along the second direction D2Moving to the target cassette position 202 also includes determining the cassette 20 before the threshold second alignment distance 224b is metGSubject to a threshold contact force FthreshOr threshold speed vthresh. In some examples, the method 300 determines the cassette 20 before the threshold first alignment distance 224a or the threshold second alignment distance 224b is metGHas been in the first direction D1Or a second direction D2Is moved in a respective one of the directions by a threshold time period Tthresh

FIG. 4 is a schematic diagram of an example computing device 400 that can be used to implement the systems described in this document and methods. Computing device 400 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. The components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit embodiments of the inventions described and/or claimed in this document.

Computing device 400 includes a processor 410 (e.g., data processing hardware), memory 420 (e.g., memory hardware), a storage device 430, a high-speed interface/controller 440 connected to memory 420 and high-speed expansion ports 450, and a low-speed interface/controller 460 connected to low-speed bus 470 and storage device 430. Each of the components 410, 420, 430, 440, 450, and 460 are interconnected using various buses, and may be mounted on a common motherboard or in other manners as appropriate. The processor 410 may 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 for a Graphical User Interface (GUI) on an external input/output device, such as display 480 coupled to high speed interface 440. In other embodiments, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Moreover, multiple computing devices 400 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).

Memory 420 stores information within computing device 400 non-temporarily. The memory 420 may be a computer-readable medium, a volatile memory unit, or a nonvolatile memory unit. Non-transitory memory 420 may be a physical device for temporarily or permanently storing programs (e.g., sequences of instructions) 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., typically used for firmware, such as boot programs). 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 magnetic disks or tape.

The storage device 430 can provide mass storage for the computing device 400. In some implementations, the storage device 430 is a computer-readable medium. In various different implementations, the storage device 430 may 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 an array of devices, including devices in a storage area network or other configurations. In a further embodiment, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as the methods described above. The information carrier is a computer-or machine-readable medium, such as the memory 420, the storage device 430, or memory on processor 410.

High speed controller 440 manages bandwidth-intensive operations for computing device 400, while low speed controller 460 manages lower bandwidth-intensive operations. Such allocation of duties is exemplary only. In some embodiments, high-speed controller 440 is coupled to memory 420, display 480 (e.g., through a graphics processor or accelerator), and high-speed expansion ports 450, which may accept various expansion cards (not shown). In some embodiments, low-speed controller 460 is coupled to storage device 430 and low-speed expansion port 490. The low-speed expansion port 490, which may include various communication ports (e.g., USB, bluetooth, ethernet, wireless ethernet), may 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 router, e.g., through a network adapter.

As shown, computing device 400 may be implemented in a number of different forms. For example, it may be implemented as a standard server 400a, or multiple times in a group of such servers 400a as a laptop computer 400b, or as part of a rack server system 400 c.

Various implementations of the systems and techniques described here 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 can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.

These computer programs (also known as programs, software applications or code) include machine instructions for a programmable processor, and may be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. 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., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide 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 used to provide machine instructions and/or data to a programmable processor.

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 output. The processes and logic flows can also be performed by, and in particular by, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. However, a computer need not have such a device. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, 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.

To provide for interaction with a user, one or more aspects of the disclosure may be implemented on a computer having a display device, e.g., a CRT (cathode ray tube), LCD (liquid crystal display) monitor or touch screen, for displaying information to the user and, optionally, a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other types of devices may also be used to provide for interaction with a user; for example, feedback provided to the user can 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 acoustic, speech, or tactile input. Further, the computer may interact with the user by sending and receiving documents to and from the device used by the user; for example, by sending a web page to a web browser on the user's client device in response to a request received from the web browser.

A number of embodiments have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure. Accordingly, other implementations are within the scope of the following claims.

38页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:滑动器以及手术工具

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!