Patent Description:
This disclosure relates to a robot according to claim <NUM>, having inter alia a load sensor. The load sensor comprises a first plate and a second plate, a plurality of single-axis load cells including first, second, and third single-axis load cells, wherein each of the first, second, and third single-axis load cells is disposed between the first plate and the second plate and is oriented along a first axis, and a plurality of constraint joints coupled to the first plate and the second plate, the plurality of constraint joints configured to inhibit translation of the first plate relative to the second plate in directions perpendicular to the first axis and configured to inhibit rotation of the first plate relative to the second plate about the first axis.

In one embodiment, the plurality of constraint joints includes at least one spherical constraint.

In one embodiment, the at least one spherical constraint is disposed at a centroid of the plurality of single-axis load cells.

In one embodiment, the plurality of single-axis load cells further includes a fourth single-axis load cell, wherein the fourth single-axis load cell is disposed between the first plate and the second plate and is oriented along the first axis.

In one embodiment, each of the plurality of single-axis load cells is disposed at a corner of the first plate.

In one embodiment, the plurality of single-axis load cells are configured to measure forces along the first axis.

In one embodiment, the load cell further comprises an output interface configured to provide signals output from the plurality of single-axis load cells to a processor, wherein the processor is configured to calculate moments about a second axis and a third axis, wherein the second axis and the third axis are each perpendicular to the fist axis, and wherein the second axis is perpendicular to the third axis.

In one embodiment, each of the plurality of single-axis load cells is coupled to the first plate and the second plate through spherical constraints.

In one embodiment, each of the plurality of single-axis load cells is coupled to the first plate and the second plate through unidirectional constraints.

In one embodiment, each of the plurality of single-axis load cells is configured to measure both compressive and tensile forces along the first axis.

In one embodiment, the plurality of single-axis load cells further includes a fifth single-axis load cell oriented along a second axis perpendicular to the first axis.

In one embodiment, the load cell further comprises a dual-axis load cell oriented along the second axis and a third axis, wherein the third axis is perpendicular to both the first axis and the second axis.

In one embodiment, each of the plurality of constraint joints is co-located with at least one of the plurality of single-axis load cells and/or the dual-axis load cell.

The robot of claim <NUM> can be used in implementing a method for determining one or more forces applied to a portion of a robot. The method comprises sensing, by a plurality of single-axis load cells including first, second, and third single-axis load cells oriented along a first axis and disposed between a first plate and a second plate, forces applied to the portion of the robot. The first and second plates are constrained by a plurality of constraint joints disposed between the first plate and the second plate, wherein the plurality of constraint joints are configured to inhibit relative translation between the first and second plates in directions perpendicular to the first axis and are configured to inhibit relative rotation between the first and second plates about the first axis. The method additionally comprises determining forces along the first axis based on the sensed output of the plurality of single-axis load cells, and determining moments about second and third axes based on the sensed outputs of the plurality of single-axis load cells, wherein the second and third axes are each perpendicular to the first axis, and wherein the second axis is perpendicular to the third axis. The method additionally comprises adjusting an operation of the robot based, at least in part, on the determined forces and moments.

In one implementation, the plurality of single-axis load cells further includes a fourth single-axis load cell. The fourth single-axis load cell is disposed between the first plate and the second plate and is oriented along the first axis. Determining forces along the first axis includes determining forces along the first axis based, at least in part, on the sensed output of the fourth single-axis load cell. Determining moments about the second and third axes includes determining moments about the second and third axes based, at least in part, on the sensed output of the fourth single-axis load cell.

In one implementation, the plurality of single-axis load cells further includes a fifth single-axis load cell oriented along the second axis. The method further comprises determining forces along the second axis based on the sensed output of the plurality of single-axis load cells.

In one implementation, the method further comprises determining forces along the second and third axes based on the sensed output of the plurality of single-axis load cells and/or the sensed output of a dual-axis load cell oriented along the second axis and the third axis.

In one implementation, the method further comprises determining moments about the first axis based on the sensed outputs of the plurality of single-axis load cells and/or the sensed output of the dual-axis load cell.

In one implementation, adjusting the operation of the robot includes adjusting an acceleration of the robot.

In one implementation, adjusting the acceleration of the robot includes limiting a maximum acceleration of the portion of the robot.

In one implementation, wherein adjusting the operation of the robot includes adjusting a trajectory of the robot.

In one embodiment, the at least one movable limb includes a manipulator arm.

In one embodiment, the manipulator arm includes an end-effector, and the load sensor is coupled to the end-effector.

In one embodiment, the robot further comprises a processor configured to receive signals output from the load sensor.

In one embodiment, the processor is configured to adjust an operation of the robot based, at least in part, on the received signals.

In one embodiment, the processor is configured to limit an acceleration of the at least one movable limb based, at least in part, on the received signals.

In one embodiment, the processor is configured to adjust a trajectory of the at least one movable limb based, at least in part, on the received signals.

Accordingly, the scope of the invention shall be determined with reference to the appended claims, with the following description and appended drawings being provided for a better understanding of the invention and to show how the same may advantageously be carried into effect.

Robots are typically configured to perform various tasks in an environment in which they are placed. Generally, these tasks include interacting with objects and/or the elements of the environment. To accomplish such tasks, some robots include one or more arms with end-effectors (e.g., a gripper) controlled to interact with objects in the environment. For instance, a gripper end-effector of a robot may be controlled to pick up objects (e.g., boxes) and arrange the picked up objects on a pallet for shipping, or alternatively, remove objects from a pallet for distribution as part of a logistics application. End-effectors may be coupled to one or more force sensors, configured to measure forces and/or torques applied to the robot when the end-effector interacts with a load (e.g., when the load is lifted by the robot). Force sensors may also be used in combination with other portions of a robot. For instance, a walking robot may include a force sensor in one or more of the robot's limbs (e.g., feet) in contact with an object (e.g., the ground) to sense forces between the limb(s) and the object. Such force sensors often measure forces/torques using six degrees of freedom (<NUM> DOF) - x-y-z axis forces and moments (torques) around each of those axes. In some applications, sensing all six degrees of freedom may not be necessary. For example, sensing three degrees of freedom may suffice in some applications, and the marginal benefit of sensing additional degrees of freedom beyond those that are strictly required for the particular application may not outweigh the increased cost of a conventional <NUM> DOF sensor compared to a conventional <NUM> DOF sensor. In applications in which sensing all six degrees of freedom may be desirable or even necessary, a conventional <NUM> DOF sensor may still be undesirably expensive. Rather, custom sensors tailored to specific applications may be cheaper, simpler, more robust, and more configurable than a conventional sensor.

The inventors have recognized and appreciated that a plurality of single-axis load cells may be used to sense multiple degrees of freedom. Using multiple single-axis load cells may be desirable in that such a system may, for instance, be lower cost, be more modular, use less space, and/or enable a customized sensing solution tailored to a specific set of system constraints and requirements than a conventional integrated <NUM> DOF sensor. Accordingly, some embodiments are directed to force sensors configured to measure force/torque with fewer than six degrees of freedom. For instance, some embodiments are directed to a three degree of freedom force sensor for use with a robotic system. Some embodiments are directed to force sensors that sense up to six degrees of freedom using a plurality of single-axis (and/or, in some embodiments, dual-axis) load cells. Multi-DOF sensing may be realized through the use of kinematically constrained load cells, as explained in greater detail below.

<FIG> depicts an example of a robot <NUM>, within which generally includes a body <NUM>, at least one leg <NUM> (e.g., shown as two legs <NUM>, 120a-b), drive wheels <NUM> coupled to each leg <NUM>, and an arm <NUM> with an end-effector <NUM>. Although shown with wheels, it should be appreciated that a robot with a stationary base (e.g., without wheels) may also be used. The robot <NUM> is within an environment <NUM> that includes a plurality of boxes <NUM>, 20a-n <NUM> stacked on a pallet <NUM>. Here, using the end-effector <NUM>, the robot <NUM> is lifting a box 20a from a pallet <NUM>. The end-effector <NUM> may be, for example, a gripper, and may include a force sensor configured to measure the force exerted on the robot by a load (e.g., box 20a) being lifted by the gripper.

<FIG> is an example of a robot <NUM> operating within the environment <NUM> that includes at least one box <NUM>. Here, the environment <NUM> includes a plurality of boxes <NUM>, 20a-n stacked on a pallet <NUM> lying on a ground surface <NUM>. The robot <NUM> may move (e.g., drive) across the ground surface <NUM> to detect and/or to manipulate boxes <NUM> within the environment <NUM>. For example, the pallet <NUM> may correspond to a delivery truck that the robot <NUM> loads or unloads. Here, the robot <NUM> may be a logistics robot associated with a shipping and/or receiving stage of logistics. As a logistics robot, the robot <NUM> may palletize or detect boxes <NUM> for logistics fulfillment or inventory management. For instance, the robot <NUM> detects a box <NUM>, processes the box <NUM> for incoming or outgoing inventory, and moves the box <NUM> about the environment <NUM>.

The robot <NUM> has a vertical gravitational axis Vg along a direction of gravity, and a center of mass (COM), which is a point where the robot <NUM> has a zero sum distribution of mass. The robot <NUM> further has a pose P based on the COM relative to the vertical gravitational axis Vg to define a particular attitude or stance assumed by the robot <NUM>. The attitude of the robot <NUM> can be defined by an orientation or an angular position of an object in space.

The robot <NUM> generally includes a body <NUM> and one or more legs <NUM>. The body <NUM> of the robot <NUM> may be a unitary structure or a more complex design depending on the tasks to be performed in the environment <NUM>. The body <NUM> may allow the robot <NUM> to balance, to sense about the environment <NUM>, to power the robot <NUM>, to assist with tasks within the environment <NUM>, or to support other components of the robot <NUM>. In some examples, the robot <NUM> includes a two-part body <NUM>. For example, the robot <NUM> includes an inverted pendulum body (IPB) <NUM>, 110a (i.e., referred to as a torso 110a of the robot <NUM>) and a counter-balance body (CBB) <NUM>, 110b (i.e., referred to as a tail 110b of the robot <NUM>) disposed on the IPB 110a.

The body <NUM> (e.g., the IPB 110a or the CBB 110b) has first end portion <NUM> and a second end portion <NUM>. For instance, the IPB 110a has a first end portion 112a and a second end portion 114a while the CBB 110b has a first end portion 112b and a second end portion 114b. In some implementations, the CBB 110b is disposed on the second end portion 114a of the IPB 110a and configured to move relative to the IPB 110a. In some examples, the CBB 110b includes a battery that serves to power the robot <NUM>. A back joint JB may rotatably couple the CBB 110b to the second end portion 114a of the IPB 110a to allow the CBB 110b to rotate relative to the IPB 110a. The back joint JB may be referred to as a pitch joint. In the example shown, the back j oint JB supports the CBB 110b to allow the CBB 110b to move/pitch around a lateral axis (y-axis) that extends perpendicular to the gravitational vertical axis Vg and a fore-aft axis (x-axis) of the robot <NUM>. The fore-aft axis (x-axis) may denote a present direction of travel by the robot <NUM>. Movement by the CBB 110b relative to the IPB 110a alters the pose P of the robot <NUM> by moving the COM of the robot <NUM> relative to the vertical gravitational axis Vg. A rotational actuator or back joint actuator A, AB (e.g., a tail actuator or counterbalance body actuator) may be positioned at or near the back joint JB for controlling movement by the CBB 110b (e.g., tail) about the lateral axis (y-axis). The rotational actuator AB may include an electric motor, electro-hydraulic servo, piezo-electric actuator, solenoid actuator, pneumatic actuator, or other actuator technology suitable for accurately effecting movement of the CBB 110b relative to the IPB 110a.

The rotational movement by the CBB 110b relative to the IPB 110a alters the pose P of the robot <NUM> for balancing and maintaining the robot <NUM> in an upright position. For instance, similar to rotation by a flywheel in a conventional inverted pendulum flywheel, rotation by the CBB 110b relative to the gravitational vertical axis Vg generates/imparts the moment at the back joint JB to alter the pose P of the robot <NUM>. By moving the CBB 110b relative to the IPB 110a to alter the pose P of the robot <NUM>, the COM of the robot <NUM> moves relative to the gravitational vertical axis Vg to balance and maintain the robot <NUM> in the upright position in scenarios when the robot <NUM> is moving and/or carrying a load. However, by contrast to the flywheel portion in the conventional inverted pendulum flywheel that has a mass centered at the moment point, the CBB 110b includes a corresponding mass that is offset from moment imparted at the back joint JB some configurations, a gyroscope disposed at the back joint JB could be used in lieu of the CBB 110b to spin and impart the moment (rotational force) for balancing and maintaining the robot <NUM> in the upright position.

The CBB 110b may rotate (e.g., pitch) about the back joint JB in both the clockwise and counter-clockwise directions (e.g., about the y-axis in the "pitch direction") to create an oscillating (e.g., wagging) movement. Movement by the CBB 110b relative to IPB 110a between positions causes the COM of the robot <NUM> to shift (e.g., lower toward the ground surface <NUM> or higher away from the ground surface <NUM>). The CBB 110b may oscillate between movements to create the wagging movement. The rotational velocity of the CBB 110b when moving relative to the IPB 110a may be constant or changing (accelerating or decelerating) depending upon how quickly the pose P of the robot <NUM> needs to be altered for dynamically balancing the robot <NUM>.

The legs <NUM> are locomotion-based structures (e.g., legs and/or wheels) that are configured to move the robot <NUM> about the environment <NUM>. The robot <NUM> may have any number of legs <NUM> (e.g., a quadruped with four legs, a biped with two legs, a hexapod with six legs, an arachnid-like robot with eight legs, no legs for a robot with a stationary base, etc.). Here, for simplicity, the robot <NUM> is generally shown and described with two legs <NUM>, 120a-b.

As a two-legged robot <NUM>, the robot includes a first leg <NUM>, 120a and a second leg <NUM>, 120b. In some examples, each leg <NUM> includes a first end <NUM> and a second end <NUM>. The second end <NUM> corresponds to an end of the leg <NUM> that contacts or is adjacent to a member of the robot <NUM> contacting a surface (e.g., a ground surface) such that the robot <NUM> may traverse the environment <NUM>. For example, the second end <NUM> corresponds to a foot of the robot <NUM> that moves according to a gait pattern. In some implementations, the robot <NUM> moves according to rolling motion such that the robot <NUM> includes a drive wheel <NUM>. The drive wheel <NUM> may be in addition to or instead of a foot-like member of the robot <NUM>. For example, the robot <NUM> is capable of moving according to ambulatory motion and/or rolling motion. Here, the robot <NUM> depicted in <FIG> illustrates the first end <NUM> coupled to the body <NUM> (e.g., at the IPB 110a) while the second end <NUM> is coupled to the drive wheel <NUM>. By coupling the drive wheel <NUM> to the second end <NUM> of the leg <NUM>, the drive wheel <NUM> may rotate about an axis of the coupling to move the robot <NUM> about the environment <NUM>.

Hip joints JH on each side of body <NUM> (e.g., a first hip joint JH, JHa and a second hip joint JH, JHb symmetrical about a sagittal plane PS of the robot <NUM>) may rotatably couple the first end <NUM> of a leg <NUM> to the second end portion <NUM> of the body110 to allow at least a portion of the leg <NUM> to move/pitch around the lateral axis (y-axis) relative to the body <NUM>. For instance, the first end <NUM> of the leg <NUM> (e.g., of the first leg 120a or the second leg 120b) couples to the second end portion 114a of the IPB 110a at the hip joint JH to allow at least a portion of the leg <NUM> to move/pitch around the lateral axis (y-axis) relative to the IPB 110a.

A leg actuator A, AL may be associated with each hip joint JH (e.g., a first leg actuator AL, ALa and a second leg actuator AL, ALb). The leg actuator AL associated with the hip joint JH may cause an upper portion <NUM> of the leg <NUM> (e.g., the first leg 120a or the second leg 120b) to move/pitch around the lateral axis (y-axis) relative to the body <NUM> (e.g., the IPB 110a). In some configurations, each leg <NUM> includes the corresponding upper portion <NUM> and a corresponding lower portion <NUM>. The upper portion <NUM> may extend from the hip joint JH at the first end <NUM> to a corresponding knee joint JK and the lower portion <NUM> may extend from the knee joint JK to the second end <NUM>. A knee actuator A, AK associated with the knee joint JK may cause the lower portion <NUM> of the leg <NUM> to move/pitch about the lateral axis (y-axis) relative to the upper portion <NUM> of the leg <NUM>.

Each leg <NUM> may include a corresponding ankle joint JA configured to rotatably couple the drive wheel <NUM> to the second end <NUM> of the leg <NUM>. For example, the first leg 120a includes a first ankle joint JA, JAa and the second leg 120b includes a second ankle joint JA, JAb. Here, the ankle joint JA may be associated with a wheel axle coupled for common rotation with the drive wheel <NUM> and extending substantially parallel to the lateral axis (y-axis). The drive wheel <NUM> may include a corresponding torque actuator (drive motor) A, AT configured to apply a corresponding axle torque for rotating the drive wheel <NUM> about the ankle joint JA to move the drive wheel <NUM> across the ground surface <NUM> along the fore-aft axis (x-axis). For instance, the axle torque may cause the drive wheel <NUM> to rotate in a first direction for moving the robot <NUM> in a forward direction along the fore-aft axis (x-axis) and/or cause the drive wheel <NUM> to rotate in an opposite second direction for moving the robot <NUM> in a rearward direction along the fore-aft axis (x-axis).

In some implementations, the legs <NUM> are prismatically coupled to the body <NUM> (e.g., the IPB 110a) such that a length of each leg <NUM> may expand and retract via a corresponding actuator (e.g., leg actuators AL) proximate the hip joint JH, a pair of pulleys (not shown) disclosed proximate the hip joint JH and the knee joint JK and a timing belt (not shown) synchronizing rotation of the pulleys. Each leg actuator AL may include a linear actuator or a rotational actuator. Here, a control system <NUM> with a controller <NUM> (e.g., shown in <FIG>) may actuate the actuator associated with each leg <NUM> to rotate the corresponding upper portion <NUM> relative to the body <NUM> (e.g., the IPB 110a) in one of a clockwise direction or a counter-clockwise direction to prismatically extend/expand the length of the leg <NUM> by causing the corresponding lower portion <NUM> to rotate about the corresponding knee joint JK relative to the upper portion <NUM> in the other one of the clockwise direction or the counter-clockwise direction. Optionally, instead of a two-link leg, the at least one leg <NUM> may include a single link that prismatically extends/retracts linearly such that the second end <NUM> of the leg <NUM> prismatically moves away/toward the body <NUM> (e.g., the IPB <NUM>10a) along a linear rail. In other configurations, the knee joint JK may employ a corresponding a rotational actuator as the knee actuator AK for rotating the lower portion <NUM> relative to the upper portion <NUM> in lieu of a pair of synchronized pulleys.

The corresponding axle torques applied to each of the drive wheels <NUM> (e.g., a first drive wheel <NUM>, 130a associated with the first leg 120a and a second drive wheel <NUM>, 130b associated with the second leg 120b) may vary to maneuver the robot <NUM> across the ground surface <NUM>. For instance, an axle torque (i.e., a wheel torque iW) applied to the first drive wheel 130a that is greater than a wheel torque iW applied to the second drive wheel 130b may cause the robot <NUM> to turn to the left, while applying a greater wheel torque τW to the second drive wheel 130b than to the first drive wheel <NUM> may cause the robot <NUM> to turn to the right. Similarly, applying substantially the same magnitude of wheel torque iW to each of the drive wheels <NUM> may cause the robot <NUM> to move substantially straight across the ground surface <NUM> in either the forward or reverse directions. The magnitude of axle torque TA applied to each of the drive wheels <NUM> also controls velocity of the robot <NUM> along the fore-aft axis (x-axis). Optionally, the drive wheels <NUM> may rotate in opposite directions to allow the robot <NUM> to change orientation by swiveling on the ground surface <NUM>. Thus, each wheel torque τW may be applied to the corresponding drive wheel <NUM> independent of the axle torque (if any) applied to the other drive wheel <NUM>.

In some examples, the body <NUM> (e.g., at the CBB 110b) also includes at least one non-drive wheel (not shown). The non-drive wheel is generally passive (e.g., a passive caster wheel) and does not contact the ground surface <NUM> unless the body <NUM> moves to a pose P where the body <NUM> (e.g., the CBB 110b) is supported by the ground surface <NUM>.

In some implementations, the robot <NUM> further includes one or more appendages, such as an articulated arm <NUM> (also referred to as an arm or a manipulator arm) disposed on the body <NUM> (e.g., on the IPB 110a) and configured to move relative to the body <NUM>. The articulated arm <NUM> may have one or more degrees of freedom (e.g., ranging from relatively fixed to capable of performing a wide array of tasks in the environment <NUM>). Here, the articulated arm <NUM> illustrated in <FIG> has five-degrees of freedom. While <FIG> shows the articulated arm <NUM> disposed on the first end portion <NUM> of the body <NUM> (e.g., at the IPB 110a), the articulated arm <NUM> may be disposed on any part of the body <NUM> in other configurations. For instance, the articulated arm <NUM> is disposed on the CBB 110b or on the second end portion 114a of the IPB 110a.

The articulated arm <NUM> extends between a proximal first end <NUM> and a distal second end <NUM>. The arm <NUM> may include one or more arm joints JA between the first end <NUM> and the second end <NUM> where each arm joint JA is configured to enable the arm <NUM> to articulate in the environment <NUM>. These arm joints JA may either couple an arm member <NUM> of the arm <NUM> to the body <NUM> or couple two or more arm members <NUM> together. For example, the first end <NUM> connects to the body <NUM> (e.g., the IPB <NUM>10a) at a first articulated arm joint JA, JA1 (e.g., resembling a shoulder joint). In some configurations, the first articulated arm joint JA, JA1 is disposed between the hip joints JH (e.g., aligned along the sagittal plane PS of the robot <NUM> at the center of the body <NUM>). In some examples, the first articulated arm joint JA, JA1 rotatably couples the proximal first end <NUM> of the arm <NUM> to the body <NUM> (e.g., the IPB 110a) to enable the arm <NUM> to rotate relative to the body <NUM> (e.g., the IPB 110a). For instance, the arm <NUM> may move/pitch about the lateral axis (y-axis) relative to the body <NUM>.

In some implementations, such as <FIG>, the arm <NUM> includes a second arm joint JA, JA2 (e.g., resembling an elbow joint) and a third arm joint JA, JA3 (e.g., resembling a wrist joint). The second arm joint JA, JA2 couples a first arm member 156a to a second arm member 156b such that these members 156a-b are rotatable relative to one another and also to the body <NUM> (e.g., the IPB <NUM>). Depending on a length of the arm <NUM>, the second end <NUM> of the arm <NUM> coincides with an end of an arm member <NUM>. For instance, although the arm <NUM> may have any number of arm members <NUM>, <FIG> depicts the arm <NUM> with two arm members 156a-b such that the end of the second arm member 156b coincides with the second end <NUM> of the arm <NUM>. Here, at the second end <NUM> of the arm <NUM>, the arm <NUM> includes an end-effector <NUM> that is configured to perform tasks within the environment <NUM>. The end-effector <NUM> may be disposed on the second end <NUM> of the arm <NUM> at an arm joint JA (e.g., at the third arm joint JA, JA3) to allow the end-effector <NUM> to have multiple degrees of freedom during operation. The end-effector <NUM> may include one or more end-effector actuators A, AEE for gripping/grasping objects. For instance, the end-effector <NUM> includes one or more suction cups as end-effector actuators AEE to grasp or to grip objects by providing a vacuum seal between the end-effector <NUM> and a target object.

The articulated arm <NUM> may move/pitch about the lateral axis (y-axis) relative to the body <NUM> (e.g., the IPB 110a). For instance, the articulated arm <NUM> may rotate about the lateral axis (y-axis) relative to the body <NUM> in the direction of gravity to lower the COM of the robot <NUM> while executing turning maneuvers. The CBB 110b may also simultaneously rotate about the lateral axis (y-axis) relative to the IPB <NUM> in the direction of gravity to assist in lowering the COM of the robot <NUM>. Here, the articulated arm <NUM> and the CBB 110b may cancel out any shifting in the COM of the robot <NUM> in the forward or rearward direction along the fore-aft axis (x-axis), while still effectuating the COM of the robot <NUM> to shift downward closer to the ground surface <NUM>.

With reference to <FIG>, the robot <NUM> includes a control system <NUM> configured to monitor and to control operation of the robot <NUM>. In some implementations, the robot <NUM> is configured to operate autonomously and/or semi-autonomously. However, a user may also operate the robot by providing commands/directions to the robot <NUM>. In the example shown, the control system <NUM> includes a controller <NUM> (e.g., data processing hardware) and memory hardware <NUM>. The controller <NUM> may include its own memory hardware or utilize the memory hardware <NUM> of the control system <NUM>. In some examples, the control system <NUM> (e.g., with the controller <NUM>) is configured to communicate (e.g., command motion) with the actuators A (e.g., back actuator(s) AB, leg actuator(s) AL, knee actuator(s) AK, drive belt actuator(s), rotational actuator(s), end-effector actuator(s) AEE, etc.) to enable the robot <NUM> to move about the environment <NUM>. The control system <NUM> is not limited to the components shown, and may include additional (e.g., a power source) or less components without departing from the scope of the present disclosure. The components may communicate by wireless or wired connections and may be distributed across multiple locations of the robot <NUM>. In some configurations, the control system <NUM> interfaces with a remote computing device and/or a user. For instance, the control system <NUM> may include various components for communicating with the robot <NUM>, such as a joystick, buttons, transmitters/receivers, wired communication ports, and/or wireless communication ports for receiving inputs from the remote computing device and/or user, and providing feedback to the remote computing device and/or user.

The controller <NUM> 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 implementations, the controller <NUM> is a purpose-built embedded device configured to perform specific operations with one or more subsystems of the robot <NUM>. Additionally or alternatively, the controller <NUM> includes a software application programmed to execute functions for systems for the robot <NUM> using the data processing hardware of the controller <NUM>. The memory hardware <NUM> is in communication with the controller <NUM> and may include one or more non-transitory computer-readable storage media such as volatile and/or non-volatile storage components. For instance, the memory hardware <NUM> may be associated with one or more physical devices in communication with one another and may include optical, magnetic, organic, or other types of memory or storage. The memory hardware <NUM> is configured to, inter alia, store instructions (e.g., computer-readable program instructions) that, when executed by the controller <NUM>, cause the controller <NUM> to perform numerous operations, such as, without limitation, altering the pose P of the robot <NUM> for maintaining balance, maneuvering the robot <NUM>, detecting objects, transporting objects, and/or performing other tasks within the environment <NUM>. In some implementations, the controller <NUM> performs the operations based on direct or indirect interactions with a sensor system <NUM>.

The sensor system <NUM> includes one or more sensors <NUM>, 172a-n. The sensors <NUM> may include vision/image sensors, inertial sensors (e.g., an inertial measurement unit (IMU)), and/or kinematic sensors. Some examples of one or more sensors <NUM> include a camera such as a monocular camera or a stereo camera, a time of flight (TOF) depth sensor, a scanning light-detection and ranging (LIDAR) sensor, or a scanning laser-detection and ranging (LADAR) sensor. More generically, the sensor(s) <NUM> may include one or more of force sensors, torque sensors, velocity sensors, acceleration sensors, position sensors (linear and/or rotational position sensors), motion sensors, location sensors, load sensors, temperature sensors, pressure sensors (e.g., for monitoring the end-effector actuator AEE), touch sensors, depth sensors, ultrasonic range sensors, infrared sensors, and/or object sensors. In some examples, sensor(s) <NUM> have a corresponding field(s) of view defining a sensing range or region corresponding to sensor(s) <NUM>. Each sensor <NUM> may be pivotable and/or rotatable such that the sensor <NUM> may, for example, change the field of view about one or more axes (e.g., an x-axis, a y-axis, or a z-axis in relation to a ground surface <NUM>). In some implementations, the body <NUM> of the robot <NUM> includes a sensor system <NUM> with multiple sensors <NUM> about the body to gather sensor data <NUM> in all directions around the robot <NUM>. Additionally or alternatively, sensor(s) <NUM> of the sensor system <NUM> may be mounted on the arm <NUM> of the robot <NUM> (e.g., in conjunction with one or more sensors <NUM> mounted on the body <NUM>). The robot <NUM> may include any number of sensors <NUM> as part of the sensor system <NUM> in order to generate sensor data <NUM> for the environment <NUM> about the robot <NUM>. For instance, when the robot <NUM> is maneuvering about the environment <NUM>, the sensor system <NUM> gathers pose data for the robot <NUM> that includes inertial measurement data (e.g., measured by an IMU). In some examples, the pose data includes kinematic data and/or orientation data about the robot <NUM>.

When surveying a field of view with a sensor <NUM>, the sensor system <NUM> generates sensor data <NUM> (also referred to as image data <NUM>) corresponding to the field of view. Sensor data <NUM> gathered by the sensor system <NUM>, such as the image data, pose data, inertial data, kinematic data, etc., relating to the environment <NUM> may be communicated to the control system <NUM> (e.g., the controller <NUM> and/or memory hardware <NUM>) of the robot <NUM>. In some examples, the sensor system <NUM> gathers and stores the sensor data <NUM> (e.g., in the memory hardware <NUM> or memory hardware related to remote resources communicating with the robot <NUM>). In other examples, the sensor system <NUM> gathers the sensor data <NUM> in real-time and processes the sensor data <NUM> without storing raw (i.e., unprocessed) sensor data <NUM>. In yet other examples, the controller system <NUM> and/or remote resources store both the processed sensor data <NUM> and raw sensor data <NUM>. The sensor data <NUM> from the sensor(s) <NUM> may allow systems of the robot <NUM> to detect and/or to analyze conditions about the robot <NUM>. For instance, the sensor data <NUM> may allow the control system <NUM> to maneuver the robot <NUM>, alter a pose P of the robot <NUM>, and/or actuate various actuators A for moving/rotating mechanical components of the robot <NUM> (e.g., about joints J of the robot <NUM>).

As discussed above, a robot in accordance with some embodiments includes an end-effector (e.g., end-effector <NUM>) coupled to a force sensor. The force sensor may be configured to determine one or more forces and/or torques applied to the robot when an object (e.g., box <NUM>) is lifted by the robot. <FIG> depicts a <NUM> DOF force sensor <NUM> in accordance with some embodiments. The force sensor <NUM> includes a first plate <NUM> and a second plate <NUM>. The first and second plates may have any suitable shape and may be composed of any suitable material or materials, as the disclosure is not limited in this regard. Force sensor <NUM> includes a plurality of load cells <NUM>, such as single-axis load cells disposed between the first plate <NUM> and the second plate <NUM>. Each of the load cells <NUM> is oriented along a single axis (the Z-axis in <FIG>). In some embodiments, force sensor <NUM> includes at least three single-axis load cells <NUM> configured to measure force along their single axis.

In some embodiments, a force sensor <NUM> additionally includes a plurality of constraint joints <NUM>, <NUM> arranged to inhibit one or more degrees of freedom of the two plates <NUM> and <NUM> of the force sensor <NUM>. For instance, the constraint joints may be configured to inhibit translation of the first plate <NUM> relative to the second plate <NUM> in one or more directions perpendicular to the single axis of the load cells (e.g., the X and Y directions shown in <FIG>) and to inhibit rotation of the first plate <NUM> relative to the second plate <NUM> about the single axis of the load cells (e.g., Z-axis). In some embodiments, the plurality of constraint joints may include at least one spherical constraint. However, any suitable constraint joint that constrains at least one translational and/or rotational degree of freedom may be appropriate, and the disclosure is not limited in this regard. In <FIG>, the force sensor <NUM> includes a spherical constraint <NUM>. In some embodiments, a spherical constraint may be disposed at a central point relative to the load cells <NUM>. In some embodiments, a spherical constraint <NUM> may be disposed at a centroid of the load cells <NUM>. In some embodiments, the centroid of the load cells <NUM> may be understood to be the centroid of the load cells <NUM> within an X-Y plane (i.e., in a plane perpendicular to the sensing axis of the load cells <NUM>). However, other locations of a spherical constraint relative to the load cells are contemplated, and the disclosure is not limited in this regard. The spherical constraint <NUM> may inhibit translation of the first plate <NUM> relative to the second plate <NUM>, but may allow rotation of the first plate relative to the second plate. In <FIG>, a second constraint joint <NUM> is included in the force sensor <NUM>, which constrains rotation of the first plate <NUM> relative to the second plate <NUM> about the axis in which the load cells <NUM> are oriented (e.g., the Z axis).

Without wishing to be bound by theory, at least three single-axis load cells may be used to resolve three degrees of freedom of an applied load (e.g., a box being lifted by a vacuum-based gripper <NUM>). <FIG>, the force sensor <NUM> includes four load cells <NUM>, with each of the four load cells disposed at or near a corner of the force sensor <NUM>. Although only three single-axis load cells may be needed to resolve three degrees of freedom, including four load cells may be associated with certain benefits relating to ease of packaging, symmetry, sensor redundancy, etc. Due in part to the arrangement of the load cells <NUM> and the constraint joints <NUM>, <NUM>, translation in the X and Y directions is constrained, as is rotation about the Z axis. Consequently, the force sensor <NUM> may be configured to sense forces along the Z axis in addition to moments about the X and Y axes. For example, the total force on the force sensor <NUM> along the Z axis may be calculated by summing the individual forces measured by each of the load cells <NUM>. The moment about the X or Y axis may be calculated by summing the moments at each load cell <NUM>, which may be calculated as the vector product of the force measured by the load cell <NUM> and the moment arm of the load cell <NUM> along the relevant axis.

In some embodiments, load cells <NUM> may be coupled to the first plate <NUM> and the second plate <NUM> through spherical constraints <NUM>. One such configuration t is shown in <FIG>, which shows a front cross-sectional view through a load cell <NUM> of the force sensor <NUM> of <FIG>. For example, a first end of the load cell <NUM> may be coupled to a first spherical constraint <NUM>, which may in turn be coupled to the first plate <NUM>. A second end of the load cell <NUM> opposite the first end of the load cell may be coupled to a second spherical constraint <NUM>, which may in turn be coupled to the second plate <NUM>. In such a configuration, the load cell <NUM> may be kinematically unconstrained along the X and Y axes and kinematically constrained along the Z axis. In some embodiments, the load cells may be coupled to the first and/or second plates through unidirectional constraints. For example, the load cells may be coupled to a plate using a ball on plate contact. In some embodiments, the load cells may be configured to measure both compressive and tensile forces.

<FIG> schematically illustrate another multi-DOF force sensor <NUM> in accordance with some embodiments. As shown, force sensor <NUM> of <FIG> includes many of the same components as force sensor <NUM> of <FIG>, albeit with a different configuration of load cells and constraint joints, as explained below.

<FIG> is a top schematic view of the force sensor <NUM>. The force sensor <NUM> includes a plate <NUM> and a plurality of load cells <NUM>-<NUM>. <FIG> depicts the kinematic degrees of freedom associated with the load cells <NUM>-<NUM>, and <FIG> depicts the load sensing axes associated with the load cells <NUM>-<NUM>. For each of <FIG>, a kinematic degree of freedom (<FIG>) and/or a load sensing axis (<FIG>) aligned with either the X or Y axes is indicated with a horizontal or vertical double-headed arrow, respectively. A kinematic degree of freedom (<FIG>) and/or load sensing axis (<FIG>) aligned with the Z axis (not shown in the figures, but understood to be mutually perpendicular to both the X and Y axes) is indicated with a cross inside of a circle.

In <FIG>, the force sensor <NUM> includes a single-axis load cell at or near each corner of the plate <NUM>. The single-axis load cells <NUM>-<NUM> are configured to sense forces aligned with the Z axis, and are kinematically constrained along both the X and Y axes. An additional single-axis load cell <NUM> is configured to sense forces aligned with the Y axis, and is kinematically constrained along both the X and Z axes. The Y axis load cell <NUM> is disposed within the perimeter of a polygon defined by the Z axis load cells <NUM>-<NUM>. However, it should be appreciated that other suitable locations of the Y axis load cell <NUM> are contemplated, and the disclosure is not limited in this regard. Additionally, it should be appreciated that if the additional single-axis load cell <NUM> is alternatively configured to sense forces aligned with the X axis, and is kinematically constrained along both the Y and Z axes, the functionality of the force sensor <NUM> may not be fundamentally altered. Additionally, some embodiments include a dual-axis force sensor <NUM> configured to sense forces in the X-Y plane, while being kinematically constrained along the Z axis. As shown, the dual-axis load cell <NUM> is disposed within the perimeter of a polygon defined by the Z axis load cells <NUM>-<NUM>. However, it should be appreciated that other suitable locations of the dual-axis load cell <NUM> are contemplated, and the disclosure is not limited in this regard. With this particular arrangement of load cells <NUM>-<NUM>, the force sensor <NUM> may be configured to sense six degrees of freedom, including forces along the X, Y, and Z axes, as well as moments about the X, Y, and Z axes.

It should be appreciated that the specific arrangement of load cells depicted in <FIG> is merely one of a plurality of suitable arrangements of load cells associated with the described functionality of the force sensor <NUM>. The inventors have contemplated arrangements of load cells other than the arrangement specifically described in <FIG> that are associated with similar and/or analogous functionality of the force sensor <NUM>, and the present disclosure is not limited to the specific arrangement depicted in the figures.

Furthermore, removing the load sensing capabilities of some of the load cells but retaining the associated kinematic constraints may be associated with a force sensor configured to sense fewer than six degrees of freedom (e.g., an example of which is shown as the three degree of freedom load sensor in <FIG>), but that may be lower cost (due, e.g., to the reduced number of load cells).

For example, in a first alternative configuration, load cells <NUM> and <NUM> may be removed, but their associated kinematic constraints may be maintained. The resulting force sensor may be configured to measure forces along the Z axis and moments about the X and Y axes. As such, the force sensor of the first alternative configuration may be described as a bending/axial force sensor. Such a first alternative configuration may have a configuration and functionality similar to the configuration of the force sensor <NUM> described in relation to <FIG>, albeit with a slightly different configuration of constraint joints.

In a second alternative configuration, load cells <NUM>-<NUM> may be removed, but their associated kinematic constraints may be maintained. The resulting force sensor may be configured to measure forces along the X and Y axes and moments about the Z axis. As such, the force sensor of the second alternative configuration may be described as a shear/torque sensor.

Table <NUM> summaries the load sensing axes and the kinematic constraint axes associated with each load cell <NUM>-<NUM> for each of the above-described configurations. Note that the primary configuration is denoted "Config. #<NUM>", the first alternative configuration is denoted "Config. #<NUM>", and the second alternative configuration is denoted "Config.

Other alternative configurations of force sensors may be constructed using the framework of a plurality of single-axis (or dual-axis) load cells and a plurality of kinematic constraints (wherein the load cells themselves may impose all of the kinematic constraints, and/or wherein there are additional kinematic constraints beyond the kinematic constraints imposed by the load cells). The force sensor <NUM> of <FIG> may be configured to sense six degrees of freedom (i.e., forces along three axes and moments about three axes), while each of the two alternative configurations described above may be configured to sense three degrees of freedom (e.g., forces along one axis and moments about two axes, in the case of the first alternative configuration, or forces along two axes and moments about one axis, in the case of the second alternative configuration). A person of skill in the art will appreciate that different arrangements of single-axis (or dual-axis) load cells and kinematic constraints may be employed to construct a force sensor of any suitable number and directionality of degrees of freedom. For example, a plurality of single-axis (or dual-axis) load cells and a plurality of kinematic constraints may be used to construct a <NUM> DOF, <NUM> DOF, <NUM> DOF, <NUM> DOF, or <NUM> DOF force sensor. The present disclosure is not limited in regard to the number and/or arrangement of load cells, the number and/or directionality of sensing axes of each load cell, the number and/or directionality of kinematic degrees of freedom of each load cell, and/or the number and/or directionality of the degrees of freedom of the force sensor.

In some embodiments, a force sensor (e.g., force sensor <NUM>, or force sensor <NUM>, or any suitable alternative) may be included in a portion of a limb (e.g., an arm or end-effectorattached thereto) of a robotic system (e.g., the robotic system illustrated in <FIG>). For instance, the force sensor may be disposed near the distal end of a robotic limb, and may connect to an end-effector (e.g., end-effector <NUM>). Such a force sensor may be used to measure forces and/or moments between a robotic limb and an object grasped by an end-effector. For example, a force sensor <NUM> may include a plurality of vacuum cup assemblies <NUM> coupled to a second plate <NUM>, as shown in <FIG>. The vacuum cup assemblies <NUM> may be used to grasp an object, such as a box (e.g., box <NUM>). A force sensor <NUM> may be used to measure the forces and/or moments applied to the robotic limb by the box as the robotic limb moves the box through a trajectory.

It should be appreciated that a force sensor may also be used in combination with other portions of a robot to sense forces applied to the robot, and that the disclosure is not limited in this regard. For example, a force sensor may be disposed at an ankle joint of a robotic leg, and may be used to measure the forces and/or moments that are transferred from a foot to the remainder of the robotics system as the robotic system locomotes.

One or more forces and/or moments measured by a force sensor may be used, for example, by a controller (e.g., controller <NUM> of control system <NUM>) to adjust the operation of one or more components of the robot to change its behavior based, at least in part, on the sensed forces and/or moments applied to the robot. For instance, if the force sensor detects that the load lifted by the end-effector is heavy, the speed and/or acceleration of the arm to which the end-effector is attached may be reduced to mitigate the possibility that the load may be dropped and/or to reduce the possibility of an unsafe operating condition of the robot. As another example, a trajectory of the arm may be adjusted based on the sensed load at the end effector.

It should be appreciated that although the term "force sensor" is used herein, sensors described in the present disclosure may be configured to sense forces and/or torques in any suitable number of axes, and that the present disclosure is not limited to sensors that sense only force and not torque. The term "force sensor" is used herein solely for convenience and readability, and should not be construed as limiting. Additionally, the terms "moment" and "torque" are used interchangeably herein.

The computing devices and systems described and/or illustrated herein broadly represent any type or form of computing device or system capable of executing computer-readable instructions, such as those contained within the modules described herein. In their most basic configuration, these computing device(s) may each include at least one memory device and at least one physical processor.

In some examples, the term "memory device" generally refers to any type or form of volatile or non-volatile storage device or medium capable of storing data and/or computer-readable instructions. In one example, a memory device may store, load, and/or maintain one or more of the modules described herein. Examples of memory devices include, without limitation, Random Access Memory (RAM), Read Only Memory (ROM), flash memory, Hard Disk Drives (HDDs), Solid-State Drives (SSDs), optical disk drives, caches, variations or combinations of one or more of the same, or any other suitable storage memory.

In some examples, the term "physical processor" generally refers to any type or form of hardware-implemented processing unit capable of interpreting and/or executing computer-readable instructions. In one example, a physical processor may access and/or modify one or more modules stored in the above-described memory device. Examples of physical processors include, without limitation, microprocessors, microcontrollers, Central Processing Units (CPUs), Field-Programmable Gate Arrays (FPGAs) that implement softcore processors, Application-Specific Integrated Circuits (ASICs), portions of one or more of the same, variations or combinations of one or more of the same, or any other suitable physical processor.

Although illustrated as separate elements, the modules described and/or illustrated herein may represent portions of a single module or application. In addition, in certain embodiments one or more of these modules may represent one or more software applications or programs that, when executed by a computing device, may cause the computing device to perform one or more tasks. For example, one or more of the modules described and/or illustrated herein may represent modules stored and configured to run on one or more of the computing devices or systems described and/or illustrated herein. One or more of these modules may also represent all or portions of one or more special-purpose computers configured to perform one or more tasks.

In addition, one or more of the modules described herein may transform data, physical devices, and/or representations of physical devices from one form to another. Additionally, or alternatively, one or more of the modules recited herein may transform a processor, volatile memory, non-volatile memory, and/or any other portion of a physical computing device from one form to another by executing on the computing device, storing data on the computing device, and/or otherwise interacting with the computing device.

The above-described embodiments can be implemented in any of numerous ways. For example, the embodiments may be implemented using hardware, software or a combination thereof. When implemented in software, the software code can be executed on any suitable processor or collection of processors, whether provided in a single computer or distributed among multiple computers. It should be appreciated that any component or collection of components that perform the functions described above can be generically considered as one or more controllers that control the above-discussed functions. The one or more controllers can be implemented in numerous ways, such as with dedicated hardware or with one or more processors programmed using microcode or software to perform the functions recited above.

In this respect, it should be appreciated that embodiments of a robot may include at least one non-transitory computer-readable storage medium (e.g., a computer memory, a portable memory, a compact disk, etc.) encoded with a computer program (i.e., a plurality of instructions), which, when executed on a processor, performs one or more of the above-discussed functions. Those functions, for example, may include control of the robot and/or driving a wheel or arm of the robot. The computer-readable storage medium can be transportable such that the program stored thereon can be loaded onto any computer resource to implement the aspects of the present invention discussed herein. In addition, it should be appreciated that the reference to a computer program which, when executed, performs the above-discussed functions, is not limited to an application program running on a host computer. Rather, the term computer program is used herein in a generic sense to reference any type of computer code (e.g., software or microcode) that can be employed to program a processor to implement the above-discussed aspects of the present invention.

Various aspects of the present invention may be used alone, in combination, or in a variety of arrangements not specifically discussed in the embodiments described in the foregoing and are therefore not limited in their application to the details and arrangement of components set forth in the foregoing description or illustrated in the drawings.

Also, embodiments of the invention may be applied in one or more methods, of which an example has been provided. The acts performed as part of the method(s) may be ordered in any suitable way. Accordingly, embodiments may be constructed in which acts are performed in an order different than illustrated, which may include performing some acts simultaneously, even though shown as sequential acts in illustrative embodiments.

Use of ordinal terms such as "first," "second," "third," etc., in the claims to modify a claim element does not by itself connote any priority, precedence, or order of one claim element over another or the temporal order in which acts of a method are performed. Such terms are used merely as labels to distinguish one claim element having a certain name from another element having a same name (but for use of the ordinal term).

The use of "including," "comprising," "having," "containing", "involving", and variations thereof, is meant to encompass the items listed thereafter and additional items.

Claim 1:
A robot (<NUM>) comprising:
at least one movable limb; and
a load sensor (<NUM>, <NUM>) coupled to the at least one movable limb, wherein the load sensor comprises:
a first plate (<NUM>) and a second plate (<NUM>);
a plurality of single-axis load cells (<NUM>) including first, second, and third single-axis load cells, wherein each of the first, second, and third single-axis load cells is disposed between the first plate and the second plate and is oriented along a first axis so as to measure force along that first axis; characterized in that it further comprises
a plurality of constraint j oints (<NUM>, <NUM>) coupled to the first plate and the second plate, the plurality of constraint j oints configured to inhibit translation of the first plate relative to the second plate in directions perpendicular to the first axis and configured to inhibit rotation of the first plate relative to the second plate about the first axis.