Multi-agent controllers and robots

By coordinating joint torque control methods, using joint motion balance mobile robots, the problems of balance difficulties and collision risks in the prior art are solved, and more stable and safe task execution is achieved.

CN113631324BActive Publication Date: 2025-02-18BOSTON DYNAMICS INC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
CN202080024229.2
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-03-25
Filing Date
2020-03-13
Publication Date
2025-02-18
Estimated Expiration
2040-03-13

AI Technical Summary

Technical Problem

The prior art is difficult to effectively balance when a mobile robot performs tasks, especially when facing ground obstacles, which can easily lead to collision risks of wheel balance methods and affect the completion of the task.

Method used

The coordinated joint torque control method is adopted to control the multi-body structure of the robot, and the angular momentum generated by joint movement is used to balance the robot, reduce wheel movement, and reduce the risk of collision with ground obstacles.

Benefits of technology

Effectively balance the robot, reduce wheel motion and collision risks, and improve the stability and safety of task execution.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113631324B_ABST
    Figure CN113631324B_ABST
Patent Text Reader

Abstract

A method for a multi-agent controller receives a steering command (212) for a robot (100) to perform a given task. The robot includes a body (110), a plurality of joints (J), an arm (150) coupled to the body (110), and a drive wheel (130) rotatably coupled to the body (110) or at least one leg (120). Using the steering command, the method generates wheel torques (tw) and axle forces (FA) to perform the task. The method includes receiving a motion constraint (240) of the robot and a manipulation input (230) configured to manipulate the arm to perform the task. For each joint, the method generates a corresponding joint torque (tj) having an angular momentum, wherein the joint torque satisfies the motion constraint based on the manipulation input, the wheel torque, and the axle force. The method also includes controlling the robot to perform the task using the joint torques.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to a multi-agent controller for a robot. Background Art

[0002] A robot is generally defined as a reprogrammable, multifunctional manipulator designed to move materials, parts, tools, or specialized equipment through variable programmed motions to perform a task. A robot can be a physically anchored manipulator (e.g., an industrial robot arm), a mobile robot that moves throughout an environment (e.g., using legs, wheels, or traction-based mechanisms), or some combination of a manipulator and a mobile robot. Robots are used in a variety of industries, including, for example, manufacturing, transportation, hazardous environments, exploration, and healthcare. Therefore, the ability to balance a robot while performing tasks in an environment can enhance the functionality of the robot and provide additional benefits to these industries. Summary of the invention

[0003] One aspect of the present disclosure provides a method for a multi-agent controller. The method includes receiving a steering command at data processing hardware of a robot to perform a given task within an environment surrounding the robot. The robot includes an inverted pendulum body having a first end, a second end and a plurality of joints, and an arm, which is connected to the inverted pendulum body at a first joint among the plurality of joints, wherein the arm includes an end effector configured to grasp an object. The robot also includes at least one leg having a first and a second end, the first end being connected to the inverted pendulum body at a second joint among the plurality of joints; and a drive wheel, which is rotatably connected to the second end of at least one leg. The method also includes: based on the received steering command, generating a wheel torque of the drive wheel of the robot and a wheel axle force at the drive wheel of the robot by the data processing hardware. The wheel torque and the wheel axle force are generated to perform a given task. The method also includes: receiving a motion constraint indicating a motion limit of the robot at the data processing hardware; and receiving a manipulation input for the arm of the robot at the data processing hardware. The manipulation input is configured to manipulate the arm of the robot to perform a given task. For each joint in the plurality of joints, the method further comprises: generating, by the data processing hardware, a corresponding joint torque configured to control the robot to perform a given task, the joint torque satisfying the motion constraint based on the steering input, the wheel torque, and the wheel axle force. The method further comprises: controlling, by the data processing hardware, the robot to perform the given task using the joint torques generated for the plurality of joints.

[0004] Embodiments of the present disclosure may include one or more of the following optional features. In some embodiments, generating a corresponding joint torque for each of a plurality of joints includes using a joint torque algorithm to achieve a balance target of a balancing robot and a manipulation target of an arm of a mobile robot based on a given task, wherein the joint torque algorithm includes a quadratic function based on a received motion constraint. When a balance target or a manipulation target is uncertain when using a joint torque algorithm to achieve a balance target and a manipulation target, the joint torque algorithm may apply a default torque to determine the balance target and the manipulation target. Using a joint torque algorithm to achieve a balance target and a manipulation target may include applying a first weight to the balance target and applying a second weight to the manipulation target, the first weight and the second weight indicating the torque importance of a given task.

[0005] In some examples, the motion constraint includes at least one of: a range of motion limit for each of the plurality of joints; a torque limit for each of the plurality of joints; or a collision limit configured to avoid collision of a portion of the robot. The first end of the at least one leg may be prismatically coupled to the first end of the inverted pendulum body.

[0006] In some configurations, the robot includes a balancing body disposed on an inverted pendulum body and configured to move relative to the inverted pendulum body. The balancing body may be disposed on a first end of the inverted pendulum body. Additionally or alternatively, the balancing body may be disposed on a second end of the inverted pendulum body. The plurality of joints of the inverted pendulum body may include: a first joint that couples the arm to the inverted pendulum body; a second joint that couples at least one leg to the inverted pendulum body; a third joint that couples the inverted pendulum body to the balancing body; and at least one arm joint that couples two members of the arm together. The arm may include: a first member having a first end and a second end, the first end of the first member being coupled to the first end of the inverted pendulum body at a first joint; a second member having a first end and a second end, the first end of the second member being coupled to the second end of the first member at a first arm joint in at least one arm joint; and a third member having a first end and a second end, the first end of the third member being coupled to the second end of the second member at a second arm joint in at least one arm joint. At least one leg may include: a right leg having a first and a second end and a left leg having a first and a second end. Here, the first end of the right leg is prismatically connected to the second end of the inverted pendulum body, and the right leg has a right driving wheel rotatably connected to the second end of the right leg; and the first end of the left leg is prismatically connected to the second end of the inverted pendulum body, and the left leg has a left driving wheel rotatably connected to the second end of the left leg.

[0007] In some implementations, the manipulation input corresponds to a force or acceleration for an end effector. In some examples, controlling the robot to perform a given task using joint torques generated for a plurality of joints includes: generating a manipulation force based on the joint torques generated for the plurality of joints; and applying the manipulation force at the end effector of the robot.

[0008] Another aspect of the present disclosure provides a robot. The robot includes an inverted pendulum body having a first end, a second end, and a plurality of joints. The robot also includes an arm connected to the inverted pendulum body at a first joint of the plurality of joints and at least one leg having a first and a second end, the first end being connected to the inverted pendulum body at a second joint of the plurality of joints. The robot also includes a drive wheel rotatably connected to the second end of the at least one leg and data processing hardware. The robot also includes memory hardware in communication with the data processing hardware, the memory hardware storing instructions that, when executed on the data processing hardware, cause the data processing hardware to perform operations. The operations include receiving a steering command to perform a given task within an environment surrounding the robot. Based on the steering command received, the operations include generating a wheel torque of a drive wheel of the robot and a wheel axle force at the drive wheel of the robot. The wheel torque and the wheel axle force are generated to perform a given task. The operations also include receiving a motion constraint indicating a limit to the motion of the robot; and receiving a manipulation input for an arm of the robot, the manipulation input being configured to manipulate the arm of the robot to perform a given task. For each of the plurality of joints, the operation includes generating a corresponding joint torque configured to control the robot to perform a given task, the joint torque satisfying the motion constraints based on the steering input, the wheel torques, and the wheel axle forces. The operation also includes controlling the robot to perform the given task using the joint torques generated for the plurality of joints.

[0009] This aspect may include one or more of the following optional features. In some configurations, generating a corresponding joint torque for each of a plurality of joints includes using a joint torque algorithm to achieve a balance target of a balancing robot and a manipulation target of an arm of a mobile robot based on a given task, the joint torque algorithm including a quadratic function based on a received motion constraint. When a balance target or a manipulation target is uncertain when using a joint torque algorithm to achieve a balance target and a manipulation target, the joint torque algorithm may apply a default torque to determine the balance target and the manipulation target. Using a joint torque algorithm to achieve a balance target and a manipulation target may include applying a first weight to the balance target and applying a second weight to the manipulation target, the first weight and the second weight indicating the torque importance of a given task.

[0010] In some examples, the motion constraint includes at least one of: a range of motion limit for each of the plurality of joints; a torque limit for each of the plurality of joints; or a collision limit configured to avoid collision of a portion of the robot. The first end of the at least one leg may be prismatically coupled to the first end of the inverted pendulum body.

[0011] In some embodiments, the robot includes a balancing body disposed on an inverted pendulum body and configured to move relative to the inverted pendulum body. The balancing body may be disposed on a first end of the inverted pendulum body or a second end of the inverted pendulum body. The plurality of joints of the inverted pendulum body may include: a first joint that couples the arm to the inverted pendulum body; a second joint that couples at least one leg to the inverted pendulum body; a third joint that couples the inverted pendulum body to the balancing body; and at least one arm joint that couples two members of the arm together. The arm may include: a first member having a first end and a second end, the first end of the first member being coupled to the first end of the inverted pendulum body at a first joint; a second member having a first end and a second end, the first end of the second member being coupled to the second end of the first member at a first arm joint in at least one arm joint; and a third member having a first end and a second end, the first end of the third member being coupled to the second end of the second member at a second arm joint in at least one arm joint. At least one leg may include: a right leg having a first and a second end, the first end of the right leg being prismatically coupled to the second end of the inverted pendulum body, the right leg having a right drive wheel rotatably coupled to the second end of the right leg. The at least one leg may also include a left leg having 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.

[0012] In some examples, the manipulation input corresponds to a force or acceleration for an end effector. In some configurations, controlling the robot to perform a given task using joint torques generated for a plurality of joints includes: generating a manipulation force based on the joint torques generated for the plurality of joints; and applying the manipulation force at the end effector of the robot.

[0013] The details of one or more embodiments of the disclosure are set forth in the accompanying drawings and the description below. Other aspects, features, and advantages will be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0014] Figure 1A is a perspective view of an example of a robot lifting a box in an environment.

[0015] Figure 1B is a perspective view of an example of a robot.

[0016] Figure 1C yes Figure 1B A schematic diagram of an example arrangement of a robotic system.

[0017] Figure 2A-2C is used for Figure 1B Schematic diagram of an example multi-agent controller for a robot.

[0018] Figure 3 It is realized by robots Figure 1B An example arrangement of operations of a robotic multi-agent controller.

[0019] Figure 4 is a schematic diagram of an example computing device that can be used to implement the systems and methods described herein.

[0020] The same reference symbols in different drawings denote the same elements. DETAILED DESCRIPTION

[0021] A mobile robot is a robot that can move in an environment. Some more common examples of robot mobility include walking motion (e.g., legs in a gait pattern) or rolling motion (e.g., with one or more wheels). When the mobile robot moves according to the rolling motion, one or more wheels (usually referred to as wheels) of the mobile robot engage with a surface (e.g., the ground) to generate traction, thereby moving the robot in a desired direction on the surface. In addition to physically moving the robot, the wheels of the mobile robot can generate motion (i.e., by traction) to maintain the balance of the robot. When the mobile robot moves in the environment, the mobile robot can perform tasks. Typically, these tasks include interacting with objects and / or environmental elements. For example, the mobile robot can detect objects or manipulate objects (e.g., move / transport) within the environment. When the mobile robot performs these tasks, the problem that usually occurs is that these tasks may affect the balance of the mobile robot. In other words, when performing tasks, parts of the mobile robot, such as parts of the robot body and / or manipulators associated with the mobile robot (e.g., accessories of the robot) may change the center of mass (COM) of the mobile robot, resulting in an unbalanced state of the mobile robot. To maintain balance when such changes in COM occur, the mobile robot may roll one or more wheels to a position that redistributes the COM so that the mobile robot is in a balanced position.

[0022] One of the problems with this wheel balancing method is that at least one wheel may often roll back and forth. This situation becomes more and more common when the mobile robot must perform tasks that require manipulating an object, such as picking up or putting down an object. Here, when the mobile robot lifts an object with a manipulator (such as a robot arm), the weight of the object at a certain distance from the COM of the mobile robot generates a moment (i.e., torque). The mobile robot can offset this moment caused by the engagement of the mobile robot with the object by generating a counter-torque. In some examples, the wheel generates traction as a counter-torque. In other words, the engagement object changes the mass distribution of the mobile robot compared to the robot detached from the object, causing the robot's COM to shift. In order to maintain balance due to this shift in the COM, the wheel may move to a position that aligns the wheel with the shifted COM.

[0023] Unfortunately, a mobile robot may have constraints during operation. For example, a mobile robot may be spatially constrained (e.g., there are ground obstacles around the robot). One such example of a spatial constraint is when the mobile robot encounters a ground obstacle. For example, when the mobile robot is lifting a box from a pallet, the pallet as a ground obstacle introduces a spatial constraint that may limit the travel of the mobile robot's wheels. When the mobile robot lifts the box from the pallet, a mobile robot using a wheel balancing method risks driving the wheels into the pallet to balance the mobile robot (e.g., Figure 1A Here, a collision between the pallet and the wheels may affect the task of lifting the boxes. On the one hand, the pallet may prevent the wheels from moving to a position that fully balances the mobile robot, causing the mobile robot to lose balance and fall (e.g., risking damage to the boxes and / or the robot). On the other hand, the pallet may be light enough that the wheels are able to move the pallet to a position that allows the wheels to balance the mobile robot. Here, the movement of the pallet may cause other boxes on the pallet to shift and / or fall (e.g., also potentially damaging the boxes). Therefore, the wheel balancing method is not always an effective method for balancing the mobile robot due to the risk of collision with ground obstacles.

[0024] For a more efficient approach in situations where the mobile robot is at risk of colliding with a ground obstacle, the mobile robot may employ coordinated joint torque control. Coordinated joint torque control refers to a control method that utilizes the angular momentum generated by the motion of one or more joints to balance the robot. By relying on one or more joints of the robot for balancing, the wheels of the mobile robot do not need to be the only system for balancing the robot. This reduces wheel motion during manipulation tasks; therefore, minimizing or eliminating the risk of the mobile robot colliding with a ground obstacle.

[0025] In order to balance using the coordinated joint torque control method, the robot is configured to take into account and control the multi-body structure of the robot. Here, the term multi-body (i.e. corresponding to a "multi-body" controller) refers to the inertial body of the mobile robot. The inertial body is not just the body or trunk of the mobile robot, but the robot has components that contribute to the COM of the robot (e.g., arms, legs, body (torso), head, tail, etc.). This means that the mobile robot can include a single body corresponding to its trunk, but still use a multi-body controller because in addition to the single body, the multi-body controller also controls the legs and / or arms. Coordinated joint torque control works by controlling the torque at one or more joints that connect the components of the robot (i.e., the inertial body) together (e.g., through actuators at or near the joints).

[0026] Figure 1AAn example of a wheel balancing method compared to a coordinated joint torque control method for balancing is depicted. In this example, a robot 100 generally includes a body 110, at least one leg 120 (e.g., shown as two legs 120, 120a-b), a drive wheel 130 coupled to each leg 120, and an arm 150 having an end effector 160. The robot 100 is within an environment 10, which includes a plurality of boxes 20, 20a-n stacked on a pallet 30. Here, using the end effector 160, the mobile robot 100 is lifting the box 20a from the pallet 30, which poses a collision risk to the robot 100. When the robot 100 uses the wheel balancing method, one or more drive wheels 130 of the robot 100 (as shown in dashed lines) will inevitably cause a collision C with the pallet 30. In contrast, by adopting a joint coordination method, the joints J of the robot 100 contribute to the angular momentum effect, which makes the robot 100 less dependent on wheel balancing. In other words, using the joint coordination method, the drive wheel 130 can remain stationary, as shown by the solid black outline drive wheel 130.

[0027] Figure 1B 1 is an example of a mobile robot 100 (also referred to as a robot) operating within an environment 10 that includes at least one box 20. Here, the environment 10 includes a plurality of boxes 20, 20a-n stacked on a pallet 30 located on a ground 12. The robot 100 can move (e.g., drive) on the ground 12 to detect and / or manipulate the boxes 20 within the environment 10. For example, the pallet 30 may correspond to a transport truck that the robot 100 loads or unloads. Here, the robot 100 may be a logistics robot associated with the shipping and / or receiving stages of logistics. As a logistics robot, the robot 100 can palletize or detect boxes 20 for logistics fulfillment or inventory management. For example, the robot 100 detects boxes 20, handles input or output inventory of boxes 20, and moves boxes 20 in the environment 10.

[0028] The robot 100 has a vertical gravity axis V along the direction of gravity. g and a center of mass COM, which is the point where the robot 100 has zero mass and distribution. The robot 100 also has a vertical axis V g The pose P of the COM of the robot 100 is used to define a specific posture or stance taken by the robot 100. The pose of the robot 100 can be defined by the orientation or angular position of an object in space.

[0029] The robot 100 generally includes a body 110 and one or more legs 120. Depending on the task to be performed in the environment 10, the body 110 of the robot 100 can be a single structure or a more complex design. The body 110 can allow the robot 100 to balance, sense the environment 10, power the robot 100, assist with tasks within the environment 10, or support other components of the robot 100. In some examples, the robot 100 includes a two-part body 110. For example, the robot 100 includes an inverted pendulum body (IPB) 110, 110a (i.e., referred to as the torso 110a of the robot 100) and a balancing body (CBB) 110, 110b (i.e., referred to as the tail 110b of the robot 100) disposed on the IPB 110a.

[0030] The body 110 (e.g., IPB 110a or CBB 110b) has a first end 112 and a second end 114. For example, IPB 110a has a first end 112a and a second end 114a, while CBB 110b has a first end 112b and a second end 114b. In some embodiments, CBB 110b is disposed on the second end 114a of IPB 110a and is configured to move relative to IPB 110a. In some examples, CBB 110b includes a battery for powering robot 100. Rear joints J, J B The CBB 110b may be rotatably coupled to the second end 114a of the IPB 110a to allow the CBB 110b to rotate relative to the IPB 110a. B It can be called a pitch joint. In the example shown, the rear joint J B The CBB 110 b is supported to allow the CBB 110 b to rotate about a vertical axis V perpendicular to the gravity of the robot 100. g The lateral axis (y-axis) extending from the front-back axis (x-axis) may represent the current direction of travel of the robot 100. The movement of the CBB 110b relative to the IPB 110a is determined by the movement relative to the vertical gravity axis V g Move the COM of the robot 100 to change the posture P of the robot 100. Rotary actuator or rear joint actuator A, A B (e.g. tail actuator or balanced body actuator) can be located at the rear joint J B A rotary actuator A is located at or near the CBB 110b (e.g., the tail) and is used to control the movement of the CBB 110b (e.g., the tail) around the lateral axis (y-axis). B This may include electric motors, electro-hydraulic servos, piezoelectric actuators, solenoid actuators, pneumatic actuators, or other actuator technologies suitable for accurately effecting movement of the CBB 110b relative to the IPB 110a.

[0031] The rotational movement of the CBB 110b relative to the IPB 110a changes the posture of the robot 100 for balancing and maintaining the robot 100 in an upright position. For example, similar to the rotation of the flywheel in a conventional inverted pendulum flywheel, the CBB 110b is rotated relative to the vertical axis V of gravity. g The rotation of the posterior joint J B A torque is generated / applied at the CBB 110b to change the posture P of the robot 100. By moving the CBB 110b relative to the IPB 110a to change the posture P of the robot 100, the COM of the robot 100 is moved relative to the vertical axis V of gravity. g The CBB 110b is movable to balance and maintain the robot 100 in an upright position when the robot 100 moves and / or carries a load. However, compared to the flywheel portion in a conventional inverted pendulum flywheel having a mass oriented at a moment point, the CBB 110b includes a mass oriented at a moment point at the rear joint J. B In some configurations, the corresponding mass of the moment applied at the rear joint J can be used. B The gyroscope at the bottom of the robot 100 replaces the CBB 110b and rotates and applies a torque (rotational force) to balance and keep the robot 100 in an upright position.

[0032] The CBB 110b can be moved around the posterior joint J in both clockwise and counterclockwise directions. B The CBB 110b may rotate (e.g., pitch) (e.g., in a "pitch direction" about the y-axis) to produce an oscillating (e.g., rocking) motion. The movement of the CBB 110b between positions relative to the IPB 110a causes the COM of the robot 100 to shift (e.g., lower toward the ground 12 or raise away from the ground 12). The CBB 110b may oscillate between movements to produce a rocking motion. The rotation speed of the CBB 110b may be constant or varied (accelerating or decelerating) when moving relative to the IPB 110a, depending on how quickly the posture of the robot 100 needs to be changed in order to dynamically balance the robot 100.

[0033] The legs 120 are motion-based structures (e.g., legs and / or wheels) configured to move the robot 100 around the environment 10. The robot 100 may have any number of legs 120 (e.g., a quadruped with four legs, a biped with two legs, a hexapod with six legs, a spider robot with eight legs, etc.). Here, for simplicity, the robot 100 is generally shown and described as having two legs 120, 120a-b. As previously mentioned, the robot 100 may include a single leg 120. For a single leg 120, the single leg 120 may serve as a base or lower body structure that provides motion for the robot 100. For example, one or more drive wheels 130 are attached to the single leg structure and extend downward toward the engagement surface 12 to drive the robot 100 around the environment 10. In this configuration, the single leg 120 may partially house the one or more drive wheels 130 and / or a drive system associated with the drive wheels 130.

[0034] As a two-legged robot 100, the robot includes a first leg 120, 120a and a second leg 120, 120b. In some examples, each leg 120 includes a first end 122 and a second end 124. The second end 124 corresponds to an end of the leg 120 that contacts or is adjacent to a contact surface (e.g., the ground) of the robot 100 so that the robot 100 can traverse a member of the environment 10. For example, the second end 124 corresponds to a foot of the robot 100 that moves according to a gait pattern. In some embodiments, the robot 100 moves according to a rolling motion, so that the robot 100 includes a drive wheel 130. The drive wheel 130 can be a supplement or replacement for the foot-shaped member of the robot 100. For example, the robot 100 is capable of moving according to a walking motion and / or a rolling motion. Here, Figure 1B The robot 100 depicted in FIG. 1 shows a first end 122 coupled to the body 110 (e.g., at IPB 110a), while a second end 124 is coupled to a drive wheel 130. By coupling the drive wheel 130 to the second end 124 of the leg 120, the drive wheel 130 can rotate about the axis of the coupling to move the robot 100 in the environment 10.

[0035] Hip joints J, J on each side of the body 110 H (For example, regarding the sagittal plane P of the robot 100 S Symmetrical first hip joint J H ,J Ha and the second hip joint J H ,J Hb ) The first end 122 of the leg 120 can be rotatably coupled to the second end 114 of the body 110 to allow at least a portion of the leg 120 to move / pitch relative to the body 110 about the lateral axis (y-axis). For example, the first end 122 of the leg 120 (e.g., the first leg 120a or the second leg 120b) is at the hip joint J.H The leg 120 is coupled to the second end 114a of the IPB 110a to allow at least a portion of the leg 120 to move / pitch relative to the IPB 110a about the lateral axis (y-axis).

[0036] Leg actuator A,A L Can be used with each hip joint H Related (e.g. first leg actuator A L ,A La and the second leg actuator A L ,A Lb ). and hip jointJ H Related leg actuator A L The upper portion 126 of the leg 120 (e.g., the first leg 120a or the second leg 120b) can be caused to move / pitch relative to the body 110 (e.g., the IPB 110a) about the lateral axis (y-axis). In some configurations, each leg 120 includes a corresponding upper portion 126 and a corresponding lower portion 128. The upper portion 126 can be moved from the hip joint J at the first end 122. H Extend to the corresponding knee joint J,J K , and the lower part 128 can be from the knee joint J K Extends to the second end 124. With the knee joint J K Related knee joint actuators A, A K The lower portion 128 of the leg 120 may be caused to move / pitch relative to the upper portion 126 of the leg 120 about the lateral axis (y-axis).

[0037] Each leg 120 may include a corresponding ankle joint J, J A , which is configured to rotatably couple the drive wheel 130 to the second end 124 of the leg 120. For example, the first leg 120a includes a first ankle joint J A ,J Aa The second leg 120b includes a second ankle joint J A ,J Ab Here, the ankle joint J A Axle A may be associated with the drive wheel 130, which is coupled to the drive wheel 130 for common rotation and extends substantially parallel to the lateral axis (y-axis). The drive wheel 130 may include a corresponding torque actuator (drive motor) A, A T , which is configured to apply a corresponding axial torque for the ankle joint J A The drive wheel 130 is rotated to move the drive wheel 130 along the front-back axis (x-axis) on the ground surface 12. For example, the shaft torque may cause the drive wheel 130 to rotate in a first direction to move the robot 100 in a forward direction along the front-back axis (x-axis), and / or cause the drive wheel 130 to rotate in an opposite second direction to move the robot 100 in a rearward direction along the front-back axis (x-axis).

[0038] In some embodiments, the legs 120 are prismatically coupled to the body 110 (eg, IPB 110a) such that the length of each leg 120 can be adjusted via the hip joint J. H The corresponding actuator nearby (e.g. leg actuator A L ), hip jointJ H and knee joint K The leg actuator A is expanded and contracted by a pair of pulleys (not shown) and a synchronous belt (not shown) rotating the synchronous pulleys. L A linear actuator or a rotary actuator may be included. Here, a controller 142 (e.g., Figure 1C The control system 140 of the embodiment of the present invention can actuate the actuator associated with each leg 120 to rotate the corresponding upper portion 126 relative to the body 110 (e.g., IPB 110a) in one of the clockwise direction or the counterclockwise direction, thereby rotating the corresponding lower portion 128 relative to the upper portion 126 about the corresponding knee joint J in the other of the clockwise direction or the counterclockwise direction. K The leg 120 is rotated to prismatically extend / expand the length of the leg 120. Alternatively, instead of a dual-link leg, at least one leg 120 may include a single link that prismatically extends / retracts linearly so that the second end 124 of the leg 120 moves prismatically along a linear track away from / toward the body 110 (e.g., IPB 110a). In other configurations, the knee joint J K A corresponding rotary actuator can be used as the knee actuator A K Instead, a pair of synchronous pulleys are used to rotate the lower portion 128 relative to the upper portion 126.

[0039] The respective axle torques applied to each drive wheel 130 (e.g., the first drive wheel 130, 130a associated with the first leg 120a and the second drive wheel 130, 130b associated with the second leg 120b) can be varied to maneuver the robot 100 across the ground 12. For example, a wheel torque τ applied to the first drive wheel 130a that is greater than a wheel torque τ applied to the second drive wheel 130b W The shaft torque (i.e. wheel torque τ W ) can make the robot 100 turn left, and a larger wheel torque τ is applied to the second driving wheel 130b than to the first driving wheel 130 W The robot 100 can be turned to the right. Similarly, a wheel torque τ of substantially the same magnitude is applied to each driving wheel 130 W The robot 100 can be moved substantially straight across the ground 12 in a forward or backward direction. The shaft torque T applied to each drive wheel 130 AThe magnitude of also controls the speed of the robot 100 along the front-to-back axis (x-axis). Optionally, the drive wheels 130 can rotate in the opposite direction to allow the robot 100 to change direction by rotating on the ground 12. Therefore, each wheel torque τ W The shaft torque (if any) applied to the corresponding drive wheel 130 may be independent of the shaft torque (if any) applied to the other drive wheel 130 .

[0040] In some examples, the body 110 (e.g., at the CBB 110b) further includes at least one non-driven wheel (not shown). The non-driven wheel is typically passive (e.g., a passive caster) and does not contact the ground 12 unless the body 110 moves to a posture P in which the body 110 (e.g., CBB 110b) is supported by the ground 12.

[0041] In some embodiments, the robot 100 further includes one or more accessories, such as an articulated arm 150 (also referred to as an arm or manipulator arm) disposed on the body 110 (e.g., on the IPB 110a) and configured to move relative to the body 110. The articulated arm 150 can have one or more degrees of freedom (e.g., ranging from being relatively fixed to being able to perform a variety of tasks in the environment 10). Here, Figure 1B The illustrated articulated arm 150 has five degrees of freedom. Figure 1B The articulated arm 150 is shown disposed on the first end 112 of the body 110 (e.g., at the IPB 110a), but the articulated arm 150 may be disposed in other configurations on any portion of the body 110. For example, the articulated arm 150 is disposed on the CBB 110b or on the second end 114a of the IPB 110a.

[0042] The articulated arm 150 extends between a proximal first end 152 and a distal second end 154. The arm 150 may include one or more arm joints J, J between the first end 152 and the second end 154. A , where each arm joint J A The arm 150 is configured to be able to articulate in the environment 10. These arm joints J A The arm member 156 of the arm 150 may be coupled to the body 110, or two or more arm members 156 may be coupled together. For example, the first end 152 is at a first articulated arm joint J, J A1 The first articulated arm joint J is connected to the main body 110 (e.g., IPB 110a) at a position similar to a shoulder joint. A1 Set at hip J H between (e.g., at the center of the body 110 along the sagittal plane P of the robot 100 S In some examples, the first articulated arm joint J A1The proximal first end 152 of the arm 150 is rotatably coupled to the body 110 (eg, IPB 110a) to enable the arm 150 to rotate relative to the body 110 (eg, IPB 110a). For example, the arm 150 can move / pitch relative to the body 110 around the lateral axis (y-axis).

[0043] In some embodiments, such as Figure 1B The arm 150 includes a second arm joint J, J A2 (e.g. similar to the elbow joint) and the third arm joint J,J A3 (For example, similar to the wrist joint). Second arm joint J A2 The first arm member 156a is coupled to the second arm member 156b such that the members 156a-b can rotate relative to each other and the body 110 (e.g., IPB 110). Depending on the length of the arm 150, the second end 154 of the arm 150 coincides with one end of the arm member 156. For example, although the arm 150 may have any number of arm members 156, Figure 1B An arm 150 is depicted 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 a task within the environment 10. The end effector 160 may be located at the arm joint J A At (for example, at the third arm joint J A3 The end effector 160 may include one or more end effector actuators A, A EE , for gripping / grasping an object. For example, the end effector 160 includes one or more suction cups as the end effector actuator A EE , to grasp or clamp an object by providing a vacuum seal between the end effector 160 and the target object.

[0044] The articulated arm 150 can move / pitch relative to the main body 110 (e.g., IPB 110a) about a lateral axis (y-axis). For example, the articulated arm 150 can rotate relative to the main body 110 about the lateral axis (y-axis) in the direction of gravity to lower the COM of the robot 100 when performing a turning maneuver. The CBB 110b can also simultaneously rotate relative to the IPB 110 about the lateral axis (y-axis) in the direction of gravity to help lower the COM of the robot 100. Here, the articulated arm 150 and CBB 110b can offset any displacement of the COM of the robot 100 in the forward or rearward direction along the front-to-back axis (x-axis) while still achieving a downward displacement of the COM of the robot 100 closer to the ground 12.

[0045] refer to Figure 1C, the robot 100 includes a control system 140 that is configured to monitor and control the operation of the robot 100. In some embodiments, the robot 100 is configured to operate autonomously and / or semi-autonomously. However, a user may also operate the robot by providing commands / instructions to the robot 100. In the example shown, the control system 140 includes a controller 142 (e.g., data processing hardware) and memory hardware 144. The controller 142 may include its own memory hardware or utilize the memory hardware 144 of the control system 140. In some examples, the control system 140 (e.g., with the controller 142) is configured to communicate with an actuator A (e.g., back actuator A). B , Leg actuator A L , Knee actuator A K , Drive belt actuator, Rotary actuator, End effector actuator A EE The control system 140 may communicate (e.g., command movement, etc.) with the robot 100 to enable movement in the environment 10. The control system 140 is not limited to the components shown and may include additional components (e.g., a power supply) or fewer components without departing from the scope of the present disclosure. These components may communicate via wireless or wired connections and may be distributed across multiple locations on the robot 100. In some configurations, the control system 140 interfaces with a remote computing device and / or user. For example, the control system 140 may include various components for communicating with the robot 100, such as a joystick, buttons, a transmitter / receiver, a wired communication port, and / or a wireless communication port, for receiving input from a remote computing device and / or user, and providing feedback to a remote computing device and / or user.

[0046] The controller 142 corresponds to data processing hardware that may include one or more general purpose processors, digital signal processors, and / or application specific integrated circuits (ASICs). In some embodiments, the controller 142 is a dedicated embedded device that is configured to perform specific operations with one or more subsystems of the robot 100. Additionally or alternatively, the controller 142 includes a software application that is programmed to use the data processing hardware of the controller 142 to perform the functions of the system of the robot 100. The memory hardware 144 communicates with the controller 142 and may include one or more non-transitory computer-readable storage media, such as volatile and / or non-volatile storage components. For example, the memory hardware 144 may be associated with one or more physical devices that communicate with each other and may include optical, magnetic, organic, or other types of memory or storage devices. The memory hardware 144 is particularly configured to store instructions (e.g., computer-readable program instructions) that, when executed by the controller 142, cause the controller 142 to perform a number of operations, such as, but not limited to, changing the posture P of the robot 100 to maintain balance, manipulating the robot 100, detecting objects, transporting objects, and / or performing other tasks within the environment 10. In some implementations, controller 142 performs operations based on direct or indirect interaction with sensor system 170 .

[0047] The sensor system 170 includes one or more sensors 172, 172a-n. The sensors 172 may include vision / image sensors, inertial sensors (e.g., inertial measurement units (IMUs)), and / or motion sensors. Some examples of image / vision sensors 172 include cameras such as monocular cameras 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, velocity sensors, acceleration sensors, position sensors (linear and / or rotational position sensors), kinematic sensors, positioning sensors, load sensors, temperature sensors, pressure sensors (e.g., for monitoring end effector actuator A), and / or motion sensors. EE), touch sensors, depth sensors, ultrasonic ranging sensors, infrared sensors, and / or object sensors. In some examples, the sensors 172 have corresponding fields of view that define a sensing range or area corresponding to the sensor 172. Each sensor 172 can be pivotable and / or rotatable so that the sensor 172 can change the field of view, for example, around one or more axes (e.g., an x-axis, a y-axis, or a z-axis relative to the ground 12). In some embodiments, the body 110 of the robot 100 includes a sensor system 170 having a plurality of sensors 172 around the body to collect sensor data 174 in all directions around the robot 100. Additionally or alternatively, the sensors 172 of the sensor system 170 can be mounted on the arm 150 of the robot 100 (e.g., in combination with one or more sensors 172 mounted on the body 110). The robot 100 can include any number of sensors 172 as part of the sensor system 170 to generate sensor data 174 for the environment 10 around the robot 100. For example, the sensor system 170 collects posture data of the robot 100 , which includes inertial measurement data (e.g., measured by an IMU), as the robot 100 maneuvers around the environment 10. In some examples, the posture data includes kinematic data and / or orientation data about the robot 100.

[0048] 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. The sensor data 174 collected by the sensor system 170 related to the environment 10, such as image data, posture data, inertial data, kinematic data, etc., can be transmitted to the control system 140 (e.g., the controller 142 and / or the memory hardware 144) of the robot 100. In some examples, the sensor system 170 collects and stores the sensor data 174 (e.g., in the memory hardware 144 or in the memory hardware associated with the remote resource in communication with the robot 100). In other examples, the sensor system 170 collects the sensor data 174 in real time and processes the sensor data 174 without storing the raw (i.e., unprocessed) sensor data 174. In other examples, the controller system 140 and / or the remote resource stores the processed sensor data 174 and the raw sensor data 174. The sensor data 174 from the sensor 172 can allow the system of the robot 100 to detect and / or analyze conditions related to the robot 100. For example, the sensor data 174 may allow the control system 140 to manipulate the robot 100 , change the posture of the robot 100 , and / or actuate various actuators A for moving / rotating mechanical components of the robot 100 (eg, with respect to joints J of the robot 100 ).

[0049] Figure 2A-2Cis an example of a multi-agent controller 200. The multi-agent controller 200 generally includes a subject servo mechanism 210 (also referred to as a subject servo) and a solver 220. The multi-agent controller 200 is configured to receive input for a task and generate joint torques τ for a plurality of joints J of the robot 100. J , to perform a given task. Here, the task may include a balance goal and a manipulation goal. The input may include at least one of a steering command 212, a manipulation input 230 for operating the arm 150, or a motion constraint 240. In some examples, the multi-agent controller 200 identifies a balance goal and a manipulation goal. In other examples, the multi-agent controller 200 receives inputs indicating or corresponding to a balance goal and a manipulation goal (e.g., a steering command 212 and / or a manipulation input 230 and / or a motion constraint 240). The balance goal refers to producing a balance state that enables the robot 100 to perform a task within the environment 10. For example, when the task is to move the box 20 (e.g., as shown in FIG. 1 ) when the robot 100 is stationary (i.e., in a standing posture) and close to the box 20, Figure 1A When the robot 100 is lifted from the pallet 30 (as shown in FIG. 1 ), the balance goal is for the robot 100 to maintain balance when the arm 150 engages and lifts the box 20 without causing too much movement at the drive wheel 130 to affect the task (e.g., not causing a ground collision with the pallet 30 during task balance). As another example, when the robot 100 is tasked with lifting the box 20 when the robot 100 is not adjacent to the pallet 30, the task can be performed in a variety of ways involving different balance goals. In one approach, the robot 100 navigates to the pallet 30 including the box 20, stops near the pallet 30, and continues to lift the box 20. Here, the balance goal includes a balance component during the movement of the robot 100 toward the pallet 30 (e.g., during a moving posture), and a balance component starting from a standing posture when the robot 100 stops near the pallet and lifts the box 20. In a second approach, the robot 100 can lift the box 20 while the robot 100 is moving, or lift the box 20 while the robot 100 is stopped at the pallet 30 (e.g., trying to minimize the stationary time of the robot 100). For example, when the robot 100 reverses away from the pallet 30, the robot 100 moves forward toward the pallet 30 and immediately lifts the box 20. Here, the balance target includes components for the balance movement of the robot 100 without the box 20 and components for the balance movement of the robot 100 during engagement with / with the box 20. The manipulation target refers to the force or acceleration generated for the arm 150 to perform a given task (e.g., using the end effector 160). For example, the acceleration that moves the arm 150 to a position to lift the box 20 and the actuation force that enables the end effector 160 to lift the box 20.

[0050] In some examples, multi-agent controller 200 is part of control system 140. In other examples, multi-agent controller 200 is independent of control system 140 but transmits joint torque τ J To allow the control system 140 to achieve the joint torque τ of the robot 100 J (e.g., enabling the control system 140 to actuate actuator A to achieve joint torque τ J ). In some configurations, the multi-agent controller 200 communicates with other controllers of the robot 100 to generate joint torques τ J . For example, the multi-agent controller 200 can receive manipulation input 230 regarding the operation of the arm 150 and / or the end effector 160. The operation of the arm 150 and / or the end effector 160 performs a task that requires some means of manipulation (e.g., lifting the box 20). Here, manipulation generally refers to modifying the spatial relationship of an object. Some examples of manipulation include grabbing, pushing, sliding, tilting, rolling, throwing, or other ways of moving an object. To perform the manipulation, the arm 150 (e.g., at the end effector 160) can apply an end effector force F on the object according to the kinematics of the arm 150. EE ( Figure 2B and 2C ). For example, to perform a task requiring manipulation (i.e., a task having a manipulation target), the end effector 160 of the arm 150 exhibits an end effector acceleration a EE ( Figure 2B and 2C ), in order to convert the end effector force F EE In some examples, the arm controller 158 is configured to control the arm 150, wherein the end effector 160 is separate from the multi-agent controller 200. In these examples, the arm controller 158 generates an end effector force F generated by the arm controller 158 to perform the manipulation. EE and / or end effector acceleration a EE is transmitted to the multi-agent controller 200 as manipulation input 230. The multi-agent controller 200 can then use these manipulation inputs 230 to generate joint torques τ for a given task. J In some implementations, the arm controller 158 is a closed loop controller (eg, a feed-forward closed loop controller).

[0051] refer to Figure 2B, the body servo 210 is configured to receive a steering command 212 as input and control the state of the robot 100 based on the steering command 212. The steering command 212 can direct the robot 100 to move in a specific manner or direction. For example, the steering command 212 specifies the direction and / or speed at which the robot 100 is traveling. In some examples, the steering command 212 is task-based, where the steering command 212 instructs the robot 100 to move in order to perform a given task within the environment 10. The steering command 212 can be received as input from an operator of the robot 100, such as a user who remotely controls the robot 100 (e.g., with a joystick, button, or remote device), or from an autonomous or semi-autonomous system of the robot 100 (e.g., programmatically). Although the body servo 210 receives the steering command 212, the body servo 210 is generally unaware of the source of the steering command 212.

[0052] The body servo 210 is configured to control the dynamic state (referred to as the control state 214) of the robot 100. In some examples, the control state 214 is the sagittal plane P of the robot 100. S The dynamics of Figure 1B and 2B , sagittal plane P S In some embodiments, the control state 214 of the robot 100 controlled by the main servo 210 includes the wheel position x of the robot 100. w (i.e. the wheel position x relative to the fixed world frame w ), relative to the wheel COMx c / w 、Natural pitchθ np and the derivatives corresponding to these states (e.g. wheel speed, wheel acceleration, COM speed, COM acceleration, natural pitch angular velocity, natural pitch angular acceleration, etc.). Here, the natural pitch θ np refers to the pitch approximation of a robot structure (i.e., robot 100) having multiple inertial bodies. For example, instead of assuming that the pitch of robot 100 is based only on the central body of robot 100 (e.g., torso 110 of robot 100), the natural pitch θ np Other additional inertial bodies of the robot 100 (e.g., legs, arms, tail, or other appendages) are taken into account. To be a representative pitch approximation of the entire robot 100, the natural pitch θ np The sensor system 170 is used to determine the joint angles of the joints J of the robot 100 and the orientation of the components of the robot 100 (e.g., the body 110, the legs 120, the arms 150, etc.). The state of the robot 100 is captured by the joint angles and the orientation data derived from other sensor data 174 (e.g., kinematic data or IMU data), and the control system 140 of the robot 100 estimates the natural pitch θ that the body servo 210 of the robot 100 is configured to control.np .

[0053] In some embodiments, although the height H of the COM of the robot 100 COM It is the sagittal plane P S However, the main servo 210 is not at the height H of the COM of the robot 100. COM In contrast, a height controller separate from the main body servo 210 can determine the height H of the robot 100. COM In some examples, the height controller is a proportional integral derivative (PID) controller with closed-loop control feedback. The height controller as a PID controller can be a feedforward PID controller. Feedforward controllers are typically configured with predictive feedback to produce preemptive control rather than just reactive or responsive control of a typical PID control loop. COM When determined by a separate controller (eg, a height controller), the separate controller sets the height H of the robot 100 to COM Here, even though the main body servo 210 may not control the height H of the robot 100, COM The main servo 210 can also be based on the height H of the robot 100 COM Generate task space control actions 216, such as wheel torque τ W or axle force F A In other words, the height H of the robot 100 COM is a measured state of the subject servo 210 (eg, similar to the control state 214 ).

[0054] Using the dynamics of the robot 100, the body servo 210 is configured to generate a task space control action 216. Here, in order to perform a task with a balance goal and a manipulation goal for a mobile robot 100 (e.g., having a drive wheel 130), the control action 216 is a wheel torque τ around the drive wheel 130. W and the axial force F at the corresponding driving wheel 130 A Since the control state 214 of the robot 100 is a result of the steering command 212 , the body servo 210 generates a wheel torque τ based on the steering command 212 or the influence of the steering command 212 W and the axle force F A The main servo 210 is configured to drive the wheel torque τ of the drive wheel 130 W and the axle force F A (ie, control action 216 ) is transmitted to solver 220 .

[0055] In some examples, the body servo 210 generates a wheel torque τ by using a physical linear system W and the axle force F AThe control action is 216. The linear system can generally be represented by the state space equation as follows:

[0056]

[0057] Wherein, x is a vector representing the control state 214 of the robot 100, is a vector representing the derivative of the control state 214, and u is a vector representing the control action 216. As a relationship between the current state of the robot 100 and the future state of the robot 100, the linear system can also consider the influence of the arm 150 and / or the end effector 160. Since the arm controller 158 is separated from the main body servo 210, the main body servo 210 does not need to determine the end effector force F EE , but receives the end effector force F EE As the known value of the linear system. When the linear system represents the XZ plane (i.e. the sagittal plane P S ) in the state space, the end effector force F EE It can be expressed as the force component F in the X direction EE ,F EE,x and the force component F in the Z direction EE ,F EE,z Using this expression in state space, the main servo 210 determines the control action 216. Using the wheel torque τ corresponding to the drive wheel 130 W and the axle force F A The main servo 210 can determine the wheel torque τ of each driving wheel 130 of the robot 100 separately or collectively. W and the axle force F A In some examples, depending on the task, the wheel torque τ between the drive wheels 130 W and the axle force F A Can be different.

[0058] To generate control actions 216, the subject servo 210 may be a controller (i.e., a fallback level controller) using model predictive control (MPC). MPC is typically a finite-horizon optimization model that iteratively determines the current state of the system and a predicted state path. In addition, MPC can control multiple variables and use the history of previous system control to improve future states. Here, MPC can allow the subject servo 210 to accurately predict and generate control actions 216 based on the current measured control state 214.

[0059] refer to Figure 2C , the solver 220 is configured to receive the control action 216 from the main servo 210 and generate a joint torque τ for each joint J of the robot 100 J Here, the joint torque τ JGenerate angular momentum effects on the robot 100 to control the robot 100 during the execution of the task. In some examples, the multi-agent controller 220 uses the joint torque τ J To generate a manipulation force, and apply the manipulation force at the end effector 160 of the robot 100. Here, the manipulation force can use the joint torque τ generated for the plurality of joints J J To supplement or enhance the control of robot 100

[0060] The solver 220 can be configured to generate the joint torques τ for any number n of joints J J For example, although Figures 1A-2C Depicts a system with five joints J,J A1 ,J A2 ,J A3 ,J B ,J H , but depending on the design of the robot 100, the robot 100 may have more or fewer joints J. In general, the solver 220 seeks to optimize the joint torques τ based on the inputs received by the solver 220 for a given task. J Due to this optimization, solver 220 can determine the joint torque τ of joint J J can range from zero (i.e., no torque) to primarily contributing to the balance and manipulation goals. In other words, in the extreme case, a single joint J can counteract the forces experienced by the robot 100 during manipulation. However, for multiple joints J and inputs, such as the motion constraints 240, it is not possible for the solver 220 to cause a single joint J to counteract the forces experienced by the robot 100 during a task. In fact, when the solver 220 optimizes to achieve a cost function (e.g., minimize), it is more likely that a single joint J is not the collective joint torque τ J The main contributor to Figure 2C In the example shown, the solver 220 is for five joints J, J B ,J H ,J A1 ,J A2 ,J A3 Each of the joint torques τ J ,τ JB ,τ JH ,τ JA1 ,τ JA2 ,τ JA3 .

[0061] The solver 220 is configured to receive the control action 216 from the main servo 210, the impact of the end effector (e.g., the end effector force F EE) and the motion constraints 240 of the robot 100 as input. The motion constraints 240 of the robot 100 may refer to physical limitations of the robot 100 or spatial limitations of the robot 100 (e.g., limitations within the environment 10). Some examples of physical limitations of the robot 100 include range of motion limitations 242 and torque limitations 244, while examples of spatial limitations of the robot 100 include collision limitations 246. These motion constraints 240 may be dynamic, static, or some combination of the two. Here, dynamic motion constraints 240 are constraints that may change over time or as the robot 100 moves within the environment 10. Static motion constraints 240 refer to constant motion constraints 240 that are known about the robot 100 and / or about the environment 10.

[0062] The range of motion limit 242 refers to a measurement of the motion of a joint J. The range of motion of a joint J may be limited by the capabilities of the joint itself, or limited to prevent overlap of the range of motion between joints J. To illustrate the limitation of the range of motion of the joint itself, the joint J may have a structure that defines the range of motion. For example, the mechanical connection for a joint J such as a rotary joint, an orthogonal joint, a swivel joint, a linear joint, a torsion joint, etc. limits the range of motion of the joint J (e.g., a static range of motion limit 242). Additionally or alternatively, there may be a situation where, although the joint J is capable of a greater range of motion (e.g., a full range of motion), the operator of the robot 100 or the system of the robot 100 decides that a particular task or mode should further limit the range of motion of the joint J (e.g., as a dynamic range of motion limit 242). For example, the robot 100 may have a travel mode in which the robot 100 performs a limited type of task in which at least one joint J has a reduced range of motion when compared to the full range of motion of the joint J (e.g., in other modes). In some examples, the range of motion limit 242 refers to a portion of the full range of motion of the joint J that is limited during a particular type of task. For example, when the end effector 160 lifts the box 20, the second arm joint J A2 Here, fully extend the second arm joint J A2 The torque τ at the end effector 150 may be adversely affected, causing the solver 220 (or other system of the robot 100 ) to designate that portion of the range of motion as the range of motion limit 242 .

[0063] As an example of overlapping ranges of motion, see Figure 2C , there may be an arm 150 that can move around the first arm joint J A1 (i.e. shoulder joint J) moves and interferes (e.g. collides) around the back joint J B Because of these types of potential interference, it is possible to B or first arm joint JA1 Or two joints J specify a range of motion limit 242. In other words, the range of motion limit 242 can prevent collision between the bodies (eg, as a static range of motion limit 242).

[0064] Torque limits 244 refer to constraints associated with the amount of torque τ that may be generated at a particular joint J. Torque limits 244 are typically physical limitations, as an actuator A associated with a particular joint J may only be able to generate a maximum amount of torque τ about the joint J. In some examples, actuators A associated with a particular joint J are rated for maximum torque based on properties such as size, geometry, material composition, fluid dynamics, etc. Therefore, these ratings translate into torque limits 244 for a given joint J associated with one or more actuators A.

[0065] The collision limits 246 refer to limits imposed on the robot 100 to avoid collisions between a portion of the robot 100 and the environment 10. Here, some of the collision limits 246 may be static, while other collision limits 246 are dynamic. For example, when the robot 100 is in an environment 10 with permanent features (e.g., walls, floors, shelves, cabinets, fixed machinery, support structures, etc.) that the robot 100 must avoid, some static collision limits 246 exist. Some other collision limits 246 are dynamic because unknown objects or collision risks of the robot 100 may be introduced to the robot 100 during operation.

[0066] In some examples, the solver 220 is pre-programmed with motion constraints 240. For example, the algorithm of the solver 220 takes into account the motion constraints 240. In other examples, the solver 220 is programmed with some motion constraints 240, such as range of motion limits 242 and / or torque limits 244, while other motion constraints 240 (e.g., dynamic motion constraints 240, such as collision limits 246) are used in generating joint torques τ. J The robot 100 may generate the collision constraints 246 (e.g., collision limits 246) before being received by the solver 220. For example, the system of the robot 100 may generate dynamic motion constraints 240 (e.g., collision limits 246) as the robot 100 moves around the environment 10. This may allow the sensor system 170 to detect potential collisions during operation of the robot 100. For example, when the task is to move a box 20, the robot 100 may not be aware of the pallet 30 protruding on the ground 12 in front of the box 20 until the robot 100 is within the sensing range of the pallet 30. Here, the robot 100 may generate the collision limits 246 based on the sensor data 174 and the kinematics of the robot 100, and transmit the collision limits 246 to the solver 220.

[0067] The solver 220 is configured to solve the problem by calculating the wheel torque τ based on the steering input 230 and the wheel torque τ. W and the axle force F ASatisfy the motion constraints 240 for multiple joints J 1–n Each of the joint torques τ J In some examples, such as Figure 2C As shown, in order to generate joint torque τ J , the solver 220 generates the equation of motion, projects the equation of motion onto the task space 14, and determines each joint torque τ of the joint J according to the joint torque algorithm 222 J In some examples, the solver 220 is an inverse dynamics solver that generates equations of motion for the robot 100. In some implementations, the solver 220 generates equations of motion represented as follows:

[0068]

[0069] Among them, q, is the vector representing the joint angle, joint angular velocity and joint angular acceleration, M is the mass matrix of the system, C is the vector representing the Coriolis force and centrifugal force, C gravity is the vector representing gravity, D is the torque matrix of the system, τ is the vector representing the joint torque, and the term represents the external effect on the driving wheel 130, the term represents the external effect of the end effector 160 of the arm 150. In some configurations, the q term additionally takes into account the pitch θ of the robot 100 (e.g., the natural pitch θ P ). Here, equation (2) represents a more general equation of motion that includes motion around the drive wheel 130 and motion around the end effector 150. With respect to equation (2), the external effects of the drive wheel 130 and the end effector 160 are known because the solver 220 receives the control action 214 corresponding to the external effect of the drive wheel 130 from the body servo 210 and receives the manipulation input 230 corresponding to the external effect of the end effector 160 from the arm controller 158. Therefore, the solver 220 can separate the variables representing all joint torques τ according to all remaining known variables. J The term Dτ.

[0070] To determine all joint torques τ J , the solver 220 is configured to take into account the limitations of the robot 100 during the task represented by the motion constraints 240. In some examples, the solver 220 generates the joint torque τ using the joint torque algorithm 222 J. In some embodiments, the joint torque algorithm 222 is an optimization cost function. The solver 220 uses the optimization cost function to achieve the balance objective of the task while also achieving the manipulation objective of the task. In some examples, the solver 220 minimizes the optimization cost function to minimize the balance objective and minimize the manipulation objective. In some configurations, the optimization cost function is a quadratic function, where the solver 220 uses quadratic programming to determine the joint torque τ based on the motion constraints 240 as linear constraints J In other words, solver 220 may be a quadratic programming solver that determines the joint torque τ J The optimal solution of , to control the robot 100 when the robot 100 performs the task. In some configurations, the joint torque algorithm 222 is represented by the following quadratic optimization function:

[0071] min τ ‖A 1 τ-b 1 ‖ 2 w 1 +‖A 2 τ-b 2 ‖ 2 w 2 +α‖τ-τ d ‖w (3)

[0072] Among them, the term ‖A 1 τ-b 1 ‖ 2 represents the balance objective, term ‖A 2 τ-b 2 ‖ 2 represents the manipulation target, and the term α‖τ-τ d ‖ represents zero servo. In other words, equation (3) expresses the target as a function of the torque τ.

[0073] When the solver 220 solves equation (2) for the term Dτ, the solver 220 projects the solution into the task space 14 of the robot 100. The task space 14 refers to a specific portion of the environment 10 of the robot 100. Here, for a mobile robot 100 that uses rolling motion and includes an arm 150 with an end effector 160, the task space 14 refers to two spaces 14, 14a-b. A first space 14, 14a around the drive wheels 130 of the robot 100 and a second space 14, 14b around the end effector 160 of the arm 150. With the task space 14a around the drive wheels 130, the task space 14a is oriented so that during rolling ground contact, the center (i.e., axis) of the drive wheels 130 does not move in the z direction relative to the ground 12, while the center of the drive wheels 130 moves in the horizontal direction (i.e., x direction) according to the rolling contact. By projecting the term Dτ into the task space 14, the solver 220 generates a term A for the first task 14a space associated with the balance objective. 1 τ-b 1 , and generates term A for the second task 14b space associated with the manipulation target 2 τ-b 2 In some examples, the joint torque algorithm 222 includes a first weight w of the balancing objective 1 and the second weight w of the manipulation target 2 Here, solver 220 may apply weights w 1,2 In other words, the solver 220 can recognize when a task requires more balancing than steering (or vice versa), and weigh the terms corresponding to these objectives accordingly.

[0074] In some examples, the task space 14 includes a subspace referred to as a null space. In the null space, there may be redundancy in solutions for the objectives of the joint torque algorithm 222 (i.e., the balance objective and the manipulation objective). The null space is configured to limit the output of the variables of the joint torque algorithm 222, which can be solved by restricting the robot 100 to the null space. In other words, the solver 220 may encounter a problem where the objective loses its ranking, resulting in an uncertain objective. For example, the solver 220 determines that the objective is infinite. When the solver 220 determines that the balance objective or the manipulation objective is uncertain, the joint torque algorithm 222 includes zero servo as a default torque τ defined. d Here, the default torque τ d The joint torque τ corresponding to multiple joints J J , without compromising the goal of the solver 220 to maintain some desired joint configuration or posture of the robot 100. In some embodiments, the default torque τ d is a vector representing each joint J. The default torque τ dIt can therefore be configured to be applied to any combination of one or more joints J according to the goals of the robot 100. In some examples, the default torque τ d Generated by the secondary controller. The secondary controller can be configured to operate in the null space of the primary controller, such as the multi-agent controller 200. In some examples, the secondary controller is a proportional derivative (PD) servo loop to control the robot 100 in the null space.

[0075] Figure 3 The method 300 is to use the multi-agent controller 200. At operation 302, the method 300 receives a steering command 212 to perform a given task within the environment 10 around the robot 100. Here, the robot 100 includes a first end 112, a second end 114, a plurality of joints J, J 1–n The inverted pendulum body 110, and the first joint J among the plurality of joints J 1 The robot 100 further includes at least one leg 120 having a first end 122 and a second end 124, wherein the first end 122 is connected to the inverted pendulum body 110 at a plurality of joints J. 1–n The second joint J 2 The method 300 generates a wheel torque τ of the driving wheel 130 of the robot 100 based on the steering command 212 at operation 304. W and the wheel axle force F at the driving wheel 130 of the robot 100 A Here, the wheel torque τ is generated W and the axle force F A At operation 306, the method 300 receives the motion constraints 240 indicating motion limits of the robot 100. At operation 308, the method 300 receives the manipulation input 230 of the arm 150 of the robot 100. The manipulation input 230 is configured to manipulate the arm 150 of the robot 100 to perform the given task. At operation 310, for a plurality of joints J 1–n For each joint J in the robot 100, the method 300 generates a corresponding joint torque τ configured to control the robot 100 to perform a given task. J In order to generate the corresponding joint torque τ J , based on the control input 230, wheel torque τ W and the axle force F A , the joint torque satisfies the motion constraint 240. In operation 312, the method 300 controls the robot 100 to use the plurality of joints J 1–n The generated joint torque τ J to perform a given task.

[0076] Optionally, method 300 may include the following aspects. In some embodiments, for multiple joints J 1–n Each of the joints generates a corresponding torque τ J The invention includes using a joint torque algorithm 222 to minimize a balance target, balance the robot 100, and minimize a manipulation target to move the arm 150 of the robot 100 based on a given task, wherein the joint torque algorithm 222 includes a quadratic function based on the received motion constraint 240. In some examples, when the balance target or the manipulation target is uncertain, the joint torque algorithm 222 is used to minimize the balance target and minimize the manipulation target at the same time, and the joint torque algorithm 222 applies a default torque τ d To control the robot 100 to perform a given task without compromising the balance objective and the manipulation objective. In some configurations, using the joint torque algorithm 222 to minimize the balance objective and minimize the manipulation objective includes setting the first weight w 1 Applied to the balancing objective and the second weight w 2 Applied to manipulate the target, where the first weight w 1 and the second weight w 2 Indicates the objective importance of a given task.

[0077] Figure 4 1 is a schematic diagram of an example computing device 400 and method (e.g., method 300) that can be used to implement the systems described in this document (e.g., control system 140, sensor system 170, arm controller 158, multi-agent controller 200, zero servo, etc.). Computing device 400 is intended to represent various forms of digital computers, such as laptop computers, desktop computers, workstations, personal digital assistants, servers, blade servers, mainframes, and other suitable computers. The components shown here, their connections and relationships, and their functions are exemplary only and are not meant to limit the implementation of the inventions described and / or claimed in this document.

[0078] The computing device 400 includes a processor 410, a memory 420, a storage device 430, a high-speed interface / controller 440 connected to the memory 420 and a high-speed expansion port 450, and a low-speed interface / controller 460 connected to a low-speed bus 470 and the storage device 430. Each component 410, 420, 430, 440, 450 and 460 is interconnected using various buses and can be installed on a common motherboard or in other appropriate ways. The processor 410 can process instructions for execution within the computing device 400, including instructions stored in the memory 420 or on the storage device 430, to display graphical information of a graphical user interface (GUI) on an external input / output device, such as a display 480 coupled to the high-speed interface 440. In other embodiments, multiple processors and / or multiple buses and multiple memories and multiple types of memories can be used appropriately. In addition, multiple computing devices 400 can be connected, each device providing a portion of the necessary operations (for example, as a server group, a group of blade servers, or a multi-processor system).

[0079] Memory 420 stores information non-temporarily within computing device 400. Memory 420 may be a computer-readable medium, a volatile storage unit, or a non-volatile storage unit. Non-temporary memory 420 may be a physical device used to temporarily or permanently store programs (e.g., instruction sequences) or data (e.g., program state information) for use by computing device 400. Examples of non-volatile memory include, but are not limited to, flash memory and read-only memory (ROM) / programmable read-only memory (PROM) / erasable programmable read-only memory (EPROM) / electrically erasable programmable read-only memory (EEPROM) (e.g., commonly used for firmware, such as bootloaders). Examples of volatile memory include, but are not limited to, random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), phase change memory (PCM), and disk or tape.

[0080] The storage device 430 can provide mass storage for the computing device 400. In some embodiments, the storage device 430 is a computer-readable medium. In various embodiments, the storage device 430 can be a floppy disk device, a hard disk device, an optical disk device or a tape device, a flash memory or other similar solid-state storage device, or a device array, including devices in a storage area network or other configuration. In other embodiments, a computer program product is tangibly contained in an information carrier. The computer program product includes instructions that, when executed, perform one or more methods, such as the above method. The information carrier is a computer or machine-readable medium, such as a memory 420, a storage device 430, or a memory on a processor 410.

[0081] The high-speed controller 440 manages bandwidth-intensive operations of the computing device 400, while the low-speed controller 460 manages less bandwidth-intensive operations. This division of responsibilities is exemplary only. In some embodiments, the high-speed controller 440 is coupled to the memory 420, the display 480 (e.g., through a graphics processor or accelerator), and the high-speed expansion port 450 that can accept various expansion cards (not shown). In some embodiments, the low-speed controller 460 is coupled to the storage device 430 and the low-speed expansion port 490. The low-speed expansion port 490, which can include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), can be coupled to one or more input / output devices, such as a keyboard, a pointing device, a scanner, or a network device, such as a switch or a router, for example, through a network adapter.

[0082] As shown, computing device 400 can be implemented in a variety of different forms. For example, it can be implemented as a standard server 400a, or multiple implementations in a group of such servers 400a as a laptop 400b, or implemented as part of a rack server system 400c.

[0083] Various implementations of the systems and techniques described herein can be realized in digital electronic and / or optical circuitry, integrated circuits, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and / or combinations thereof. These various implementations may include implementations in one or more computer programs executable and / or interpretable on a programmable system including at least one programmable processor, which may be special purpose or general purpose, coupled to receive data and instructions from and send data and instructions to a storage system, at least one input device, and at least one output device.

[0084] These computer programs (also referred to as programs, software, software applications, or code) include machine instructions for a programmable processor and may be implemented in high-level procedural and / or object-oriented programming languages ​​and / or assembly / machine languages. As used herein, the terms "machine-readable medium" and "computer-readable medium" refer to any computer program product, non-transitory computer-readable medium, apparatus, and / or device (e.g., disk, optical disk, memory, programmable logic device (PLD)) for providing machine instructions and / or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal for providing machine instructions and / or data to a programmable processor.

[0085] The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating outputs. These processes and logic flows can also be performed by dedicated logic circuits, such as FPGAs (field programmable gate arrays) or ASICs (application-specific integrated circuits). For example, processors suitable for executing computer programs include general-purpose and special-purpose microprocessors, and any one or more processors of any type of digital computer. Typically, the processor will receive instructions and data from a read-only memory or a random access memory or both. The basic elements of a computer are a processor for executing instructions and one or more storage devices for storing instructions and data. Typically, a computer will also include one or more large-capacity storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, or operably coupled to receive data from or transmit data to, or both. However, a computer does not need to have such a device. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and storage devices, including, for example, semiconductor storage devices, such as EPROMs, EEPROMs, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.

[0086] To provide interaction with a user, one or more aspects of the present disclosure may be implemented on a computer having a display device, such as a CRT (cathode ray tube), LCD (liquid crystal display) monitor, or touch screen, for displaying information to the user, and optionally having a keyboard and a pointing device, such as a mouse or trackball, through which the user can provide input to the computer. Other types of devices may also be used to provide interaction with the user; for example, the feedback provided to the user may be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user may be received in any form, including sound, voice, or tactile input. In addition, the computer may interact with the user by sending documents to and receiving documents from a device used by the user; for example, by sending a web page to a web browser on a user's client device in response to a request received from the web browser.

[0087] Many embodiments have been described. However, it should be understood that various modifications can be made without departing from the spirit and scope of the present disclosure. Therefore, other embodiments are within the scope of the following claims.

Claims

1. A method (300), comprising: A steering command (212) is received at data processing hardware (142) of a robot (100) to perform a given task within an environment (10) surrounding the robot (100), the robot (100) comprising: A body (110) having a first end (112), a second end (114) and a plurality of joints (J); an arm (150) coupled to the body (110) at a first joint (J1) of a plurality of joints (J), the arm (150) comprising an end effector (160) configured to grasp an object; at least one leg (120) having a first end (122) and a second end (124), the first end (122) being coupled to the body (110) at a second joint (J2) of the plurality of joints (J); and a drive wheel (130) rotatably coupled to the second end (124) of at least one leg (120); Based on the received steering command (212), the data processing hardware (142) generates a wheel torque (τ) of the driving wheel (130) of the robot (100). W ) and the wheel axle force (F) at the driving wheel (130) of the robot (100) A ), generating wheel torque (τ W ) and axle force (F A ) to perform a given task; receiving, at data processing hardware (142), motion constraints (240) for a robot (100); receiving, at data processing hardware (142), one or more manipulation inputs (230) for an end effector (160) of an arm (150) of a robot (100), the one or more manipulation inputs (230) configured to manipulate the arm (150) of the robot (100) to perform a given task; For each joint in the plurality of joints (J), a corresponding joint torque (τ) configured to control the robot (100) to perform a given task is generated by the data processing hardware (142). J ), based on one or more steering inputs (230), wheel torque (τ W ) and axle force (F A ), joint torque (τ J ) satisfies the motion constraints (240); The data processing hardware generates the joint torques (τ) for the multiple joints (J) based on J ) produces steering force; and The robot (100) is controlled by data processing hardware (142) using joint torques (τ) generated for a plurality of joints (J) J ) to perform a given task, wherein the given task includes applying the manipulation force at an end effector (160) of the robot (100); Wherein, a corresponding joint torque (τ) is generated for each of the plurality of joints (J). J ) includes using a joint torque algorithm (222) to achieve a balance goal of the robot (100) and a manipulation goal of an arm (150) of the mobile robot (100) based on a given task, the joint torque algorithm (222) including a quadratic function based on a received motion constraint (240); Using the joint torque algorithm (222) to achieve balance goals and achieve manipulation goals includes: applying a first weight (w1) to the balancing objective; and A second weight (w2) is applied to the manipulation target, and the first weight (w1) and the second weight (w2) indicate the objective importance of a given task.

2. The method (300) according to claim 1, wherein: When the balance target or the manipulation target is uncertain when the joint torque algorithm (222) is used to achieve the balance target and the manipulation target, the joint torque algorithm (222) will default to the torque (τ d ) is applied to corresponding joints (J) among a plurality of joints (J) to control the robot (100) to perform a given task without compromising a balancing objective and a manipulation objective.

3. The method (300) according to any one of claims 1-2, wherein: The motion constraints (240) include at least one of the following: a range of motion limitation (242) of each of the plurality of joints (J); a torque limit (244) for each of the plurality of joints (J); or A collision limit (246) is configured to avoid collision of a portion of the robot (100).

4. The method (300) according to any one of claims 1-2, wherein: The first end (122) of the at least one leg (120) is coupled to the second end (114) of the body (110).

5. The method (300) according to any one of claims 1-2, wherein: The main body (110) includes an inverted pendulum main body (110a), and the robot (100) further includes a balancing main body (110b) disposed on the inverted pendulum main body (110a) and configured to move relative to the inverted pendulum main body (110a).

6. The method (300) of claim 5, wherein: The balancing body (110b) is arranged on the first end (112) of the inverted pendulum body (110a).

7. The method (300) of claim 5, wherein: The balancing body (110b) is arranged on the second end (114) of the inverted pendulum body (110a).

8. The method (300) according to any one of claims 6-7, wherein: The plurality of joints (J) of the main body (110) include: The first joint (J1) connects the arm (150) to the inverted pendulum body (110a); The second joint (J2) connects the first end (122) of the at least one leg (120) to the inverted pendulum body (110a); a third joint (J3) connecting the inverted pendulum body (110a) to the balancing body (110b); and At least one arm joint (J A ) which connects the two members (156) of the arm (150) together.

9. The method (300) of claim 8, wherein: The arm (150) comprises: a first member (156a) having a first end and a second end, the first end of the first member (156a) being coupled to the first end portion (112) of the inverted pendulum body (110a) at the first joint (J1); and A second member (156b) having a first end and a second end, wherein the first end of the second member (156b) is disposed at the at least one arm joint (J A ) is connected to the second end of the first member (156a) at the second arm joint.

10. The method (300) according to any one of claims 1-2, wherein: The arm (150) comprises: a first member (156a) having a first end and a second end, the first end of the first member (156a) being coupled to the first end portion (112) of the body (110) at the first joint (J1); and A second member (156b) having a first end and a second end, the first end of the second member (156b) being coupled to the second end of the first member (156a) at a second joint (J2) of the plurality of joints (J).

11. The method (300) of claim 9, wherein: The at least one leg (120) comprises: a right leg (120a) having a first end and a second end, the first end of the right leg (120a) being prismatically coupled to the second end portion (114) of the inverted pendulum body (110a), the right leg (120a) having a right driving wheel (130a) rotatably coupled to the second end of the right leg (120a); and A left leg (120b) having a first end and a second end, the first end of the left leg (120b) being prismatically connected to the second end portion (114) of the inverted pendulum body (110a), and the left leg (120b) having a left driving wheel (130b) rotatably connected to the second end of the left leg (120b).

12. The method (300) according to any one of claims 1-2, wherein: The manipulation input (230) corresponds to a force or acceleration applied to the end effector (160).

13. A robot (100), comprising: A body (110) having a first end (112), a second end (114) and a plurality of joints (J); an arm (150) coupled to the body (110) at a first joint (J1) of a plurality of joints (J), the arm (150) comprising an end effector (160) configured to grasp an object; at least one leg (120) having a first end (122) and a second end (124), the first end (122) being coupled to the body (110) at a second joint (J2) of the plurality of joints (J); data processing hardware (142); and Memory hardware (144) in communication with the data processing hardware (142), the memory hardware (144) storing instructions that, when executed on the data processing hardware (142), cause the data processing hardware (142) to perform operations including: receiving a steering command (212) to perform a given task within an environment (10) surrounding the robot (100); Based on the received steering command (212), a wheel torque (τ) of the driving wheel (130) of the robot (100) is generated. W ) and the wheel axle force (F) at the driving wheel (130) of the robot (100) A ), generating wheel torque (τ W ) and axle force (F A ) to perform a given task; receiving motion constraints (240) for the robot (100); receiving one or more manipulation inputs (230) for an end effector (160) of an arm (150) of a robot (100), the one or more manipulation inputs (230) being configured to manipulate the arm (150) of the robot (100) to perform a given task; For each joint in a plurality of joints (J), a corresponding joint torque (τ) configured to control the robot (100) to perform a given task is generated. J ), based on one or more steering inputs (230), wheel torque (τ W ) and axle force (F A ), joint torque (τ J ) satisfies the motion constraints (240); The control robot (100) uses joint torques (τ) generated for a plurality of joints (J) J ) to perform a given task including: Based on the joint torques (τ) generated for multiple joints (J) J ) produces steering force; and applying the manipulation force at an end effector (160) of the robot (100); Wherein, a corresponding joint torque (τ) is generated for each of the plurality of joints (J). J ) includes using a joint torque algorithm (222) to achieve a balance goal of the robot (100) and a manipulation goal of an arm (150) of the mobile robot (100) based on a given task, the joint torque algorithm (222) including a quadratic function based on a received motion constraint (240); Using the joint torque algorithm (222) to achieve balance goals and achieve manipulation goals includes: applying a first weight (w1) to the balancing objective; and A second weight (w2) is applied to the manipulation target, and the first weight (w1) and the second weight (w2) indicate the objective importance of a given task.

14. The robot (100) according to claim 13, wherein: When the balance target or the manipulation target is uncertain when the joint torque algorithm (222) is used to achieve the balance target and the manipulation target, the joint torque algorithm (222) will default to the torque (τ d ) is applied to corresponding joints (J) among a plurality of joints (J) to control the robot (100) to perform a given task without compromising a balancing objective and a manipulation objective.

15. The robot (100) according to any one of claims 13-14, wherein: The motion constraints (240) include at least one of the following: a range of motion limitation (242) of each of the plurality of joints (J); a torque limit (244) for each of the plurality of joints (J); or A collision limit (246) is configured to avoid collision of a portion of the robot (100).

16. The robot (100) according to any one of claims 13-14, wherein: The first end (122) of the at least one leg (120) is coupled to the second end (114) of the body (110).

17. The robot (100) according to any one of claims 13-14, wherein: The main body (110) includes an inverted pendulum main body (110a), and the robot (100) further includes a balancing main body (110b) disposed on the inverted pendulum main body (110a) and configured to move relative to the inverted pendulum main body (110a).

18. The robot (100) according to claim 17, wherein: The balancing body (110b) is arranged on the first end (112) of the inverted pendulum body (110a).

19. The robot (100) according to claim 17, wherein: The balancing body (110b) is arranged on the second end (114) of the inverted pendulum body (110a).

20. The robot (100) according to any one of claims 18-19, wherein: The plurality of joints (J) of the main body (110) include: The first joint (J1) connects the arm (150) to the inverted pendulum body (110a); The second joint (J2) connects the first end (122) of the at least one leg (120) to the inverted pendulum body (110a); a third joint (J3) connecting the inverted pendulum body (110a) to the balancing body (110b); and At least one arm joint (J A ) which connects the two members (156) of the arm (150) together.

21. The robot (100) according to claim 20, wherein: The arm (150) comprises: a first member (156a) having a first end and a second end, the first end of the first member (156a) being coupled to the first end portion (112) of the inverted pendulum body (110a) at the first joint (J1); and A second member (156b) having a first end and a second end, wherein the first end of the second member (156b) is disposed at the at least one arm joint (J A ) is connected to the second end of the first member (156a) at the second arm joint.

22. The robot (100) according to claim 16, wherein: The arm (150) comprises: a first member (156a) having a first end and a second end, the first end of the first member (156a) being coupled to the first end portion (112) of the body (110) at the first joint (J1); and A second member (156b) having a first end and a second end, the first end of the second member (156b) being coupled to the second end of the first member (156a) at a second joint (J2) of the plurality of joints (J).

23. The robot (100) according to claim 21, wherein: The at least one leg (120) comprises: a right leg (120a) having a first end and a second end, the first end of the right leg (120a) being prismatically coupled to the second end portion (114) of the inverted pendulum body (110a), the right leg (120a) having a right driving wheel (130a) rotatably coupled to the second end of the right leg (120a); and A left leg (120b) having a first end and a second end, the first end of the left leg (120b) being prismatically connected to the second end portion (114) of the inverted pendulum body (110a), and the left leg (120b) having a left driving wheel (130b) rotatably connected to the second end of the left leg (120b).

24. The robot (100) according to claim 23, wherein: The manipulation input (230) corresponds to a force or acceleration applied to the end effector (160).

Citation Information

Patent Citations

  • Multiple degree of freedom force sensor

    CN112975894A

  • Automatic balancer in multi-joint robot

    JP1986152389A

  • Communication robot

    JP2003271243A

  • Mobile extraction-assist robot

    US20080265821A1