Patent Publication Number: US-10330182-B2

Title: Robot actuator utilizing a differential pulley transmission

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     The present application is a continuation of U.S. patent application Ser. No. 14/191,819, filed on Feb. 27, 2014, which claims priority to U.S. Patent Application Ser. No. 61/838,735, filed on Jun. 24, 2013, the entire contents of each of which are herein incorporated by reference. 
    
    
     BACKGROUND 
     Unless otherwise indicated herein, the materials described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section. 
     Electric motor actuators for robotic and automation systems often require a transmission (speed reducer) in order to operate within the speed-torque requirements of a specific application and of the motor. Commonly used systems include multi-stage gearboxes, timing belts, cable drive, harmonic drives, and cycloid gearboxes. These systems are often too inefficient, susceptible to overload damage, heavy, and require expensive precision manufacturing. Such systems are also often too expensive for consumer products when high performance is required. 
     As an example, harmonic drive systems can be used in high performance applications where low backlash and gear-ratios greater than 50:1 are required. The harmonic drive is proprietary, heavy, inefficient, and expensive for consumer application. Other cable drive systems can be lightweight and efficient; however, non-trivial transmission ratios may lead to complex multi-stage designs that require high preload forces and challenging cable management. Often it is desired to integrate a torque sensor such as a strain gauge load cell into the transmission in order to achieve closed loop torque control. Practically, integration of this sensor can prove challenging as the sensor wires typically rotate with the transmission output, and therefore, require cable management. 
     SUMMARY 
     In one example, a differential pulley actuator is provided that comprises one or more input drive gears for coupling to a motor, and the one or more input drive gears couple rotation of the motor to rotation of an output pulley. The differential pulley actuator also includes one or more timing belt pulleys coupled together through the one or more input drive gears, and rotation of the one or more input drive gears causes rotation of a first timing belt pulley in a first direction and rotation of a second timing belt pulley in a second direction opposite the first direction. The differential pulley actuator also includes multiple idler pulleys suspended between the one or more timing belt pulleys and the output pulley, and the multiple idler pulleys are held in tension between the one or more timing belt pulleys via a first tension-bearing element and the output pulley via a second tension-bearing element. The first tension-bearing element loops around the one or more timing belt pulleys and the multiple idler pulleys. The differential pulley actuator also includes the output pulley for coupling to a load, and the output pulley couples to the multiple idler pulleys via the second tension-bearing element looping around the output pulley and is configured to apply motion of the multiple idler pulleys to the load. 
     In another example, a differential pulley actuator is provided that comprises an input drive gear for coupling to a motor, and the input drive gear couples rotation of the motor to rotation of an output pulley. The differential pulley actuator also includes a first timing belt pulley pair and a second timing belt pulley pair coupled to the input drive gear, and rotation of the input drive gear causes rotation of the first timing belt pulley pair and the second timing belt pulley pair. The differential pulley actuator also includes a first idler pulley element suspended between the first timing belt pulley pair and the output pulley and held in tension to the first timing belt pulley pair via a first tension-bearing element and to the output pulley via a second tension-bearing element. The differential pulley actuator also includes a second idler pulley element suspended between the second timing belt pulley pair and the output pulley and held in tension to the second timing belt pulley pair via a third tension-bearing element and to the output pulley via the second tension-bearing element. The differential pulley actuator further includes the output pulley for coupling to a load, and the output pulley couples to the first idler pulley element and the second idler pulley element via the second tension-bearing element looping around the output pulley and is configured to apply motion of the first idler pulley element and the second idler pulley element to the load. 
     In another example, a differential pulley actuator is provided that comprises a first input drive gear for coupling to a motor, and the first input drive gear couples rotation of the motor to rotation of an output pulley. The differential pulley actuator also include a first timing belt pulley pair coupled to the first input drive gear, and rotation of the first input drive gear causes rotation of the first timing belt pulley pair. The differential pulley actuator also includes a first idler pulley element suspended between the first timing belt pulley pair and the output pulley and held in tension to the first timing belt pulley pair via a first tension-bearing element and to the output pulley via a second tension-bearing element. The differential pulley actuator also includes a second input drive gear for coupling to the motor, and the second input drive gear couples rotation of the motor to rotation of the output pulley. The differential pulley actuator also includes a second timing belt pulley pair coupled to the second input drive gear, and rotation of the second input drive gear causes rotation of the second timing belt pulley pair. The differential pulley actuator also includes a second idler pulley element suspended between the second timing belt pulley pair and the output pulley and held in tension to the second timing belt pulley pair via a third tension-bearing element and to the output pulley via the second tension-bearing element. The differential pulley actuator also includes the output pulley for coupling to a load, and the output pulley couples to the first idler pulley element and the second idler pulley element via the second tension-bearing element looping around the output pulley and is configured to apply motion of the first idler pulley element and the second idler pulley element to the load. 
     In still other examples, methods and computer program products including instructions executable by a device or by one or more processors to perform functions of the methods are provided. The methods may be executable for operating a differential pulley actuator, for example. 
     These as well as other aspects, advantages, and alternatives, will become apparent to those of ordinary skill in the art by reading the following detailed description, with reference where appropriate to the accompanying figures. 
    
    
     
       BRIEF DESCRIPTION OF THE FIGURES 
         FIGS. 1A-1D  illustrate an example differential pulley actuator.  FIG. 1A  illustrates a top perspective view of the example differential pulley actuator,  FIG. 1B  illustrates a bottom perspective view of the example differential pulley actuator,  FIG. 1C  illustrates a top view of the example differential pulley actuator, and  FIG. 1D  illustrates a side view of the example differential pulley actuator. 
         FIGS. 2A-2D  illustrate the example differential pulley actuator of  FIGS. 1A-1D  in a staggered position.  FIG. 2A  illustrates a top perspective view of the example differential pulley actuator,  FIG. 2B  illustrates a bottom perspective view of the example differential pulley actuator,  FIG. 2C  illustrates a top view of the example differential pulley actuator, and  FIG. 2D  illustrates a side view of the example differential pulley actuator, each in a staggered position. 
         FIGS. 3A-3D  illustrate an example timing pulley and timing belt.  FIG. 3A  illustrates a top view of the example timing pulley and timing belt,  FIG. 3B  illustrates a side view of the example timing pulley and timing belt,  FIG. 3C  illustrates a top perspective view of the example timing pulley and timing belt, and  FIG. 3D  illustrates a bottom perspective view of the example timing pulley and timing belt. 
         FIGS. 4A-4B  illustrate another example differential pulley actuator.  FIG. 4A  illustrates a top perspective view of the example differential pulley actuator, and  FIG. 4B  illustrates a top view of the example differential pulley actuator. 
         FIGS. 5A-5E  illustrate another example differential pulley actuator in a nominal position.  FIG. 5A  illustrates a side view of the example differential pulley actuator,  FIG. 5B  illustrates a bottom view of the example differential pulley actuator,  FIG. 5C  illustrates an end view of the example differential pulley actuator,  FIG. 5D  illustrates a side perspective view of the example differential pulley actuator, and  FIG. 5E  illustrates a bottom perspective view of the example differential pulley actuator. 
         FIGS. 6A-6E  illustrate the differential pulley actuator of  FIGS. 5A-5E  in a staggered position.  FIG. 6A  illustrates a side view of the example differential pulley actuator,  FIG. 6B  illustrates a bottom view of the example differential pulley actuator,  FIG. 6C  illustrates an end view of the example differential pulley actuator,  FIG. 6D  illustrates a side perspective view of the example differential pulley actuator, and  FIG. 6E  illustrates a bottom perspective view of the example differential pulley actuator. 
         FIGS. 7A-7E  illustrate another example differential pulley actuator in a nominal position.  FIG. 7A  illustrates a side view of the example differential pulley actuator,  FIG. 7B  illustrates a bottom view of the example differential pulley actuator,  FIG. 7C  illustrates an end view of the example differential pulley actuator,  FIG. 7D  illustrates a side perspective view of the example differential pulley actuator, and  FIG. 7E  illustrates a bottom perspective view of the example differential pulley actuator. 
         FIG. 8  is a block diagram illustrating an example system for control of a differential pulley actuator. 
         FIG. 9  illustrates a schematic drawing of an example computing device. 
         FIG. 10  is a flowchart illustrating an example method for operating a differential pulley actuator. 
     
    
    
     DETAILED DESCRIPTION 
     The following detailed description describes various features and functions of the disclosed systems and methods with reference to the accompanying figures. In the figures, similar symbols identify similar components, unless context dictates otherwise. The illustrative system and method embodiments described herein are not meant to be limiting. It may be readily understood that certain aspects of the disclosed systems and methods can be arranged and combined in a wide variety of different configurations, all of which are contemplated herein. 
     The differential pulley, also known as a windlass, may be configured to provide a mechanical advantage for lifting objects. A differential pulley includes a cable, rope, chain, belt, or other flexible tension-bearing device wrapped around two input drive pulleys of different radius (e.g., r 1  and r 2 ), and an output pulley, resting against a loop made in the flexible tension-bearing device, supports an output load. As the input drive pulleys are turned (e.g., at a rate w 1 ), a tension-bearing device velocity entering and leaving the output pulley differs by a factor proportional to the difference in radius. This results in a translation of the output pulley and the load by v=w 1 *(r 2 −r 1 )/2. In this way, an example mechanical advantage can be chosen by selecting a difference in pulley radius. 
     Electric motors to rotate the drive pulleys may be efficient when operating at high speed and low torque. However, in a specific application of robotic actuators, typically high torques and low speeds are desired. Thus, electric motor robotic actuators may require a transmission with a non-trivial gear reduction to reduce a speed of the motor and increase a torque output. Such transmission technologies exist, including a spur gearbox, planetary gearbox, lead or ball screw, and Harmonic Drive gearheads. Such transmissions, however, may have low efficiency, high cost, high weight, backlash, low gear ratios, and/or low impact and load capacity. These example characteristics may make such transmissions undesired for robotic actuators that require high performance servo control in a lightweight, low-cost mechanism such as a robot manipulator. 
     Within examples, systems, devices, and differential pulley actuators are described for obtaining output motion of a joint (e.g., such as robot joint) given rotary input of a motor (e.g., electric motor) with a differential pulley employed between the input and output. In some examples, a continuous loop tension-bearing element (e.g., belt, chain, cable, etc.) is utilized in the differential pulley such that a pull-pull linear motion may be generated between two idler pulleys. This motion can then be applied to an output load in a rotary or linear motion. 
     Referring now to the figures,  FIGS. 1A-1D  illustrate an example differential pulley actuator  100 .  FIG. 1A  illustrates a top perspective view of the example differential pulley actuator  100 ,  FIG. 1B  illustrates a bottom perspective view of the example differential pulley actuator  100 ,  FIG. 1C  illustrates a top view of the example differential pulley actuator  100 , and  FIG. 1D  illustrates a side view of the example differential pulley actuator  100 . 
     The differential pulley actuator  100  includes input drive gears  102   a - b  for coupling to a motor  104 . The input drive gears  102   a - b  couple rotation of the motor  104  to rotation of an output pulley  106 . The differential pulley actuator  100  also includes timing belt pulleys  108   a - b , and the timing belt pulley  108   a  couples to the input drive gear  102   a  and the timing belt pulley  108   b  couples to the input drive gear  102   b . Rotation of the input drive gears  102   a - b  causes rotation of one of the timing belt pulleys  108   a - b  in a direction and rotation of the other timing belt pulley in an opposite direction. The timing belt pulleys  108   a - b  may have different radiuses, which is required to create a gear reduction, for example. For example, the timing belt pulley  108   b  may have a smaller radius than the timing belt pulley  108   a.    
     The differential pulley actuator  100  also includes idler pulleys  110   a - b  suspended between the timing belt pulleys  108   a - b  and the output pulley  106 . The idler pulleys  110   a - b  are held in tension between the timing belt pulleys  108   a - b  via a tension-bearing element  112  and the output pulley  106  via another tension-bearing element  114 . The tension-bearing element  112  may be an endless timing belt that loops around the timing belt pulleys  108   a - b  and the idler pulleys  110   a - b . The other tension-bearing element  114  may be a timing belt enabling the output pulley  106  to couple to the idler pulleys  110   a - b  by looping around the output pulley  106 . The output pulley  106  couples to a load (not shown) and is configured to apply motion of the idler pulleys  110   a - b  to the load. A differential or other mechanism may be attached to the output pulley  106  to provide a multiple degree of freedom (DOF) joint. 
     The tension-bearing elements  112  and  114  may be any of a belt, a toothed belt, a chain, a cable, a string or other material as needed for an application of the differential pulley actuator  100 . For example, a load capacity of the differential pulley actuator  100  may be limited only to the strength of the tension-bearing elements  112  and  114 , and thus, a material for the tension-bearing elements  112  and  114  can be selected appropriately. 
     The idler pulleys  110   a - b  are mounted within holders  116   a - b , and the tension-bearing element  114  couples to the holders  116   a - b  using screws or other attachment mechanisms. The holders  116   a - b  allow the idler pulleys  110   a - b  to rotate on freely. 
     The differential pulley actuator  100  may also including a motor pinion gear  118  coupled to the motor  104  and the drive gear  102   a  for causing rotation of the drive gear  102   a.    
     In an example operation, the drive gears  102   a - b  are driven by the motor  104  using the motor pinion gear  118 . The drive gears  102   a - b  may have the same radius, but each timing belt pulley  108   a - b  may have a different radius (e.g., timing belt pulley  108   a  may have a larger radius than timing belt pulley  108   b ) so that driving both timing belt pulleys  108   a - b  at a same rate creates a difference in speed between the timing belt pulleys  108   a - b  creating a pull in one direction on the idler pulleys  110   a - b  to drive the output pulley  106 . Thus, rotation of the motor  104  (e.g., rate Wm) causes rotation of the timing belt pulley  108   a  (e.g., at rate Wa, radius Ra) and rotation of the timing belt pulley  108   b  in an opposite direction (e.g., at rate Wb, radius Rb). The tension-bearing element  112  is looped around the timing belt pulleys  108   a - b  and the idler pulleys  110   a - b . The idler pulleys  110   a - b  are free to move and are held in tension using the tension-bearing elements  112  and  114 . Each idler pulley  110   a - b  then translates at a rate in equal and opposite directions of the following: 
             V   =     ±       (       Wa   ×   Ra     -     Wb   ×   Rb       )     2             
A difference in rotation speed between the timing belt pulleys  108   a - b  creates a pull in a direction on one of the idler pulleys  110   a - b  to pull the tension-bearing element  114  and drive the output pulley  106 .
 
     Within examples, a pull-pull type linear motion is created by the idler pulleys  110   a - b  and can be used in rotary joints and linear actuators. For instance, the tension-bearing element  114  (e.g., drive-belt) attaches to the output pulley  106  that is driven at a rate Wd and has radius Rd, to which an actuator load may be attached. A gear-ratio of the differential pulley actuator  100  is a ratio 
     
       
         
           
             N 
             = 
             
               
                 Wm 
                 Wd 
               
               = 
               
                 Wm 
                 × 
                 
                   Rd 
                   V 
                 
               
             
           
         
       
     
     The timing belt pulleys  108   a - b  provide a differential gear-ratio between the motor  104  and the timing belt pulleys  108   a - b . Thus, a mechanical advantage N can be designed from 1:1 to nearly infinite:1, in some examples. In example uses, a rotary robot transmission may utilize a range of about N=30:1 to 1000:1. The differential pulley actuator  100  can thus achieve a wide range of gear-ratios, and has a load capacity limited only to the belt strength. The differential pulley actuator  100  also has low backlash, which may only be present in a single gear stage. The tension-bearing elements  112  and  114  have zero backlash. 
       FIG. 1C  illustrates a top view of the differential pulley actuator  100 , and illustrates that the motor  104 , the input drive gears  102   a - b  (and the timing belt pulleys  108   a - b ) may be held fixed in space mounted to frame  120 . The output pulley  106  may also be mounted to the frame  120  as well. The frame  120  may be any type of housing and may be configured as an endoskeleton structure in which the differential pulley actuator  100  is mounted on an exterior of the frame  120 , or as an exoskeleton in which the differential pulley actuator  100  is mounted within a clamshell type structure. 
     In  FIG. 1C , the differential pulley actuator  100  is also shown to include a motor encoder  122  coupled to the motor  104  to determine a position of the motor  122  and enable a control loop to control position of the output pulley  106 . The motor encoder  122  may couple to a processor  124  through a communication bus  126 . The processor  124  may receive outputs of the motor encoder  122  to determine a position of the motor  122  and control a position of the output pulley  106  by controlling an input current to the motor  104 , for example. 
     In  FIG. 1C , the differential pulley actuator  100  is also shown to include a force sensor  128  coupled to the output pulley  106 . In other examples, tensile force sensors could be placed between the holder  116   a  and the tension-bearing element  114  and between the holder  116   b  and the tension-bearing element  114  to measure a tension of the tension-bearing element  114 . The processor  124  may receive outputs of the force sensor  128  (e.g., which may be a capacitive sensor, a tension sensor, etc.) to control an input to the motor  104  based a force or tension in the tension-bearing element  120 , for example. 
       FIGS. 2A-2D  illustrate the example differential pulley actuator  100  in a staggered position.  FIG. 2A  illustrates a top perspective view of the example differential pulley actuator  100 ,  FIG. 2B  illustrates a bottom perspective view of the example differential pulley actuator  100 ,  FIG. 2C  illustrates a top view of the example differential pulley actuator  100 , and  FIG. 2D  illustrates a side view of the example differential pulley actuator  100 , each in a staggered position. 
     As shown in  FIGS. 2A-2D , the tension-bearing element  112  creates a pull-pull linear motion between the idler pulleys  110   a - b  based on rotation of the motor  104 . For example, the tension-bearing element  112  causes movement of the idler pulleys  110   a - b  due to rotation of the timing belt pulleys  108   a - b , and the movement of the idler pulleys  110   a - b  causes rotation of the output pulley  106  through pulling of the tension-bearing element  114  by the idler pulleys  110   a - b . As shown in  FIGS. 2A-2D , the movement of the idler pulleys  110   a - b  includes the idler pulley  110   a  moving toward the output pulley  106  and the idler pulley  110   b  moving away from the output pulley  106 . Such movement causes the tension-bearing element  114  to rotate the output pulley  106 . 
     The idler pulleys  110   a - b  are held in tension and floating in space. In some examples, the idler pulleys  110   a - b  could be guided to move in a particular direction, for instance by a linear guide. Thus, in operation, the differential pulley actuator  100  may be designed to provide sufficient space between the idler pulleys  110   a - b  so that during movement, the idler pulleys  110   a - b  do not contact each other. A design can be used to provide sufficient range of motion to drive the transmission. For a larger range of motion, more space may be needed. In addition, a majority of the weight of the differential pulley actuator  100  is at one end of the actuator including the motor  104  and input drive gears  102   a - b . In an example use, for a robot arm (e.g., bicep), weight may be configured as at a shoulder positioned, and an output at an elbow position, and thus, the differential pulley actuator  100  may provide an advantageous configuration to position the majority of the weight at one end. 
       FIGS. 3A-3D  illustrate an example timing pulley  302  and timing belt  304 .  FIG. 3A  illustrates a top view of the example pulley  302  and belt  304 ,  FIG. 3B  illustrates a side view of the example pulley  302  and belt  304 ,  FIG. 3C  illustrates a top perspective view of the example pulley  302  and belt  304 , and  FIG. 3D  illustrates a bottom perspective view of the example pulley  302  and belt  304 . 
     In  FIGS. 3A-3D  the pulley  302  includes teeth, and the belt  304  is a toothed belt that interlocks to the teeth of the pulley  302 . The pulley  304  may be any of the pulleys in  FIGS. 1A-1D  and  FIGS. 2A-2D , and the belt  304  may be either or both of the tension-bearing elements  112  and  114 , for example. 
     The belt  304  has a specific tooth profile and enables accurate positioning on the pulley  302  along with an ability to efficiently transfer high loads, for example. For example, the tooth profile of the belt  304  matches the tooth profile of the pulley  302  to match together for zero backlash. 
       FIGS. 4A-4B  illustrate another example differential pulley actuator  400 .  FIG. 4A  illustrates a top perspective view of the example differential pulley actuator  400 , and FIG.  4 B illustrates a top view of the example differential pulley actuator  400 . 
     The differential pulley actuator  400  includes a motor pulley  402  for coupling to a motor  404  through a timing belt  406 . The timing belt  406  wraps around the motor pulley  402  and a motor gear  408 . The motor pulley  402  couples rotation of the motor  404  to rotation of an output pulley  410 . The differential pulley actuator  400  also includes drive pulleys  412   a - b , and the drive pulleys  412   a - b  couple to the motor pulley  402 . Rotation of the motor pulley  402  causes rotation of the drive pulleys  412   a - b . The drive pulleys  412   a - b  may have different radiuses. For example, the drive pulley  412   a  may have a smaller radius than the drive pulley  412   b.    
     The differential pulley actuator  400  also includes idler pulleys  414   a - b  suspended between the drive pulleys  412   a - b  and the output pulley  410 . The idler pulleys  414   a - b  are held in tension between the drive pulleys  412   a - b  via a tension-bearing element  416  and the output pulley  410  via another tension-bearing element  418 . The tension-bearing element  416  may be an endless string that loops around the drive pulleys  412   a - b  and the idler pulleys  414   a - b . The other tension-bearing element  418  may be a drive string enabling the output pulley  410  to couple to the idler pulleys  414   a - b  by looping around the output pulley  410 . The output pulley  410  couples to a load (not shown) and is configured to apply motion of the idler pulleys  414   a - b  to the load. A differential or other mechanism may be attached to the output pulley  410  to provide a multiple degree of freedom (DOF) joint. 
     The idler pulleys  414   a - b  are mounted within holders  420   a - b , and the tension-bearing element  418  couples to the holders  420   a - b  using screws or other attachment mechanisms. The holders  420   a - b  allow the idler pulleys  414   a - b  to rotate on pins. 
     The tension-bearing elements  416  and  418  may be a string, wire, cable, or other material as needed for an application of the differential pulley actuator  400 . The tension-bearing element  416  may be an endless loop cable manufactured from a low-stretch high strength material, such as Vectran or steel. The drive pulleys  412   a - b  may be attached into a single unit because the tension-bearing elements  416  and  418  can bend out of a rotation plane and pass past each-other. This enables a more compact, zero-backlash design. 
     The drive pulleys  412   a - b  may be threaded or include grooves, and the tension-bearing element  416  may be a cable that wraps around the drive pulleys  412   a - b  into threads to cause rotation of the output pulley  410  in a first direction and unwraps from the drive pulleys  412   a - b  to cause rotation of the output pulley  410  in a second direction. Thus, the drive pulleys  412   a - b  wrap up to drive in one direction (e.g., wrapping around a few times), and wraps down or oppositely to drive in the other direction. 
     The idler pulleys  414   a - b  are floating in space and held by tension between the drive pulleys  412   a - b  and the output pulley  410 . Thus, in operation, as the idler pulleys  414   a - b  move back and forth, the idler pulleys  414   a - b  change angles, possibly vibrate, and may contact each other. A layout of the idler pulleys  414   a - b  should be provided to enable enough space to operate freely. A diameter of the output pulley  410  may be increased to provide more space. An amount of space needed may depend on a size of a load to drive, for example. 
     Similarly to the differential pulley actuator  100  in  FIGS. 1A-1D  and  FIGS. 2A-2D , the differential pulley actuator  400  in  FIGS. 4A-4B  may also include a servo control loop added to the motor  404  to control an output position based on a motor position, a force sensor attached to a transmission output and a force control loop closed between the motor  404  and the load and transmission elasticity can be modeled and used to estimate a load position or load force, and the cable may be replaced with a toothed belt, a chain, a steel band, or other flexible member. 
       FIGS. 5A-5E  illustrate another example differential pulley actuator  500 .  FIG. 5A  illustrates a side view of the example differential pulley actuator  500 ,  FIG. 5B  illustrates a bottom view of the example differential pulley actuator  500 ,  FIG. 5C  illustrates an end view of the example differential pulley actuator  500 ,  FIG. 5D  illustrates a side perspective view of the example differential pulley actuator  500 , and  FIG. 5E  illustrates a bottom perspective view of the example differential pulley actuator  500 .  FIGS. 5A-5E  illustrate the differential pulley actuator  500  in a nominal position. 
     The differential pulley actuator  500  includes an input drive gear  502  for coupling to a gear  504  of a motor  506 . The input drive gear  502  couples rotation of the motor  506  to rotation of an output pulley  508 . The differential pulley actuator  500  also includes a first timing belt pulley pair  510   a - b  and a second timing belt pulley pair  512   a - b  coupled to the input drive gear  502 . Rotation of the input drive gear  502  causes rotation of the first timing belt pulley pair  510   a - b  and the second timing belt pulley pair  512   a - b . The differential pulley actuator  500  also includes a first idler pulley element  514  suspended between the first timing belt pulley pair  510   a - b  and the output pulley  508  and held in tension to the first timing belt pulley pair  510   a - b  via a tension-bearing element  516  and to the output pulley  508  via a tension-bearing element  518 . The differential pulley actuator  500  also includes a second idler pulley element  520  suspended between the second timing belt pulley pair  512   a - b  and the output pulley  508  and held in tension to the second timing belt pulley pair  512   a - b  via a tension-bearing element  522  and to the output pulley  508  via the tension-bearing element  518 . 
     The output pulley  508  couples to a load (not shown). The tension-bearing element  518  loops around the output pulley  508 , and the output pulley  508  is configured to apply motion of the first idler pulley element  514  and the second idler pulley element  520  to the load. A differential or other mechanism may be attached to the output pulley  508  to provide a multiple degree of freedom (DOF) joint. 
     The first idler pulley element  514  includes a frame  524  that couples to the tension-bearing element  518 , and multiple pulleys  526   a - b  couple to the frame  524 . The tension-bearing element  516  loops around the multiple pulleys  526   a - b . Similarly, the second idler pulley element  520  includes a frame  528  that couples to the tension-bearing element  518 , and multiple pulleys  530   a - b  couple to the frame  528 . The tension-bearing element  522  loops around the multiple pulleys  530   a - b.    
     Within examples, the differential pulley actuator  500  includes the first timing belt pulley pair  510   a - b  coupled to the input drive gear  502 , and the second timing belt pulley pair  512   a - b  couples to the first timing belt pulley pair  510   a - b  such that the first timing belt pulley pair  510   a - b  and the second timing belt pulley pair  512   a - b  are coupled in serial in a stacked configuration. In addition, the configuration of the differential pulley actuator  500  is such that input drive gear  502  and the output pulley  508  each rotate about respective axes that are perpendicular to each other. 
       FIGS. 6A-6E  illustrate the differential pulley actuator  500  in a staggered position.  FIG. 6A  illustrates a side view of the example differential pulley actuator  500 ,  FIG. 6B  illustrates a bottom view of the example differential pulley actuator  500 ,  FIG. 6C  illustrates an end view of the example differential pulley actuator  500 ,  FIG. 6D  illustrates a side perspective view of the example differential pulley actuator  500 , and  FIG. 6E  illustrates a bottom perspective view of the example differential pulley actuator  500 . 
     Within examples, in operation of the differential pulley actuator  500 , rotation of the first timing belt pulley pair  510   a - b  in one direction causes the tension-bearing element  516  to wind onto a first pulley  510   b  of the first timing belt pulley pair  510   a - b  and unwind from a second pulley  510   a  of the first timing belt pulley pair  510   a - b . Similarly, rotation of the second timing belt pulley pair  5112   a - b  causes the tension-bearing element  522  to wind onto a first pulley  512   b  of the second timing belt pulley pair  512   a - b  and unwind from a second pulley  512   a  of the second timing belt pulley pair  512   a - b . Rotation of the first timing belt pulley pair  510   a - b  and the second timing belt pulley pair  512   a - b  causes movement of the first idler pulley element  514  and the second idler pulley element  520  toward and away from the output pulley  508  resulting in the tension-bearing element  518  being pulled to rotate the output pulley  508 . 
     The examples shown in  FIGS. 6A-6E  illustrate the first idler pulley element  514  moving away from the output pulley  508  and the second idler pulley element  520  moving toward the output pulley  508  resulting in the first idler pulley element  514  and the second idler pulley element  520  being in a staggered position. 
     The differential pulley actuator  500  includes a dual design with the first timing belt pulley pair  510   a - b  and the second timing belt pulley pairs  512   a - b . Rotation causes winding up on one pulley of each pair and winding down on the other pulley of each pair. The two separate idler assemblies (the first idler pulley element  514  and the second idler pulley element  520 ) are driven back and forth. There is a single rotating assembly (e.g., input drive gear  502 ) as opposed to two, which requires fewer bearings and may be simpler to manufacture. 
       FIGS. 7A-7E  illustrate another example differential pulley actuator  700  in a nominal position.  FIG. 7A  illustrates a side view of the example differential pulley actuator  700 ,  FIG. 7B  illustrates a bottom view of the example differential pulley actuator  700 ,  FIG. 7C  illustrates an end view of the example differential pulley actuator  700 ,  FIG. 7D  illustrates a side perspective view of the example differential pulley actuator  700 , and  FIG. 7E  illustrates a bottom perspective view of the example differential pulley actuator  700 . 
     The differential pulley actuator  700  includes a first input drive gear  702  for coupling to a motor  704  and the first input drive gear  702  couples rotation of the motor  704  to rotation of an output pulley  706 . The differential pulley actuator  700  includes a first timing belt pulley pair  708   a - b  coupled to the first input drive gear  702 , and rotation of the first input drive gear  702  causes rotation of the first timing belt pulley pair  708   a - b . The differential pulley actuator  700  also includes a first idler pulley element  710  suspended between the first timing belt pulley pair  708   a - b  and the output pulley  706  and held in tension to the first timing belt pulley pair  708   a - b  via a tension-bearing element  712  and to the output pulley  706  via another tension-bearing element  714 . 
     The differential pulley actuator  700  also includes another input drive gear  716  for coupling to the motor  704 , and the input drive gear  716  couples rotation of the motor  704  to rotation of the output pulley  706 . The differential pulley actuator  700  includes a second timing belt pulley pair  718   a - b  coupled to the input drive gear  716 , and rotation of the input drive gear  716  causes rotation of the second timing belt pulley pair  718   a - b . The differential pulley actuator  700  further includes a second idler pulley element  720  suspended between the second timing belt pulley pair  718   a - b  and the output pulley  706  and held in tension to the second timing belt pulley pair  718   a - b  via a tension-bearing element  722  and to the output pulley  706  via the tension-bearing element  714 . 
     The output pulley  706  couples to a load (not shown) and the output pulley  706  couples to the first idler pulley element  710  and the second idler pulley element  720  via the tension-bearing element  706  looping around the output pulley  706 . The output pulley  706  is configured to apply motion of the first idler pulley element  710  and the second idler pulley element  720  to the load. A differential or other mechanism may be attached to the output pulley  706  to provide a multiple degree of freedom (DOF) joint. 
     The first idler pulley element  710  and the second idler pulley element  720  may contain similar components. In  FIG. 7A , the second idler pulley element  720  is shown to include a frame  724  that couples to the tension-bearing element  714 , and multiple pulleys  726   a - b  that couple to the frame  724 . The tension-bearing element  722  loops around the multiple pulleys  726   a - b.    
     The input drive gears  702  and  716  couple to a gear  728  of the motor  704 . The configuration of the differential pulley actuator  700  in  FIGS. 7A-7E  is such that the first timing belt pulley pair  708   a - b  and the second timing belt pulley pair  718   a - b  are positioned in a side by side configuration, or a parallel configuration, and the motor  704  is positioned between the first timing belt pulley pair  708   a - b  and the second timing belt pulley pair  718   a - b.    
     Within examples, in operation of the differential pulley actuator  700 , rotation of the first timing belt pulley pair  708   a - b  causes the tension-bearing element  712  to wind onto a first pulley  708   a  of the first timing belt pulley pair  708   a - b  and unwind from a second pulley  708   b  of the first timing belt pulley pair  708   a - b . Rotation of the second timing belt pulley pair  718   a - b  causes the tension-bearing element  722  to wind onto a first pulley  718   a  of the second timing belt pulley pair  718   a - b  and unwind from a second pulley  718   b  of the second timing belt pulley pair  718   a - b.    
     In addition, rotation of the first timing belt pulley pair  708   a - b  and the second timing belt pulley pair  718   a - b  causes movement of the first idler pulley element  710  and the second idler pulley element  720  toward and away from the output pulley  706  resulting in the tension-bearing element  714  being pulled to rotate the output pulley  706 . 
     The differential pulley actuator  700  is provided in a configuration such that the input drive gears  702  and  716  and the output pulley  706  each rotate about respective axes that are parallel. The first timing belt pulley pair  708   a - b  and the second timing belt pulley pair  718   a - b  are upright with respect to the output pulley  706 . 
       FIG. 8  is a block diagram illustrating an example system for control of a differential pulley actuator. As shown in  FIG. 8 , an encoder  802  may couple to a motor  804  that drives a differential pulley actuator  806 . A tension or force sensor  808  determines a tension sensor measurement, F id , and outputs the tension sensor measurement to a controller  810 . Another encoder  812  may couple to an output pulley of the differential pulley actuator  806  to sense a joint angle, Θ j , or load position. The encoders  802  and  812  may be optical encoders, Hall effect sensors, or other capacitive angle sensors, for example. The differential pulley actuator  806  may be controlled by the motor amplifier  810  that receives as inputs Θ m , the motor angle, the tension sensor measurement, F id , and optionally Θ j , the joint angle, and outputs a commanded motor winding current, I, as a function of these inputs according to a control law module  814 . The motor winding current, I, causes the motor  804  to drive the differential pulley actuator  806  for an output torque, T q , that is applied to a load  816 . 
     The control law module  814  may transform state variables into command current to motor. A full state control or measure of a full state of the system (e.g., motor position with encoder, motor velocity, motor acceleration, joint position with encoder, output torque with load cells) can be utilized as a linear combination to calculate the command current. A servo-loop is created around tensor sensor values for torque applied at a joint. The control law module  814  may operate as a known proportional integral derivative (PID) module, for example. A PID controller may include a control loop feedback mechanism that calculates an error value as a difference between a measured process variable and a desired set point. The PID controller attempts to minimize the error by adjusting process control outputs. The PID controller algorithm may involve three separate constant parameters, including the proportional, the integral, and the derivative values, denoted P, I, and D. These values can be interpreted in terms of time: P depends on the present error, I on accumulation of past errors, and D is a prediction of future errors, based on current rate of change. A weighted sum of these three actions is used to adjust a process via a control element such as the output torque to be applied. 
     The control law module  814 , or other components of the design in  FIG. 8 , may represent a module, a segment, or a portion of program code, which includes one or more instructions executable by a processor for implementing specific logical functions or steps in the process. The program code may be stored on any type of computer readable medium, for example, such as a storage device including a disk or hard drive. The computer readable medium may include a non-transitory computer readable medium, for example, such as computer-readable media that stores data for short periods of time like register memory, processor cache and Random Access Memory (RAM). The computer readable medium may also include non-transitory media, such as secondary or persistent long term storage, like read only memory (ROM), optical or magnetic disks, compact-disc read only memory (CD-ROM), for example. The computer readable media may also be any other volatile or non-volatile storage systems. The computer readable medium may be considered a computer readable storage medium, a tangible storage device, or other article of manufacture, for example. 
     The control law module  814 , or other components of the design in  FIG. 8 , may also be a computing device (or components of a computing device such as one or more processors), that may execute instructions to perform functions as described herein. 
       FIG. 9  illustrates a schematic drawing of an example computing device  900 . In some examples, some components illustrated in  FIG. 9  may be distributed across multiple computing devices. However, for the sake of example, the components are shown and described as part of one example device  900 . The device  900  may be or include a mobile device, desktop computer, tablet computer, or similar device that may be configured to perform the functions described herein. 
     The device  900  may include an interface  902 , sensor(s)  904 , data storage  906 , and a processor  908 . Components illustrated in  FIG. 9  may be linked together by a communication link  910 . The communication link  910  is illustrated as a wired connection; however, wireless connections may also be used. The device  900  may also include hardware to enable communication within the device  900  and between the client device  900  and another computing device (not shown), such as a server entity. The hardware may include transmitters, receivers, and antennas, for example. 
     The interface  902  may be configured to allow the device  900  to communicate with another computing device (not shown), such as a server. Thus, the interface  902  may be configured to receive input data from one or more computing devices, and may also be configured to send output data to the one or more computing devices. The interface  902  may also be configured to receive input from and provide output to a torque controlled actuator or modular link of a robot arm, for example. The interface  902  may include a receiver and transmitter to receive and send data. In other examples, the interface  902  may also include a user-interface, such as a keyboard, microphone, touchscreen, etc., to receive inputs as well. 
     The sensor  904  may include one or more sensors, or may represent one or more sensors included within the device  900 . Example sensors include an accelerometer, gyroscope, pedometer, light sensors, microphone, camera, or other location and/or context-aware sensors that may collect data of the differential pulley actuator (e.g., motion of timing belt pulleys or idlers) and provide the data to the data storage  906  or processor  908 . 
     The processor  908  may be configured to receive data from the interface  902 , sensor  904 , and data storage  906 . The data storage  906  may store program logic  912  that can be accessed and executed by the processor  908  to perform functions executable to determine instructions for operation of the differential pulley actuator. Example functions include determination of motor current based on sensed tension in timing belts, output torque, and optionally angular displacements of output pulleys based on a control loop or other feedback mechanism to determine desired output torques. Any functions described herein, or other example functions for the differential pulley actuator may be performed by the device  900  or one or more processors  908  of the device via execution of instructions stored on the data storage  906  or otherwise received. 
     The device  900  is illustrated to include an additional processor  914 . The processor  914  may be configured to control other aspects of the device  900  including displays or outputs of the device  900  (e.g., the processor  914  may be a GPU). Example methods described herein may be performed individually by components of the device  900 , or in combination by one or all of the components of the device  900 . In one instance, portions of the device  900  may process data and provide an output internally in the device  900  to the processor  914 , for example. In other instances, portions of the device  900  may process data and provide outputs externally to other computing devices. 
     Within some examples herein, operations may be described as methods for performing functions, and methods may be embodied on a computer program product (e.g., a tangible computer readable storage medium or non-transitory computer readable medium) that includes instructions executable to perform the functions. 
       FIG. 10  is a flowchart illustrating an example method  1000  for operating a differential pulley actuator. At block  1002 , the method  1000  includes providing input drive gears for coupling to a motor and for coupling rotation of the motor to rotation of an output pulley. At block  1004 , the method  1000  includes causing rotation of the input drive gears to rotate a first timing belt pulley in a first direction and a second timing belt pulley in a second direction opposite the first direction. At block  1006 , the method  1000  includes suspending multiple idler pulleys between the timing belt pulleys and the output pulley. The multiple idler pulleys are held in tension between the one or more timing belt pulleys via a first tension-bearing element and the output pulley via a second tension-bearing element, and the first tension-bearing element loops around the one or more timing belt pulleys and the multiple idler pulleys. At block  1008 , the method  1000  includes the output pulley applying motion of the multiple idler pulleys to a load. 
     The differential pulley actuator described in  FIGS. 1-10  above may be used in many implementations. Example implementations include a modular robot link or actuator system. 
     It should be understood that arrangements described herein are for purposes of example only. As such, those skilled in the art will appreciate that other arrangements and other elements (e.g. machines, interfaces, functions, orders, and groupings of functions, etc.) can be used instead, and some elements may be omitted altogether according to the desired results. Further, many of the elements that are described are functional entities that may be implemented as discrete or distributed components or in conjunction with other components, in any suitable combination and location, or other structural elements described as independent structures may be combined. 
     While various aspects and embodiments have been disclosed herein, other aspects and embodiments will be apparent to those skilled in the art. The various aspects and embodiments disclosed herein are for purposes of illustration and are not intended to be limiting, with the true scope being indicated by the following claims, along with the full scope of equivalents to which such claims are entitled. It is also to be understood that the terminology used herein is for the purpose of describing particular embodiments only, and is not intended to be limiting.