The present invention relates to boxing robots and more particularly to balancing boxing robots designed to move on a surface with the aid of wheeled legs.
Balancing robots are well known. Such devices rely on a two-wheel drive mechanism and an algorithm to keep the robot generally upright while standing or moving. These devices can be configured in a way that would never fall over. These devices can also be adapted into boxing robots that can stay upright to varying degrees while taking and receiving punches. As such, the ability to create a pair of boxing robots for kids that simulates a boxing match and that leads to a single winning robot is highly desired. Not only does the robot have to be able to counter the punches delivered it must monitor received punches such that the robot can exhibit almost human boxing characteristics such as fatigue or exhaustion, as well as being configured to almost fall then regain balance, and fall and remain prone indicating a loss of the fight. The present invention builds upon the prior art to solve one or more of these issues.
The robots are each designed with one or more of the following characteristics
For a fuller understanding of the nature of the present invention, reference should be made to the following detailed description taken in conjunction with the accompanying drawings in which:
While the invention is susceptible to embodiments in many different forms, there are shown in the drawings and will be described herein, in detail, the preferred embodiments of the present invention. It should be understood, however, that the present disclosure is to be considered an exemplification of the principles of the invention and is not intended to limit the spirit or scope of the claims by the embodiments illustrated.
Referring now to the Figures, robot 100 is roughly human in shape. The shape is cosmetic in selection to resemble a mix of a human boxer and humanoid robots.
In the preferred embodiment, robot 100 includes a body 102 with two motors 138, 139, two actuators 148, 149, two articulated arms 144, 145, two wheels 134, 135, battery pack 160, and controller 120. Left wheel 134 is driven by left drive motor 138, and right wheel 135 is driven by right motor 139. Left articulated arm 144 is driven by left actuator 148, and right articulated arm 145 is driven by right actuator 149. Controller 120 is electrically connected to and powered by battery pack 160. Controller 120 is further electrically connected (not shown in
Referring now to
Gyroscope subsystem 230 includes a gyroscopic sensor and/or components that provides inertial gyroscopic rates to microcontroller 210 such as is required to perform various algorithms for the functioning of robot 100. Accelerometer subsystem 240 includes an accelerometer sensor and/or components that provides inertial acceleration measurements to microcontroller 210 to be used for robot 100 functionality such as punch detection.
Four (4) high power drivers 250, 260, 270, 280 are employed to facilitate the control of drive motors 138, 139, and arm actuators 148, 149. Power drivers 250, 260, 270, 280 include current monitor subsystems (imon referenced in
Battery 160 provides power to controller 120. In addition, microcontroller 210 provides a means of measuring the voltage of battery pack 160 to facilitate functionality of robot 100.
Robot 100 performs self-balancing by virtue of the subsystems and firmware embodied within. Self-balancing is well known in the field of robotics. The choice to use self-balancing is based on several factors:
Referring now also to
For left articulated arm 144, shoulder assembly is comprised of rigidly connected shoulder members inner shoulder 440, outer shoulder 485, and rear shoulder 495. Shoulder assembly 465 is rigidly connected to the main body of robot 100 and serves to form the support structure portion of articulated arm 144. Shaft 410 is rotatably mounted in shoulder assembly 440, 485, 495 through rotational bearing 420. In addition, shaft 410 is rigidly connected to bicep 450 such that a counter-clockwise rotation of shaft 410 as viewed facing the annotated face of shaft 410 causes elbow joint 475 of bicep 450 to swing outward from robot 100 body about the axis of shaft 410. Shoulder gear 430 is rigidly fixed to shoulder assembly 440, 485, 490 and does not move with respect to robot 100 body. Idler gears 490 are rotationally mounted on bicep 450 such that they rotate freely on a bearing (not visible) in bicep 450. However, idler pair 490 is arranged to engage with fixed shoulder gear 490. Forearm gear pair 460 is rotationally mounted on bicep 450 at elbow joint 475 and is rigid with respect to forearm 470. Forearm gear pair 460 is arranged to engage with idler gear pair 490. Thus when shaft 410 rotates in bearing 420 in a counter-clockwise direction as viewed facing the annotated face of shaft 410, elbow joint 475 of bicep 450 swings away from robot 100 body with shoulder gear 430, idler gear pair 490, and forearm gear pair 460 engaged in such a way as to cause forearm 470 to extend away from robot 100 body, thus causing first 480 to “throw a punch”. In operation, shaft 410 is driven by left actuator 148, which is rigidly fixed to robot 100 body. Various gear ratios may be used to provide variations on essentially the same extension motion.
Referring now to
Referring now also to
The goal is to create a robot that looks like a boxer dancing, bobbing, and weaving without the user doing anything. These basic movements need to be automatic or appear automatically when based on responses from inputs during fighting. This is done by adding the new and unique erratic injector algorithm 500 into the balance algorithm 600.
The erratic injector algorithm adds small amounts of forward or reverse movement to the output of the balance algorithm. The direction and time can both be varied. The extent to which they can be varied depends on the robot's dynamics. The result of randomness on both wheels independently is random extra motion forward, reverse, right and left. By tuning the randomness to bias towards a pattern, the robot can look like it's doing a slight dance. This randomness can continue not only when the robot is not commanded to move, but also while the robot is moving. This makes even straight forward or back movements appear to include a swagger (gait or manner in moving) to the robots.
The balancing algorithm can receive wireless control inputs for movement. The user can control both wheels independently, allowing for variable directions and turning.
The balance algorithm should also account for changes in center of gravity (CG) due to punching. This CG offset needs to take the position of both arms into account. Even if the arm motors do not have position encoders, the position can be estimated based on when punches are initiated, and the length of time the punch takes to occur. This Arm Position Estimation 650 is feed to the balance algorithm and may additionally need to account for the angular rotation caused by the arm's motion.
Articulated arms 144,145 rest in a position constrained by a hard, mechanical stop. The relatively invariant physical parameters of articulated arms 144,145 and their known resting position make it possible to predict their position during actuation. The extension of articulated arms 144, 145 during actuation cause a change in the center of balance of robot 100 given by a predetermined function of the actuator arm 144, 145 position. Arm Position Estimator 650 calculates the change in center of balance during the duration of a punch actuation of articulated arms 144, 145 and creates balance adjustment signal 660. Balance adjustment signal 660 is input into balance controller algorithm 600 whereupon it uses the information of balance signal 660 to anticipate and compensate for the motion of actuator arms 144, 145.
Additionally, the extension of articulated arms 144, 145 imparts an angular momentum impulse into the robot 100 that perturbs robot 100 angle slightly backwards and then slightly forwards. In the present invention, the extension profile of articulated arms 144, 145 is estimated in the time domain. Said extension profile is used to estimate the angle profile in the time domain of robot 100 by virtue of the physical dynamics of articulated arms 144, 145 and robot 100. In the present invention this estimated robot 100 angle profile due to articulated arms 144, 145 extension, and imparted into robot 100 angle profile is subtracted from the measured robot 100 angle so as to prevent an unnecessary reaction in balance controller 600.
Referring now more closely to
The present invention further includes compensation for a landed punch. Certain predetermined punch sequences that may be initiated by the user may compensate for an expected landed punch. In this case, the expected robot 100 angle profile in the time domain, actuator 148, 149 current profile in the time domain, and predicted balance center profile in the time domain may all include the assumption that the punch lands. Further feedforward wheel drive 630 commands or user motion commands 640 may be included to help deliver greater punch force to the target. In this case, if the punch does not land as anticipated, robot 100 may stumble similar to how a human boxer would stumble when missing a punch.
Referring now to
Continuing to refer to
A damage detection algorithm operates along with the balance algorithm, monitoring for large signals on damage event output 795. The damage detector 700 is used to detect when the robot has been punched. The magnitude of damage event output 795 determines whether a large or small punch was detected. The accumulation of damage event output 795 signals is used to determine appropriate changes in the robot's behavior to simulate various degrees of performance degradation in the eyes of the operator.
The damage behavior algorithm is used to make the robot look like it is getting weaker. As the levels of damage escalate, various behaviors are changed. The balance algorithm is made less stable by modification of loop variables, adding more deviation to the balance. The robot can start to have delays in response to user inputs, mimicking sluggish behavior. These delays need to be longer than 125 milliseconds so the user notices the reaction is slowed. When the total damage reached a maximum level, the robot can the programmed to take a fall.
The present invention includes a novel control loop which includes new means of achieving certain responses designed to enhance play-value. In general terms, the control loop provides some features of the prior art, namely a nested loop architecture that provides for balancing, re-balancing to new loads, and velocity control. However, the novel features of the present invention further include dynamic control of the inner-loop (balance loop) compensator parameters and further include direct perturbation of the angle set-point. In this way, realistic action is exhibited in the form of unsure footing (wobbling and almost falling over), and reaction stimulus that mimics external perturbations of various types. Further, additive velocity perturbations are applied to cause staggering or stepping (these inputs are not shown explicitly in the diagram, but come in through the normal velocity commands as additive inputs). With these three novel control mechanisms, realistic boxer behavior is simulated.
Taking hits without falling is important to simulating boxing. This involves a balance of regulating the amount of force in a robot's punch, and the amount of disturbance the balance algorithm and the robot's dynamics can withstand. The goal is a robot that will not fall over at the slightest punch. The delicate balance of taking punches but falling sometimes is not reasonable to achieve in a functional design. The better method is to create a robot that cannot be easily knocked down by a similar robot, then intentionally creating a fall when enough damage is taken. The programmer then has control to determine the approximate length of matches. The programmer can also control the amount of randomness in the match before the end. Making the play pattern match the attention span of kids is important in toy design. Having control over how fast a fight will end or preventing the fight from ending too soon or taking too long is key to keeping kids attention.
Referring now to
This is particularly helpful when two balancing robots are commanded to push on each other. In such a case, without proximity detection and overriding the control inputs, the most likely outcome would be loss of control and toppling of both robots.
In an alternative embodiment, illustrated in
Said chest-mounted magnetometer 830 is further used, in conjunction with magnets 840, 850 in the robot 100 fists 480, 481, to detect direct hits as well as weak hits and near misses. In this embodiment, the fist-mounted magnets 480, 481 are polarized so that North points forward, away from fists 480, 481. As such, the chest-mounted magnetometer 830 can detect not only the distance of the punches, but whether they came from the front or from behind.
In an alternative embodiment, the magnets 840, 850 in the robot fists 480, 481 respectively are arranged as North-forward for left magnet 840 in left first 480, and South-forward for right magnet 850 in right first 481, to provide left versus right punching information to on-board processor 120. This information (as provided in either embodiment) can be used to program appropriate responses to the punch. For example, if magnetometer 830 on a robot 100 determines it was hit with a left punch, and said robot 100 has just been commanded to throw a right punch, it can turn left as it throws the punch (as a real boxer would do) to better hit the opposing robot 100, rather than throw a punch into the air.
Referring now also to
As a further feature of the present odometry invention, motions of the wheels can be used to sense input gestures from the user, for example a rapid swipe forward may indicate various operational modes. As a further feature of the invention, the odometry data is also be used as input to the control loop to improve the response as is sometimes done in the prior art.
In an alternative embodiment, position (odometry) encoders are avoided by the use of inertial measurements. In this embodiment, precise turning is obtained by numerical integration of a gyroscopic rate about the substantially vertical axis. Thus, for example, a precise and rapid 90 degree rotation can be executed as part of a dancing algorithm.
It is common in the prior art to use a PID (Proportional, Integral, Differential) controller. In the preferred embodiment, an EKF (Extended Kalman Filter,
In the present invention, a punch classifier technique and algorithm is employed operating from the full differential state vector as well as full inertial sensor inputs from the on-board sensors. The inertial sensors include additional axis of gyroscope, accelerometer, and magnetometer. The differential state vector contains the full robot state allowing the punch to be accurately detected and classified. In the case of the example of the last paragraph, the information in the differential state vector, would allow it to be distinguished as an offset punch. The accuracy with which the punches are detected and classified directly correlates to the realism of play. This is because a few well landed punches should have more impact on a health metric, than several poorly landed punches. The present invention employs a classification algorithm that takes as input the full differential state vector in order to accurately detect and classify punches.
A unique shut-down algorithm of this invention is used to determine when the robot should transition from an active balancing state to an idle state. In the active balance state, the motors are driven to compensate for any tendency for the robot to tip over, as well as to reflect the desired driving and punching commands of the user. In contrast, the idle state is one in which the motors are not driven, nor are punches thrown in response to user input. It is desirable to transition to an idle state when the robot falls down or is stowed so that the motors do not cause erratic behavior, noise, and battery drain. The present invention employs an algorithm to determine when the robot is no longer balancing using the differential state vector as well as the inertial sensor inputs. In the preferred embodiment, the inertial sensor inputs are used to determine the full robot attitude with respect to the acceleration of gravity of Earth. Thus the algorithm determines when the robot is in an attitude where it is known to be unable to maintain balance. When such attitudes are measured, for a predetermined amount of time, the robot enters into the idle state. A filter is used to ensure that a plurality of consecutive measurements are averaged such that single anomalous measurement events do not cause the robot to transition to the idle state.
A unique instantiation algorithm 1000,
Referring also to
A further method of this invention is to model the gear-train backlash by a torsional spring 1150 between the gearbox 1120 and wheel 1130. This method accounts for gear backlash without modeling the nonlinear backlash gap. In this technique, the torsional spring constant, results in a torsional angle that generally approximates the backlash gap, and thereby adequately models the robot dynamics.
A further feature of the present invention is the use of a low-cost, high-bandwidth, current feedback sub-loop closed by the on-board microcontroller in combination with a low-inertia gear train. This combination further mitigates the effects of backlash, which as mentioned above, is the number one non-ideality in balancing robot dynamics that limits performance. Although current feedback is known to those familiar with the art, the specific application of a current-control loop to overcome gear backlash in a balancing robot is novel. A further feature of the invention is that the current loop is made to be inexpensive by virtue that the loop is closed in software. In the present invention, a high-bandwidth current measurement is taken by analog to digital conversion at a high sample rate. The motor PWM is then controlled by the software control loop to attain a current set point. This becomes a sub-loop where the outer balancing loop programs said current set point in order to control the robot. The current control sub-loop of the present invention provides several benefits. One benefit of the present invention is that the effects of gear train backlash are mitigated. This occurs because the electric motor current adjusts the armature force in a substantially linear fashion, and substantially independent of motor speed. Thus when a motor current is programmed, the motor will advance at a speed such as to apply the force as prescribed by the programmed current. If the direction of current reversed, the motor will accelerate rapidly to take up any gear train backlash so as to apply said force. A further feature of the invention is that implementation by software is relatively inexpensive compared to the hardware equivalent. A further feature of the invention is that the system is made practical by careful design of the loop bandwidth of the current control loop. Here the loop bandwidth is chosen to be sufficiently high to adequately overcome gear backlash, while not too high so as to require expensive processing power.
Taking a fall is a dramatic part of boxing. A balancing robot can choreograph a variety of falls due to its inherent instability. Each of the following falls can be randomized in selection and intensity, creating a different and dramatic fall every time. Prior to the fall, the robot can be programmed to move back or turn slightly while the balance algorithm continues to run. After an optional pre-fall move a fall motion occurs. Each of fall motions are initiated after the balance algorithm is stopped. By driving both motors forward, the robot will be made to fall backwards. By driving both motors backward the robot can be made to fall forward. Both of the previous falls can be varied with motor speed, causing slow or fast falls. By stopping both of the motors completely, a slow and random direction collapse occurs. By driving the motors in a right or left turn, the robot can make a spinning fall in either direction. An additional range of falls can be made by leaving the balancing algorithm running, but with gains set to levels that ensure an eventual fall.
An endurance algorithm can be implemented to measure the amount of simulated energy the robot has used. Punches can have different levels of force. High force punches use more endurance. Low force punches use less endurance. As the endurance usage escalates the robot can start to change behavior in various ways. Each of the following options can be randomized in selection and intensity, creating a different reaction, that can seem more lifelike due to its unpredictability. The robot can start to punch slower as endurance is used; similarly the robot can punch with less force. The maximum speed of the robot can be reduced. The swagger that was added to the balance algorithm can be reduced to zero, making the robot appear to be less energetic. In addition, during movement of the robot if over a specified period of time a robot is not using energy and simply dancing or paused simulated energy may begin to build up over time allowing the robot to increase or recover some of its endurance. This can allow a robot to regain strength and swagger.
The head connection to the robot torso is allowed to rotate right to left a small amount. This allows the head to randomly move right and left and the robot moves, making the robot seem more alive. Additionally, punches to the head can cause the head to turn in reaction to the punch, adding more realism. The head can also be attached in a manner that allows the head to be knocked off. A hard enough punch to the head or the robot or body of the robot could cause the head to come off.
In reference to FIGS, there is provided a robot 100. The robot 100 includes a body 110 defined to have an upper body portion 114 and a lower body portion 118. The robot 100 further includes a control system 120 attached to the body 100, which includes a programmable circuit board to receive a set of pre-programmed instructions and pre-programmed algorithms to control the movement and actions of the robot. The control system further includes a receiver (wirelessly or wired) configured to receive movement actions from a remote control 200 (wirelessly connected to the control system or hard wired with a tether into an input port. The control system 120 further having at least one axis of inertial sensing to support balancing of the robot in an upright configuration. The robot further includes two wheel assemblies 130 attached to the lower body 118. Each wheel assembly includes a wheel 134 independently controlled with a rotating motor 138. Each wheel is positioned for contact with a surface to control movement of the robot. The robot 100 further includes at least two arm assemblies 140 separately attached to the upper body portion 114. Each arm assembly 140 includes an arm 144 independently controlled with rotating motors 148.
The robot may further include at least two leg assemblies separately attached to either the upper body portion—below the arm assemblies or attached to the lower body portion above or adjacent to the wheel assemblies. Each leg assembly would be controlled with the use of rotating motors and posed to strike out and up as a kickboxer would strike in a fight.
The preprogrammed algorithms are configured to include a balance algorithm to (a) maintain the robot in an upright configuration during movement and actions of the robot, (b) cause the robot to maintain an upright configuration upon sensing an impact or force onto the robot, (c) cause the robot to fall into a prone configuration on a surface upon sensing either a strong impact or force (defined above a threshold impact or force) onto the robot or sensing repeated impacts above a threshold number of impacts, and (d) create specified movement of the robot to mimic swagger, loss of energy or endurance, and additional wobble to imitate being dazed. The set of preprogrammed instructions configured to include movement instructions defined to: (a) control the wheels to move the robot forward, backward, left and right, and (b) control the arms to move one or both of the arms upward, downward, in a partial or full forward extension and in a partial or full backward contraction to mimic punching.
Alternate embodiments. The described embodiment is made to be human like in shape and arm movement. Additional embodiments can alter the fighting style while using all the same features as described previously
As described previously is a Boxer with two similar arm motions providing a forward punch with adjustable up and down punch positioning.
Alternate 1—Boxer with two different arms. One arm is changed to punch across with adjustable right to left punch positioning.
Alternate 2—Robotic Boxer with non-human like weapons and attachments. Options include a hammer arm that is purely rotary without an elbow joint, a grappling arm, etc.
Alternate 3—Knight with two different arm motions and attachments. Sword arm and shield arm. The sword can be a top down swing, or a side swing. The shield movement is a forward and up movement, allowing for both blocks and bashing the opponent with the shield.
Alternate 4—A soldier with a human like arm with shoulder and elbow, with a knife in his hand. The other hand is a stationary sub-machine gun.
List of Algorithms
Finite Difference—this provides approximations to derivatives of functions.
Discrete Integral—this algorithm provides a discrete-time approximation to an integrator.
Reciprocal Square Root—fast method of computing the reciprocal square root of a floating point number.
Extended Kalman Filter—This is a linearized state-variable, optimal estimation filter for non-linear systems.
PID controller—this is a compensation technique for use in a closed-loop control system.
Differential State Vector Punch Classifier—this is an algorithm of the present invention in which a difference between the predicted next-state and the measured next state is used to classify external stimulus to determine its nature.
Laplace Transform—is a method of solving differential equations using algebraic equations.
Lagrangian Mechanics—is a method of solving for the equations of motion of a system with holonomic constraints in generalized coordinates.
Endurance Algorithm—a method of this invention to quantify each punch thrown to simulate the sum of the energy expended over a period in order to estimate endurance.
Balance Algorithm—A method of closing a feedback loop upon the sensor measurements and actuators such that one or more parameters are maintained to adjustable set points. The controlled parameters include but are not limited to, angle of center of mass about axel with respect to vertical, wheel velocity, damping factor, gyroscope offset angle, and gyroscope rate drift offset.
Fall Algorithm—a method of this invention whereby normal control inputs and/or normal loop compensation parameters are overridden in a predetermined pattern so that the robot is made to fall in a realistic and/or dramatic manner.
Anti-Backlash, Current Control Subloop Algorithm—an algorithm of this invention whereby the backlash in the drive gear-train is automatically taken up by high-bandwidth control of the current to the associated drive motor.
Shut-down algorithm—an algorithm of this invention that detects when balancing has ceased, and transitions the robot to the idle state with the motors and actuators disabled.
Instantiation algorithm—an algorithm of this invention that detects the gestures and intention of the operator to cause the robot to transition into the balance state at precisely the right moment so as to be seamless and natural.
Backlash model algorithm with gap model—an algorithm of the present invention that models gear-train backlash as a tortional spring between the gearbox and wheel and further includes a model of the backlash gap.
Backlash model algorithm—an algorithm of the present invention that models the gear-train backlash as a highly damped tortional spring between the gear-train and wheel without the use of a non-linear backlash gap model.
Current Control Algorithm—an algorithm of this invention used to maintain the motor current at a variable set-point.
Punch detector algorithm—an algorithm of this invention whereby one or more magnetometers are used to measure the signature and proximity magnets in the opponent's first to determine the exact nature of the measured punches.
Proximity-informed command override algorithm—an algorithm of this invention whereby a method of proximity detection is used to prevent user commands from causing a loss of balance.
The present application claims the benefit of U.S. Provisional Application Ser. No. 62/566,808, filed on Oct. 2, 2017 and is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62566808 | Oct 2017 | US |