Patent Description:
<CIT> describes a hydraulic apparatus that has a cam body rotatable about an axis and with at least two mirror image involute cam surfaces on opposing sides of the axis. Hydraulic actuators on opposing sides of the axis have a linearly extendable ram and a hydraulic cylinder. A fluid supply line is provided for delivering a pressurized fluid equally to each of the cylinders. A pressure relief or flow control valve is associated with each of the hydraulic cylinders and is operable to selectively assume a closed position to retain fluid or assume an open position to release fluid from the hydraulic cylinders. A control can operate the pressure relief valves between at least the closed and open positions, to move the rams out of and in to the cylinders to rotate the cam body about the axis with controlled torque. A robotic, prosthetic or orthotic and a method for applying torque to a body are also disclosed.

Implementations described herein are directed to apparatus and methods for articulating an appendage (e.g., a removable appendage) of a robot to allow for stable pitch and yaw of the appendage, while mitigating interference with other movements of the robot. For example, implementations described herein can enable actuation of an appendage without requiring the actuators to be located directly at the location of movement, which can result in better stabilization of the robot (e.g., by enabling the actuators to be located closer to the center of mass of the robot). As another example, implementations described herein provide a lightweight and/or compact design for actuation of the appendage, which can result in better stabilization of the robot and/or enable integration into smaller and/or lighter weight robots. For instance, implementations can provide some, or all, of the freedom of movement of the appendage that would be afforded if the appendage were controlled by a gimbal - but can do so with component(s) that are collectively lighter than a gimbal, collectively occupy less space than a gimbal, and/or that can be positioned to mitigate any adverse impact on a center of mass of the robot (thereby promoting stability of the robot).

Some implementations can, when a vision component (e.g., camera) is disposed on the appendage or incorporated as part of the appendage, provide for an increase in effective field of view (e.g., relative to a non-actuable appendage or single-axis actuable appendage) through controlled actuation of the appendage. For example, actuation of the appendage according to implementations disclosed herein can allow corresponding dynamic adjustment of the current field of view of the vision component, thereby increasing the effective field of view and enabling the robot to process images that collectively capture a large area of an environment of the robot, and to act upon such processing. For instance, the increased effective field of view can allow a robot to selectively actuate the appendage such that area(s) at or near feet or wheels of the robot are selectively within the current field of view, area(s) above the robot are selectively in the field of view, etc..

Some implementations can additionally or alternatively enable the robot to selectively actuate its appendage to provide corresponding visual feedback to human user(s) that are in an environment with the robot, thereby enabling effective human-robot interaction. For example, a robot can signal, to nearby human user(s), an intent of the robot to move in a particular direction by providing control command(s) to actuators that cause the appendage to turn in the particular direction. As another example, a robot can signal, to nearby human user(s), that the robot has recognized presence or the human user(s) and/or understood a command dictated by the human user(s), by providing control command(s) to actuators that case the appendage to nod or shake.

Apparatus described herein for actuating movement of an appendage (e.g., a head, tail, or other appendage) can include at least two linear actuators disposed in a neck of the robot (e.g., a neck that extends from a main body of the robot). Each of the linear actuators can be coupled to a rod, which connects the linear actuator at a first end of the rod to an appendage at a second end of the rod. Put another way, each rod can be coupled to a corresponding linear actuator at a first end of the rod and coupled to the appendage at an opposed second end of the rod. One or both of the ends of each of the rods can, in some instances, be hemispherical ends, although the ends of rods are not so limited (i.e., non-hemispherical end(s) could instead be provided on a rod, such as pyramid shaped ends). The appendage can include tracks that receive and slidaby engage the second end of each of the rods. The tracks are a channel, such as a "V" or "U" shape channel, in which the second end of the rod can sit. In some implementations, the second end of the rod can be constructed in such a way as to be trapped by the track. For example, the second end can have a larger diameter than the body of the rod. Such a configuration can allow the rods to maintain contact with the tracks as the orientation of the appendage changes. Simultaneously moving both of the two rods inward (relative to the neck) or both of the rods outward (relative to the neck) actuates tilt of the appendage; while moving one of the rods inward (relative to the neck) and the other rod outward (relative to the neck) at a substantially equal rate actuates yaw. Where the rate of movement of one rod inward and one rod outward is not equal, both pitch and yaw are actuated. In such implementations, the degree of pitch corresponds to the degree to which the movement is non-equal. Further, where only one of the rods is moved (inward or outward), while the other rod remains stationary, both yaw and tilt of the appendage are actuated. Movement of the rods is driven by the linear actuators.

In some implementations, one or more levers can be used to connect the linear actuators to the rods. In many implementations, the neck of the robot may be small and accordingly have space constraints, and use of a lever can allow for the linear actuators to be placed out of alignment with the rods to utilize less space in the neck and/or enable the neck to be shorter (i.e., the appendage to be close to the main robot body). A flexure can, in some implementations, further connect the levers to the rods. The flexure can allow for an additional range (e.g., about <NUM> millimeters or other range) of flex up or down as the lever rotates. The specific range of flex provided by virtue of the flexure can vary based on the geometry and/or dimension of the flexure. In various implementations, the flexure component itself can contain a thin, flexible, horizontal bar with two stiff pongs (one disposed above the bar and one disposed below the bar). When the thin, flexible horizontal bar of the flexure has flexed to its maximum, these stiff prongs can engage the bar to prevent it from flexing further and snapping.

In some implementations, the neck can further include a fixed rod. Similar to the other rods described herein, this fixed rod may also have an end that can sit in a third angled track of the appendage. Unlike the other rods, the fixed rod is not coupled with a linear actuator, but rather is fixed or anchored to the neck (e.g. through a screw or the like). While fixed or anchored to the neck, the fixed rod will be slidably engaged with the third angled track. In other implementations, the neck can further include a third linear actuator and a third rod. In such implementations, the third linear actuator can drive linear movement of the third rod, similar to the other rods described. Having the third linear actuator can increase the range of movement of the appendage and/or increase the granularity of control of the appendage.

The appendage can be coupled with the neck, for example with one or more spring(s), rubber band(s), and/or other biasing coupling component(s). When coupled with spring(s), the spring(s) can each connect at one end to the appendage and at the other end at the neck. In some implementations, the spring(s) can be uncoupled to allow the appendage to detach from the neck. Coupling the appendage via spring(s) may, for example, allow for a more sturdy and/or robust robot assembly. As an example, if the appendage of the robot were to make contact with something in the environment, the spring(s) can prevent the appendage from falling to the ground and/or allow it to flex from the neck without snapping or breaking.

The appendage can additionally, in some implementations, include an electrical connection that couples with a corresponding electrical connection in the robot in order to power various electronics contained within the appendage. For example, the appendage can include a vision component and/or other sensor(s) to facilitate control of the robot. A robot control system can receive various signals from the vision component(s) and/or sensor(s) of the appendage to make determinations regarding target positioning of the appendage and/or determinations regarding target paths and/or trajectories of other component(s) of the robot. For example, vision data from vision component(s) of the appendage can be processed by the control system to determine a navigational path of the robot and/or to determine a path of a robot arm of other component of the robot. In some implementations, it can be desirable to move the appendage into a certain position, based on one or more of the signals received by the control system and/or based on one or more determinations made by the control system. Control of the linear actuators can effectuate movement of the rods to achieve this certain position. For example, in some implementations, the robot control system may separately allow for gaze control and pitch-yaw control of the appendage. With gaze control, the robot control system and/or a user may specify a point in three-dimensional space; the robot control system can then translate that point in three-dimensional space into one or more positions of the rods and/or linear actuators in order to allow appendage to move to the specified point in space. As an example, a robot control system, before navigating the robot (e.g., via wheel(s) and/or feet thereof), can cause the appendage to be directed toward wheel(s) and/or feet of the robot to enable vision data to be captured (by vision component(s) of the appendage) that captures the area near the wheel(s) and/or feet, and the vision data processed to ensure no obstructions are present. As another example, a robot control system, before navigating toward a location and/or moving a robot arm toward a location, cause the appendage to be directed toward the location to enable vision data to be captured (by vision component(s) of the appendage) that captures the location, and the vision data processed to determine pose(s) and/or other characteristic(s) of any object(s) that may be present in the location. As another example, this may allow a user to specify a location where the head of the robot is to be positioned, and the control system can then drive the linear actuator and rods so that the robot may turn its head toward that point. With pitch-yaw control, a user may specify a desired pitch and/or yaw of the appendage. The robot control system can then translate that specified pitch and/or yaw into one or more positions of the rods and linear actuators so that the appendage may move to the specified orientation.

The preceding is provided as an overview of only some implementations. Those and other implementations are described in more detail herein.

Other implementations can include a non-transitory computer readable storage medium storing instructions executable by a processor to perform a method such as one or more of the methods described above. Yet another implementation can include a robot that includes one or more processors that execute stored instructions (e.g., stored in memory of the robot) perform a method such as one or more of the methods described above.

<FIG>, <FIG>, and <FIG> illustrate exemplary robot components <NUM> with which selected aspects of the present disclosure can be practiced in accordance with various implementations. The robot components described herein can be incorporated into robots <NUM> of various forms, including but not limited to a telepresence robot, a robot arm, a humanoid robot, an animal robot (e.g., a quadruped robot), an insect robot, an aquatic robot, a wheeled robot, a submersible robot, an unmanned aerial vehicle ("UAV"), and so forth. Additionally, these robot forms include biped robots, quadruped robots, hexapod robots, and so on.

In the example depicted in <FIG>, the robot <NUM> includes the robot components <NUM>, which collectively includes a neck <NUM> and an appendage <NUM> (e.g., a head, tail, or the like). The neck <NUM> can, in most implementations, include a housing <NUM> (see in particular <FIG>) that is represented by the dashed lines in <FIG>. This housing may be constructed of any suitable material and may be designed to protect the internal components of the neck <NUM> (described herein) from the elements, impacts, and so on. Furthermore, the shape and dimensions of the neck <NUM> may, in some implementations, be defined by the housing. The robot, in some implementations, can further include other components, including, but not limited to, a body <NUM>, legs <NUM>, arm appendages, etc..

Movement of the appendage <NUM> of the robot is actuated by at least a first and second linear actuator <NUM>, <NUM> that are disposed within the neck <NUM>. Each of the first and second linear actuators <NUM>, <NUM> are coupled to a first or second rod <NUM>, <NUM>, respectively. These rods <NUM>, <NUM> connect to the linear actuators <NUM>, <NUM> at a first end <NUM> and to the appendage at a second end <NUM>. The linear actuators <NUM>, <NUM> are individually controllable to drive linear movement of the rods <NUM>, <NUM> in order to dynamically adjust the pose of the appendage <NUM> relative to the neck <NUM>. For example, where both rods <NUM>, <NUM> are fully recessed into the neck <NUM>, such as illustrated in <FIG>, the appendage <NUM> is in a neutral position. In some implementations, simultaneously moving both of the rods <NUM>, <NUM> inward (relative to the neck) at the same rate or both of the rods outward (relative to the neck) at the same rate, such as illustrated in <FIG>, actuates tilt of the appendage <NUM>. In some of those implementations, moving one of the rods <NUM> inward (relative to the neck) at the same rate and the other rod <NUM> outward (relative to the neck) at the same rate, such as illustrated in <FIG>, actuates yaw. Where the rate of movement of one rod <NUM> inward and one rod <NUM> outward is not equal, both pitch and yaw are actuated. In such implementations, the rate of yaw can be dependent on difference (e.g. delta) of the rate of movement between the two, as well as the direction of movement of the two rods <NUM>, <NUM>. Further, where only one of the rods <NUM> is moved (inward or outward) and the other rod <NUM> remains stationary, both yaw and tilt of the appendage are actuated. The rods <NUM>, <NUM> can each optionally further include a hard stop, which can prevent the coupled linear actuator <NUM>, <NUM> from traveling outside of the intended range of motion. Such a hard stop may, in some implementations, be in the form of a raised ridge, around the rod <NUM>, <NUM>, and can interact with a corresponding portion of the linear actuator to restrict the range.

The appendage <NUM> can include a first and second track <NUM>, <NUM> that receive and slidaby engage the second end <NUM> of each of the rods <NUM>, <NUM>. The rods <NUM>, <NUM> can, in some implementations, have hemispherical ends <NUM>, although the rods are not so limited. For example, in some other implementations the rods <NUM>, <NUM> can instead each have at least one non-hemispherical end (e.g., at least the end that engages with the track), such as a blunt or generally cube-shaped end, pyramid shaped end, a chamfered end, or other non-hemispherical end. The tracks <NUM>, <NUM> can be angled in order to receive, and optionally to hold, the second end <NUM> of the rods <NUM>, <NUM> in place. The tracks are a channel, such as a "V" or "U" shape, in which a second end <NUM> of the rod <NUM>, <NUM> can sit. The configuration of a channel as the track <NUM>, <NUM> and a hemispherical end <NUM> of the rod <NUM>, <NUM> may allow the rods to maintain contact with the tracks as the appendage <NUM> is moved and the orientation of the appendage changes. The angle at which the hemispherical end <NUM> contacts the track <NUM>, <NUM> can vary as the rod <NUM>, <NUM> moves linearly and the rod <NUM>, <NUM> can slidably move within the track as the rod <NUM>, <NUM> moves linearly. As a non-limiting example, the angled track <NUM>, <NUM> can keep the hemispherical end <NUM> seated within the track <NUM>, <NUM> when the rods <NUM>, <NUM> are fully extended (e.g. the appendage is tilted downward). In some implementations, the second end <NUM> of the rod(s) <NUM>, <NUM> can be trapped by or locked into the track <NUM>, <NUM>. For example, second end can have a larger diameter, or be wider, than the body of rod. In such an implementation, the rod(s) <NUM>, <NUM> may, for example, have a "T"-shaped configuration, such that the second end of the rod(s) <NUM>, <NUM> is the top, wider, portion of the "T". In such an implementation, the rod(s) <NUM>, <NUM> remain removable through one or both ends of track <NUM>, <NUM>.

As the linear actuator(s) <NUM>, <NUM> drives movement of the rod(s) <NUM>, <NUM> the rods may slide in the tracks <NUM>, <NUM> to facilitate movement of the appendage <NUM>. In some implementations, such as illustrated in <FIG>, the tracks <NUM>, <NUM> may be planar on a rear surface <NUM> of the appendage <NUM>. In other implementation the tracks <NUM>, <NUM> can be disposed on separate planes. The positioning of the tracks <NUM>, <NUM> on the appendage <NUM> can vary. In some implementations, such as illustrated in Figs. <NUM>, the tracks <NUM>, <NUM> can be disposed at a non-perpendicular angle relative to a top edge <NUM> of the appendage <NUM> and/or at a non-parallel angle relative to one another. In some of those implementations, the tracks <NUM>, <NUM> can be disposed at a <NUM> to <NUM> degree angle relative to one another (i.e., in the common plane), such as an <NUM> to <NUM> degree angle relative to one another. The particular angles and positioning of the tracks <NUM>, <NUM> can be dependent on a desired range of motion of the appendage <NUM>. In further implementations, as also illustrated in <FIG>, the tracks <NUM>, <NUM> can be disposed on the rear surface <NUM> of the appendage <NUM> such that they are mirror images of each other. The locations of the tracks <NUM>, <NUM> are exemplary and not to be understood as limiting, as the positioning of the tracks <NUM>, <NUM> on the appendage <NUM> may vary depending on the geometry and desired range of motion of the appendage <NUM>. The maximum range of motion for the appendage <NUM> can, in some implementations, be approximately (e.g., +/- <NUM> degrees) <NUM> degrees in a pitch and/or yaw direction. However, the achieved range of motion for the appendage <NUM> may vary based on the length of the tracks <NUM>, <NUM>, the length of the stroke of the linear actuator <NUM>, <NUM>, and/or the length of the rods <NUM>, <NUM>. In some implementations, lengthening the stroke of the linear actuator <NUM>, <NUM>, increasing the length of the track(s) <NUM>, <NUM>, and/or increasing the length of the rod(s) <NUM>, <NUM> can increase the range of motion achieved by the appendage <NUM>.

In some implementations, one or more levers <NUM> can be used to connect the linear actuators <NUM>, <NUM> to the rods <NUM>, <NUM>. As mentioned previously, in many implementations, the neck <NUM> of the robot can have space constraints. The use of a lever(s) <NUM> can allow for the linear actuators <NUM>, <NUM> to be placed out of alignment with the rods <NUM>, <NUM> (as illustrated in <FIG>). Placement of the rods <NUM>, <NUM> and linear actuators <NUM>, <NUM> out of alignment utilizes less space in the neck and/or enables the neck to be shorter (i.e., the appendage to be close to the main robot body). The lever(s) <NUM> move the rod(s) <NUM>, <NUM> and can amplify the displacement actuated by the of the linear actuators <NUM>, <NUM>. In such implementations, the first end <NUM> of the rod(s) <NUM>, <NUM> couples with the lever(s) <NUM>, and the lever(s) <NUM> then couple with the linear actuator(s) <NUM>, <NUM>. This configuration allows the linear actuator(s) <NUM>, <NUM> to drive rotation of the lever(s) <NUM> (see arrow in <FIG>), which drives the linear movement (e.g. the extension or retraction) of the rod(s) <NUM>, <NUM>.

In some implementations, a flexure <NUM> can further connect the lever(s) <NUM> to the rod(s) <NUM>, <NUM>. This flexure <NUM> can allow for additional movement or "flex" as the lever <NUM> rotates up or down. As a non-limiting example, in some implementations, the flexure <NUM> connecting the lever(s) <NUM> to the rod(s) <NUM>, <NUM> allows for an additional <NUM> millimeters of flex up or down. However, this is not to be understood as limiting, as the amount or degree of additional movement may vary based on the dimension of the flexure <NUM> and/or lever <NUM>. The flexure <NUM> can, in some implementations include a thin, flexible, horizontal bar <NUM> with first stiff pong <NUM> disposed above the bar <NUM> and a second stiff prong <NUM> disposed below the bar <NUM>. When the thin, flexible horizontal bar <NUM> of the flexure <NUM> has flexed to its maximum, the stiff prongs <NUM>, <NUM> engage the bar <NUM> to prevent it from flexing further and snapping. The stiff prongs <NUM>, <NUM> can be strong enough so that when they are engaged, may allow for force to be transferred back to the linear actuators <NUM>, <NUM>, which are backdriven. The geometry of the flexure <NUM> may vary; in particular the length of the thin, flexible, horizontal bar <NUM> can depend of the length and/or rotational distance of the lever <NUM>. In addition to providing additional flex, the flexure <NUM> can also, in some implementations, minimize vibration within the neck <NUM>. In some implementations, a linkage or the like can be used as an alternative to a flexure <NUM>.

In some implementations, the neck <NUM> may additionally include a third rod that may provide additional stability to the appendage <NUM> and further define the range of motion (e.g. for tilting) of the appendage <NUM>. In some instances, such as illustrated in <FIG> the third rod may be a fixed rod <NUM>; while in other instances, the third rod may be a movable rod <NUM> coupled to a third linear actuator <NUM>, as discussed with reference to <FIG>. Where the third rod is a fixed rod <NUM>, a first end <NUM> of the fixed rod <NUM> may be fixed or anchored to the neck <NUM>, for example through use of a screw <NUM>, anchor, or the like. The fixed rod <NUM>, similar to rods <NUM>, <NUM> may have a hemispherical second end <NUM>. The hemispherical second end <NUM> contacts the corresponding third track <NUM> on the appendage <NUM>. Similar to the first and second tracks <NUM>, <NUM>, the third track <NUM> is angled in order to receive, and optionally to hold, the second end <NUM> of the third fixed rod <NUM>. As with the first and second tracks <NUM>, <NUM> the angle of the third track <NUM> can be a "V" or "U" shape, in which a hemispherical end <NUM> of the fixed rod <NUM> sits. In some implementations all tracks <NUM>, <NUM>, <NUM> can have the same shape, angle, and/or length. However, in other implementations, the tracks <NUM>, <NUM>, <NUM> may vary in shape, angle, and/or length. In some implementations, such as illustrated in <FIG>, the third track <NUM> can be disposed along a substantially central axis dividing the appendage in half, for example running from the top edge <NUM> of the appendage <NUM> to a bottom edge <NUM>. Put another way, in those implementations the third track <NUM> can be approximately perpendicular to the top edge <NUM>, such as at an <NUM> to <NUM> degree angle relative to the top edge. In some of those implementations, the third track <NUM> can be at an approximately <NUM> to <NUM> degree angle (e.g., approximately <NUM> degree angle) relative to the tracks <NUM> and <NUM>. Similar to tracks <NUM>, <NUM>, the location of the third track <NUM> is exemplary and not to be understood as limiting, as it may vary depending on the geometry and desired range of motion of the appendage <NUM>.

The appendage <NUM> can be coupled with the neck <NUM>. In some implementations the coupling of the appendage <NUM> with the neck <NUM> is a removable coupling. In some of those implementations, the removable coupling can be via a spring <NUM> (as illustrated in <FIG>), rubber band, and/or other coupling structure that causes the appendage <NUM> and the neck <NUM> to be forced toward engagement with one another. Where coupled with a spring <NUM>, the spring <NUM> can connect at one end to the appendage <NUM> and at the other end at the neck <NUM>. In some implementations, the neck <NUM> and appendage can each further include a receiver <NUM>, which is illustrated in <FIG> as "U" shaped bracket. The spring <NUM> can further include a hook <NUM> (open or closed) that connects to the receiver <NUM> on each of the neck <NUM> and appendage <NUM>, thereby coupling the appendage <NUM> and neck <NUM>. In some implementations, the spring <NUM> can be uncoupled from the hook <NUM> on either (or both) the appendage <NUM> or the neck <NUM> in order to uncouple the appendage <NUM> and neck <NUM>, which can also, in various implementations, allow for the appendage <NUM> to be separated from the neck <NUM>. In some of those implementations, such separation may be desirable for exchanging a type of appendage and/or for easier storage and portability. The spring <NUM> can bias the appendage <NUM> towards the neck <NUM>, such that the spring <NUM> pulls the appendage <NUM> towards a neutral position (see <FIG>). Additionally, the spring <NUM> can have an associated spring constant, or stiffness constant K, that is specific to the spring used. A spring with a greater spring constant K can require more force to compress or expand than another spring having a lesser spring constant. The spring constant of spring <NUM> can change the force required to actuate movement of the appendage <NUM>. Coupling the appendage <NUM> to the neck <NUM> via a spring <NUM> can, for example, allow for a sturdier robot assembly. As a non-limiting example, if the appendage <NUM> were to make contact with something in the environment (e.g. a table, wall, etc.), the spring <NUM> can prevent the appendage <NUM> from falling to the ground from the impact.

Referring now to <FIG>, another exemplary robot component <NUM> with an appendage <NUM> and neck <NUM> is illustrated. The implementation illustrated in <FIG> is similar to the robot component <NUM> illustrated in <FIG>, with the exception that the neck <NUM> includes a third moveable rod <NUM> third linear actuator <NUM>. The third, movable rod <NUM> can be coupled at a first end <NUM> to the third linear actuator <NUM> in the neck <NUM>. In some implementations, such as illustrated in <FIG>, the rod <NUM> can be directly coupled to the linear actuator <NUM>, without a lever or flexure (as illustrated in and described with to <FIG>). This is not to be understood as limiting, as in some instances, particularly where space constraints allow, a lever and/or a flexure can be disposed between the linear actuator <NUM> and the rod <NUM>, and in various implementation can function as described with reference to <FIG>. The moveable rod <NUM>, similar to rods previously described herein, can have a hemispherical second end (not illustrated) that contacts a corresponding third track <NUM> on the appendage <NUM>. Similar to the first and second tracks described previously, the third track <NUM> is also angled in order to receive, and optionally hold, the second end of the movable rod <NUM>. The third track <NUM> can also be a "V" or "U" shape, into which the hemispherical end of the fixed rod <NUM> sits.

<FIG> schematically depicts an example architecture of an exemplary robot <NUM>, which can incorporate the features discussed herein with reference to <FIG>. The robot <NUM> includes a robot control system <NUM>, one or more operational components 540a-540a (e.g. a neck, appendage, etc.), and one or more sensors 542a-<NUM>. The sensors 542a-<NUM> can include, for example, vison components (e.g. cameras), vision sensors, light sensors, pressure sensors, pressure wave sensors (e.g., microphones), proximity sensors, accelerometers, gyroscopes, thermometers, barometers, and so forth. While sensors 542a-m are depicted as being integral with robot <NUM>, this is not to be understood as limiting. In some implementations, sensors 542a-m can be located external to robot <NUM>, e.g., as standalone units.

As an example, the one or more of the vision components 542a-<NUM> can include, for example, a monocular camera, a stereographic camera (active or passive), and/or a light detection and ranging (LIDAR) component. A LIDAR component can generate vision data that is a 3D point cloud with each of the points of the 3D point cloud defining a position of a point of a surface in 3D space. A monocular camera may include a single sensor (e.g., a charge-coupled device (CCD)), and generate, based on physical properties sensed by the sensor, images that each includes a plurality of data points defining color values and/or grayscale values. For instance, the monocular camera can generate images that include red, blue, and/or green channels. A stereographic camera can include two or more sensors, each at a different vantage point, and can optionally include a projector (e.g., infrared projector). In some of those implementations, the stereographic camera generates, based on characteristics sensed by the two sensors (e.g., based on captured projection from the projector), images that each includes a plurality of data points defining depth values and color values and/or grayscale values. For example, the stereographic camera may generate images that include a depth channel and red, blue, and/or green channels.

Operational components 540a-540a can include, for example, a neck, appendage and/or all associated components such as the linear actuators, as described herein with reference to <FIG>. In other examples, operational components 540a-540a can include one or more end effectors and/or one or more servo motors or other actuators to effectuate movement of one or more components of the robot. As used herein, the term actuator encompasses a mechanical or electrical device that creates motion (e.g., a motor), in addition to any driver(s) that can be associated with the actuator and that translate received control commands into one or more signals for driving the actuator. Accordingly, providing a control command to an actuator can comprise providing the control command to a driver that translates the control command into appropriate signals for driving an electrical or mechanical device to create desired motion. With the linear actuator implementation described herein, linear movement of the rods is driven. However, in other implementations, other actuator(s) can be provided for driving movement of other robot components, for example, robot wheels, legs, or the like. Such other actuator(s) can include linear actuator(s) and/or other actuator(s) (e.g., servo motor(s)).

As a non-limiting example, the robot control system <NUM> can receive various signals from the one or more sensors 542a-<NUM> to make determinations regarding target positioning of an appendage (e.g. appendage <NUM> of <FIG> or appendage <NUM> of <FIG>). In some implementations, it may be desirable to move the appendage into a certain position, based on the signals received by the control system <NUM>. For example, where the appendage is a head, it may be desirable in some instances for the head to move towards a stimulus (e.g. a particular noise). Control of the linear actuators can effectuate movement of the rods to achieve this target position.

The robot control system <NUM> can be implemented in one or more processors, such as a CPU, GPU, and/or other controller(s) of the robot <NUM>. In some implementations, the robot <NUM> can comprise a "brain box" that can include all or aspects of the control system <NUM>. For example, the brain box can provide real time bursts of data to the operational components 540a-n, with each of the real time bursts comprising a set of one or more control commands that dictate, inter alia, the parameters of motion (if any) for each of one or more of the operational components 540a-n, such as the linear actuators of the neck. In some implementations, the robot control system <NUM> can be used to implement actions described herein.

As one non-limiting example, the robot control system and/or a user may specify a point in three-dimensional space and the robot control system <NUM> can then translate that point in three-dimensional space into one or more positions of the rods (e.g. <NUM>, <NUM> of <FIG>) and/or linear actuators (e.g. <NUM>, <NUM> of <FIG>) in order to allow an appendage to move to the specified point in space. As an example, a robot control system <NUM>, before navigating the robot (e.g., via wheel(s) and/or feet thereof), can cause the appendage to be directed toward wheel(s) and/or feet of the robot to enable vision data to be captured (by vision component(s) of the appendage) that captures the area near the wheel(s) and/or feet, and the vision data processed to ensure no obstructions are present. As another example, a robot control system <NUM>, before navigating toward a location and/or moving a robot arm toward a location, cause the appendage to be directed toward the location to enable vision data to be captured (by vision component(s) of the appendage) that captures the location, and the vision data processed to determine pose(s) and/or other characteristic(s) of any object(s) that may be present in the location. As another example, a user may specify a location where the appendage of the robot is to be positioned, and the control system <NUM> can then drive the linear actuator (e.g. <NUM>, <NUM> of <FIG>) and rods (e.g. <NUM>, <NUM> of <FIG>) so that the robot can turn the appendage toward that point. As yet another example, a user may specify a desired pitch and/or yaw of the appendage, and robot control system <NUM> can then translate that specified pitch and/or yaw into one or more positions of the rods (e.g. <NUM>, <NUM> of <FIG>) and linear actuators (e.g. <NUM>, <NUM> of <FIG>) so that the appendage can move to the specified orientation. Although reference is made to <FIG>, where present, a third linear actuator (e.g. <NUM> of <FIG>) and third moveable rod (e.g. <NUM> of <FIG>) can also be controlled similarly.

Although control system <NUM> is illustrated in <FIG> as an integral part of the robot <NUM>, in some implementations, all or aspects of the control system <NUM> can be implemented in a component that is separate from, but in communication with, robot <NUM>. For example, all or aspects of control system <NUM> can be implemented on one or more computing devices that are in wired and/or wireless communication with the robot <NUM>, such as computing device <NUM>.

<FIG> is a block diagram of an example computing device <NUM> that can optionally be utilized to perform one or more aspects of techniques described herein. These peripheral devices can include a storage subsystem <NUM>, including, for example, a memory subsystem <NUM> and a file storage subsystem <NUM>, user interface output devices <NUM>, user interface input devices <NUM>, and a network interface subsystem <NUM>.

User interface input devices <NUM> can include a keyboard, pointing devices such as a mouse, trackball, touchpad, or graphics tablet, a scanner, a touchscreen incorporated into the display, audio input devices such as voice recognition systems, microphones, and/or other types of input devices.

User interface output devices <NUM> can include a display subsystem, a printer, a fax machine, or non-visual displays such as audio output devices. The display subsystem can include a cathode ray tube (CRT), a flat-panel device such as a liquid crystal display (LCD), a projection device, or some other mechanism for creating a visible image. The display subsystem can also provide non-visual display such as via audio output devices. Storage subsystem <NUM> stores programming and data constructs that provide the functionality of some or all of the modules described herein. For example, the storage subsystem <NUM> may include the logic to perform selected aspects of the method of <FIG>.

A file storage subsystem <NUM> can provide persistent storage for program and data files, and can include a hard disk drive, a floppy disk drive along with associated removable media, a CD-ROM drive, an optical drive, or removable media cartridges. The modules implementing the functionality of certain implementations can be stored by file storage subsystem <NUM> in the storage subsystem <NUM>, or in other machines accessible by the processor(s) <NUM>.

Although bus subsystem <NUM> is shown schematically as a single bus, alternative implementations of the bus subsystem can use multiple busses.

Referring now to <FIG>, an example method <NUM> of moving an appendage of a robot is illustrated. The method <NUM> can be performed by processor(s) of a robot in various implementations, such as processor(s) implementing robot control system <NUM> of robot <NUM> (<FIG>). While operations of method <NUM> are shown in a particular order, this is not meant to be limiting. One or more operations may be reordered, omitted or added.

At block <NUM>, a target pose of an appendage of the robot can be determined. In some implementations, the target pose can be determined based on user input. For example, as described previously herein, a user may specify a point in three-dimensional space that would represent the target pose. As another example, a user may specify a desired pitch and/or yaw of the appendage, which would also represent a target pose of the appendage. In still other implementations, the target pose can be determined based on signals the robot control system receives from one or more sensors, vison components, or the like of the robot. For example, the target pose can be determined by a robot control system based on environmental characteristic(s), as determined based on sensor data, and/or based on a task to be performed by the robot. For instance, a task to be performed can include "nodding" the appendage and the target pose can be one, of a sequence of poses, determined to cause the appendage to nod.

At block <NUM>, based on the target posed determined at block <NUM>, one or more driving parameters for a first and/or second linear actuator (e.g. <NUM>, <NUM> of <FIG>) are determined. Control of the linear actuators can effectuate movement of the rods to achieve this certain position, as such these driving parameters can, in some implementation, include information regarding a corresponding target position of each linear actuator and/or a corresponding length of the stroke of each linear actuator required to achieve the target pose of the appendage. For example, one or more of the rods can be moved as described herein to actuate tilt, pitch, and/or yaw to achieve this certain position. Furthermore, in implementations where this certain position is a sequence of poses (e.g. "nodding" or "shaking of the appendage) the rate of change, in addition to the positioning, of in the rods as they move can also be included in the driving parameters. At block <NUM>, the first and/or second linear actuator is driven based on the driving parameters so as to achieve the specified target pose.

Optionally, at block <NUM>, a target position for the first and/or second rod are determined as a part of the driving parameters determined at block <NUM>. The target position of the rod(s) can also, in some implementations, include information regarding the positioning of the lever(s), where present. In other implementations, the target position of the rod(s) can also include information regarding a rate of change between the rod(s).

At block <NUM>, the first and/or second linear actuator is driven to achieve the target position of the rod(s).

In some implementations, the method <NUM> can additionally include returning to block <NUM> to determine a second target pose based on a signal from one or more vison components or sensors on the appendage. This second (or third and so on) target pose can allow for continued actuation of the appendage. This second target pose can, in various implementations, be a response to a stimulus. As a non-limiting example, an audio sensor on the appendage send a signal of a particular sound to the robot control system, which then determines a second target pose for the appendage in response to this signal. This second target pose can be that the appendage is turned toward the origination of the sound. In another non-limiting example, the second target pose can be a series of movements effectuated by the appendage; for example, the target pose of an appendage in the form of a head can be the robot shaking its head vertically to indicate "yes" or affirmative or horizontally to indicate "no" of negative in response to a stimulus.

Claim 1:
A robot component (<NUM>) comprising:
a neck (<NUM>) comprising:
a first linear actuator (<NUM>) coupled to a first end (<NUM>) of a first rod (<NUM>), wherein the first linear actuator linearly drives the first rod;
a second linear actuator (<NUM>) coupled to a first end (<NUM>) of a second rod (<NUM>), wherein the second linear actuator linearly drives the second rod;
an appendage (<NUM>) coupled to the neck, the appendage comprising:
a first channel (<NUM>) that receives a second end (<NUM>) of the first rod to slidably engage the first rod; and
a second channel (<NUM>) that receives a second end (<NUM>) of the second rod to slidably engage the second rod.