Robotic systems, such as exoskeletons and humanoid robots, are becoming more and more robust and powerful. In the case of exoskeletons, in which there is a human operator donning and operating the exoskeleton, these can inherently pose a safety risk to the human operator donning the exoskeleton, such as if one or more components or systems of the exoskeleton fails or malfunctions leading to unintended operation scenarios. In the case of both exoskeletons and humanoid robots, these can pose safety risks to others in the vicinity of the operating exoskeleton or humanoid robot as a result of similar failures of malfunctions. In addition, exoskeletons and other humanoid robots are becoming more and more prevalent in their use as technologies and efficiencies improve. Historically, many exoskeletons (full body or partial body) have been utilized in the rehabilitation industry, and consequently are quite safe because of their limited output torque to joints, and because of the medical personnel supervision over a patient using such rehabilitation-type of exoskeletons. However, in scenarios involving high-performance exoskeletons designed to significantly amplify human capabilities to perform at levels or to achieve various tasks that would otherwise be difficult or impossible or inefficient for a human to carry out alone or unaided, safety to the operator and others must be paramount and of the upmost importance from design to implementation of the functionality of the exoskeleton. Simply said, due to their intended purpose to amplify human capabilities (e.g., strength, endurance, agility, speed, and other aspects), such high-performance exoskeletons comprise operational functionality that, if not properly constrained, can overpower the operator donning the exoskeleton, thus presenting significant potential risks to the operator of serious injury or death.
An initial overview of the inventive concepts are provided below and then specific examples are described in further detail later. This initial summary is intended to aid readers in understanding the examples more quickly, but is not intended to identify key features or essential features of the examples, nor is it intended to limit the scope of the claimed subject matter.
The present disclosure sets forth an exoskeleton operable in a safety mode based on a selected control policy, comprising: a plurality of support structures; at least one joint mechanism rotatably coupling two of the plurality of support structures; a plurality of sensors associated with the at least one joint mechanism; and a controller, having one or more processors, configured to generate a plurality of command signals according to a plurality of respective control policies, and configured to generate each command signal based on sensor output data from at least one sensor of the plurality of sensors, and configured to control operation of the at least one joint mechanism according to a selected control policy, of the plurality of control policies, based on at least one of an identified discrepancy between at least some of the plurality of command signals or a determination whether each of the plurality of sensors satisfies at least one self-test defined criterion.
In one example, the at least one sensor comprises a force moment sensor configured to generate force sensor output data during use of the exoskeleton, wherein the controller is configured to generate a first command signal, of the plurality of command signals, based on the force sensor output data for facilitating control of the at least one joint mechanism in response to user movement while wearing the exoskeleton.
In one example, the plurality of sensors comprises a first sensor and a second sensor being disparate types of sensors, wherein the controller is configured to generate a first command signal, of the plurality of command signals, based on sensor output data of the first sensor, and to generate a second command signal, of the plurality of command signals, based on sensor output data of the second sensor, the controller configured to control operation of the at least one joint mechanism according to a selected one of the first or second command signals based on an identified discrepancy between the first and second command signals.
In one example, the at least one joint mechanism comprises an actuator operable to actuate the joint, wherein the controller is configured to transmit a selected command signal, of the plurality of command signals, according to the selected control policy for operating the actuator and actuating the joint.
In one example, the controller is further configured to determine whether each command signal of the plurality of command signals satisfies at least one safety control criterion.
In one example, the controller is further configured to: determine whether a discrepancy exists between the command signals of the plurality of command signals according to at least one command comparison criterion; and transmit a selected one of the command signals, according to the selected control policy, to an actuator of the at least one joint mechanism to actuate the joint.
In one example, the plurality of control policies comprises three control policies, the controller further configured to compare three command signals, each corresponding to a respective control policy, to determine whether a discrepancy exists between the command signals according to at least one command comparison criterion.
In one example, the at least one self-test defined criterion comprises at least one of an upper limit value, a lower limit value, a rate of change value, a noise level value, or a communication error.
In one example, the at least one joint mechanism comprises a plurality of joint mechanisms each rotatably coupling at least two of the plurality of support structures, wherein the controller is configured to control at least two joint mechanisms, of the plurality of joint mechanisms, according to the selected control policy of the plurality of control policies.
In one example, at least two joint mechanisms are adjacent joints of the exoskeleton.
In one example, at least two joint mechanisms are separated by at least one other joint mechanism of the plurality of joint mechanisms.
In one example, a first sensor associated with the first control policy comprises a force moment sensor, and wherein second and third sensors associated with the second control policy comprises a torque sensor and an inertial measurement unit (IMU) sensor, respectively, whereby the first control policy comprises a contact displacement control policy, and whereby the second control policy comprises an admittance control policy.
The present disclosure sets forth an exoskeleton, comprising: a plurality of support structures; a plurality of joint mechanisms each rotatably coupling two of the plurality of support structures; a plurality of sensors configured to generate sensor output data; a redundant control policy system operable to control at least one joint mechanism, the redundant control policy system comprising: at least two sensors, of the plurality of sensors, associated with the at least one joint mechanism; a controller, having one or more processors, configured to: determine whether each of the at least two sensors satisfy at least one self-test defined criterion; and control operation, based on the determination, of the at least one joint mechanism according to a selected control policy of the plurality of control policies.
In one example, a first sensor of the at least two sensors comprises a force moment sensor configured to generate force sensor output data during use of the exoskeleton, wherein the controller is configured to generate a first command signal according to a first control policy based on the force sensor output data for facilitating control of the at least one joint mechanism in response to user movement while wearing the exoskeleton.
In one example, the at least two sensors comprises a first sensor and a second sensor being disparate types of sensors, wherein the controller is configured to generate a first command signal according to a first control policy based on sensor output data of the first sensor, and to generate a second command signal according to a second control policy based on sensor output data of the second sensor, the controller configured to control operation of the at least one joint mechanism according to a selected one of the first or second command signals based on an identified discrepancy between the first and second command signals.
In one example, the at least one joint mechanism comprises an actuator operable to actuate the joint, wherein the controller is configured to transmit the selected one of the first or second command signals for operating the actuator.
In one example, the controller is further configured to determine whether each command signal of a plurality of command signals satisfies at least one safety control criterion, wherein each command signal is generated according to a respective control policy of the plurality of control policies.
In one example, the plurality of control policies comprises three control policies, the controller further configured to compare three command signals, each corresponding to a respective control policy of the three control policies, to determine whether a discrepancy exists between the three command signals according to at least one command comparison criterion.
In one example, the plurality of sensors comprises first, second, and third sensors of disparate types of sensors, each associated with a respective control policy of the three control policies.
In one example, the plurality of joint mechanisms comprises at least two joint mechanisms defining adjacent joints of the exoskeleton, each joint mechanism of the at least two joint mechanisms comprising an actuator controllable by the controller via the selected control policy.
The present disclosure sets forth a method for safe operation of an exoskeleton, the method comprising: operating at least one joint mechanism of the exoskeleton according to a first control policy of a plurality of control policies; operating a redundant control policy system of the exoskeleton, the redundant control policy system comprising a plurality of sensors and a controller, the plurality of sensors being associated with the at least one joint mechanism; facilitating operating the at least one joint mechanism according to a first control policy of a plurality of control policies; facilitating switching from the first control policy, using the controller, to a second control policy based on at least one of an identified discrepancy between command signals associated with respective control policies, or a determination whether each of the plurality of sensors satisfies at least one self-test defined criterion; and operating the at least one joint mechanism, using the controller, according to the second control policy.
In one example, operating the at least one joint mechanism according to the first control policy comprises actuating an actuator of the at least one joint mechanism based, at least in part, on the sensor output data from at least one sensor of the plurality of sensors.
In one example, operating the redundant control policy system comprises facilitating the controller to determine whether each command signal, of a plurality of command signals associated with a respective control policy, satisfies at least one safety control criterion.
In one example, operating the redundant control policy system comprises facilitating the controller to: determine whether the discrepancy exists between the command signals according to at least one command comparison criterion; and transmit a selected one of the command signals, according to a selected control policy of the plurality of control policies, to an actuator of the at least one joint mechanism to actuate the joint.
In one example, the method can comprise operating at least two joint mechanisms, using the controller, according the second control policy.
Features and advantages of the invention will be apparent from the detailed description which follows, taken in conjunction with the accompanying drawings, which together illustrate, by way of example, features of the invention; and, wherein:
Reference will now be made to the exemplary embodiments illustrated, and specific language will be used herein to describe the same. It will nevertheless be understood that no limitation of the scope of the invention is thereby intended.
As used herein, “adjacent” refers to the proximity of two structures or elements. Particularly, elements that are identified as being “adjacent” may be either abutting or connected. Such elements may also be near or close to each other without necessarily contacting each other. The exact degree of proximity may in some cases depend on the specific context.
To further describe the present technology, examples are now provided with reference to the figures. As an introduction, the present disclosure sets forth an exoskeleton having a sensor suite discrepancy detection system operable to interrogate the suite of sensors (all of the sensors) within the exoskeleton and to detect discrepant sensor output data of a plurality of sensors of the exoskeleton for safe operation of the exoskeleton. For example, if a particular sensor (e.g., a target sensor) is producing “bad” or faulty sensor output data for some reason, the sensor suite discrepancy detection system can detect the faulty sensor output data, and then “recruit” one or more other/complementary sensors of the exoskeleton capable of generating comparable sensor output data (e.g., once such output data is transformed) as a substitute for the “bad” or target sensor. The sensor suite discrepancy detection system can then execute a remedial measure, for instance, to operate the exoskeleton in a safety mode for safe operation of the exoskeleton to protect the operator (and/or others around the exoskeleton). Although not specifically discussed herein, those skilled in the art will appreciate that the technology described herein can be applicable or adapted for use in other robots or robot types, such as humanoid robots.
In one example, sensor output data generated by a position sensor associated with a joint of the exoskeleton (for determining a rotational position of the joint) may be providing inaccurate, faulty, incomplete or no output data (i.e., “bad” or “faulty” sensor output data) for a variety of reasons. One reason may be because the position sensor itself is defective. Another reason may be that a component associated with controlling the joint may be defective or malfunctioning, such as a belt, gear train, actuator/motor, drive shaft, bearing, elastic element, etc. Such possible defect or malfunctioning may result in the faulty sensor output data provided by the position sensor. In any case, the sensor suite discrepancy detection system is configured and operates to detect such faulty sensor output data, and then utilize the sensor output data from one or more pre-determined other/complementary sensors (auxiliary sensors) as a substitute for the faulty sensor output data in order to maintain or ensure continued safe operation of the exoskeleton, or to allow the operator to safely shut down and doff the exoskeleton. For instance, a torque sensor associated with a particular joint mechanism may be used to measure torque output of a shaft associated with the joint mechanism, but not necessarily used or needed for purposes of measuring rotational position of the joint. However, as will be discussed more fully below, the sensor suite discrepancy detection system can transform the sensor output data provided by the torque sensor, which can be combined with data provided with a rotor position sensor, and then compare it with the sensor output data of the position sensor to determine whether a discrepancy exists between the data from each sensor. If a discrepancy indeed exists (i.e., indicating a defect or malfunction), the sensor suite discrepancy detection system can recruit or select the torque sensor, and, for example, a rotor position sensor (and/or other sensors or a combination of sensors determined to be complementary to the position sensor) as a back-up or substitute sensor for the position sensor to determine or estimate the rotational position of the joint and can cause the exoskeleton to operate in a safety mode, such as executing a remedial measure including actuating the joint appropriately using the sensor output data from the torque (or other) sensor(s), braking the joint, or shutting down the joint mechanism and/or exoskeleton, etc., as further exemplified herein.
The term “joint mechanism” is referred to herein as a rotating mechanism that comprises a rotating joint of the exoskeleton. More specifically, a joint mechanism can comprise structural components or elements of the exoskeleton that are directly or indirectly rotatably connected or coupled to one another, and that rotate relative to one another about an axis of rotation, thus forming or defining a joint of the exoskeleton. Several different types of joint mechanisms having differing structural arrangements of different types of structural components or elements rotatable relative to one another are contemplated herein, and as such, those specifically described and shown in the drawings are not intended to be limiting in any way. In addition to the structural components or elements that are rotatable relative to one another, a joint mechanism can further comprise one or more objects, devices, and/or systems (e.g., actuator(s), sensor(s), clutch(es), transmission(s), and any combination of these), some of which can comprise or support the rotatably coupled structural components or elements of the joint (e.g., a rotary actuator having structural components or elements in the form of input and output members rotatable relative to one another that can couple to support structures of the exoskeleton, and that is operable to power the joint), or some of which facilitate rotation between two or more coupled structural components or elements (e.g., an actuated joint mechanism comprising a linear actuator operable to rotate relative to one another rotatably coupled structural components or elements in the form of support structures to provide a powered or actuated joint), or some of which indirectly rotatably couple or facilitate the rotatable coupling of the structural components or members (e.g., structural components or elements rotatably coupled together via a clutch or clutch mechanism). A joint mechanism can comprise a powered (i.e., actuated) joint or a non-powered (i.e., non-actuated or passive) joint.
In one example, a “joint mechanism” can comprise adjacent structural components or elements in the form of limb support structures that form all or part of the limbs of the exoskeleton, each having coupling portions that are configured to interface and fit with one another, and that are rotatably coupled together at a point of contact between the limb support structures, thus forming or defining a joint, wherein the limb support structures are able to rotate relative to one another about an axis of rotation of the joint mechanism (i.e., the joint axis of rotation) (e.g., a passive, non-powered exoskeleton joint in the form of or defined by two limb type support structures rotatably coupled together at respective coupling portions, such that they are rotatable relative to each other). In this example, the joint mechanism comprises a portion of the adjacent limb support structures, namely the respective coupling portions of the limb support structures.
In another example, a “joint mechanism” can comprise structural components or elements in the form of input and output members of a system or device at the point of contact between the structural components or elements (such as those part of an actuator or of a clutch device or of a brake device, or an elastic element (e.g., spring or quasi-passive elastic actuator) or of a combination of these operating together), where the input and output members are rotatably coupled together via the actuator or clutch device or brake device, or spring element, or any of these in combination, thus forming or defining a joint, and where the input and output members are able to rotate relative to one another about an axis of rotation of the joint mechanism (i.e., the joint axis of rotation) (e.g., an actuated or powered exoskeleton joint in the form of or defined by an actuator comprising input and output members of a motor indirectly rotatably coupled together, such that they are rotatable relative to each other). In this example, the joint mechanism, and particularly the input and output members of the joint mechanism, can be further coupled to respective limb type support structures, such that the limb type support structures are further caused to rotate with the input and output members, respectively, and relative to one another, about the axis of rotation of the joint mechanism.
In a specific example, a “joint mechanism” can comprise some or all of the components described in the joint mechanism 106 of
The exoskeleton 100 can comprise a suite of sensors S1-Sn configured to generate sensor output data associated with at least one operational function of the exoskeleton 100. The sensors S1-Sn can be part of the sensor suite discrepancy detection system 102, as illustrated in
Thus, the control system or controller 108 can be a bimodal or multi-modal controller that has the ability to control the operation of the exoskeleton responsive to user inputs. One such example of a contact displacement system is further described with reference to U.S. Pat. No. 8,849,457 B2, issued Sep. 30, 2014, which is incorporated by reference herein. However, it should be appreciated that an exoskeleton of the present disclosure may implement other suitable means for sensing user movement to effectuate movement of the exoskeleton in accordance with the user movement.
Sensors of the suite of sensors S1-Sn may include a variety of different sensor types for different purposes associated with operating the exoskeleton 100. For instance, the suite of sensors S1-Sn may include a variety of joint position sensors, motor rotor position sensors, joint torque sensors, thermal or temperature sensors, current sensors, and motion sensors such as Inertial Measurement Units (IMUs). Thus, a particular exoskeleton can support dozens of sensors for a variety of different purposes, such as gravity compensation functions, feedback, and others.
Notably, a plurality of sensors S1-S4 of the suite of sensors S1-Sn can be identified as a group of sensors, or a sensor group 110a, associated with the joint mechanism 106a. As introduced above, the controller 108 can be configured to determine a discrepancy between sensor output data of two or more sensors, such as between sensors S1-S4 of the sensor group 110a, and can be configured to recruit at least one sensor S1-S4 of the sensor group 110a as a substitute sensor for discrepant sensor output data. For instance, in a non-limiting example, sensor S1 can comprise a joint position sensor (e.g., Hall effect sensor; see
Of the sensor group 110a, a plurality of auxiliary sensors S2-S4 are provided and identified (pre-determined) as being “complementary” to the target sensor S1. This means that the sensor output data provided by each auxiliary sensor S2-S4 can “complement” the sensor output data provided by the target sensor S1, as one or more of the auxiliary sensors S2-S4 can be recruited and the transformed sensor output data from the one or more auxiliary sensors S2-S4 utilized in one or more ways manner as a substitute or a replacement for the sensor output data of the target sensor S1 to provide an estimation of a joint rotational position of the joint defined by the joint mechanism 106a, as further detailed below. Again, this can be for purposes of safely operating the exoskeleton, which may entail actuating the joint in a safe mode, within an acceptable and safe range of motion, or powering down or off the joint and/or the exoskeleton, for instance, in the event the controller 108 detects a discrepancy between sensor output data of the target sensor S1 and one or more of the auxiliary sensors S2-S4.
For example, sensor S2 can comprise a rotor motor position sensor that operates to generate position-type sensor output data that is received by the controller 108 for the purpose of determining a position of a rotor of an electric motor of the joint mechanism 106a, which may be the primary or intended sensing functionality of the sensor S2 to ensure that the controller 108 knows the position of the rotor for proper commutation of the motor during operation. Further to this example, sensor S3 can comprise a first inertial measurement unit (IMU) coupled to the first support structure 104a. Sensor S4 can comprise a second IMU coupled to the second support structure 104b. As further exemplified below, the sensor output data from the auxiliary sensor S2 can be transformed into data that is “comparable” to the sensor output data of the target sensor S1 so that, if a discrepancy is detected that indicates a problem or issue with the sensor output data of the target sensor S1, the output sensor data of the auxiliary sensor S2 can be used by the controller 108, such as to estimate the rotational position of the joint for controlling the joint mechanism 106a (as one example of a remedial measure). Likewise, the sensor output data from the first and second IMUs of the auxiliary sensors S3 and S4 can be transformed to data that is “comparable” with the sensor output data of the target sensor S1, so that, if a discrepancy is detected that indicates a problem or issue with the sensor output data of the target sensor S1, the output sensor data of the auxiliary sensors S3 and S4 can be used by the controller 108, such as to estimate the rotational position of the joint for controlling the joint mechanism 106a.
As indicated above, in the event the sensor suite discrepancy detection system 102 identifies a discrepancy, the controller 108 can be caused to execute a remedial measure associated with a safety mode of the exoskeleton 100. One example of a remedial measure is discussed above regarding controlling the joint mechanism 106a based on sensor output data from one or more auxiliary sensors S2-S4 rather than from that of the target sensor S1. Other examples of remedial measures are exemplified below. Failure of a joint position sensor (e.g., target sensor S1) can have serious safety or control consequences, such as a joint locking in place, generating incorrect commands to control a joint mechanism, etc., which can impair the ability of the exoskeleton to follow its operator's movements.
Notably, the controller 108 can be configured to operate, in parallel or simultaneously with operation of the exoskeleton 100 and the sensor suite discrepancy detection system 102, a sensor self-test process, or a sensor compare test process, or both of these together, to provide redundancy in terms of detecting a defect of a component (e.g., sensor, motor, bearing, etc.) and to achieve and maintain safe operation of the exoskeleton, as further exemplified below. As an overview, the self-test process facilitates a “self-test” for each sensor of the sensor groups 110a-n of the suite of sensors S1-Sn to determine whether each sensor is defective itself, or whether the sensor output data provided by the sensor is indicative of another defect or malfunction of the exoskeleton, such as discussed above. The sensor compare test process facilitates comparing the sensor output data associated with each sensor within a group of sensors against the sensor output data associated with every other sensor within the same group of sensors to determine whether a discrepancy exists (which can be indicative of a defect or malfunction of the exoskeleton) between the sensor output data, so that the controller 108 can recruit or select one or more appropriate auxiliary sensor(s) as a substitute for the target sensor within that group of sensors for safe operation of the exoskeleton. This same test process can be carried out at the same time for each of the sensor groups 110a-n. The results of these “parallel-run processes” can be combined to provide another layer of redundancy that provides a more robust system of detecting defects or malfunctions of an exoskeleton. Further details of these processes are exemplified below.
As illustrated in
The sensor discrepancy detection system 102 exemplified in
The various processes and/or other functionality contained within the controller 108 may be executed by the one or more processors 132 that are in communication with one or more memory modules 134. The controller 108 can include a number of computing devices that are arranged, for example, in one or more server banks or computer banks, or in other arrangements. The term “data store” can refer to any device or combination of devices capable of storing, accessing, organizing and/or retrieving data, which may include any combination and number of data servers, relational databases, object oriented databases, cluster storage systems, data storage devices, data warehouses, flat files and data storage configuration in any centralized, distributed, or clustered environment. The storage system components of the data store 130 can include storage systems such as a SAN (Storage Area Network), cloud storage network, volatile or non-volatile RAM, optical media, or hard-drive type media. The data store 130 may be representative of a plurality of data stores 130 as will be appreciated. API calls, procedure calls, inter-process calls, or other commands can be used for communications between the modules.
As mentioned above, a force moment sensor 148, 148a may be coupled to a support structure (or strap or other component) adjacent the joint mechanism 106, 106a, and positioned to be in contact with a human element of a user wearing or donning the exoskeleton 100, for instance. The force moment sensor 148, 148a may be part of a contact displacement system, in which the force moment sensor 148, 148a transmits output signals to the controller 108 in response to user movements so that the controller 108 can execute appropriate control functions of the joint mechanism 106, 106a. As also mentioned above, the controller 108 can be configured to recruit or select a substitute sensor, such as sensor S2 as illustrated in
That is, as an example remedial measure of the safety mode, the controller 108 may transmit a command signal to the actuator (e.g., 140) of the joint mechanism 106a for effectuating rotation of the joint as intended or desired by the user (i.e., the user may not know or realize there is a defect or malfunction, because the actuator may be operated as expected based on the user's movement). As another example of a remedial measure of the safety mode, the controller 108 may transmit a command signal to the clutch or brake device (e.g., 144) for an appropriate/safe function, such as entirely disengaging the clutch or brake device, partially engaging the clutch or brake device (while also actuating the actuator), or fully engaging the clutch or brake device (to “freeze” up the joint). Such possibilities are further discussed below regarding
The sensors S1-S4 of the sensor group 110a (and/or of any sensor group of a suite of sensors), may include some of the types of sensors 150a-g illustrated in
The exoskeleton 200 and the sensor discrepancy detection system 202 can comprise a suite of sensors S1-Sn configured to generate sensor output data associated with at least one operational function of the exoskeleton 200. The sensors S1-Sn can be coupled to various portions or aspects of the exoskeleton 200, as further exemplified herein, for producing sensor output data transmitted via sensor output signals to a control system or controller 208 of the sensor discrepancy detection system 202 of the exoskeleton 200. In one example, a force moment sensor 248 (e.g., 6-axis load cell) associated with the joint mechanism 206a can be provided as part of a contact displacement system to sense movement of a user to effectuate movement of the exoskeleton 200 that at least partially corresponds to movement in accordance with the degrees of freedom of the user when the exoskeleton 200 is being worn or donned by the user, similarly as discussed above regarding
Notably, a plurality of sensors S1-S4 of the suite of sensors S1-Sn can be identified as a sensor group 210a associated with the joint mechanism 206a.
As introduced above, the controller 208 can be configured to determine a discrepancy between sensor output data of two or more sensors of a group of sensors, such as sensors S1-S4 of the sensor group 210a, and can be configured to recruit at least one sensor S1-S4 of the sensor group 210a as a substitute sensor to account or compensate for discrepant sensor output data of one of the sensors S1-S4. For instance, a target sensor S1 can comprise a joint position sensor 222 (e.g., Hall effect sensor of
The joint mechanism 206a can include the same features of the tunable actuator joint module 109a discussed in U.S. patent application Ser. No. 15/810,108, filed Nov. 12, 2017, which is incorporated herein. More specifically, the joint mechanism 206a can be configured to recover energy during a first gait movement and then release such energy during a second gait movement to apply an augmented torque to rotate the knee joint about the degree of freedom in parallel with a torque applied by a primary actuator of the joint mechanism 206a, similarly as discussed in incorporated U.S. patent application Ser. No. 15/810,108. The joint mechanism 206a comprises a primary actuator 232 and an elastic element, such as a quasi-passive elastic actuator 234, structurally coupled to each other and operable with one another to provide torque to the joint. An input member 236a and an output member 236b (coupled to the quasi-passive elastic actuator 234) can rotate relative to one another about an axis of rotation 237 to achieve a flexion/extension degree of freedom of the exoskeleton 200 corresponding to a degree of freedom of a human joint, namely the flexion/extension of the knee joint. Note that the input and output members 236a and 236b may be the respective first and second support structures 204a and 204b of
The primary actuator 232 (e.g., a geared electric motor) is operable to apply a torque to the output member 236b for rotation about the axis of rotation 237, and the quasi-passive elastic actuator 234 (e.g., a rotary pneumatic actuator) is selectively operable to generate a braking force, or to apply an augmented torque to the output member 236b along with the torque applied by the primary actuator 232 to actuate the joint, such as during a certain portion of a gait movement. As further discussed in incorporated U.S. patent application Ser. No. 15/810,108, the quasi-passive elastic actuator 234 is operable or controllable by a control system (e.g., a valve assembly) to selectively store energy or to selectively generate a braking force (in an elastic state or a semi-elastic state) upon a first rotation of the input member 236a, and to selectively release that energy (while still in the elastic or semi-elastic state) during a second or subsequent rotation of the input member 236a. Such functionality may be effectuated by the controller 208 in concert with the valve assembly.
With respect to the elastic state of the quasi-passive actuator 234 as it operates to store and release energy, in one aspect, the first rotation of the input member 236a can be achieved via active actuation of the primary actuator to actuate the tunable joint module and to cause rotation of the joint module (and any structural supports coupled thereto). In another aspect, the first rotation of the input member 236a can be achieved passively, namely by exploiting any available gravitational forces or external forces acting on the robotic system suitable to effectuate rotation of the input member 236b within the tunable actuator joint module (e.g., such as a lower exoskeleton being caused to perform a sitting or crouching motion, which therefore affects rotation of the various tunable joint modules in the exoskeleton). The exploiting of such gravitational forces by the quasi-passive actuator in parallel with a primary actuator provides the tunable joint module with compliant gravity compensation. Once the energy is stored, it can be released in the form of an augmented torque to the output member 236b, or it can be used to brake or restrict further rotation.
The quasi-passive elastic actuator 234 can further be configured, upon a third or subsequent rotation(s), to neither store nor release energy, the quasi-passive elastic actuator 234 being caused to enter an inelastic state. In this inelastic state, the input and output members 236a and 236b are caused to enter a “free swing” mode relative to each other, meaning that negligible resistance exists about the quasi-passive elastic actuator 234 (this is so that the actuator 234 does not exhibit a joint stiffness value that would restrict rotation of the input member 236a relative to the output member 236b, such as would be desired during a leg swing phase of a gait cycle of the robotic device). In this manner, the quasi-passive elastic actuator 234 is switchable between the elastic state and the inelastic state, such that the quasi-passive elastic actuator 234 applies an augmented toque (in the elastic state) in parallel with a torque applied by the primary actuator 234. This combined torque functions to rotate the output member 236b relative to the input member 236a in a more efficient manner as less torque is required by the primary actuator to perform the specific gait phase, thereby reducing the power requirements/demands of the primary actuator 234, as further detailed below.
As further illustrated in
The primary actuator 232 can comprise a housing mount 240 to house and structurally support the primary actuator 232. The primary actuator 232 comprises a motor 278, such as a high-performance Permanent Magnet Brushless DC motor (PM-BLDC). The motor described above and shown in the drawings is not intended to be limiting in any way. Indeed, other motors suitable for use within the primary actuator 232 are contemplated herein, as are various other types of actuators, such as hydraulic actuators. The motor 278 can comprise a central void that receives a gear train or transmission, such as a planetary transmission 286. A rotatable transfer wheel 298 can be fastened to the rotor of the motor 278 to transfer rotation from the rotor of the motor 278 to a sun gear of the transmission 286 about the axis of rotation 203. Upon applying an electric field to the motor 278 (i.e., from the controller 208), the rotor rotates about axis 203, which causes the transfer wheel 298 to rotate, which thereby causes the sun gear to rotate, which causes an output shaft 209 to rotate primary pulley 216. The primary pulley 216 is rotatably coupled to a transmission belt 224, which is rotatably coupled to a gear ring 268 that ultimately causes rotation of the joint via a vane device coupled to the output member 236a (see U.S. patent application Ser. No. 15/810,108 incorporated herein for further details on the vane device and valve assembly).
In one example, a sensor plate 220 can be fastened to an outer side of the housing 240, and has an aperture that supports the position sensor 222 (i.e., target sensor S1, in this example). The position sensor 222 is adjacent the transfer wheel 298, which has an aperture through to the sun gear (of the transmission 286) that facilitates the position sensor 222 to determine the rotational position of the sun gear. The sensor output data produced by the position sensor 222 can be transmitted via an output signal to the controller 208 for processing to determine the rotational position of the joint. The position sensor 222 can be any suitable sensor, such as a 13-bit Hall effect sensor, magnetic encoder, optical encoder, resolver, potentiometer, etc. It should be appreciated by those having skill in the art that the type of joint position sensor used may dictate the possible location on the joint mechanism that such sensor is mounted to. As discussed above, the particular rotational position of the knee joint mechanism is relevant for determining and controlling actuation of the joint via control of the motor 278 based on the contact displacement system.
The motor 278 can comprise a stator and rotor rotatable relative to each other (in a typical fashion for commercially available frameless brushless motors), and the auxiliary sensor S2, such as a motor rotor position sensor, can be operably coupled to or proximate to the motor 278 for producing sensor output data associated with a rotational position of the rotor relative to the stator. For instance, based on the sensed rotational position of the rotor using the auxiliary sensor S2, the controller 208 can execute a transformation calculation that transforms the sensor output data from the sensor S2 into a format or value that can be an estimate of the rotational position of the joint defined by the joint mechanism 206a (in the event the target sensor S1 provides data that “fails” testing processes, as exemplified below). Such transformation of the sensor output data associated with the auxiliary sensor S2 can produce “transformed sensor output data” that can be compared against the sensor output data of the target sensor S1, as further exemplified below regarding
The data provided by the rotor position sensor can be used: (1) to control the commutation of the motor phases, and (2) for closed-loop position/velocity control of the rotor in control policies such as software stop limits, for instance. If a rotor position sensor malfunctions, it can render the motor unusable as a power source, or it may generate random commutations sequences, or it may make the joint simply unresponsive. Note that, if the problem is detected, the motor can still be used as a controlled passive brake, for instance.
As noted above, the rotor position sensor can be used as an auxiliary sensor to a target sensor (e.g., joint position sensor). Inversely, the rotor position sensor can be considered as “a target sensor”, and other sensors can be considered as “auxiliary sensors” that act as a “back-up” or substitute sensor if the rotor position sensor is malfunctioning. For instance, a joint position sensor can be used as an auxiliary sensor to the rotor position sensor being the target sensor.
Note that the relation between rotor position and joint position depends on multiple parameters including: (1) transmission ratio; (2) transmission compliance; (3) backlash; (4) transmission internal friction; (5) transmission non-linearities and position dependent systematic error (e.g. periodic position error observed in harmonic drive gears); and (6) other parameters. This said, a good estimate of the joint position θJ could be computed using an equation of the form: θJ=ftr(θM, TJ, TM, θM), where ftr is a function that encapsulate the characteristics of the transmission, including but not limited to: gear ratio (NGR), compliance, friction, backlash, periodic systematic error (e.g. cyclic error observed in Harmonic Drive transmissions), to list the most important, θM, is to rotor position, TJ, is the joint torque (the torque applied by the transmission to the joint, and as a rule it may be the total joint torque minus the torque contributed by the elastic element coupled to the output joint), TM, is the rotor (motor torque) and θM is the rotor speed (also referred to as WM).
The structure and operation of a motor rotor position sensor is well known in the art, and therefore will not be discussed in great detail. However, note that the motor rotor position sensor has a primary sensing functionality of producing data associated with the rotational position of the rotor relative to the stator (or other component), which is different than the primary sensing functionality of the target sensor S1, for instance. Nonetheless, the motor rotor position sensor, as an auxiliary sensor to the target sensor, can generate sensor output data that can be transformed by the sensor suite discrepancy detection system 202 for purposes of allowing the motor rotor position sensor to function as a possible substitute sensor for the target sensor.
In one example, the controller 208 may include available software libraries tailored for “sensorless” control of the motor (i.e., rotor position state estimator) to measure the rotor position of the motor. The implementation of a rotor position state estimator could: provide the means for an actuator to continue operating in the event of a malfunction of the rotor position sensor where the rotor position sensor is relied upon as a complimentary sensor to the joint position sensor; allow joint position to be estimated by taking into account characteristics of a transmission (e.g., the transmission(s) discussed herein); allow rotor speed to be computed and used on one mechanism to determine if the primary joint position and rotor position sensors are working properly; and as a by-product of the state estimation algorithm to provide an estimate of the motor phase resistance, which, in turn, could be used to estimate motor coil temperature. Thus, the use of state estimator algorithms and software for sensorless motor control can serve as another “back-up” mechanism for a joint position sensor if it is defective or malfunctioning, thereby providing sensor redundancy.
In another example, another possible auxiliary sensor (of the sensor group 210a) can comprise a torque sensor operatively coupled to one or more components of the joint mechanism 206a in a suitable manner for producing sensor output data associated with a torque applied to the joint by the motor. For instance, a joint torque sensor can be coupled to the shaft 209, or to the sun gear of the transmission 286, or at or near the input or output members of the joint mechanism 206a, or to any other rotational component that generates or experiences a torque of the exoskeleton for purposes of sensing torque. Thus, the primary sensing functionality of the torque sensor is to produce data regarding a torque value generated or experienced by a component of the joint mechanism 206a to appropriated close the loop on a torque command, such as in the case of its use with a force moment sensor (e.g., a 6-axis load cell) as part of a contact displacement system, as mentioned above. Note that the same or additional torque sensor(s) may also be used for gravity compensation purposes of the exoskeleton itself, and also during tasks such as acquiring and lifting a load. A joint torque sensor may also be used to control the compliance and/or impedance characteristics of a joint, and/or to allow a joint to respond in a preset way to external forces applied to the exoskeleton. However, as noted above, in the event the target sensor S1 (e.g., position sensor 222) “fails”, sensor output data produced by the torque sensor can be combined with information from other sensors such as a pair of IMUs installed on adjacent structural members rotatably couple to form a joint and can be transformed and used to estimate the rotational position of the joint, wherein the torque sensor and complementary sensors used together operate as a possible substitute sensors for the target sensor S1, as further exemplified herein.
Each joint mechanism can include a joint torque sensor that is used a means to implement closed-loop joint level torque control, such as for control policies that include contact displacement, payload compensation, and gravity compensation, for instance. If a torque sensor malfunctions, this can result in a joint mechanism that improperly responds, or possible loses control due to large, unwanted torque commands being generated and executed by actuators of the joint mechanisms. Thus, appropriately sensing or estimating joint torque is a safety-critical operation for safe operation of the exoskeleton. Similar to the description above, in one example the joint torque sensor can be considered a target” sensor, while other sensors can be considered “auxiliary sensors” that are used to estimate joint torque in the event that the joint torque sensor malfunctions. For instance, the total torque applied at a particular joint can be estimated by using (1) the magnetic flux versus rotor angle (which is a parameter that may be characterized independently and measured current flowing in three phases of the motor to estimate electromagnetic torque generated by the motor), (2) measured and/or estimated contribution from the brake and/or elastic element operating in parallel with the (geared) motor, and (3) model of the transmission, including friction, backlash, and other non-linearities.
Note that a number of other auxiliary sensors can be included within the sensor group 210a as associated with the joint mechanism 206a, and coupled to or about various components of the joint mechanism 206a, as also discussed above regarding
As also noted above, auxiliary sensors such as one or more inertial-based motion sensors can be coupled to the joint mechanism 206a and/or to the support structures 204a and 204b rotatably coupled together by the joint mechanism 206a (or another support structure of the exoskeleton 200). For instance, motion sensors such as single axis or multi axis accelerometers, gyroscopes, magnetometers, IMUs, etc. can be utilized as auxiliary sensors that have a primary sensing functionality of sensing position, velocity, and/or motion of relevant support structures of the exoskeleton, but that can be recruited by the controller 208 to estimate a rotational position of the joint upon transformation of their sensor data. For instance, based on the sensed spatial orientation of the first support structure 204a (as sensed by the IMU auxiliary sensor S3), and based on the sensed spatial orientation of the second support structure 204b (as sensed by the IMU auxiliary sensor S4), the controller 208 can determine the rotational position of the joint defined by the joint mechanism 206a. More specifically, each IMU measures its orientation and that of the structural member to which it is coupled, so the controller can monitor and measure the change in the orientation for each IMU from the prior orientation to determine the rotational position of a joint (e.g., 206a) situated between a pair of adjacent IMUs (e.g., one IMU, S3) on support structure 204a and the other IMU, S4 on support structure 204b). One method to calculate joint position from a pair of IMUs can include a 4D quaternion method (a 4-tuple that is a concise representation of rotations) calculated based on the data collected by each IMU. Specifically, the unit magnitude quaternion qS3,S4=qS3*⊗qS4, describes the joint angle and the direction of the joint axis of rotation, and where ⊗ is the quaternion multiplication, qS3* is the conjugate of the unit magnitude quaternion generated from data from IMU S3, and qS4 The joint angle αJ=(α−α0), can be calculated from the real part of the quaternion for the joint, qS3,S4, using the formula
and where, α0 is a constant that depends on the convention used to define the zero angle of the joint. The inverse can be appreciated in a similar manner, namely that a group of position sensors can be used in the determination whether one or more IMUs is defective or faulty. For instance, data generated a joint position sensor on joint mechanism 206a and a joint position sensor on joint mechanism 206c can be used by the controller to “check” whether an IMU (i.e., on the support structure linking such joint mechanisms) is accurately calculating its orientation (represented as a quaternion, as Euler angles, as a rotation matrix, or other representation of rotation and orientation) or is faulty.
Such calculation or transformation of the sensor output data associated with the auxiliary sensors S3 and S4 can generate “transformed sensor output data” that can be compared against the sensor output data of the target sensor S1, as further exemplified below regarding
Note that other IMUs (i.e., those which can be considered as auxiliary sensors of other pre-determined or defined sensor groups) of the exoskeleton that are supported on other support structures (e.g., other than 204a and 204b) can be used to determine or estimate joint rotation position of one or more joints. For instance, an IMU supported by support structure 204c, with its sensor output data transformed, can be used along with joint position sensors on the robot hip, knee, and ankle joints to “simulate” the output of a possibly defective IMU (e.g., auxiliary sensor S3) supported by the support structure 204a. This is merely one example of using other sensor(s) as substitutes for a possible faulty sensor. Thus, it should be appreciated that sensors supported away from (i.e., not necessarily directly associated with) any one specific joint or joint mechanism can be used, such as an IMU supported by a support structure that is not directly coupled to the joint mechanism in question.
Further to this concept, in one example, all of the IMUs of the exoskeleton can be used to map the exoskeleton, along with the joint position sensors (e.g., 222) of each joint mechanism, to determine if one or more of the IMUs is faulty so that the faulty IMU can be discarded and not used by the controller. Based on a frame of reference of the kinematics of the exoskeleton, and in the event a particular IMU does not “agree” with other IMUs, for instance, this may indicate a defect or malfunction with the particular IMU, so that data produced by this IMU can be ignored or not used in processing operations and for control of the exoskeleton, such as one or more joint mechanisms of the exoskeleton. A similar principle applies for other groups of the same sensor, such as a group of joint position sensors associated with a limb of the exoskeleton. More specifically, a consecutive number of joint position sensors associated with flexion/extension of the respective wrist, elbow, and shoulder joints of a limb may be utilized to determine whether one of the joint position sensors (or another sensor) is faulty or defective by comparing the sensor output data of such sensors against each other. This is because, based on the known geometry of the exoskeleton arm, the controller can discern the expected torque at an elbow joint (flex/extend) based on the sensed torque of the shoulder joint (flex/extend), and perhaps based on the sensed position of the shoulder and elbow joints. Thus, if the expected torque at the elbow joint is much greater or lower than the value the torque sensor is actually outputting, then the controller may determine that the torque sensor at the elbow joint is faulty or defective. This is merely one non-limiting example of how a group of sensors can be used in combination by the controller to indicate whether one or more sensors is faulty.
In another example, a possible auxiliary sensor of the sensor group 210a can comprise one or more current sensors, such as one or more total current sensors, which can be included for generating data associated with a transmitted current to the motor (or other type of actuator). The current sensors can be supported at or near a battery pack of the exoskeleton, and/or at network bus branches of the controller 208. Another type of current sensor includes a motor phase current sensor, such as a sensing resistor, Hall effect sensor, etc., which can be used to generate data associated with the phase current transmitted to the motor during commutation of the motor. Therefore, in one exemplary embodiment, the data generated by a motor phase current sensor can be used to approximate joint torque by allowing the controller to estimate the electromagnetic torque, TM, produced by the motor as TM=KT(θM)*Iph where, KT(θM) is the motor torque constant at rotor position, θM and Iph, is the phase current, or using another observer for the electromagnetic torque produced by the electric motor, and also by taking into account, as needed to achieve the desired level of accuracy, the characteristics of the transmission (gear ratio N, friction, backlash, and other parameters that may be used to describe the characteristics transmission) as discussed in [0104]. More specifically, if the output of the torque sensor “disagrees” with the motor phase current sensor, the controller can conclude that the torque sensor has failed. Alternatively, the controller 208 can switch from one control policy (e.g., based on a contact displacement system) to another control policy (e.g., admittance control) as one example of a remedial measure, whereby the admittance control policy may not rely on joint torque sensors for control, but can rather rely on joint position sensor to determine or estimate rotational joint position. The controller 208 may instead switch to a third control policy of a plurality of control policies that are available and running in the background concurrently. The “switching” between control policies (as a remedial measure) is further described in U.S. patent application Ser. No. ______, filed on ______ (Attorney Docket No. 4000-19.0007.US.NP), which is incorporated herein by reference in its entirety.
A “control policy” is referred to herein as the basis in which control of function(s) and/or component(s) of one or more aspects of an exoskeleton to achieve or produce a certain performance (e.g., a motion) is carried out. In one example, a “control policy” can comprise a set of rules programmed and stored in a controller of an exoskeleton to achieve a particular goal or task (e.g., controlling lower and upper body joint mechanisms to achieve a gait motion of the exoskeleton). A particular control policy programmed into a controller may take into consideration sensor data from various sensors on the exoskeleton, such as strain gauge sensors, that indicate a desired movement of the user of the exoskeleton, so that the controller can then control one or more components (e.g., actuators, clutches, brakes, etc.) of the exoskeleton to effectuate the desired movement received from the user via the sensors, which can close the control loop for any particular component. Examples of control policies are further provided herein.
In one example, a motor phase current sensor, used to measure phase current to an electric motor of the joint mechanism, can be considered a “target sensor” in that auxiliary sensors can be used as “back-up” in the event of a malfunction of the motor phase current sensor (such malfunction can cause an incorrect torque value to be produced by the motor). More specifically, because phase currents (i.e., three phase current sensors) need to sum up to zero when the motor is spinning, the controller can constantly calculate the phase current sum and ensure it is zero. When the data from the three phase current sensor do not sum to zero, the controller can analyze the phase/amplitude relationships of the three phases to determine with of the three sensors failed. That failed sensor can then be ignored, because the missing phase current could be calculated by calculating the value that is necessary to sum the two correct phase currents to zero. In another example of a state estimator designed to allow the motor torque to be controlled by controlling phase voltage, thereby bypassing, in the process, the need for phase current sensing.
As indicated above, the structure and functionality of inertial-based motion sensors, such as IMUs, is well known, and therefore will not be discussed in great detail herein. Those having skill in the art can readily appreciate the incorporation of a motion sensor with an exoskeleton, and the well-known operations for receiving and processing data produced by motion sensors.
In yet another example, one or more auxiliary sensors (and also possible target sensors) may include voltage sensors and current sensors. For instance, a voltage to RT and electronic bus sensor (i.e., a target sensor) provides voltage measurement for high-power branch sensors to supplement the current information load. If this sensor malfunction, data from a high-power branch sensor can be compared against RT controller's voltage sensor.
In another example, a battery module current primary sensor (i.e., a target sensor) provides current measurement for a battery module to control the amount of power delivered by the battery and the rate of charging. A comparison between the battery management controller and the high-power branch sensors could detect a malfunctioning sensor in the battery module when the battery is discharging. When the battery is being charged, the battery current can be compared with the charger current. A malfunctioning sensor could wrongly turn off the batter, fail to isolate a short, or act slowly in protecting the battery during power delivery or charging. In this manner, a battery shutting off during a loaded robotic task could become a safety hazard, so proper battery current sensing is needed for safe operation of the exoskeleton. As an “auxiliary sensor” in this example, the charger current/sum of limb current value can be used to estimate the current of the battery module.
In another example, if a battery module voltage sensor is malfunctioning, the control power voltage or limb power voltage can be used to estimate the voltage of the battery module.
Both at the joint level and the controller level, joint speed plays a key role in control policies for controlling the joint mechanisms of the exoskeleton. In one example, joint speed of a particular joint can be computed by numerically differentiating data provided by the joint position sensor (e.g., a target sensor) associated with the joint. In another example, joint speed can be computed numerically by using rotor position sensor data, as further detailed below. Regardless of how joint speed is computed for a particular joint, it may have an impact on particular control policies, including at the joint level using recurrence controller policies where joint speed is used to control stability of the joint mechanism. It may also include a control policy associated with software limit stops algorithms where damping uses joint speed as an input parameter. It may also include a control policy associated with damping and stopping a joint when a “large command” is generated for controlling the joint that may otherwise cause the exoskeleton to collide with the operator, surrounding bystanders, and/or objects in the area. It may also include a control policy by the high-level controller safety processes, such as when mapping trajectory of end-points (e.g., end effectors) and create software defined exclusion zones. In any scenario, fault or malfunction or computational error of joint speed by the controller may reveal a problem with the target sensor used to computed joint speed, which may result in an unsafe operation or movement of the exoskeleton.
More particularly, in one example joint speed can be computed using an auxiliary sensor, such as a rotor position sensor that provides rotor speed information θM along with characteristics of the transmission. The speed of the rotor can be calculated by comparing differing rotor positions over time, which may be 15 to 120 times larger than that of the speed of the joint; this depends on the transmission ratio of a transmission of a particular joint mechanism.
In another example, the IMUs (e.g., as auxiliary sensors) can be used as a means to convert the exoskeleton into a full body motion capture device to compute joint speed of one or more joints (in the event of malfunction of one or more target sensors, such as joint position sensors). To estimate individual joint speed, the data needed would include either (1) data from IMUs located on adjacent support structures (as also discussed above), or (2) IMU data on other nearby support structures (i.e., not adjacent IMUs), along with position sensor data and kinematics information required to compute angular speed of the two support structures about the axis of rotation of the joint of interest. Because some IMUs are sampled at 250 samples/second, if the IMU data from adjacent support structures is available to each link controller, joint speed computation using IMUs could be performed at the level of the joint controllers (i.e., using firmware running on individual link controllers) and the result (i.e., joint speed) can be used, not only as part of a control policy of the central controller, but also as part of the joint level control. Additionally, computing joint speed using IMU data at the level of the local controllers on each joint mechanism allows comparison of data obtained from the target sensor (e.g., joint position sensor) and auxiliary sensors, and selection of an alternative sensor in the event of malfunction of the target sensor, which is performed at the local controller level of each joint mechanism.
Similarly, rotor speed can be calculated and used as a part of joint level control policies in which computed damping or software stops are applied directly to the rotor by controlling the rotor. Rotor speed can be computed by numerically differentiating rotor position sensor data, which may provide a higher quality signal for joint speed than that obtained from the joint position sensor. Joint position sensor, along with characteristics of the transmission, can be implemented as an “auxiliary sensor” that can estimate rotor speed. Similarly, as discussed above, the controller 208 may include available software libraries tailored to “sensorless” control of the motor (i.e., rotor speed state estimator) to measure the rotor speed of the motor. Thus, the use of state estimator algorithms and software for sensorless motor control can serve as another “back-up” mechanism for a rotor position sensor if it is defective or malfunctioning, and thereby providing sensor redundancy.
Referring back to
In one example, the exoskeleton can include one or more ground contact sensors to measure one or more interaction force moments between the foot and/or hands and the ground and/or object. The ground contact sensors can be embedded between the sole and the base of the foot of the exoskeleton, for instance (and similarly regarding the hands of the exoskeleton). Data produced by the ground contact sensors can act as a complementary manner to detect when a load supported by the feet is low, for instance. This information can be fused with that provided by the force moment sensors on the feet in order to modulate control parameters. This can be a safety feature in terms of the controller knowing whether or not the feet of the exoskeleton make contact with the ground or leave the ground, which provides a level of redundancy for the other sensors of the exoskeleton in terms of the interaction forces, etc.
The joint mechanism 206b can include the same features of the clutched joint module 300 discussed in U.S. patent application Ser. No. 15/810,102, filed Nov. 12, 2017, which is incorporated by reference herein. More specifically, the joint mechanism 206b, which defines a degree of freedom corresponding to extension/flexion of an elbow joint, can be configured to recover energy during a first movement and then release such energy during a second movement to apply an augmented torque to rotate the elbow joint about the degree of freedom in parallel with a torque applied by a primary actuator of the joint mechanism 206b, similarly as discussed in incorporated U.S. patent application Ser. No. 15/810,102. More particularly, the joint mechanism 206b can comprise a primary actuator 302, a quasi-passive elastic actuator 304 (
The primary actuator 302 can comprise a motor 312 (
The joint mechanism 206b can comprise a first support frame 315a, a second support frame 315b, and a third support frame 315c fastened together to retain and support the various components discussed herein, such as the motor 312, the planetary transmissions 314 and 316, the brake or clutch device 306, etc. As further detailed below, the elastic element or quasi-passive elastic actuator 304 is operable to selectively store energy or generate a braking force (when in an elastic or semi-elastic configuration or mode or state) upon a rotation of the input member 308a (e.g., where the rotation is either actively carried out using the primary actuator, or passively carried out, such as rotation of a joint under the influence of gravity of some other externally applied force that induces rotation) when the brake or clutch device 306 is in the engaged or semi-engaged state, and is operable to selectively release energy (also when in the elastic or semi-elastic configuration or mode or state) upon a rotation (in the same or a different direction as the rotation for storing the energy) of the input member 308a, when the brake or clutch device 306 is in the engaged or semi-engaged state, to apply the augmented torque to the output member 308b in parallel with a primary torque applied by the primary actuator 302, in this case the motor 312.
The quasi-passive elastic actuator 304 is further operable in the inelastic state to neither store nor release energy during rotation of the joint (inelastic configuration) when the clutch mechanism 306 is selectively caused to be in the disengaged state. In this inelastic state, the input member 308a is in “free swing” relative to the output member 308b, meaning that negligible resistance is applied within the joint module 300 via the quasi-passive elastic actuator 304 (so that the quasi-passive elastic actuator 304 does not have a stiffness value that would restrict rotation of the input member 308a relative to the output member 308b). The brake or clutch device 306 can also move from an engaged or semi-engaged state to a disengaged state to dissipate any stored energy (i.e., dissipate any braking force generated, such as when the braking force is no longer needed). Thus, the quasi-passive elastic actuator 304 is selectively switchable between the elastic state, the semi-elastic state, and the inelastic state via operation of the brake or clutch device 306.
In examples, “semi-engaged” can mean that the brake or clutch device is engaged, but not fully engaged nor disengaged, such that some slippage occurs within the brake or clutch. For example, in the case of the brake or clutch device having a plurality of plates, such as input and output plates, the semi-engaged state would mean that the plates are under a compression force sufficient to compress the plates together some degree, but that some relative movement (i.e., slippage) occurs between the plates (i.e., they are not completely locked up such that they rotate together and movement between them is not completely restricted) and a friction force is generated between them (e.g., a usable braking force). The term “engaged state” as used herein can include the semi-engaged state as these are also meant to describe at least a partially engaged state of the brake or clutch device, as well as to describe the brake or clutch device where the amount of slippage and thus the amount of the braking force (or augmented torque) is controllable and variable between the disengaged state where negligible braking force is generated and fully engaged where the clutch models a rigid connection member.
In examples where the quasi-passive actuator is caused to enter a “semi-elastic state” or mode of operation, the quasi-passive elastic actuator can be actuated to partially compress the elastic or spring component of the quasi-passive elastic actuator to store, and be enabled to release, an amount of energy or be enabled to generate a magnitude of a braking force that is less than what would otherwise be achieved if the quasi-passive elastic actuator were in a fully elastic state. Stated another way, “semi-elastic” describes that state in which there is a less than 1:1 transfer of energy or forces, due to rotation of the joint, to the quasi-passive elastic actuator coupled between the input and output members (e.g., because the brake or clutch device is in the semi-engaged state). “Semi-elastic,” as used herein, is not intended to refer to the inherent elastic property (i.e., the elasticity) of the elastic component of the quasi-passive elastic actuator, but merely to a degree of compression of the elastic component.
In one example, the motor 312 can comprise a high-performance Permanent Magnet Brushless DC motor (PM-BLDC). The motor 312 can comprise a stator 320 and rotor 322 (
In response to the motor 312 receiving a control or command signal from the controller 208, the rotor 322 drives/rotates the transfer wheel 313, which rotates/drives the sun gear 332, which drives/rotates the carrier plate 334 (via planet gears 330). The carrier plate 334 then drives/rotates the sun gear 346 of the second planetary transmission 316, which ultimately drives/rotates the output member 308b via the output of the second planetary transmission 316. Accordingly, the present example provides a 16:1 final drive transmission from the motor 312 to the output member 308b.
As introduced above, the quasi-passive elastic actuator 304 is operable to apply an augmented torque to rotate the output member 308b along with the primary torque applied by the primary actuator 302, or to generate a braking force within the joint mechanism 206b. Thus, the quasi-passive elastic actuator 304 is switchable between an elastic configuration, a semi-elastic configuration, and an inelastic configuration via operation of the brake or clutch device 306 for selectively controlling application of the augmented torque applied by the quasi-passive elastic actuator 304.
In one example, the quasi-passive elastic actuator 304 can comprise an elastic element in the form of a torsional coil spring 305. One end of the torsional coil spring 305 can be coupled to a transfer shaft 307 and can be wound clockwise therefrom, and the other end can be coupled to the input member 308a (or to an intermediate component coupled between the torsional coil spring 305 and a suitable input member). The input member 308a can comprise an annular ring surrounding the torsional coil spring 305, or it can take other suitable forms as being coupled between the torsional coil spring 305 and a robotic support member. An output end of the transfer shaft 307 can be coupled to the transfer wheel 313, such that rotation of the transfer shaft 307 (e.g., an applied augmented torque) causes rotation of the transfer wheel 313, as detailed below. Note that the torsional coil spring 305 is only shown in
The brake or clutch device 306 can comprise an electromagnetic clutch configured to operate in series with the quasi-passive elastic actuator 304. The brake or clutch device 306 can comprise the same or similar features discussed in U.S. patent application Ser. No. 15/810,102, incorporated herein, which will not be discussed in great detail in the present disclosure. However, the brake or clutch device 306 can comprise a plurality of input plates 335a (e.g., four total) retained by the plate retention component 331 to restrict movement of the input plates 335a relative to a clutch housing 321. A plurality of output plates 335b (e.g., four total, hidden from view) can each be slidably or frictionally interfaced (i.e., sandwiched between) with adjacent input plates 335a in an alternating manner. The output plates 335b can each have a curvilinear perimeter that is slidably supported within curved inner surfaces of the plate retention component 331. Thus, rotation of the output plates 335b causes concurrent rotation of the clutch output shaft 343. The clutch output shaft 343 is coupled to the transfer shaft 307 that is coupled to the quasi-passive elastic actuator 304, such that rotation of the clutch output shaft 343 causes rotation of the transfer shaft 307 (which is coupled to the transfer wheel 313 discussed above). The output plates 335b can be comprised of a non-ferromagnetic material while the input plates 335b can be comprised of a ferromagnetic material. Upon receiving a clutch control signal (e.g., from the controller 208), an electromagnetic actuator 329 of the brake or clutch device 306 is activated to apply an electromagnetic field in a direction that tends to axially urge the input plates 335a along the axis of rotation 310, which thereby compresses the output plates 335b between the respective input plates 335a, such that the plates 335a and 335b are restricted from movement relative to the plate retention component 331 (which is attached to the clutch housing 321, and which is attached to the first support frame 315a). This is the engaged state of the brake or clutch device 306. Such restricted movement of the plates 335a and 335b thereby restricts movement of the clutch output shaft 343, which engages or otherwise activates the quasi-passive elastic actuator 304. Therefore, upon rotation of the input member 308a (either via the primary actuator or via application of an external force), and while the brake or clutch device 306 is in this engaged state, the quasi-passive elastic actuator 304 will therefore store energy or release energy (being in the elastic configuration), as described above, and depending upon the rotation of the input member 308a (e.g., clockwise rotation of
The electromagnetic actuator 329 can be selectively operated and controlled by the controller 208 to apply a variable magnetic field and a variable compression force, such that the brake or clutch device 306 operates between a disengaged state, a semi-engaged state, and a fully engaged state to generate a variable braking force or a variable augmented torque. Indeed, in another aspect, with the brake or clutch device 306 operating in a semi-engaged state, movement between the input plates 335a and the output plates 335b can be partially restricted by the actuator 329 applying a smaller compression force to the input and output plates 335a, 335b, such that some movement between the input plates 335a and the output plates 335b is facilitated or caused to occur. In the engaged or the semi-engaged state, the brake or clutch device 306 and the quasi-passive elastic actuator 304 can function as a brake, or in other words, can provide a braking force operable to dissipate energy within the joint mechanism, or these can function to apply an augmented torque to the output member. The degree or magnitude of the compression force applied by the actuator 329 to the input and output plates 335a, 335b can be dynamically controlled in real-time by controlling or varying the amount of force generated and applied by the actuator 329.
Conversely, upon receiving a clutch control signal from the controller 208, the electromagnetic actuator 329 can be caused to place the brake or clutch device 306 in the disengaged state. That is, a clutch control signal is received by the electromagnetic actuator 329, such that the applied electric field is removed, thereby releasing compression pressure applied by the input plates 335b. This allows the output plates 335b to freely rotate relative to the input plates 335a. This permits relatively “free swing” rotation of the input member 308a relative to the output member 308b, therefore placing the quasi-passive elastic actuator 304 in its inelastic state. Thus, the quasi-passive elastic actuator 304 exerts negligible resistance in this “free swing” mode, when the brake or clutch device 306 is disengaged, so that the input and output members 308a and 308b can freely rotate relative to each other with minimal resistance. Furthermore, once stored, the energy can be dissipated at any time without being used either as a braking force or to apply an augmented torque, by disengaging the brake or clutch device 144.
When the brake or clutch device 306 is in the engaged or semi-engaged state, and the quasi-passive elastic actuator 304 is in the elastic or semi-elastic state, the augmented torque can be applied by the torsional coil spring 305. This augmented torque can be translated via the transfer shaft 307 to the sun gear 332 of the first planetary transmission 314, and so on (as described above), to rotate the output member 308b. For example, assume the torsional coil spring is wound in the clockwise direction from the transfer shaft 307 (as shown), so that, upon a first clockwise rotation of the input member 308a about the axis of rotation 310, the torsional coil spring 305 stores energy. Such rotational movement can be the result of an elbow movement of an exoskeleton during a certain task (e.g., downward movement of “push-ups” of an operator wearing an exoskeleton). Upon further rotation, or in the event of the disengagement of the brake or clutch device, such as in the counterclockwise direction or depending upon the engaged state of the brake or clutch device, the quasi-passive elastic actuator 304 can release its stored energy, thereby transferring an augmented torque to rotate the output member 308b (as detailed above) or to apply a braking force. Concurrently, and upon such rotation, the motor 312 of the primary actuator 302 can be operated to apply a primary toque (along with the augmented torque) to rotate the output member 308b about axis of rotation 310 to actuate the joint mechanism 206b. Because the primary torque applied by the motor 312 is supplemented with the augmented torque applied by releasing stored/recovered energy via the quasi-passive elastic actuator 304, the electric motor 312 can be selected from a group of smaller (e.g., less power dissipation) motors than would otherwise be needed, which contributes to the compact configuration of the joint mechanism 206b, as also discussed above.
In one example discussed above, brake or clutch device 306 can be controlled as a binary device (i.e., the brake or clutch device 306 is either on/engaged or off/disengaged) when applying a compression force to compress the plates together, and when removing the compression force to release compression between the plates. Alternatively, the brake or clutch device 306 can be configured and controlled as an analog device, meaning a variable electromagnetic force can be applied by the electromagnetic actuator 329 to compress the plates together to a varying degree to generate a braking force and to facilitate gradually storing energy or dissipating/releasing stored energy in a more controlled manner for damping or braking purposes. In one example operational scenario, the brake or clutch device 306 can be fully engaged or semi-engaged such that the quasi-passive elastic actuator 304 at least partially stores energy. This stored energy can function to generate a braking force that can restrict rotation of the output member (e.g., such as in the case where the primary actuator is inactive and not producing a primary torque, yet rotation of the joint is still desired or needed (e.g., rotation of the joint under the influence of gravity or in response to some externally applied force to the exoskeleton)), or it can be released as an augmented torque to assist the primary actuator. Furthermore, in the event of the release of the energy as an augmented torque, when the quasi-passive elastic actuator 304 is releasing energy in the elastic or semi-elastic states (e.g., during a stance extension), the actuator 329 can be operated to cause slight compression of the plates together to generate a gradual “braking force” about the plates so that the augmented torque can be discharged or applied in a controlled, gradual manner.
As further explanation, and to further illustrate, the multi-plate configuration of the brake or clutch device 306 can act as a brake. This is achieved by controlling the compression force applied to the input and output plates 335a and 335b, thus providing a beneficial energy saving mode of operation, and/or providing a safety mode of operation. That is, in the event of a detection of a malfunction or defect of the exoskeleton, the controller 208 can operate the exoskeleton in a safety mode, which can include engaging or partially engaging the brake or clutch device 306, as further discussed below.
Similarly, as discussed above regarding the plurality of sensors S1-S4 of
It should be appreciated that the sensor group 210b associated with the elbow joint mechanism 206b can comprise any number of other auxiliary sensors, such as described above regarding other possible auxiliary sensors of sensor group 210a associated with the knee joint mechanism 206a.
As in block 404, the method can comprise receiving sensor output data generated by each sensor of the plurality of sensors (e.g., S1-S4). The sensor output data received can be in the form of data or information transmitted from each sensor as output sensor signals that are received and processed by a processor (e.g., 132) of the controller or another computer having processing capabilities, in accordance with known signal processing techniques and methods. The processed sensor output data can then be ready for testing processing purposes described herein.
As in block 406, the method can comprise determining whether each of the plurality of sensors satisfies at least one self-test defined criterion, which generates self-test data. Such determination can be an aspect of the self-test process discussed above, as executed by the sensor self-test module 120. See also
As in block 408, the method can comprise transforming the sensor output data for each auxiliary sensor into transformed sensor output data that corresponds to the sensor output data of the target sensor. As further detailed below, in order to compare sensor output data of disparate types of sensors (e.g., target sensor and auxiliary sensor(s)), the sensor output data associated with the auxiliary sensors must be transformed, meaning that a calculation or computation can be performed by the controller to “transform” sensor output data associated with the auxiliary sensors into “transformed sensor output data”, as will be appreciated from the following discussions. The sensor compare module 122 may be configured to perform the operation of block 408, as further exemplified below regarding the discussion of
As in block 410, the method can comprise generating a sensor output data map comprising, at least in part, the sensor output data from the target sensor and the transformed sensor output data derived from the auxiliary sensors. As further detailed below, the sensor output data map can include a number of different matrices each used to “map” sensors onto each other for comparison purposes, in summary. The sensor compare module 122 may be configured to perform the operation of block 410, as further exemplified below regarding the discussion of
As in block 412, the method can comprise comparing, using the sensor output data map, the sensor output data of the target sensor with the transformed sensor output data of each of the auxiliary sensors. In this manner, each auxiliary sensor can operate as a sensor state observer for the target sensor. As well known, in control theory a “state observer” is a device or system that provides an estimate of the internal state of a given real system (e.g., the target sensor). For instance, as detailed below, the sensor output data associated with one or more of the auxiliary sensors can be used to assist in the estimation of a rotational position of a joint, for instance, where the auxiliary sensors are not directly used to determine the rotational position of the joint as their primary sensing function. Therefore, as taught herein, one or more of the auxiliary sensors can act as, or operate as, a sensor state observer for the target sensor using transformed sensor output data of the auxiliary sensor(s). The sensor compare module 122 may be configured to perform the operation of block 412, as further exemplified below regarding the discussion of
As in block 414, the method can comprise determining, based on the comparison as in block 412, whether a discrepancy exists between the sensor output data of the target sensor and the transformed sensor output data of the auxiliary sensors based at least one comparison defined criterion, which can generate comparison test data. Thus, by mapping and comparing sensor output data associated with the target sensor and the auxiliary sensors, the controller can determine whether a discrepancy (or more than one discrepancy) exists among the plurality of sensors, which may be indicative of a defect or malfunction of the exoskeleton. The sensor compare module 122 may be configured to perform the operation of block 414, as further exemplified below regarding the discussion of
As in block 416, the method can comprise determining whether a discrepancy exists between the self-test data and the comparison test data associated with the target sensor, as combined, which can generate combination test data. The combine self-test and compare test module 124 may be configured to perform the operation of block 416, as further exemplified below regarding the discussion of
As in block 418, the method can comprise recruiting, as a substitute for the target sensor, one or more auxiliary sensors, based on the combination test data. The preferred sensor selector module 126 may be configured to perform the operation of block 418, as further exemplified below regarding the discussion of
As in block 420, the method can comprise generating a command signal associated with sensor output data from the one or more recruited auxiliary sensors. That is, the one or more recruited auxiliary sensors can operate as a substitute for the target sensor, as further exemplified below.
As in block 422, the method can comprise transmitting the command signal to execute a remedial measure associated with a safety mode of the exoskeleton. Possible remedial measures are further discussed herein.
As in block 504, the controller can be configured to execute a sensor comparison test process (e.g.,
Accordingly, as in block 600, using sensors S1-S4 as example sensors within a sensor group, the sensor self-test module 120 may be configured to determine whether each sensor S1-S4 satisfies at least one defined criterion indicative of a pass/fail condition (i.e., whether the sensor “passes or fails”). In step 602, as one aspect of the “at least one defined criterion”, a determination is made whether the sensor output data (for each sensor S1-S4) is below an upper bound limit. For example, an “upper bound limit” for an elbow joint rotational position may be set at 170 degrees (or equivalent radians), because it may be unsafe or undesirable (or impossible) for an elbow joint to be positioned beyond or above 170 degrees from normal. Therefore, if the sensor output data associated with the target sensor S1, for instance, indicates that the elbow joint rotational position is at 190 degrees, the sensor self-test module 120 will determine that the sensor output data is not below the upper bound limit (i.e., above the upper bound limit), and therefore the sensor output data of the sensor S1 is indicative of a fail condition (i.e., a “NO”) of the sensor S1. The fail condition in this example is the fact that it may be known to be impossible for the elbow joint to be at such a high rotational position, so something must be broken or malfunctioning associated with the target sensor S1 and/or the joint mechanism. Thus, in such example, the sensor S1 has failed the self-test as in block 612, wherein data indicating the fail is recorded as part of self-test data 516 (along with any other sensors S2-S4 that have “failed”).
If in block 602 the sensor S1 passes the self-test, such that the sensor output data is below the pre-determined upper bound limit, then the sensor output data will be indicative of a pass condition (i.e., a “YES”). In this case, a determination is then made, in accordance with block 604, whether the sensor output data is above a pre-determined lower bound limit. For example, a lower bound limit for an elbow joint rotational position may be set at 5 degrees, because it may be unsafe or undesirable (or impossible) for an elbow joint to be positioned less than 5 degrees from normal. Therefore, if the sensor output data associated with the target sensor S1, for instance, provides that the elbow joint rotational position is at 2 degrees, the sensor self-test module 120 will determine that the sensor output data is not above the upper bound limit, and therefore the sensor output data from the sensor S1 is indicative of a fail condition (i.e., a “NO”). Thus, the sensor S1 has failed the self-test as in block 612, which failure is recorded and represented in the self-test data 616. As noted above, in some cases, the determinations of failure of the at least one defined criterion may be indicative of a defect or malfunction of the exoskeleton and not necessarily the sensor(s). As such, self-test data can be representative of various issues with the exoskeleton, such as a faulty sensor or sensor wiring, bearing, transmission, elastic element, actuator, or other component or system.
It should be appreciated that each sensor S2-S4 of the sensor group may have different unit values for appropriation of the self-test process. For instance, a torque sensor may have an upper bound limit of 20 N-m (and so on for the other sensors of the suite of sensors that are subjected to the self-test process). Alternatively, the unit values for the other sensors S2-S4 may first be transformed, so that their unit values correspond to the unit value of the target sensor S1, thus providing comparable sensor output data. In this manner, each sensor output data for each sensor S1-S4 can be processed using the same unit values for purposes of comparison, and satisfying the upper or lower bound limit criterion, for instance. Such transformation of the sensor output data is further detailed below regarding
If in block 604 the self-test returns a pass (represented by a “YES”), then in accordance with block 606, a determination can further be made as to whether or not the sensor output data is “below a rate of change limit” (for sample to sample). Calculating a rate of change is well known and will not be discussed in detail; however, the sensor self-test module 120 may be configured to perform such calculation based on the most recently received or historical senor output data (first sample) as compared to present sensor output data (second sample and/or multiple samples or a filtered (digitally or using analog filtering means) set of samples). Moreover, a rate of acceptable change (e.g., moving from one joint position to another joint position relative to the first joint position within a certain period of time) can be pre-determined and associated with the self-test. For instance, an acceptable pre-determined threshold or limit for a rate of change for an elbow joint rotational position may be set at +/−100% which is not to be achieved in under one second for the target sensor S1. Thus, if the most-previous rotational position of the elbow joint was 35 degrees, and the present sensor output data indicates a present rotational position of 105 degrees, and this was achieved in under one second, then the rate of change is +200%, which is above the +/−100% limit, and the rate at which this was achieved was under the acceptable time limit. Therefore, the sensor output data of the target sensor S1 is indicative of a fail condition (i.e., a “NO”) because it can be established or pre-determined that it is unsafe or undesirable to move from 35 degrees to 105 degrees in less than one second, for instance. Thus, the sensor S1 has failed the self-test as in block 612, which is recorded and represented as self-test data 616. It will be apparent to those skilled in the art that any pre-determined rate of change limits can be pre-determined and established for use in the self-test. Note that the rate of change can be according to an acceptable limit, or according to latched output (in which case the sensor signal would exhibit a rate of change equal to or very close to zero).
If the outcome from the self-test in block 606 is a pass (i.e., a “YES”), then a determination can then be made, in accordance with block 608, as to whether or not the sensor output data is below a noise level limit. Noise or crosstalk is known as an unwanted disturbance signal that is combined with the desired signal, which disturbance signal can be problematic by interfering with the receipt of accurate sensor output data, or interfering with appropriate processing of the sensor output data. Noise or crosstalk can come from many different sources. In some example, noise or crosstalk can originate from components of the exoskeleton and/or surrounding systems in the form of electromagnetic interference, radio frequency interference, vibration, heat, or other interference. Of course, some amount of noise typically exists, but high levels of noise can be problematic as being indicative of something operating incorrectly. More particularly, a noise level limit (or noise ratio limit) may be set at an “n value” for each sensor S1-S4 under test, for instance. Accordingly, if the noise level associated with the sensor output data of the target sensor S1 is greater than the pre-determined n value, the sensor output data from the target sensor S1 is indicative of a fail condition (i.e., a “NO”). Thus, the sensor S1 has failed the self-test as in block 612, which is recorded and represented as self-test data 616. Note that noise levels or ratios can vary depending on the sensor and system, and can be measured and characterized by various suitable means. Thus, the noise level or ratio limit used by the sensor self-test module 120 is dependent on the system and on which noise characterization metric is used (e.g., noise level estimated as root mean square (RMS) of the sensor signal, mean squared error (MSE) of the sensor signal, or noise spectral density, and so on).
If the results from the self-test in block 608 are indicative of a pass (a “YES”), then, in accordance with block 610, a determination can be made whether a communication error is present. For instance, a communication error or failure may be the fact that the controller did not receive any sensor output data from the target sensor S1 at a given time, or it can be a gap in a data signal communication stream, or a data formatting error (or other possible communication errors or failures between the sensor(s) and the controller). Detecting communication errors is well known in the art, so it will not be discussed in great detail herein. Accordingly, if in block 610 the sensor self-test module 120 detects the existence of one or more communication errors, the sensor output data from the target sensor S1 may be indicative of a fail condition (i.e., a “NO”). As a result, the sensor S1 has failed the self-test process as in block 612, which is recorded and represented as self-test data 616.
On the other hand, in the event that the target sensor S1, for instance, satisfies all of the self-defined test criterion, as in blocks 602-610, the sensor S1 can be identified as having “passed” the self-test process as in block 614, which is recorded and represented as self-test data 616. The same self-test can be carried out for all of the sensors in the sensor group, such as the auxiliary sensors S2-S4. Thus, sensors that have passed the self-test process may indicate that there are no faults or defects or malfunctions of the exoskeleton. However, additional safety protocols can be put into place that may still indicate one or more issues with the exoskeleton that would warrant putting the exoskeleton in a safe mode of operation. For example, one or more sensors that have passed the self-test process can be further subjected to a sensor comparison test, as further detailed below.
As a result of the sensor self-test module 120 performing the self-test process for each sensor of a suite of sensors, the self-test data 616 can include information regarding pass/fail conditions for dozens of sensors of the suite of sensors of the exoskeleton. Note that the test results embodied in the self-test data can be separated or categorized according to their respective sensor groups (e.g., 110a-n) associated with a respective joint mechanism (e.g., 106a-n), for instance.
It will be apparent to those skilled in the art that the self-test process may include only one, or some of, or all of, the self-test defined criterion illustrated in
As in block 700, the sensor compare module 122 can be configured to compare, using a sensor output data map, sensor output data 702 of the target sensor (e.g., target sensor S1) to transformed sensor output data 704 of each of the auxiliary sensors within a sensor group (sensors S2-S4, for instance). This can include transforming the sensor output data for each auxiliary sensor S2-S4 into transformed sensor output data that corresponds to the sensor output data of the target sensor S1. More specifically, the sensor output data for each auxiliary sensor S2-S4 can be “transformed” or calculated into a unit value that is comparable to the unit value of the target sensor S1, thereby producing comparable data in the form of transformed sensor output data 604. For instance, if the sensor output data for the target sensor S1 (which can comprise a position sensor associated with the joint mechanism) has been processed into a readable format of position having as its unit value that of degrees (or equivalent radians), then the sensor output data for each auxiliary sensor S2-S4 should be calculated to an equivalent unit value (i.e., degrees). It is noted that the sensors in a sensor group are selected to be within the group and to be identified as being complementary of one another based on the condition where the sensor output data of any one of the sensors within a sensor group is able to be transformed into sensor output data having a corresponding or comparable unit value with at least the target sensor, and possibly other auxiliary sensors within the sensor group.
In one example, assume auxiliary sensor S2 is a torque sensor and S3 is a rotor position sensor associated with a joint mechanism for producing output signals having information associated with output torque of a motor of the joint mechanism and for commutation of the phase windings of the motor, such as exemplified above regarding
In another example, assume auxiliary sensors S3 and S4 are each an IMU supported by respective support structures (e.g., 204a and 204b of
where ⊗ is the quaternion multiplication, qS3* is the conjugate of the unit magnitude quaternion generated from data from IMU S3, and where, α0 is a constant that depends on the convention used to define the zero angle of the joint. For example, Real(qS3*⊗qS4) may be calculated to be equal to ½, corresponding to α=120 degrees, and α0 may be equal to 90 degrees, in which case the joint angle may be estimated to 30 degrees using information from sensors S3 and S4, that is comparable with the sensor output data of the target sensor, the joint position sensor (e.g., 29 degrees).
It is noted that although the example of transforming sensor output data into a position-based unit, this is not intended to be limiting in any way. Indeed, those skilled in the art will recognize that unit values other than position can be used, into which sensor output data can be transformed. This can depend upon the target sensor being used, and the various complementary sensors within a sensor group including the target sensor.
Once the sensor compare module 122 has generated the transformed sensor output data 704 for each auxiliary sensor S2-S4, for instance, the sensor compare module 122 can be configured to generate a sensor output data map 706 for purposes of comparing the sensors S1-S4 to each other to detect any discrepancies in the data. More specifically, the sensor output data map 706 can comprise at least one of a sensor transformation matrix 708, a sensor pair error matrix 710, an actual error matrix 712, a delta error matrix 714, or any combination of these for purposes of mapping and comparing sensor output data 702 of the target sensor S1 and the transformed sensor output data 704 of the auxiliary sensors S2-S4. Each matrix 708-714 includes one example methodology for comparing sensors and their output data (including any transformed output data) against one another, as exemplified below.
More specifically, regarding the sensor transformation matrix 708, for sensors S1-S4 of a sensor group (e.g., 110a, 210a), Sj,iTR of the below matrix 708 represents the estimated output sensor data (or output signal) for sensor j computed using output sensor data from sensor i (e.g., sensor output data for sensor S2 is mapped to sensor S1, represented as S1,2TR) and/or from sensor group i (i.e., sensors 3 and 4 output data combined to create and equivalent sensor S2 that is mapped to sensor S1, represented as S1,2TR). That is, for all i=1 to Sn, and all j=1 to Sn (which is sensors S1-S4 in this example). That is, Sj,iTR=Si for i=j for sensors sensor S1, S2 . . . Sn. Accordingly, the sensor transformation matrix 708 can be provided as follows:
Regarding the sensor pair error matrix 710, for sensors S1-Sn (e.g., S1-S4 in the example of
For example, the error on joint position (the target sensor, S1, in this example) estimated using a joint position sensor observer that combines data from rotor position (S2) and joint torque sensor (S3) (forming a combined equivalent auxiliary sensor S2eqv. for S1) may be estimated to be +1-0.1 degrees (combining sensors noise level, repeatability and accuracy of all sensors S1, S2 and S3), in which case E1,2=0.1 degrees.
Regarding the actual error matrix 712, for sensors S1-Sn (e.g., sensors S1-S4 in this example) of a sensor group (e.g., 110a, 210a), the actual error between given sensor pairs (e.g., sensor output data of the target sensor S1, and the transformed sensor output data of auxiliary sensor S2), is provided by:
If the computed error exceeds the preset error limit, it is indicative of a failure of a match or pair of sensors. If the computed error does not exceed the error limit, then the matched or paired sensor would indicate proper functionality. This is determined as follows:
For example if the measured absolute value of the difference between sensor S1 (a joint position sensor) reading and the value of S1 estimated using S2 (i.e. S1,2TR determined using rotor position and/or rotor position and joint torque) is determined to be 0.5 degrees while the upper limit for the error for S1 estimated using S2 is 0.1 degrees then α1,2=1.
Once the sensor compare module 122 has populated the sensor output data map 706 (using any one or more of the above matrixes) including the relevant sensor output data and transformed sensor output data from the sensors S1-S4, for instance, the sensor compare module 122 may be configured to, as in block 716, compare sensor output data of the target sensor S1 to the transformed sensor output data of the auxiliary sensor S2-S4. The sensor compare module 122 may be further configured to compare the transformed sensor output data 604 for each auxiliary sensor S2-S4, as in block 718. Note that the operations of blocks 716 and 718 may occur simultaneously according to the sensor output data map 706. That is, each of the sensors S1-S4 can be compared to each other using the sensor output data map 706 to detect any discrepancies that may exist between the mapped data associated with the sensors S1-S4.
For instance, in an example hypothetical operating scenario, assume the sensor output data 702 of the target sensor S1 (joint position sensor) indicates a joint rotational position of 90 degrees from a known or initial starting position, but in reality the joint rotational position is actually closer to 46 degrees. Such a discrepancy in the measured or sensed position of the target sensor S1 and the actual position of the joint mechanism indicates that the target sensor S1 is defective for some reason, or that a component of the joint mechanism is defective, or both of these. Further assume that the transformed sensor data for the auxiliary sensor S2 (e.g., torque sensor or motor/rotor position sensor) indicates an estimated joint rotational position of 45 degrees, while the auxiliary sensors S3 and S4 (e.g., IMUs) indicate an estimated joint rotational position of 47 degrees. Thus, because the measured or sensed position and transformed output data information of sensor S2 and sensors S3 and S4 are “more agreeable” (e.g., within ±1-10% deviation from each other) with one another and are discrepant from the measurements of the target sensor S1, it is likely that the sensor output data of sensor S1 is erroneous. Of course, the more auxiliary sensors that are agreeable, such as 6 or more auxiliary sensors, the more likely it is that sensor S1 is defective (or indicative of a defect or malfunction of the exoskeleton). Moreover, the degree of acceptable deviation in measurements between the auxiliary sensors, and between the auxiliary sensors and the target sensors can vary as needed or desired.
Therefore, using the sensor output data map 706, the sensor compare module 122 can detect or identify this discrepancy between the “90 degree” reading of the target sensor S1 and the “45 and 47 degrees” of respective sensors S2 and S3/S4. Accordingly, in this example, the sensor compare module 122 can determine, based on this identified discrepancy, that the target sensor S1 has “failed” the sensor comparison process or test, as in block 720, and that sensors S2-S4 have each passed the sensor comparison process, as in block 722, thus meaning they may be acceptable substitute sensors for the joint mechanism in place of the target sensor S1. In other words, the transformed sensor output data from sensors S2-S4 may be suitably substituted and used by the controller of the exoskeleton to operate the joint mechanism in one or more ways in place of the sensor output data from the target sensor S1, which can be ignored or otherwise disregarded by the controller, as discussed below. The test results of the comparison test process are recorded or stored as comparison test data 724, which includes a pass or fail condition of each sensor S1-S4.
Note that, for instance, if sensor S1 and S3/S4 are more agreeable (e.g., at or near 45 degrees), and sensor S2 is more than an acceptable deviation from any one or each of the sensors S1 and S3/S4 (e.g., +/−20% deviation (e.g., 60 degrees)), then sensor S2 may be identified as having “failed” the sensor comparison process or test, and therefore may be removed or not included as an auxiliary sensor of the table of preferred substitute sensors, as further discussed below. The exact parameters of acceptable deviations may be dependent on the particular joint mechanism, and can be pre-determined and selected and programmed accordingly.
The following equations may be used to determine if a given sensor (e.g., sensor S1) and/or group of sensors (e.g., sensors S1-S4) pass the self-test process and/or the sensor comparison process.
then sensorj fails, and the controller may use the next preferred sensor as a substitute for sensorj. That is, a hierarchy exists among the preferred sensors.
then use Sj if the target sensor (sensor j in this case) passes the self-test process, or use as a substitute sensor if the target sensor fails the self-test process. In this case, data generated by the self-test process and by the comparison test process can be processed through a fault manager algorithm that estimates probability that Sj has faulted or failed.
then if sensorj (Sj) pass, the controller can use sensorj (Sj) The fault manager algorithm can include some or all of the rules or processes discussed herein and shown in
In one example, and keeping with the discussion and examples of
As exemplified in block 902, the combination test data 812 provides or indicates that the target sensor S1 has “failed” (as discussed above in connection with
Notably, the table of preferred substitutes 138a can be based on a hierarchy of auxiliary sensors S2-S4, meaning that the auxiliary sensors (that have passed the sensor combination process) can be ranked in order of preference. Such ranking can be based on various criterion. In one example, the ranking can be based on the reliability of the particular auxiliary sensor(s), and other parameters such as a deviation from acceptable values associated with the particular joint based on known or acceptable behaviors or conditions. For instance, it may be known that a motor rotor position sensor is more reliable than a torque sensor for purposes of estimating a joint rotational position, because other/external factors can affect the reliability or accuracy of the output of the torque sensor, such as the existence of a compliant transmission, elastic element, or other component. In this way, it may be more preferable to select or recruit as a first option the motor rotor position sensor as a back-up or substitute sensor because its data may be more accurate or reliable.
As another example, it may be known that one or more, or a pair of IMUs are more reliable than a torque sensor along with a rotor position sensor in estimating joint position (the target sensor in this case) because the particular joint mechanism includes a compliant transmission or an elastic element, so the transformation calculation of the sensor output data of the torque sensor may be less reliable or accurate because it can produce an estimated joint rotational position value from a larger range of possible values. Thus, the pair of IMUs can be used as substitutes of the target sensor to more closely and reliably estimate the rotational position of the joint, which can subsequently be used for executing a remedial measure (e.g., generating torque and/or position commands for the joint mechanism 106a). In this example, the auxiliary sensors S3/S4 (e.g., IMUs) may be ranked higher than other auxiliary sensors in a particularly hierarchy of a table of preferred substitutes. It is also important to note that in the example provided the hierarchy of the table of preferred substitutes may depend on other parameters, such as the magnitude of the joint torque. For example when the joint torque is very low (e.g. below 1 N-m) the joint compliance related correction to joint position that must be made to joint position estimated using rotor position may result in an estimate that is more accurate than that obtained using sensors S3/S4 (e.g. IMUs), while at larger joint tor levels (e.g. >10 N-m) in which case the sensors S3/S4 may provide a more accurate estimate of the joint position that the combination of rotor position and joint torque.
Regarding other parameters that may affect or dictate the particular hierarchy of available auxiliary sensors as included within a table of preferred substitutes, such other parameters may be associated with the acceptability of the impending movement of the exoskeleton. Essentially, the hierarchy of preferred substitute sensors can be determined in accordance with a variety of factors or parameters. For instance, at low speeds joint speeds estimated from motor back electromotive force or other more complete model of the motor response, may be less accurate than that estimated using a pair of IMUs, while the situation may be reversed at high joint speeds.
The controller (e.g., 108, 208) may be configured to execute or perform a remedial measure using a remedial measure module 128 of the controller, which may be based on the selection of the preferred substitute sensor or sensors by the preferred sensor selector module 126. For instance, the remedial measure module 128 can cause or facilitate transmission of a command signal to an actuator (e.g., 232, 312) of the joint mechanism (e.g., 106a, 206a, 206b) to cause actuation of the joint based on the transformed sensor output data produced by the sensor S2 (instead of using the data of the target sensor S1, because it failed the tests discussed above). Thus, the joint may merely operate as intended and as expected, and the user may not necessarily know or realize that a defect exists or a malfunction has occurred. This may be one example of a fail-safe mode of a safety mode of operation of the exoskeleton by the controller, because the controller merely controls the actuator using different sensor output data from the recruited substitute auxiliary sensor, and therefore is able to facilitate safe operation of the joint mechanism until it can be determined why the target sensor failed, and what repairs the exoskeleton might need.
In some examples, the remedial measure module 128 can be configured to provide at least one notification 111 to indicate to the user (and/or to others) of the possibility of a defect or malfunction of the exoskeleton. The at least one notification 111 can be provided in one or more forms and in a variety of different ways. For example, a notification can comprise an audio signal, a visual signal, a haptic signal, or any combination of these that are sent to the operator, a computer system associated with the operation of the exoskeleton, or to support or other personnel. Based on such notification(s), the operator can then discontinue use of the exoskeleton, or return it to a docking station, or actively switch to another control policy that does not necessarily rely on sensor output data from the target sensor S1 (e.g., joint position sensor) for control of one or more joint mechanisms.
In another example of operating in the safety mode, the remedial measure module 128 can be configured to cause transmission of one or more command or control signals to a brake or clutch device (e.g., 306) of one or more joint mechanisms (e.g., 106a-n, 206b) to control or operate the brake or clutch device(s). For instance, if the controller detects a more serious possible defect of malfunction, such as a possible broken transmission of a hip or knee joint mechanism, the remedial measure module 128 may cause all of the lower body joint mechanisms to “freeze” by fully engaging each brake or clutch device of one or more joint mechanisms of the lower body portion of the exoskeleton (and even those of the upper body portion of the exoskeleton, if present, and if necessary). At the same time, the remedial measure module 128 can ensure that actuation command signals are not transmitted to the actuators/motors of the lower body joint mechanisms. This can prevent an unsafe movement of the knee or hip joint, for instance, by preventing any more actuated movement of the lower body joint mechanisms.
In another example of operating in the safety mode, the remedial measure module 128 may cause one or more brakes or clutch devices to be semi-engaged to limit or restrict the rotational speed at which the joint(s) are actuated, which may be useful to allow the operator to slowly and safely operate the exoskeleton to a position or location where the operator can doff the exoskeleton, such as to return the exoskeleton to a docking station, for instance.
In yet another example of operating in a safety mode, the remedial measure module 128 may cause one or more joint mechanisms to be actuated to a “safe position”, such as a generally upright position of the exoskeleton so that the user can safely doff or step out of the exoskeleton. This can be independent of any contact displacement device or system designed to actuate movement of the exoskeleton based on operator movement in the exoskeleton. Thus, the remedial measure module 128 may be configured to ignore or shut off a contact displacement system of the exoskeleton, and cause autonomous movement of the exoskeleton independent of movement of the operator via actuating the joints to a pre-defined position. That is, the operator merely “follows” movement of the exoskeleton until it is in a safe location and/or position so that the operator can step out of the exoskeleton. This may be useful to allow the operator to be safely returned to a docking station, for instance, so that diagnostics/maintenance can be performed on the exoskeleton based on the possible defect or malfunction detected and reported by the controller. The remedial measure module 128 may also control one or more brake or clutch devices once the exoskeleton is positioned in a desired safety position, wherein the remedial measure module 128 can then shut off any command signals to all of the motors of the joint mechanisms, essentially shutting down the exoskeleton.
The memory device 1020 can contain modules 1024 that are executable by the processor(s) 1012 and data for the modules 1024. The modules 1024 can execute the functions described earlier. A data store 1022 can also be located in the memory device 1020 for storing data related to the modules 1024 and other applications along with an operating system that is executable by the processor(s) 1012.
Other applications can also be stored in the memory device 1020 and can be executable by the processor(s) 1012. Components or modules discussed in this description that can be implemented in the form of software using high-level programming languages that are compiled, interpreted or executed using a hybrid of the methods.
The computing device can also have access to I/O (input/output) devices 1014 that are usable by the computing devices. Networking devices 1016 and similar communication devices can be included in the computing device. The networking devices 1016 can be wired or wireless networking devices that connect to the internet, a LAN, WAN, or other computing network.
The components or modules that are shown as being stored in the memory device 1020 can be executed by the processor(s) 1012. The term “executable” can mean a program file that is in a form that can be executed by a processor 1012. For example, a program in a higher level language can be compiled into machine code in a format that can be loaded into a random access portion of the memory device 1020 and executed by the processor 1012, or source code can be loaded by another executable program and interpreted to generate instructions in a random access portion of the memory to be executed by a processor. The executable program can be stored in any portion or component of the memory device 1020. For example, the memory device 1020 can be random access memory (RAM), read only memory (ROM), flash memory, a solid state drive, memory card, a hard drive, optical disk, floppy disk, magnetic tape, or any other memory components.
The processor 1012 can represent multiple processors and the memory device 1020 can represent multiple memory units that operate in parallel to the processing circuits. This can provide parallel processing channels for the processes and data in the system. The local communication interface 1018 can be used as a network to facilitate communication between any of the multiple processors and multiple memories. The local communication interface 1018 can use additional systems designed for coordinating communication such as load balancing, bulk data transfer and similar systems.
More specifically,
The redundant control policy system 1102 can comprise a plurality of sensors 1110a-n that are each identified as being associated with a respective joint mechanism 1106a-n. For instance, as discussed above regarding
The redundant control policy system 1102 exemplified in
In one example, the controller 1108 can be configured to generate a plurality of command signals according to a plurality of respective control policies, and configured to generate each command signal based on sensor output data from at least one sensor of the plurality of sensors. The controller 1108 can further be configured to control operation of the at least one joint mechanism according to a selected control policy, of the plurality of control policies, based on an identified discrepancy between at least some of the plurality of command signals, or based on a determination whether each of the plurality of sensors satisfies the at least one defined self-test criterion, or based on a combination of these. More specifically, a first control policy of the plurality of control policies can comprise a contact displacement control policy (as further discussed herein regarding the contact displacement system), whereby the controller 1108 receives and processes sensor output data from one or more force moment sensors 1111 (e.g., or 248 of
Further to this example, a second control policy can be an admittance control policy that “runs” or exists in parallel (i.e., running in the background) with the first control policy. In this manner, the second control policy can be considered a “redundant control policy” that acts as a “back-up” control policy in the event that something is not working properly with the exoskeleton under the first control policy. That is, in the event the controller 1108 detects or determines a potential defect or problem or unsafe operation of the exoskeleton (e.g., a faulty sensor or other defective component, a potentially unsafe command signal, etc.), the controller can execute a remedial measure by switching from the first control policy to the second control policy, as detailed below, to control a joint mechanism of the exoskeleton to avoid harm or injury to the user. Under this second control policy, the controller 1108 can generate a second command signal to be sent to an actuator of the joint mechanism 1106a, for instance, for actuating the joint (e.g., a joint function) to close the control loop. That is, assuming everything is working properly, each of the first and the second command signals could be used to control the joint mechanism 1106a in a safe, desired manner.
The second control policy can utilize sensor output data from one or more sensors 1110b-1110n, such as a torque sensor and an IMU. More particularly, as also exemplified above, the sensor output data from a torque sensor and sensor output data from an IMU can each be calculated into transformed data, and then calculated to estimate or proximate joint rotation position information that is used, along with sensor output data from the force moment sensor 1111, to generate the second command signal, for instance, for actuating a particular joint mechanism. As also exemplified above, other suitable sensor(s) could be recruited as substitute(s) for estimating joint rotational position for purposes of generating a command signal to actuate a joint to close the control loop.
Just as with the contact displacement control policy (i.e., the first control policy), using force moment sensor output data from a force moment sensor (e.g., 1111), a series of joint mechanisms can be controlled under the second control policy. For instance, a force moment sensor (e.g., 6-axis load cell) can be supported about a foot support structure, and two or more joint mechanisms (e.g., joints associated with rotatable about the ankle, knee, and hip) can be controlled by the controller under the second control policy. That is, joint rotational position of each joint, in a series of joints, can be estimated under the second control policy via an admittance control algorithm. For instance, the controller 1108 can process force moment sensor output data through a filter, such as a Kalman filter, and then process the resulting output data through an admittance control algorithm to determine a desired joint position (θd) for each joint of a series of joints for the purposes of controlling each joint mechanism.
The admittance control algorithm can be defined as follows:
{KaJT(θj)Ff}=θd
where Ka is the gain, and JT is Jacobian transpose, and θj is joint position (e.g., estimated joint position based on transformed data derived from a torque sensor and IMU), and Ff is the sensor output data from the force moment sensor. The controller 1108 can perform this calculation to determine desired joint position θd of one or more joints in series of an exoskeleton, as noted above. This “desired joint position” information can then be utilized by the controller to generate appropriate command signals to be transmitted to respective joint mechanisms for controlling each joint mechanism under this second control policy being admittance control, in this example. That is, the controller can generate and transmit two or more individual command signals to respective two or more joint mechanisms, such as for controlling a limb having a series of joint mechanisms.
Further to the above example of the details of the first and second control policies, the following description provides examples of how the controller 1108 can select which control policy to implement to control one or more joint mechanism(s). As noted above, the controller can select a desired or proper control policy based on: 1) an identified discrepancy between at least some of the plurality of command signals, or 2) a determination whether each of the plurality of sensors satisfies at least one self-test defined criterion, or 3) a combination of these. Turning to this “determination”, the at least one self-test defined criterion (and self-test process) is discussed above in detail with regard to
Concurrently, the sensor compare module 1122 (the same or similar to sensor compare module 122) can be configured to compare sensor output data of sensors to determine if one or more sensors is indicative of a pass/fail condition. For instance, similar to the example discussed above regarding sensor compare module 122, the sensor compare module 1122 can compare sensor output data from a first sensor (e.g., joint position sensor) with transformed sensor output data (e.g., transformed from suitable auxiliary sensor(s)) to perform the “compare test process” (as described above) to determine a pass/fail condition of each sensor. If the controller has determined that a particular sensor fails the compare test process, then the control policy selector module 1128 may switch to another control policy (assuming that the new/selected control policy does not have any sensor data that has “failed” the self-test process and the compare test process).
Concurrently or in parallel, while the controller is determining whether each of the plurality of sensors satisfies at least one self-test defined criterion, the command signal compare module 1126 can be configured to identify a discrepancy between at least some of the plurality of command signals, as introduced above, and in one example. This can be achieved by the controller 1108 comparing the command signals with each other according to at least one command comparison criterion to detect any abnormality or discrepancy that may be indicative of an unsafe operation if a particular command signal were to be transmitted to a joint mechanism. The at least one command comparison criterion can comprise various pre-determined criterion to identify a discrepancy between command signals. In one example, the at least one command comparison criterion can comprise an upper limit delta value that may be indicative of an unacceptable difference in command signal value between the command signals. As introduced above, each control policy can have an associated command signal for controlling an actuator of a particular joint mechanism (note, each control policy can have more than one command signal for controlling multiple actuators of respective joint mechanisms arranged in series). For purposes of simplification, the former will be exemplified (i.e., a command signal for a joint mechanism).
Accordingly, assume the controller generates a first command signal (according to a first control policy) that has a first nominal value Q, and a second command signal (according to a second control policy) has a second nominal value Q, and further assume the upper limit delta value is set to 10% (note that Q is not indicative of any particular unit, but represents generically, for purposes of discussion, the value(s) of the types of information in each command signal that are comparable to one another). In the example of an electric motor, the command signal can comprise information to properly commutate the electric motor, such as voltage, time and torque information for controlling the speed and torque of the electric motor, each of which would comprise a value that could be compared to like information in another like command signal. Thus, any delta value between the first and second command signals that is greater than 10% will indicate an unacceptable difference between command signal values of the first and second command signals, and therefore may indicate a problem with the exoskeleton according to one of the control policies. In this example, the first and second command signal values are within 10% of each other in difference, and therefore may be an acceptable difference, which is not indicative of a defect or error of the exoskeleton. Conversely, if the second command signal instead had a nominal value Q that, when compared to the nominal value Q of the first command signal that results in a delta value greater than 10%, this would be an unacceptable difference with the Q value of the first command signal, because the delta or difference is greater than the acceptable pre-determined 10% delta value between the first and second command signals. In this instance, the controller can continue operating the joint mechanism under the first control policy, and thereby transmit the first command signal to the joint mechanism to control the joint.
Comparing just two command signals against each other may not always indicate which command signal is “safer” to transmit to a particular joint mechanism, because either one could be an appropriate, safe command signal. In this regard, the safety control module 1124 can further be configured to determine whether each command signal satisfies at least one safety control criterion, where the determination is indicative of a pass/fail condition of each command signal. In one example, the at least one safety control criterion can comprise at least one of an upper limit value, a lower limit value, or a rate of change value. Accordingly, the safety control module 1124 can perform a “self-test process” for each command signal to determine whether transmission of the command signal could result in an unsafe operation of a joint mechanism. For example, assume a pre-determined upper limit value Q. Further assume that the first command signal comprises a nominal value Q that is below the upper limit value Q. In this case, the result would be a “pass condition” for the first command signal because it's nominal value Q is below the set upper limit value Q. Or, assume a pre-determined lower limit value Q. Further assume that the second command signal comprises a nominal value Q that is below the set lower limit value Q. In this case, the result would be “fail condition” for the second command signal (e.g., it may be possible that a Q value in the second command signal is “under power” for a particular joint mechanism, which could be unsafe depending on the task and depending on the command signal(s) generated for adjacent joint mechanism(s)).
In another example, the command signal compare module 1126 can be configured to identify a discrepancy between three or more command signals, and associated control policies, further to the example above. This can be achieved by the controller comparing the command signals of the different control policies with each other according to pre-determined command comparison criteria or criterion, which, in one example of a criterion, can comprise an upper limit delta value indicative of an acceptable or unacceptable difference in command signal value between one or more of the three command signals. That is, if two command signals are more “agreeable” with each other as compared to a third command signal, then the controller may disregard or eliminate the third command signal and its associated control policy from available control policies. Thus, the controller can be configured to select from acceptable control policies (e.g., the first or second control policy), and then transmit the associated command signal (e.g., the respective first or second command signal) to the associated joint mechanism for controlling an actuator of the joint mechanism. For instance, assume an upper limit delta value or threshold of 15%, and assume the first command signal comprises a first nominal value Q, and the second command signal comprises a second nominal value Q that, when compared to the first nominal value Q of the first command signal, results in a delta value less than the set limit delta value of 15%. Further assume that the third command signal comprises a higher nominal value Q, such that when compared to either of the first or second nominal values of the first or second command signals, respectively, this results in a delta value that is greater than the set limit delta value of 15%. Because the first and second command signals are within an upper limit delta value or threshold of 15%, for instance, they are more “agreeable” with each other, and thereby are within an acceptable difference in value between each other. But, the third command signal, being beyond the upper limit delta value or threshold of 15%, is indicative of an unacceptable difference in command signal value between both of the first and second command signals. Accordingly, the third control policy (associated with the third command signal) can be considered a discrepant command signal (e.g., it may be generating a faulty command signal) that may result in an unsafe actuation or rotation of the associated joint mechanisms. As a result, the controller can be caused to operate one or more functions of the exoskeleton under either the first or second control policies, but not the third control policy.
The various processes and/or other functionality contained within the controller 1108 (see e.g.,
The components or modules that are shown as being stored in the memory device 1020 can be executed by the processor(s) 1012. The term “executable” can mean a program file that is in a form that can be executed by a processor 1012. For example, a program in a higher level language can be compiled into machine code in a format that can be loaded into a random access portion of the memory device 1020 and executed by the processor 1012, or source code can be loaded by another executable program and interpreted to generate instructions in a random access portion of the memory to be executed by a processor. The executable program can be stored in any portion or component of the memory device 1020. For example, the memory device 1020 can be random access memory (RAM), read only memory (ROM), flash memory, a solid state drive, memory card, a hard drive, optical disk, floppy disk, magnetic tape, or any other memory components.
The processor 1012 can represent multiple processors and the memory device 1020 can represent multiple memory units that operate in parallel to the processing circuits. This can provide parallel processing channels for the processes and data in the system. The local communication interface 1018 can be used as a network to facilitate communication between any of the multiple processors and multiple memories. The local communication interface 1018 can use additional systems designed for coordinating communication such as load balancing, bulk data transfer and similar systems.
While the flowcharts presented for this technology can imply a specific order of execution, the order of execution can differ from what is illustrated. For example, the order of two more blocks can be rearranged relative to the order shown. Further, two or more blocks shown in succession can be executed in parallel or with partial parallelization. In some configurations, one or more blocks shown in the flow chart can be omitted or skipped. Any number of counters, state variables, warning semaphores, or messages might be added to the logical flow for purposes of enhanced utility, accounting, performance, measurement, troubleshooting or for similar reasons.
Some of the functional units described in this specification have been labeled as modules, in order to more particularly emphasize their implementation independence. For example, a module can be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module can also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like.
Modules can also be implemented in software for execution by various types of processors. An identified module of executable code can, for instance, comprise one or more blocks of computer instructions, which can be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but can comprise disparate instructions stored in different locations which comprise the module and achieve the stated purpose for the module when joined logically together.
Indeed, a module of executable code can be a single instruction, or many instructions and can even be distributed over several different code segments, among different programs and across several memory devices. Similarly, operational data can be identified and illustrated herein within modules and can be embodied in any suitable form and organized within any suitable type of data structure. The operational data can be collected as a single data set, or it can be distributed over different locations including over different storage devices. The modules can be passive or active, including agents operable to perform desired functions.
The technology described here can also be stored on a computer readable storage medium that includes volatile and non-volatile, removable and non-removable media implemented with any technology for the storage of information such as computer readable instructions, data structures, program modules, or other data. Computer readable storage media include, but is not limited to, a non-transitory machine readable storage medium, such as RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tapes, magnetic disk storage or other magnetic storage devices, or any other computer storage medium which can be used to store the desired information and described technology.
The devices described herein can also contain communication connections or networking apparatus and networking connections that allow the devices to communicate with other devices. Communication connections are an example of communication media. Communication media typically embodies computer readable instructions, data structures, program modules and other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. A “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example and not limitation, communication media includes wired media such as a wired network or direct-wired connection and wireless media such as acoustic, radio frequency, infrared and other wireless media. The term computer readable media as used herein includes communication media.
Reference was made to the examples illustrated in the drawings and specific language was used herein to describe the same. It will nevertheless be understood that no limitation of the scope of the technology is thereby intended. Alterations and further modifications of the features illustrated herein and additional applications of the examples as illustrated herein are to be considered within the scope of the description.
Although the disclosure may not expressly disclose that some embodiments or features described herein may be combined with other embodiments or features described herein, this disclosure should be read to describe any such combinations that would be practicable by one of ordinary skill in the art. The user of “or” in this disclosure should be understood to mean non-exclusive or, i.e., “and/or,” unless otherwise indicated herein.
Furthermore, the described features, structures, or characteristics may be combined in any suitable manner in one or more examples. In the preceding description, numerous specific details were provided, such as examples of various configurations to provide a thorough understanding of examples of the described technology. It will be recognized, however, that the technology may be practiced without one or more of the specific details, or with other methods, components, devices, etc. In other instances, well-known structures or operations are not shown or described in detail to avoid obscuring aspects of the technology.
Although the subject matter has been described in language specific to structural features and/or operations, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features and operations described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. Numerous modifications and alternative arrangements may be devised without departing from the spirit and scope of the described technology.