Design and Control of a Low-cost Non-backdrivable End-effector Upper Limb Rehabilitation Device

Fulan Li1,2 , Yunfei Guo1, Wenda Xu1, Weide Zhang1, Fangyun Zhao1, Baiyu Wang1, Huaguang Du1, and Chengkun Zhang1 1Engineer at Futronics (NA) Corporation, Pasadena, CA, USA.2Fulan Li is the corresponding author (email: [email protected]).
Abstract

This paper presents the development of an upper limb end-effector based rehabilitation device for stroke patients, offering assistance or resistance along any 2-dimensional trajectory during physical therapy. It employs a non-backdrivable ball-screw-driven mechanism for enhanced control accuracy. The control system features three novel algorithms: First, the Implicit Euler velocity control algorithm (IEVC) highlighted for its state-of-the-art accuracy, stability, efficiency and generalizability in motion restriction control. Second, an Admittance Virtual Dynamics simulation algorithm that achieves a smooth and natural human interaction with the non-backdrivable end-effector. Third, a generalized impedance force calculation algorithm allowing efficient impedance control on any trajectory or area boundary. Experimental validation demonstrated the system’s effectiveness in accurate end-effector position control across various trajectories and configurations. The proposed upper limb end-effector-based rehabilitation device, with its high performance and adaptability, holds significant promise for extensive clinical application, potentially improving rehabilitation outcomes for stroke patients.

Index Terms:
Upper Limb Rehabilitation, End-effector Rehabilitation Robot

I INTRODUCTION

Every forty seconds, an individual in the United States experiences a stroke, and every four minutes, a stroke leads to death. Approximately 7.6 million Americans aged 20 years and older have experienced stroke. As age progresses, the prevalence of stroke increases in both males and females. By 2030, the prevalence rate is projected to increase to 3.9% [1], making stroke a major health concern in the US. Research shows that between 30% to 66% of hemiplegic stroke patients experience limited arm motor function six months after a stroke, with only 5% to 20% demonstrating complete functional recovery [2]. These low patient recovery rates are linked to diminished quality of life and increased risks to overall well-being.

Refer to caption
Figure 1: End-effector rehabilitation devices. (A) InMotion [3] arm rehabilitation device, commercialized based on the multi-link MIT MANUS [4] design. (B) H-MAN [5] arm rehabilitation device, utilizing an H-shaped differential pulley and belt mechanism. (C) Physiobot arm rehabilitation device using a backdrivable linear actuated mechanism [6]. (D) ArmMotus M2 Gen[7] rehabilitation device utilizing a backdrivable linear actuated mechanism.

Robotic-assisted therapy (RAT) has been found to be a valuable adjunct to conventional physical therapy for post-stroke upper extremity rehabilitation, particularly for subacute stroke patients [8]. Compared to conventional physical therapy, RAT allows patients to undergo consistent and repetitive rehabilitation exercises, showing comparable and better outcomes [9]. Among those frequently researched RAT devices (e.g. rehabilitation exoskeletons and end-effector devices), the end-effector rehabilitation devices are particularly popular due to their portability and affordability. Meanwhile, the end-effector devices can still deliver patient outcomes that are comparable to more complex systems such as exoskeleton robots [9]. The present article introduces the design and control of a low-cost end-effector rehabilitation device. The proposed device and control method shows the potential to offer tailored and long-term adaptive training for stroke patients, and extend the device’s product life span.

I-A End-effector Upper Limb Rehabilitation Devices

End-effector upper limb rehabilitation devices refer to planar robots enabling movement along a 2D plane. Numerous prior studies have investigated rehabilitation techniques using these 2D planar robots through rigorous experimental methodologies [4, 10, 11, 12, 5, 13, 6]. There are three primary types of end-effector rehabilitation robots: multi-link robots [4, 10, 11, 12], pulley-driven robots [5, 13], and linear actuated robots [6] ( Fig. 1). The MIT MANUS is a well-known example of a multi-link rotary robot with a two-decade history [4]. Stability of the vertical force, resulting from the user placing their arm on the device, has been a notable concern for multi-link rotary robots. Despite their portable and backdrivable direct drive mechanisms providing high accuracy, maintaining this stability remains challenging [5]. Stability issues can be a major issue affecting user experience, motivation, engagement, and product adoption rate [14, 15]. Pulley-drive robots attempted to employ a differential drive with pulleys and belts, to address the stability issues and improve dynamics calculation [5, 16, 13, 17]. However, the pulley-drive robots require high maintenance due to the frequent wear and tear on the belt drives. To our knowledge, only one commercialized device claimed to solve these reported issues using a backdrivable linear actuated mechanism, but with minimum information revealed [6, 7]. The current paper explores an alternative system architecture with a non-backdrivable mechanism, and attempts to provide explicit evidence of the potential benefits.

End-effector upper limb rehabilitation devices typically offer three training functions tailored to specific rehabilitation interventions: robot-guided trajectory following, human-guided trajectory following, and free-moving. These training functionalities aim to map the sequential stages of conventional physical therapy progression [18, 19, 13]. The robot-guided trajectory following function is primarily utilized in the early stages of rehabilitation for stretching and passive range of motion (ROM) exercises [20]. Patients follow a predetermined 2D trajectory operated by the device, without using strength or exerting forces. The human-guided trajectory following function attempts to facilitate active range of motion (ROM) exercises and resistance training [20, 21]. In this function, the device provides assistance or resistance as needed. The free-moving function allows users unrestricted movement within the 2D workspace, facilitating engagement with rehabilitation games, promoting sensorimotor training, and enhancing tactile feedback, motor planning, and sensory and proprioceptive awareness [22].

I-B Novel Contributions

This paper introduced the Gantry Arm Rehabilitation Device (GARD), a low-cost, easily maintainable end-effector-based upper limb rehabilitation robot, as shown in Fig. 2. The proposed design for GARD featured a non-backdrivable mechanism where previous research rarely delved into. The design incorporates two ball-screw-driven linear actuators for the x and y axis. Compared to conventional multi-link robots, the proposed robot offers better stability along the z-axis. Compared to the pulley-belt driven robots, the proposed system exhibits enhanced wear resistance, owing to its ball-screw direct drive mechanism. The proposed control method based on non-backdrivable design uniquely offers functionalities such as Range of Motion (ROM) restricted moving and hard boundary human-guided trajectory following, in addition to providing all functionalities of existing commercial devices with superior performance. Three main challenges are addressed in this paper.

First, a virtual dynamics model is required for controlling a non-backdrivable mechanism with sensor force as input and end-effector velocity as output. We proposed an admittance control method to emulate a virtual mass, static resistance, and speed damper, which achieves natural sensation of free moving.

Second, implementing end-effector area restriction control on a non-backdrivable mechanism using motor velocity control presents the challenge of position error accumulation. This error arises from both the control discretization and the motor acceleration limitations. While increasing the control frequency and using higher quality motors can reduce the error, it cannot be entirely eliminated and tends to accumulate over time. We proposed a novel Implicit Euler Velocity Control (IEVC) algorithm which can completely and efficiently addresses this problem.

Third, trajectory tracking necessitates customization for individual users. No prior research has proposed a generalized method capable of controlling along any given trajectory. Existing studies [5, 17] or commercial products [7] focus on trajectory with symbolic solutions. Our proposal introduces a numerical solution to provide force assistance or resistance along any trajectory, including hand-drawn ones. This method entails computer vision inspired numerical trajectory gradient generation to determine the direction of force assistance or resistance, coupled with a series of admittance and impedance controls on the end-effector [23].

Refer to caption
Figure 2: The Gantry Arm Rehabilitation Device (GARD) operates in Human-guided Trajectory Mode along a circular trajectory. The GARD can provide either assistance or resistance to support physical therapy training.

II Gantry Arm Rehabilitation Device

II-A Mechanical Design

The Gantry Arm Rehabilitation Device (GARD) end-effector offers a flexible range of motion within a 65x55cm 2D workspace. This device utilizes two rotary actuators coupled with ball screws, enabling linear movement along the x and y axis, as depicted in Fig. 3. The ball screws operate at a ratio of 1 turn to 2 millimeters. The actuators can achieve a maximum speed of 80 revolutions per second, with acceleration limited to 800 revolutions per second squared. Additionally, each actuator provides a maximum torque output of 0.22Nm.

Refer to caption
Figure 3: Mechanical design of GARD. (A) The top view illustrates the 65x55cm 2D workspace attained through the use of two rotary actuators and ball screws. (B) The front view showcases the y-axis actuator and ball screw, which can move both the end-effector and the x-axis actuator with the ball screw in the y-direction. The x-axis actuator moves the end-effector in the x-direction.

II-B Electrical Design

The power source is a medical-grade power supply with a rated output of 24V and 6.5A. This power is distributed via a power distribution board to various components including the motor controller, force sensor, and controller board. Two motor controllers are incorporated to connect with two Brushless DC motors equipped with 1000CPR resolution optical encoders for precise control over the x and y axis ball screws. Additionally, the system employs two limit switches for motor-homing purposes. For force sensing at the end-effector, a low-cost Galoce GPB160 3-axis load cell is employed, utilizing an ADS1232 SPI ADC converter. To manage low-level control and communication with the high-level controller, the limit switches, ADC converters, and motor drivers are all interfaced with an STM32 microcontroller unit (MCU).

II-C Control Hierarchy

The GARD features a two-level control hierarchy comprising a High-level Virtual Dynamic Model and a Low-level Firmware Controller, as depicted in Fig. 4. At the high level, the Virtual Dynamic Model computes the desired motor velocity based on sensor data and user settings. At the low level, the Firmware Controller manages sensor data collection, timing regulation, and motor control.

The current structural setup diverges from conventional admittance control systems. Unlike conventional systems, where the virtual dynamic model and motor control are not separated due to the influence of applied forces on robot dynamics, both input force and desired velocity must be considered in motor torque calculations. However, the proposed device GARD features a non-backdrivable end-effector, where user force does not influence end-effector motion, allowing the separation of dynamic model and motor control. The proposed structure enables us to establish a clear control hierarchy, and maximize the integration advantages of commercial motor controllers, that is, the integrated commercial motor controller firmware dedicated to motor velocity control typically operates at much higher control frequencies, and is more stable and efficient than user’s implementation on a multitask MCU.

Refer to caption
Figure 4: Control hierarchy of GARD. The high-level Virtual Dynamics Model computes the desired motor velocity based on sensor data and user settings. The Low-level Firmware Controller manages sensor data collection, timing regulation, and motor control. Fsmpsubscript𝐹𝑠𝑚𝑝F_{smp}italic_F start_POSTSUBSCRIPT italic_s italic_m italic_p end_POSTSUBSCRIPT denotes data from the force sensor. Pinsubscript𝑃𝑖𝑛P_{in}italic_P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT denotes the current position of the end-effector. Yvsubscript𝑌𝑣Y_{v}italic_Y start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT denotes the virtual dynamics. vdsubscript𝑣𝑑v_{d}italic_v start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT denotes the desired velocity. Cmsubscript𝐶𝑚C_{m}italic_C start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT denotes the motor controller. Ymsubscript𝑌𝑚Y_{m}italic_Y start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT denotes the robot dynamics.

III GARD Operation Modes

Refer to caption
Figure 5: Control hierarchy for Robot-guided Trajectory Mode. The core control block in Robot-guided Trajectory Mode is the Motion Restriction Controller which takes a Motion Restriction Map and a velocity as input. The GUI Controller provides the Motion Restriction Map, which specifies the permitted end-effector positions. The Velocity Regulator provides a regulated velocity based on the user’s desired speed and the previous motor velocity direction. The Motion Restriction Controller will limit the end-effector’s motion inside the permitted area by modifying the input velocity using the IEVC algorithm. The output velocity of the Motion Restriction Controller will be sent to the Low-level Firmware Controller.
Refer to caption
Figure 6: Control hierarchy for Free Mode and Human-guided Trajectory Mode with hard boundary. The GUI controller generates Motion Restriction Map base on the user’s ROM restrictions and pass the map to the Motion Restriction Controller. The Admittance Virtual Dynamics block simulates a mass-friction-damper system and outputs the calculated motor velocity to the Motion Restriction Controller.
Refer to caption
Figure 7: Control hierarchy for Human-guided Trajectory Mode. In addition to the Motion Restriction Map, the GUI controller also generates the Spring Force Map used by the Impedance Controller. The Impedance Controller calculates the net force of the end-effector input and the impedance spring-damper system, pass the result to the admittance virtual dynamics. The rest of the control blocks are identical to Free Mode.

Three distinct operation modes have been implemented to support patients at different stages of recovery: Robot-guided Trajectory Mode, Free Mode, and Human-guided Trajectory mode. Additionally, a Graphical User Interface (GUI) is provided for all operational modes, offering GUI functionality and rehabilitation gaming features. This section will introduce these operation modes and the corresponding control algorithm used.

III-A Robot-guided Trajectory Mode

Designed to enable passive rehabilitation training for the patient’s arm, Robot-guided Trajectory Mode entails the robot automatically following a pre-set trajectory at a user-defined speed. In this non-interactive mode, exerted force on the end-effector does not influence the robot’s motion. It’s typically employed during the early recovery stage when external force guidance is required for completing arm movements.

The Robot-guided Trajectory Mode control hierarchy is shown in Fig. 5. The GUI controller in robot-guided mode provides desired moving speed and Motion Restriction Map. It then passes the map to the Motion Restriction Controller. The Velocity Regulator provides a regulated velocity based on the user’s desired speed and the previous motor velocity. The Motion Restriction Controller will limit the end-effector’s motion inside the permitted area by modifying the input velocity using the IEVC algorithm. The Motion Restriction Controller and IEVC algorithm are reused in all modes, details can be found in Sec. IV-A.

III-B Free Mode

The Free Mode is an interactive mode, which can be used in a later recovery stage to facilitate participation in rehabilitation games and promote sensorimotor training. The Free Mode allows the user to move the end-effector within the user’s Range of Motion (ROM). ROM is defined as the area bounded by a closed trajectory traversed by the end-effector. An example of the generation of ROM Restriction Map is illustrated in Fig. 13 (A) and (B). The interaction with the ROM boundary resembles encountering a hard, smooth wall-like boundary, restricting the user’s arm motion inside a safe workspace to avoid injuries.

Fig. 6 presents the control hierarchy for the Free Mode. This mode contains two key control blocks. The first control block is the Motion Restriction Controller, which is identical to the block in Robot-guided Trajectory Mode. The second control block is the Admittance Virtual Dynamics block, which involves implementing virtual robot dynamics where the robot simulates the behavior of a mass-friction-damper system (detailed shown in Sec. IV-B). The Admittance Virtual Dynamics block takes net external force as input on body and sends the desired velocity to the Motion Restriction Controller. The combination of the Motion Restriction Controller and the Admittance Virtual Dynamics enables the end-effector to move freely inside the permitted area, and interact with a hard, smooth wall-like area boundary.

III-C Human-guided Trajectory Modes

The Human-guided Trajectory Modes are utilized for both active Range of Motion (ROM) training and resistance training. The proposed device comprises two submodes: the Human-guided Trajectory Mode with hard boundary and the Human-guided Trajectory Mode with soft boundary, offering varying degrees of freedom for active ROM training.

In Human-guided Trajectory Mode with hard boundary, users can maneuver the end-effector freely along a trajectory with hard boundaries. The control structure of this mode mirrors that of the Free Mode, because under our proposed method the trajectory restriction and the area restriction are identical. The method used to generate Motion Restriction Map is listed in Sec. IV-A.

Conversely, the Human-guided Trajectory Mode with soft boundary permits greater flexibility in rehabilitation training. Here, users can guide the end-effector along a trajectory with soft boundaries, allowing deviations from the desired path. Automatic assistance force is applied to realign the end-effector with the trajectory when necessary. The control hierarchy of the Human-guided Trajectory Mode with soft boundary is outlined in Fig. 7. This mode incorporates three primary control blocks. In addition to the Motion Restriction Controller and Admittance Virtual Dynamics used in previous modes, an Impedance Controller block is introduced. This block use impedance control to provide the assistance force for trajectory realignment. This control block will adjusts the end-effector force based on the Impedance Force Map and end-effector position, sending the modified net force to the Admittance Virtual Dynamics for further computation. The detail of Spring Force Map generation and Impedance Controller can be found in Sec. IV-C.

IV Control Algorithms

This section introduces the control algorithms used for GARD to enable different operation modes. Sec. IV-A describes the algorithm used for motion restriction and trajectory following. Sec. IV-B describes the algorithms that allow the end-effector to move with simulated virtual dynamics. Sec. IV-C describes the algorithms that add a soft boundary to the Human-guided Trajectory Mode.

IV-A Motion Restriction Algorithms

A common practice in implementing the trajectory-following algorithm using velocity control is to decompose the current velocity into tangential and radial velocity, and adjust them accordingly. However, these types of algorithms share a common issue such that the trajectory following error can accumulate over time resulting in increased deviation. Take circular trajectory as an example, a trivial way to limit the end-effector movement on a circular trace is to dynamically calculate the tangential direction at current position and marching only in that direction. However, with this method in practice, the error caused by the control discretization and the motor acceleration limitations will accumulate and will cause the end-effector to move further away over time. This example of truncation error accumulation is the same as the local truncation error accumulation in solving the initial value problems using the Explicit Euler Integral [24]. We proposed the Implicit Euler velocity control (IEVC) algorithm initially for solving this error accumulation issue in free moving along an arbitrary trajectory restriction. However, we discover that this algorithm can be naturally extended to 2D area restriction or even 3D space restriction. Hence, we define the Motion Restriction Control as the end-effector moving control under a virtual positional restriction. Areas in which the end-effector is allowed to move freely are defined as the permitted area, otherwise are defined prohibited area.

The proposed IEVC algorithm can effectively restrict the end-effector inside any permitted area, implemented in Fig. 5 as Motion Restriction Controller block. This algorithm enables the end-effector to move freely inside the permitted area and interact with a hard-smooth-wall like area boundary. The core of this algorithm is dynamically searching and choosing the best chasing target. To make the algorithm generalizable to any scenario, it is implemented upon a discretized taskspace with Wg×Hgsubscript𝑊𝑔subscript𝐻𝑔W_{g}\times H_{g}italic_W start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT × italic_H start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT positions, and use a 2D matrix of equal size to represent the taskspace motion restriction which referred to as the Motion Restriction Map. The detailed Motion Restriction Map generation method and IEVC algorithm are described in the following two subsections.

IV-A1 Motion Restriction Map Generation

The task space of GARD is discretized into Wg×Hgsubscript𝑊𝑔subscript𝐻𝑔W_{g}\times H_{g}italic_W start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT × italic_H start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT positions, generating a 2D matrix of equal size referred to as the Motion Restriction Map MrssubscriptM𝑟𝑠\textbf{{M}}_{rs}M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT. The MrssubscriptM𝑟𝑠\textbf{{M}}_{rs}M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT can be viewed as a grayscale image. Each pixel entry on MrssubscriptM𝑟𝑠\textbf{{M}}_{rs}M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT corresponds to a physical GARD end-effector location. A pixel storing a value of 0 indicates that the corresponding location is the prohibited area; otherwise, the location is the permitted area. MrssubscriptM𝑟𝑠\textbf{{M}}_{rs}M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT will be initialized with all 0, meaning all prohibited area.

For an trajectory restriction defined using implicit functions f(x,y)=0𝑓𝑥𝑦0f(x,y)=0italic_f ( italic_x , italic_y ) = 0 or more generalized area restriction defined using F(x,y)<0F𝑥𝑦0\textbf{F}(x,y)<\textbf{0}F ( italic_x , italic_y ) < 0, MrssubscriptM𝑟𝑠\textbf{{M}}_{rs}M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT can be generated by iterating through all entries [i,j]𝑖𝑗[i,j][ italic_i , italic_j ] on MrssubscriptM𝑟𝑠\textbf{{M}}_{rs}M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT and evaluating abs(f(j,i))<Es𝑎𝑏𝑠𝑓𝑗𝑖subscript𝐸𝑠abs(f(j,i))<E_{s}italic_a italic_b italic_s ( italic_f ( italic_j , italic_i ) ) < italic_E start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT or F(j,i)<0F𝑗𝑖0\textbf{F}(j,i)<\textbf{0}F ( italic_j , italic_i ) < 0. Essubscript𝐸𝑠E_{s}italic_E start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT is the trajectory width for trajectory restriction. If [i,j]𝑖𝑗[i,j][ italic_i , italic_j ] satisfy the function, Mrs[i,j]subscriptM𝑟𝑠𝑖𝑗\textbf{{M}}_{rs}[i,j]M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT [ italic_i , italic_j ] will be assigned 1, which represents the permitted area.

For other general user-defined motion restrictions such as a hand-drawn trajectory restriction, MrssubscriptM𝑟𝑠\textbf{{M}}_{rs}M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT can also be generated or edited using an image editing tools.

IV-A2 Motion Restriction Controller (IEVC algorithm)

The IEVC algorithm takes the current velocity VinsubscriptV𝑖𝑛\textbf{{V}}_{in}V start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT, current position PinsubscriptP𝑖𝑛\textbf{{P}}_{in}P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT and the Motion Restriction Map MrssubscriptM𝑟𝑠\textbf{{M}}_{rs}M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT as input, and will output the motion restricted end-effector velocity VrsubscriptV𝑟\textbf{{V}}_{r}V start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT which is guaranteed to limit the end-effector position towards the permitted area.

The key concept of this algorithm is to predict end-effector location in the next step and adjust the current velocity output, inspired by the Implicit Euler Method in solving the initial value problem [24]. The algorithm will first draw a circle centered at the end-effector PinsubscriptP𝑖𝑛\textbf{{P}}_{in}P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT with radius proportional to the current speed magnitude. The proportional gain Gvsubscript𝐺𝑣G_{v}italic_G start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT needs to be adjusted by the transmission ratio between the motor velocity and the end-effector velocity. Then, the algorithm will mark all circle’s intersection points with the permitted area as candidate points for the next chasing target. An array of normalized vectors is generated by pointing the current end-effector position to all candidate points. Next, the algorithm will iterate through the generated vector array, and find the vector that has the most aligned direction with the input end-effector velocity (VinsubscriptV𝑖𝑛\textbf{{V}}_{in}V start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT). The most aligned vector in the vector array is chosen as the end-effector final direction vector DnextsubscriptD𝑛𝑒𝑥𝑡\textbf{{D}}_{next}D start_POSTSUBSCRIPT italic_n italic_e italic_x italic_t end_POSTSUBSCRIPT. Finally, the end-effector output velocity VrsubscriptV𝑟\textbf{{V}}_{r}V start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT is calculated by combining the direction of DnextsubscriptD𝑛𝑒𝑥𝑡\textbf{{D}}_{next}D start_POSTSUBSCRIPT italic_n italic_e italic_x italic_t end_POSTSUBSCRIPT with the non-zero clipped magnitude of VinsubscriptV𝑖𝑛\textbf{{V}}_{in}V start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT’s projection onto the DnextsubscriptD𝑛𝑒𝑥𝑡\textbf{{D}}_{next}D start_POSTSUBSCRIPT italic_n italic_e italic_x italic_t end_POSTSUBSCRIPT.

Fig. 8 illustrates an example of IEVC output calculation. This example also shows that even when current position PinsubscriptP𝑖𝑛\textbf{{P}}_{in}P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT does not lie inside the permitted area (trajectory), the IEVC can still effectively restrict the end-effector location on the area boundary by exponentially minimizing the divergence distance over time steps. Algo. 1 present the sudo code for IEVC.

The helper functions implementation of IEVC can be found in Algo. 4. The circleMap()𝑐𝑖𝑟𝑐𝑙𝑒𝑀𝑎𝑝circleMap()italic_c italic_i italic_r italic_c italic_l italic_e italic_M italic_a italic_p ( ) function generates a points-on-the-circle list which contains all positions on the taskspace that has the distance equal to Rcirclesubscript𝑅𝑐𝑖𝑟𝑐𝑙𝑒R_{circle}italic_R start_POSTSUBSCRIPT italic_c italic_i italic_r italic_c italic_l italic_e end_POSTSUBSCRIPT within a tolerance. The resultant list will be provided to findIntersec()𝑓𝑖𝑛𝑑𝐼𝑛𝑡𝑒𝑟𝑠𝑒𝑐findIntersec()italic_f italic_i italic_n italic_d italic_I italic_n italic_t italic_e italic_r italic_s italic_e italic_c ( ) function to find all IEVC candidate points.

Refer to caption
Figure 8: Illustration for IEVC calculation at position PinsubscriptP𝑖𝑛\textbf{{P}}_{in}P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT with velocity VinsubscriptV𝑖𝑛\textbf{{V}}_{in}V start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT. In this example, the IEVC finds 2 candidates according to the intersection circle centered at PinsubscriptP𝑖𝑛\textbf{{P}}_{in}P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT with radius GvVinsubscript𝐺𝑣normsubscriptV𝑖𝑛G_{v}*\|\textbf{{V}}_{in}\|italic_G start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT ∗ ∥ V start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT ∥. Candidate 1 is selected due to higher directional alignment with VinsubscriptV𝑖𝑛\textbf{{V}}_{in}V start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT. The output VrsubscriptV𝑟\textbf{{V}}_{r}V start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT is PinsubscriptP𝑖𝑛\textbf{{P}}_{in}P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT’s projection onto candidate 1’s direction. The IEVC is stable because the restricted velocity given by IEVC always target towards permitted area. In the example above, even when current position PinsubscriptP𝑖𝑛\textbf{{P}}_{in}P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT does not lie inside the permitted area (trajectory), the error will decade exponentially over time steps and IEVC can still effectively restrict the end-effector location on the area boundary.
Algorithm 1 Implicit Euler velocity control (IEVC)
1:Pin,subscriptP𝑖𝑛\textbf{{P}}_{in},P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT , Vin,subscriptV𝑖𝑛\textbf{{V}}_{in},V start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT , Mrs,subscriptM𝑟𝑠\textbf{{M}}_{rs},M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT , Gvsubscript𝐺𝑣G_{v}italic_G start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT
2:VrsubscriptV𝑟\textbf{{V}}_{r}V start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT
3:Rcircleround(Gvnorm(Vin))subscript𝑅𝑐𝑖𝑟𝑐𝑙𝑒𝑟𝑜𝑢𝑛𝑑subscript𝐺𝑣𝑛𝑜𝑟𝑚subscriptV𝑖𝑛R_{circle}\Leftarrow round(G_{v}*norm(\textbf{{V}}_{in}))italic_R start_POSTSUBSCRIPT italic_c italic_i italic_r italic_c italic_l italic_e end_POSTSUBSCRIPT ⇐ italic_r italic_o italic_u italic_n italic_d ( italic_G start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT ∗ italic_n italic_o italic_r italic_m ( V start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT ) )
4:candidatesListfindIntersec(Mrs,Rcircle,Pin)𝑐𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑒𝑠𝐿𝑖𝑠𝑡𝑓𝑖𝑛𝑑𝐼𝑛𝑡𝑒𝑟𝑠𝑒𝑐subscriptM𝑟𝑠subscript𝑅𝑐𝑖𝑟𝑐𝑙𝑒subscriptP𝑖𝑛candidatesList\Leftarrow findIntersec(\textbf{{M}}_{rs},R_{circle},\textbf{{P}% }_{in})italic_c italic_a italic_n italic_d italic_i italic_d italic_a italic_t italic_e italic_s italic_L italic_i italic_s italic_t ⇐ italic_f italic_i italic_n italic_d italic_I italic_n italic_t italic_e italic_r italic_s italic_e italic_c ( M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT , italic_R start_POSTSUBSCRIPT italic_c italic_i italic_r italic_c italic_l italic_e end_POSTSUBSCRIPT , P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT )
5:if length(candidatesList)>0𝑙𝑒𝑛𝑔𝑡𝑐𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑒𝑠𝐿𝑖𝑠𝑡0length(candidatesList)>0italic_l italic_e italic_n italic_g italic_t italic_h ( italic_c italic_a italic_n italic_d italic_i italic_d italic_a italic_t italic_e italic_s italic_L italic_i italic_s italic_t ) > 0 then
6:     DnextNonesubscriptD𝑛𝑒𝑥𝑡𝑁𝑜𝑛𝑒\textbf{{D}}_{next}\Leftarrow NoneD start_POSTSUBSCRIPT italic_n italic_e italic_x italic_t end_POSTSUBSCRIPT ⇐ italic_N italic_o italic_n italic_e
7:     maxProj𝑚𝑎𝑥𝑃𝑟𝑜𝑗maxProj\Leftarrow-\inftyitalic_m italic_a italic_x italic_P italic_r italic_o italic_j ⇐ - ∞
8:     for all PcsubscriptP𝑐\textbf{{P}}_{c}P start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT in candidatesList𝑐𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑒𝑠𝐿𝑖𝑠𝑡candidatesListitalic_c italic_a italic_n italic_d italic_i italic_d italic_a italic_t italic_e italic_s italic_L italic_i italic_s italic_t do
9:         Dcnormalize(PcPin)subscriptD𝑐𝑛𝑜𝑟𝑚𝑎𝑙𝑖𝑧𝑒subscriptP𝑐subscriptP𝑖𝑛\textbf{{D}}_{c}\Leftarrow normalize(\textit{{P}}_{c}-\textbf{{P}}_{in})D start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT ⇐ italic_n italic_o italic_r italic_m italic_a italic_l italic_i italic_z italic_e ( P start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT - P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT )
10:         curProj(VinDc)𝑐𝑢𝑟𝑃𝑟𝑜𝑗subscriptV𝑖𝑛subscriptD𝑐curProj\Leftarrow(\textbf{{V}}_{in}\cdot\textbf{{D}}_{c})italic_c italic_u italic_r italic_P italic_r italic_o italic_j ⇐ ( V start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT ⋅ D start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT )
11:         if curProj>maxProj𝑐𝑢𝑟𝑃𝑟𝑜𝑗𝑚𝑎𝑥𝑃𝑟𝑜𝑗curProj>maxProjitalic_c italic_u italic_r italic_P italic_r italic_o italic_j > italic_m italic_a italic_x italic_P italic_r italic_o italic_j then
12:              maxProjcurProj𝑚𝑎𝑥𝑃𝑟𝑜𝑗𝑐𝑢𝑟𝑃𝑟𝑜𝑗maxProj\Leftarrow curProjitalic_m italic_a italic_x italic_P italic_r italic_o italic_j ⇐ italic_c italic_u italic_r italic_P italic_r italic_o italic_j
13:              DnextDcsubscriptD𝑛𝑒𝑥𝑡subscriptD𝑐\textbf{{D}}_{next}\Leftarrow\textbf{{D}}_{c}D start_POSTSUBSCRIPT italic_n italic_e italic_x italic_t end_POSTSUBSCRIPT ⇐ D start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT
14:         end if
15:     end for
16:     Vrmax(maxProj,0)DnextsubscriptV𝑟𝑚𝑎𝑥𝑚𝑎𝑥𝑃𝑟𝑜𝑗0subscriptD𝑛𝑒𝑥𝑡\textbf{{V}}_{r}\Leftarrow max(maxProj,0)*\textbf{{D}}_{next}V start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ⇐ italic_m italic_a italic_x ( italic_m italic_a italic_x italic_P italic_r italic_o italic_j , 0 ) ∗ D start_POSTSUBSCRIPT italic_n italic_e italic_x italic_t end_POSTSUBSCRIPT
17:     return VrsubscriptV𝑟\textbf{{V}}_{r}V start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT
18:end if

IV-B Admittance Virtual Dynamics

Admittance Virtual Dynamics block is used in both Free mode and Human-guided Trajectory Modes. The goal of this control block is to simulate an adjustable mass-friction-damper dynamics allowing natural motion of the end-effector.

Given a simulated mass, we have the following equation of motion in the Laplace domain:

f=smvvkrvf=1mvkr1s𝑓ssubscript𝑚𝑣𝑣subscript𝑘𝑟𝑣𝑓1subscript𝑚𝑣subscript𝑘𝑟1s\begin{split}f&=\textbf{{s}}m_{v}vk_{r}\\ \dfrac{v}{f}&=\dfrac{1}{m_{v}k_{r}}\cdot\dfrac{1}{\textbf{{s}}}\end{split}start_ROW start_CELL italic_f end_CELL start_CELL = s italic_m start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT italic_v italic_k start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL divide start_ARG italic_v end_ARG start_ARG italic_f end_ARG end_CELL start_CELL = divide start_ARG 1 end_ARG start_ARG italic_m start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT italic_k start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT end_ARG ⋅ divide start_ARG 1 end_ARG start_ARG s end_ARG end_CELL end_ROW (1)

where, mvsubscript𝑚𝑣m_{v}italic_m start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT denotes the virtual mass. krsubscript𝑘𝑟k_{r}italic_k start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT denotes the transmission ratio between the motor to end-effector velocity. Tssubscript𝑇𝑠T_{s}italic_T start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT denotes the time step size.

The Laplacian domain model cannot be directly used for discrete control. There are two steps to convert the Laplacian domain model into discrete control. First, take the Z-transform with Tustin estimator:

vf=1mvkrTs2z+1z1v=Tsmvkrf+z1f2+z1v𝑣𝑓1subscript𝑚𝑣subscript𝑘𝑟subscript𝑇𝑠2z1z1𝑣subscript𝑇𝑠subscript𝑚𝑣subscript𝑘𝑟𝑓superscriptz1𝑓2superscriptz1𝑣\begin{split}\dfrac{v}{f}&=\dfrac{1}{m_{v}k_{r}}\cdot\dfrac{T_{s}}{2}\dfrac{% \textbf{{z}}+1}{\textbf{{z}}-1}\\ \Rightarrow v&=\dfrac{T_{s}}{m_{v}k_{r}}\cdot\dfrac{f+\textbf{{z}}^{-1}f}{2}+% \textbf{{z}}^{-1}v\end{split}start_ROW start_CELL divide start_ARG italic_v end_ARG start_ARG italic_f end_ARG end_CELL start_CELL = divide start_ARG 1 end_ARG start_ARG italic_m start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT italic_k start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT end_ARG ⋅ divide start_ARG italic_T start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG divide start_ARG z + 1 end_ARG start_ARG z - 1 end_ARG end_CELL end_ROW start_ROW start_CELL ⇒ italic_v end_CELL start_CELL = divide start_ARG italic_T start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT end_ARG start_ARG italic_m start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT italic_k start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT end_ARG ⋅ divide start_ARG italic_f + z start_POSTSUPERSCRIPT - 1 end_POSTSUPERSCRIPT italic_f end_ARG start_ARG 2 end_ARG + z start_POSTSUPERSCRIPT - 1 end_POSTSUPERSCRIPT italic_v end_CELL end_ROW (2)

Second, transform the z-domain result back to the time domain to generate discrete control implementation:

vk=Tsmvkrf+fk12+vk1subscript𝑣𝑘subscript𝑇𝑠subscript𝑚𝑣subscript𝑘𝑟𝑓subscript𝑓𝑘12subscript𝑣𝑘1v_{k}=\dfrac{T_{s}}{m_{v}k_{r}}\cdot\dfrac{f+f_{k-1}}{2}+v_{k-1}italic_v start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = divide start_ARG italic_T start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT end_ARG start_ARG italic_m start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT italic_k start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT end_ARG ⋅ divide start_ARG italic_f + italic_f start_POSTSUBSCRIPT italic_k - 1 end_POSTSUBSCRIPT end_ARG start_ARG 2 end_ARG + italic_v start_POSTSUBSCRIPT italic_k - 1 end_POSTSUBSCRIPT (3)

Algo. 2 shows the implementation of Eq. 3. The algorithm takes current input force FinsubscriptF𝑖𝑛\textbf{{F}}_{in}F start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT, input force on last time step FlastsubscriptF𝑙𝑎𝑠𝑡\textbf{{F}}_{last}F start_POSTSUBSCRIPT italic_l italic_a italic_s italic_t end_POSTSUBSCRIPT, velocity on last time step VlastsubscriptV𝑙𝑎𝑠𝑡\textbf{{V}}_{last}V start_POSTSUBSCRIPT italic_l italic_a italic_s italic_t end_POSTSUBSCRIPT, virtual mass mvsubscript𝑚𝑣m_{v}italic_m start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT, dam** ratio ζasubscript𝜁𝑎\zeta_{a}italic_ζ start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT, and friction coefficient μ𝜇\muitalic_μ as input, and will output the desired velocity VdsubscriptV𝑑\textbf{{V}}_{d}V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT. The VdsubscriptV𝑑\textbf{{V}}_{d}V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT will be sent to the Motion Restriction Controller. The motor velocity from the Motion Restriction Controller will be sent to low level GARD firmware (e.g. MCU, motor controller) for close loop velocity control.

Algorithm 2 Admittance Virtual Dynamics
1:Fin,subscriptF𝑖𝑛\textbf{{F}}_{in},F start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT , Flast,subscriptF𝑙𝑎𝑠𝑡\textbf{{F}}_{last},F start_POSTSUBSCRIPT italic_l italic_a italic_s italic_t end_POSTSUBSCRIPT , Vlast,subscriptV𝑙𝑎𝑠𝑡\textbf{{V}}_{last},V start_POSTSUBSCRIPT italic_l italic_a italic_s italic_t end_POSTSUBSCRIPT , ζa,subscript𝜁𝑎\zeta_{a},italic_ζ start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT , mv,subscript𝑚𝑣m_{v},italic_m start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT , μ𝜇\muitalic_μ
2:VdsubscriptV𝑑\textbf{{V}}_{d}V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT
3:YmTs/mv/krsubscript𝑌𝑚subscript𝑇𝑠subscript𝑚𝑣subscript𝑘𝑟Y_{m}\Leftarrow T_{s}/m_{v}/k_{r}italic_Y start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT ⇐ italic_T start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT / italic_m start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT / italic_k start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT
4:VlastVlast(1ζaYm)subscriptV𝑙𝑎𝑠𝑡subscriptV𝑙𝑎𝑠𝑡1subscript𝜁𝑎subscript𝑌𝑚\textbf{{V}}_{last}\Leftarrow\textbf{{V}}_{last}*(1-\zeta_{a}*Y_{m})V start_POSTSUBSCRIPT italic_l italic_a italic_s italic_t end_POSTSUBSCRIPT ⇐ V start_POSTSUBSCRIPT italic_l italic_a italic_s italic_t end_POSTSUBSCRIPT ∗ ( 1 - italic_ζ start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT ∗ italic_Y start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT )
5:VdVlast+(Fin+Flast)/2YmsubscriptV𝑑subscriptV𝑙𝑎𝑠𝑡subscriptF𝑖𝑛subscriptF𝑙𝑎𝑠𝑡2subscript𝑌𝑚\textbf{{V}}_{d}\Leftarrow\textbf{{V}}_{last}+(\textbf{{F}}_{in}+\textbf{{F}}_% {last})/2*Y_{m}V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ⇐ V start_POSTSUBSCRIPT italic_l italic_a italic_s italic_t end_POSTSUBSCRIPT + ( F start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT + F start_POSTSUBSCRIPT italic_l italic_a italic_s italic_t end_POSTSUBSCRIPT ) / 2 ∗ italic_Y start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT
6:Vdmax(0,Vdmv9.8μYm)subscriptV𝑑𝑚𝑎𝑥0subscriptV𝑑subscript𝑚𝑣9.8𝜇subscript𝑌𝑚\textbf{{V}}_{d}\Leftarrow max(\textbf{0},\textbf{{V}}_{d}-m_{v}*9.8*\mu*Y_{m})V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ⇐ italic_m italic_a italic_x ( 0 , V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT - italic_m start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT ∗ 9.8 ∗ italic_μ ∗ italic_Y start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT )
7:return VdsubscriptV𝑑\textbf{{V}}_{d}V start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT

IV-C Impedance Controller

Impedance controller is used together with Admittance Virtual Dynamics in the Human-guided Trajecotry Mode with soft boundary to simulate a permitted area with spring-damper (impedance) boundary.

The Impedance Controller outputs the net external forces to the Admittance Virtual Dynamics control block. The output force from the Impedance Controller is a compositional force of the force applied at the end-effector, the simulated impedance spring force (referred to as impedance spring force hereafter), and the simulated impedance damper force (referred to as impedance damper force hereafter). The impedance spring force and the impedance damper force are computed using a precalculated Spring Force Map. The detail of the impedance force calculation is described below.

We proposed an impedance force calculation algorithm that can automatically calculate the impedance force at any taskspace position on any given Motion Restriction Map. It is done using a precalculated 2D Spring Force Map which will provide all information needed for the impedance force calculation. The Spring Force Map is generated using Mrssubscript𝑀𝑟𝑠M_{rs}italic_M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT and 2D convolution.

To demonstrate why convolution is needed, consider a simplified impedance force calculation problem in 1D. As illustrated in Fig. 9, Mrs(x)subscript𝑀𝑟𝑠𝑥M_{rs}(x)italic_M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT ( italic_x ) is our example 1D Motion Restriction Map. Each x𝑥xitalic_x value corresponds to a end-effector location on the x𝑥xitalic_x axis, meaning all positions between 2x62𝑥62\leq x\leq 62 ≤ italic_x ≤ 6 are permitted area. Kernalsw(x)𝐾𝑒𝑟𝑛𝑎subscript𝑙𝑠𝑤𝑥Kernal_{sw}(x)italic_K italic_e italic_r italic_n italic_a italic_l start_POSTSUBSCRIPT italic_s italic_w end_POSTSUBSCRIPT ( italic_x ) is a unit impulse function that equals to 1 between 0.5x0.50.5𝑥0.5-0.5\leq x\leq 0.5- 0.5 ≤ italic_x ≤ 0.5 which is used as the convolution kernel. Note that in Fig. 9 (C), the convolution result between Mrs(x)subscript𝑀𝑟𝑠𝑥M_{rs}(x)italic_M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT ( italic_x ) and the Kernalsw(x)𝐾𝑒𝑟𝑛𝑎subscript𝑙𝑠𝑤𝑥Kernal_{sw}(x)italic_K italic_e italic_r italic_n italic_a italic_l start_POSTSUBSCRIPT italic_s italic_w end_POSTSUBSCRIPT ( italic_x ) shows a straight transaction around the permitted area boundary same as the ideal characteristic curves of a spring.

Therefore, in our simplified 1D example, we can define the Spring Force Map Fsprsubscript𝐹𝑠𝑝𝑟F_{spr}italic_F start_POSTSUBSCRIPT italic_s italic_p italic_r end_POSTSUBSCRIPT as a map** function which Fspr(x)subscript𝐹𝑠𝑝𝑟𝑥F_{spr}(x)italic_F start_POSTSUBSCRIPT italic_s italic_p italic_r end_POSTSUBSCRIPT ( italic_x ) will give the magnitude of the impedance spring force at position x𝑥xitalic_x. The Spring Force Map can be calculated using 1-flipped convolution result between the Motion Restriction Map Mrs(x)subscript𝑀𝑟𝑠𝑥M_{rs}(x)italic_M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT ( italic_x ) and the impulse convolution kernel:

Fspr(x)=KspLmax(1Mrs(x)Kernalsw(x))subscript𝐹𝑠𝑝𝑟𝑥subscript𝐾𝑠𝑝subscript𝐿𝑚𝑎𝑥1subscript𝑀𝑟𝑠𝑥𝐾𝑒𝑟𝑛𝑎subscript𝑙𝑠𝑤𝑥F_{spr}(x)=K_{sp}L_{max}(1-M_{rs}(x)\circledast Kernal_{sw}(x))italic_F start_POSTSUBSCRIPT italic_s italic_p italic_r end_POSTSUBSCRIPT ( italic_x ) = italic_K start_POSTSUBSCRIPT italic_s italic_p end_POSTSUBSCRIPT italic_L start_POSTSUBSCRIPT italic_m italic_a italic_x end_POSTSUBSCRIPT ( 1 - italic_M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT ( italic_x ) ⊛ italic_K italic_e italic_r italic_n italic_a italic_l start_POSTSUBSCRIPT italic_s italic_w end_POSTSUBSCRIPT ( italic_x ) ) (4)

where Kspsubscript𝐾𝑠𝑝K_{sp}italic_K start_POSTSUBSCRIPT italic_s italic_p end_POSTSUBSCRIPT denotes the spring stiffness and Lmaxsubscript𝐿𝑚𝑎𝑥L_{max}italic_L start_POSTSUBSCRIPT italic_m italic_a italic_x end_POSTSUBSCRIPT denotes the width of the impedance force zone that can be controlled by the width of the impulse kernel Kernalsw(x)𝐾𝑒𝑟𝑛𝑎subscript𝑙𝑠𝑤𝑥Kernal_{sw}(x)italic_K italic_e italic_r italic_n italic_a italic_l start_POSTSUBSCRIPT italic_s italic_w end_POSTSUBSCRIPT ( italic_x ). The direction of the impedance spring force can also be computed by the sign of the negative local derivative:

Fdir=sgn(Fsprx)subscript𝐹𝑑𝑖𝑟𝑠𝑔𝑛subscript𝐹𝑠𝑝𝑟𝑥F_{dir}=sgn(-\frac{\partial F_{spr}}{\partial x})italic_F start_POSTSUBSCRIPT italic_d italic_i italic_r end_POSTSUBSCRIPT = italic_s italic_g italic_n ( - divide start_ARG ∂ italic_F start_POSTSUBSCRIPT italic_s italic_p italic_r end_POSTSUBSCRIPT end_ARG start_ARG ∂ italic_x end_ARG ) (5)

The impedance damper force can be calculated using the direction of the impedance spring force and the current end-effector velocity.

The same concept can be generalized into 2D space. The 2D Spring Force Map for any given trajectory or ROM can be generated using a 2D convolution between the Motion Restriction Map MrssubscriptM𝑟𝑠\textbf{{M}}_{rs}M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT and a 2D uniformly filled circular kernel. The impedance spring force direction can be computed by the negative local gradient direction of the Spring Force Map at the current end-effector position. The width of the impedance force zone can be controlled by the diameter of the circular kernel. Fig. 10 illustrates an example spring force vector map calculation process for a hand-drawn restriction map. The first step is to expand the trajectory in the radial direction. The reason for expansion can be observed in Fig. 9 (B) and Fig. 9 (C). In Fig. 9 (B), the permitted area boundaries are at x=2𝑥2x=2italic_x = 2 and x=6𝑥6x=6italic_x = 6, but in Fig. 9 (C) the generated impedance force zone is between 1.5x2.51.5𝑥2.51.5\leq x\leq 2.51.5 ≤ italic_x ≤ 2.5 and 5.5x6.55.5𝑥6.55.5\leq x\leq 6.55.5 ≤ italic_x ≤ 6.5. The generated impedance force zone will be centered at the original boundary location with a width equal to the diameter of the convolution kernel. Therefore, the permitted area (trajectory) needs to be expanded in the radial direction by the radius of the convolution kernel to create space for the impedance force zone. The expansion can be achieved through convolution using the same 2D uniformly filled circular kernel, followed by thresholding the resultant output (setting x𝑥xitalic_x to 1 if x>0𝑥0x>0italic_x > 0, otherwise to 0 for all x𝑥xitalic_x in (MrsKernalcir)subscriptM𝑟𝑠𝐾𝑒𝑟𝑛𝑎subscript𝑙𝑐𝑖𝑟(\textbf{{M}}_{rs}\circledast Kernal_{cir})( M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT ⊛ italic_K italic_e italic_r italic_n italic_a italic_l start_POSTSUBSCRIPT italic_c italic_i italic_r end_POSTSUBSCRIPT )). Fig. 10 (B) shows the resulting expanded Motion Restriction Map using a 6 mm radius uniformly filled circular kernel. Fig. 10 (C) shows the generated Spring Force Map with a 12 mm impedance zone along the trajectory. Fig. 10 (D) shows the derived spring force vector field using the proposed impedance force calculation algorithm and the Spring Force Map.

Refer to caption
Figure 9: Example of 1D Spring Force Map calculation using convolution. (A) The 1D impulse kernel Kernalsw(x)𝐾𝑒𝑟𝑛𝑎subscript𝑙𝑠𝑤𝑥Kernal_{sw}(x)italic_K italic_e italic_r italic_n italic_a italic_l start_POSTSUBSCRIPT italic_s italic_w end_POSTSUBSCRIPT ( italic_x ). (B) The 1D Motion Restriction Map Mrs(x)subscript𝑀𝑟𝑠𝑥M_{rs}(x)italic_M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT ( italic_x ). Each x𝑥xitalic_x value corresponds to an end-effector location on the x𝑥xitalic_x axis. All positions between 2x62𝑥62\leq x\leq 62 ≤ italic_x ≤ 6 are permitted area. (C) Spring Force Map Fsprsubscript𝐹𝑠𝑝𝑟F_{spr}italic_F start_POSTSUBSCRIPT italic_s italic_p italic_r end_POSTSUBSCRIPT calculated using 1-flipped convolution result (1Mrs(x)Kernalsw(x))1subscript𝑀𝑟𝑠𝑥𝐾𝑒𝑟𝑛𝑎subscript𝑙𝑠𝑤𝑥(1-M_{rs}(x)\circledast Kernal_{sw}(x))( 1 - italic_M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT ( italic_x ) ⊛ italic_K italic_e italic_r italic_n italic_a italic_l start_POSTSUBSCRIPT italic_s italic_w end_POSTSUBSCRIPT ( italic_x ) ). The convolution between Mrs(x)subscript𝑀𝑟𝑠𝑥M_{rs}(x)italic_M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT ( italic_x ) and the Kernalsw(x)𝐾𝑒𝑟𝑛𝑎subscript𝑙𝑠𝑤𝑥Kernal_{sw}(x)italic_K italic_e italic_r italic_n italic_a italic_l start_POSTSUBSCRIPT italic_s italic_w end_POSTSUBSCRIPT ( italic_x ) shows a nice straight transaction around the boundary same as the characteristic curves of a spring. Width of the transaction area equals width of the impulse kernel.

Algo. 3 shows the implementation of the Impedance Controller. It takes the input force FinsubscriptF𝑖𝑛\textbf{{F}}_{in}F start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT, the velocity on last time step VlastsubscriptV𝑙𝑎𝑠𝑡\textbf{{V}}_{last}V start_POSTSUBSCRIPT italic_l italic_a italic_s italic_t end_POSTSUBSCRIPT, the current position PinsubscriptP𝑖𝑛\textbf{{P}}_{in}P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT, the precalculated Spring Force Map Fsprsubscript𝐹𝑠𝑝𝑟F_{spr}italic_F start_POSTSUBSCRIPT italic_s italic_p italic_r end_POSTSUBSCRIPT, the spring stiffness Kspsubscript𝐾𝑠𝑝K_{sp}italic_K start_POSTSUBSCRIPT italic_s italic_p end_POSTSUBSCRIPT, and the dam** ratio ζisubscript𝜁𝑖\zeta_{i}italic_ζ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT as input. And output the compositional force FosubscriptF𝑜\textbf{{F}}_{o}F start_POSTSUBSCRIPT italic_o end_POSTSUBSCRIPT.

Refer to caption
Figure 10: Example of impedance force calculation for a hand-drawn Motion Restriction Map. (A) The original hand-drawn Motion Restriction Map. (B) The Motion Restriction Map expanded using a 6 mm radius uniformly filled circular kernel. (C) The generated Spring Force Map with a 12 mm impedance force zone along the trajectory. (D) The derived spring force vector field using the proposed impedance force calculation algorithm and the Spring Force Map.
Algorithm 3 Impedance Controller
1:Fin,subscriptF𝑖𝑛\textbf{{F}}_{in},F start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT , Vlast,subscriptV𝑙𝑎𝑠𝑡\textbf{{V}}_{last},V start_POSTSUBSCRIPT italic_l italic_a italic_s italic_t end_POSTSUBSCRIPT , Pin,subscriptP𝑖𝑛\textbf{{P}}_{in},P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT , Fspr,subscript𝐹𝑠𝑝𝑟F_{spr},italic_F start_POSTSUBSCRIPT italic_s italic_p italic_r end_POSTSUBSCRIPT , Ksp,subscript𝐾𝑠𝑝K_{sp},italic_K start_POSTSUBSCRIPT italic_s italic_p end_POSTSUBSCRIPT , ζi,subscript𝜁𝑖\zeta_{i},italic_ζ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ,
2:FosubscriptF𝑜\textbf{{F}}_{o}F start_POSTSUBSCRIPT italic_o end_POSTSUBSCRIPT
3:[Px,Py]Pinsubscript𝑃𝑥subscript𝑃𝑦subscriptP𝑖𝑛[P_{x},P_{y}]\Leftarrow\textbf{{P}}_{in}[ italic_P start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT , italic_P start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT ] ⇐ P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT
4:FdxFspr[Py,Px+1]Fspr[Py,Px1]subscript𝐹𝑑𝑥subscript𝐹𝑠𝑝𝑟subscript𝑃𝑦subscript𝑃𝑥1subscript𝐹𝑠𝑝𝑟subscript𝑃𝑦subscript𝑃𝑥1F_{dx}\Leftarrow F_{spr}[P_{y},P_{x}+1]-F_{spr}[P_{y},P_{x}-1]italic_F start_POSTSUBSCRIPT italic_d italic_x end_POSTSUBSCRIPT ⇐ italic_F start_POSTSUBSCRIPT italic_s italic_p italic_r end_POSTSUBSCRIPT [ italic_P start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT , italic_P start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT + 1 ] - italic_F start_POSTSUBSCRIPT italic_s italic_p italic_r end_POSTSUBSCRIPT [ italic_P start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT , italic_P start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT - 1 ]
5:FdyFspr[Py+1,Px]Fspr[Py1,Px]subscript𝐹𝑑𝑦subscript𝐹𝑠𝑝𝑟subscript𝑃𝑦1subscript𝑃𝑥subscript𝐹𝑠𝑝𝑟subscript𝑃𝑦1subscript𝑃𝑥F_{dy}\Leftarrow F_{spr}[P_{y}+1,P_{x}]-F_{spr}[P_{y}-1,P_{x}]italic_F start_POSTSUBSCRIPT italic_d italic_y end_POSTSUBSCRIPT ⇐ italic_F start_POSTSUBSCRIPT italic_s italic_p italic_r end_POSTSUBSCRIPT [ italic_P start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT + 1 , italic_P start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT ] - italic_F start_POSTSUBSCRIPT italic_s italic_p italic_r end_POSTSUBSCRIPT [ italic_P start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT - 1 , italic_P start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT ]
6:Fdirnormalize([Fdx,Fdy])subscriptF𝑑𝑖𝑟𝑛𝑜𝑟𝑚𝑎𝑙𝑖𝑧𝑒subscript𝐹𝑑𝑥subscript𝐹𝑑𝑦\textbf{{F}}_{dir}\Leftarrow normalize(-[F_{dx},F_{dy}])F start_POSTSUBSCRIPT italic_d italic_i italic_r end_POSTSUBSCRIPT ⇐ italic_n italic_o italic_r italic_m italic_a italic_l italic_i italic_z italic_e ( - [ italic_F start_POSTSUBSCRIPT italic_d italic_x end_POSTSUBSCRIPT , italic_F start_POSTSUBSCRIPT italic_d italic_y end_POSTSUBSCRIPT ] )
7:FoFin+KspFspr[Pin]FdirsubscriptF𝑜subscriptF𝑖𝑛subscript𝐾𝑠𝑝subscript𝐹𝑠𝑝𝑟delimited-[]subscriptP𝑖𝑛subscriptF𝑑𝑖𝑟\textbf{{F}}_{o}\Leftarrow\textbf{{F}}_{in}+K_{sp}*F_{spr}[\textbf{{P}}_{in}]*% \textbf{{F}}_{dir}F start_POSTSUBSCRIPT italic_o end_POSTSUBSCRIPT ⇐ F start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT + italic_K start_POSTSUBSCRIPT italic_s italic_p end_POSTSUBSCRIPT ∗ italic_F start_POSTSUBSCRIPT italic_s italic_p italic_r end_POSTSUBSCRIPT [ P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT ] ∗ F start_POSTSUBSCRIPT italic_d italic_i italic_r end_POSTSUBSCRIPT
8:FoFo+ζi(VlastFdir)FdirsubscriptF𝑜subscriptF𝑜subscript𝜁𝑖subscriptV𝑙𝑎𝑠𝑡subscriptF𝑑𝑖𝑟subscriptF𝑑𝑖𝑟\textbf{{F}}_{o}\Leftarrow\textbf{{F}}_{o}+\zeta_{i}*(\textbf{{V}}_{last}\cdot% \textbf{{F}}_{dir})*\textbf{{F}}_{dir}F start_POSTSUBSCRIPT italic_o end_POSTSUBSCRIPT ⇐ F start_POSTSUBSCRIPT italic_o end_POSTSUBSCRIPT + italic_ζ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ∗ ( V start_POSTSUBSCRIPT italic_l italic_a italic_s italic_t end_POSTSUBSCRIPT ⋅ F start_POSTSUBSCRIPT italic_d italic_i italic_r end_POSTSUBSCRIPT ) ∗ F start_POSTSUBSCRIPT italic_d italic_i italic_r end_POSTSUBSCRIPT
9:return FosubscriptF𝑜\textbf{{F}}_{o}F start_POSTSUBSCRIPT italic_o end_POSTSUBSCRIPT

V Experiments

The experiments are performed in three parts. First, the complexity analysis of the proposed high-level control. Second, the performance assessment of GARD’s different operation modes and control blocks. Third, comparison to the state-of-the-art end-effector upper limb rehabilitation devices.

V-A Control Algorithms Complexity Analysis

The complexity analysis of the proposed control algorithms is conducted concerning the taskspace discretization precision (n×n𝑛𝑛n\times nitalic_n × italic_n taskspace discretization). The results are displayed in Tab. I. The proposed control algorithms consider O(n)𝑂𝑛O(n)italic_O ( italic_n ) overall runtime time complexity and O(n2)𝑂superscript𝑛2O(n^{2})italic_O ( italic_n start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) overall space complexity.

The proposed algorithm is efficient for several reasons. First, a runtime time complexity of O(n)𝑂𝑛O(n)italic_O ( italic_n ) is affordable for any modern PC or MCU. Although the generation of the circle map (circleMap(Rcircle)𝑐𝑖𝑟𝑐𝑙𝑒𝑀𝑎𝑝subscript𝑅𝑐𝑖𝑟𝑐𝑙𝑒circleMap(R_{circle})italic_c italic_i italic_r italic_c italic_l italic_e italic_M italic_a italic_p ( italic_R start_POSTSUBSCRIPT italic_c italic_i italic_r italic_c italic_l italic_e end_POSTSUBSCRIPT ) in helper functions) can have a time complexity of O(n2)𝑂superscript𝑛2O(n^{2})italic_O ( italic_n start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ), since Rcirclesubscript𝑅𝑐𝑖𝑟𝑐𝑙𝑒R_{circle}italic_R start_POSTSUBSCRIPT italic_c italic_i italic_r italic_c italic_l italic_e end_POSTSUBSCRIPT is always an integer and motors have physical maximum speed limits, precalculating all points-on-the-circle lists for all possible Rcirclesubscript𝑅𝑐𝑖𝑟𝑐𝑙𝑒R_{circle}italic_R start_POSTSUBSCRIPT italic_c italic_i italic_r italic_c italic_l italic_e end_POSTSUBSCRIPT values is feasible, and will therefore not affect the runtime performance. Second, adding trajectories, permitted areas, and obstacles incurs zero run time performance cost. Designers can create Motion Restriction Maps for games and applications without concern any runtime performance impact. Third, the proposed Human-guided Trajectory Mode with soft boundary (the most complicated one), implemented with C#, under 2200×1700220017002200\times 17002200 × 1700 taskspace discretization costs an average time step of 10μs10𝜇𝑠10\mu s10 italic_μ italic_s when running on i7-8750H. This indicates that solving the 2D constraint control problem on modern CPUs using the proposed algorithm has significant computational surplus. Furthermore, the algorithm’s high degree of parallelizability underscores its potential for further runtime optimization, suggesting its substantial potential for real-time 3D taskspace motion restriction control.

Algorithm 4 IEVC Helper functions implementation
1:procedure inCircle(x,y,lineWidth)𝑖𝑛𝐶𝑖𝑟𝑐𝑙𝑒𝑥𝑦𝑙𝑖𝑛𝑒𝑊𝑖𝑑𝑡inCircle(x,y,lineWidth)italic_i italic_n italic_C italic_i italic_r italic_c italic_l italic_e ( italic_x , italic_y , italic_l italic_i italic_n italic_e italic_W italic_i italic_d italic_t italic_h )
2:     return abs(x2+y21)<lineWidth𝑎𝑏𝑠superscript𝑥2superscript𝑦21𝑙𝑖𝑛𝑒𝑊𝑖𝑑𝑡abs(x^{2}+y^{2}-1)<lineWidthitalic_a italic_b italic_s ( italic_x start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_y start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT - 1 ) < italic_l italic_i italic_n italic_e italic_W italic_i italic_d italic_t italic_h
3:end procedure
1:procedure circleMap(Rcircle)𝑐𝑖𝑟𝑐𝑙𝑒𝑀𝑎𝑝subscript𝑅𝑐𝑖𝑟𝑐𝑙𝑒circleMap(R_{circle})italic_c italic_i italic_r italic_c italic_l italic_e italic_M italic_a italic_p ( italic_R start_POSTSUBSCRIPT italic_c italic_i italic_r italic_c italic_l italic_e end_POSTSUBSCRIPT ):
2:     mapLenRcircle2+10𝑚𝑎𝑝𝐿𝑒𝑛subscript𝑅𝑐𝑖𝑟𝑐𝑙𝑒210mapLen\Leftarrow R_{circle}*2+10italic_m italic_a italic_p italic_L italic_e italic_n ⇐ italic_R start_POSTSUBSCRIPT italic_c italic_i italic_r italic_c italic_l italic_e end_POSTSUBSCRIPT ∗ 2 + 10
3:     MciremptyList()subscriptM𝑐𝑖𝑟𝑒𝑚𝑝𝑡𝑦𝐿𝑖𝑠𝑡\textbf{{M}}_{cir}\Leftarrow emptyList()M start_POSTSUBSCRIPT italic_c italic_i italic_r end_POSTSUBSCRIPT ⇐ italic_e italic_m italic_p italic_t italic_y italic_L italic_i italic_s italic_t ( )
4:     for all [x,y]𝑥𝑦[x,y][ italic_x , italic_y ] in McirsubscriptM𝑐𝑖𝑟\textbf{{M}}_{cir}M start_POSTSUBSCRIPT italic_c italic_i italic_r end_POSTSUBSCRIPT do
5:         dxxRcircle5𝑑𝑥𝑥subscript𝑅𝑐𝑖𝑟𝑐𝑙𝑒5dx\Leftarrow x-R_{circle}-5italic_d italic_x ⇐ italic_x - italic_R start_POSTSUBSCRIPT italic_c italic_i italic_r italic_c italic_l italic_e end_POSTSUBSCRIPT - 5
6:         dyyRcircle5𝑑𝑦𝑦subscript𝑅𝑐𝑖𝑟𝑐𝑙𝑒5dy\Leftarrow y-R_{circle}-5italic_d italic_y ⇐ italic_y - italic_R start_POSTSUBSCRIPT italic_c italic_i italic_r italic_c italic_l italic_e end_POSTSUBSCRIPT - 5
7:         ndxdx/Rcircle𝑛𝑑𝑥𝑑𝑥subscript𝑅𝑐𝑖𝑟𝑐𝑙𝑒ndx\Leftarrow dx/R_{circle}italic_n italic_d italic_x ⇐ italic_d italic_x / italic_R start_POSTSUBSCRIPT italic_c italic_i italic_r italic_c italic_l italic_e end_POSTSUBSCRIPT
8:         ndydy/Rcircle𝑛𝑑𝑦𝑑𝑦subscript𝑅𝑐𝑖𝑟𝑐𝑙𝑒ndy\Leftarrow dy/R_{circle}italic_n italic_d italic_y ⇐ italic_d italic_y / italic_R start_POSTSUBSCRIPT italic_c italic_i italic_r italic_c italic_l italic_e end_POSTSUBSCRIPT
9:         wLine2/Rcircle𝑤𝐿𝑖𝑛𝑒2subscript𝑅𝑐𝑖𝑟𝑐𝑙𝑒wLine\Leftarrow 2/R_{circle}italic_w italic_L italic_i italic_n italic_e ⇐ 2 / italic_R start_POSTSUBSCRIPT italic_c italic_i italic_r italic_c italic_l italic_e end_POSTSUBSCRIPT
10:         if inCircle(ndx,ndy,wLine)𝑖𝑛𝐶𝑖𝑟𝑐𝑙𝑒𝑛𝑑𝑥𝑛𝑑𝑦𝑤𝐿𝑖𝑛𝑒inCircle(ndx,ndy,wLine)italic_i italic_n italic_C italic_i italic_r italic_c italic_l italic_e ( italic_n italic_d italic_x , italic_n italic_d italic_y , italic_w italic_L italic_i italic_n italic_e ) then
11:              Mcir.append([dx,dy])formulae-sequencesubscriptM𝑐𝑖𝑟𝑎𝑝𝑝𝑒𝑛𝑑𝑑𝑥𝑑𝑦\textbf{{M}}_{cir}.append([dx,dy])M start_POSTSUBSCRIPT italic_c italic_i italic_r end_POSTSUBSCRIPT . italic_a italic_p italic_p italic_e italic_n italic_d ( [ italic_d italic_x , italic_d italic_y ] )
12:         end if
13:     end for
14:     return McirsubscriptM𝑐𝑖𝑟\textbf{{M}}_{cir}M start_POSTSUBSCRIPT italic_c italic_i italic_r end_POSTSUBSCRIPT
15:end procedure
1:procedure findIntersec(Mrs,Rcircle,Pin)𝑓𝑖𝑛𝑑𝐼𝑛𝑡𝑒𝑟𝑠𝑒𝑐subscriptM𝑟𝑠subscript𝑅𝑐𝑖𝑟𝑐𝑙𝑒subscriptP𝑖𝑛findIntersec(\textbf{{M}}_{rs},R_{circle},\textbf{{P}}_{in})italic_f italic_i italic_n italic_d italic_I italic_n italic_t italic_e italic_r italic_s italic_e italic_c ( M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT , italic_R start_POSTSUBSCRIPT italic_c italic_i italic_r italic_c italic_l italic_e end_POSTSUBSCRIPT , P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT )
2:     [Px,Py]Pinsubscript𝑃𝑥subscript𝑃𝑦subscriptP𝑖𝑛[P_{x},P_{y}]\Leftarrow\textbf{{P}}_{in}[ italic_P start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT , italic_P start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT ] ⇐ P start_POSTSUBSCRIPT italic_i italic_n end_POSTSUBSCRIPT
3:     McircircleMap(Rcircle)subscriptM𝑐𝑖𝑟𝑐𝑖𝑟𝑐𝑙𝑒𝑀𝑎𝑝subscript𝑅𝑐𝑖𝑟𝑐𝑙𝑒\textbf{{M}}_{cir}\Leftarrow circleMap(R_{circle})M start_POSTSUBSCRIPT italic_c italic_i italic_r end_POSTSUBSCRIPT ⇐ italic_c italic_i italic_r italic_c italic_l italic_e italic_M italic_a italic_p ( italic_R start_POSTSUBSCRIPT italic_c italic_i italic_r italic_c italic_l italic_e end_POSTSUBSCRIPT )
4:     candidatesListemptyList()𝑐𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑒𝑠𝐿𝑖𝑠𝑡𝑒𝑚𝑝𝑡𝑦𝐿𝑖𝑠𝑡candidatesList\Leftarrow emptyList()italic_c italic_a italic_n italic_d italic_i italic_d italic_a italic_t italic_e italic_s italic_L italic_i italic_s italic_t ⇐ italic_e italic_m italic_p italic_t italic_y italic_L italic_i italic_s italic_t ( )
5:     for all [dx,dy]𝑑𝑥𝑑𝑦[dx,dy][ italic_d italic_x , italic_d italic_y ] in McirsubscriptM𝑐𝑖𝑟\textbf{{M}}_{cir}M start_POSTSUBSCRIPT italic_c italic_i italic_r end_POSTSUBSCRIPT do
6:         if Mrs[Py+dy,Px+dx]>0subscriptM𝑟𝑠subscript𝑃𝑦𝑑𝑦subscript𝑃𝑥𝑑𝑥0\textbf{{M}}_{rs}[P_{y}+dy,P_{x}+dx]>0M start_POSTSUBSCRIPT italic_r italic_s end_POSTSUBSCRIPT [ italic_P start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT + italic_d italic_y , italic_P start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT + italic_d italic_x ] > 0 then
7:              Pc[Px+dx,Py+dy]subscriptP𝑐subscript𝑃𝑥𝑑𝑥subscript𝑃𝑦𝑑𝑦\textbf{{P}}_{c}\Leftarrow[P_{x}+dx,P_{y}+dy]P start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT ⇐ [ italic_P start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT + italic_d italic_x , italic_P start_POSTSUBSCRIPT italic_y end_POSTSUBSCRIPT + italic_d italic_y ]
8:              candidatesList.append(Pc)formulae-sequence𝑐𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑒𝑠𝐿𝑖𝑠𝑡𝑎𝑝𝑝𝑒𝑛𝑑subscriptP𝑐candidatesList.append(\textbf{{P}}_{c})italic_c italic_a italic_n italic_d italic_i italic_d italic_a italic_t italic_e italic_s italic_L italic_i italic_s italic_t . italic_a italic_p italic_p italic_e italic_n italic_d ( P start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT )
9:         end if
10:     end for
11:     return candidatesList𝑐𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑒𝑠𝐿𝑖𝑠𝑡candidatesListitalic_c italic_a italic_n italic_d italic_i italic_d italic_a italic_t italic_e italic_s italic_L italic_i italic_s italic_t
12:end procedure
TABLE I: Algorithm complexity with respect to taskspace discretization accuracy.
Function Space Complexity Time Complexity
(runtime)
Motion Restriction Map Generation O(n2)𝑂superscript𝑛2O(n^{2})italic_O ( italic_n start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) N/A
IEVC circleMap O(n)𝑂𝑛O(n)italic_O ( italic_n ) N/A
IEVC findIntersec O(n)𝑂𝑛O(n)italic_O ( italic_n ) O(n)𝑂𝑛O(n)italic_O ( italic_n )
IEVC Choose candidate O(n)𝑂𝑛O(n)italic_O ( italic_n ) O(n)𝑂𝑛O(n)italic_O ( italic_n )
IEVC overall O(n2)𝑂superscript𝑛2O(n^{2})italic_O ( italic_n start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) O(n)𝑂𝑛O(n)italic_O ( italic_n )
Admittance Virtual Dynamics O(1)𝑂1O(1)italic_O ( 1 ) O(1)𝑂1O(1)italic_O ( 1 )
Spring Force Map Generation O(n2)𝑂superscript𝑛2O(n^{2})italic_O ( italic_n start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) N/A
Impedance Controller O(1)𝑂1O(1)italic_O ( 1 ) O(1)𝑂1O(1)italic_O ( 1 )
Adding Trajectories 00 00
Adding Permitted Areas 00 00
Adding Prohibited Areas 00 00
Proposed method overall O(n2)𝑂superscript𝑛2O(n^{2})italic_O ( italic_n start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) O(n)𝑂𝑛O(n)italic_O ( italic_n )

V-B Experimental Validation of Robot-Guided Trajectory Mode

One of the primary functionality of rehabilitation robot revolves around trajectory tracking. Employing a non-backdrivable end-effector allows us to strictly follow the desired trajectory without being affected by external forces in the Robot-guided Trajectory Mode. Fig. 11 shows the trajectory following test result of the Robot-guided Trajectory Mode. One healthy subject executed robot-guided trajectory following mode on two function-based and two hand-drawn trajectories, both the desired end-effector positions and measured end-effector positions are recorded and plotted. The error is calculated by measuring the closest distance to permitted area for each recorded end-effector position. The average Mean Absolute Error (MAE) of four trials between the intended and recorded end-effector positions stands at 0.012mm0.012𝑚𝑚0.012mm0.012 italic_m italic_m.

Refer to caption
Figure 11: Desired and measured end-effector position and error analysis in Robot-guided Trajectory Mode. One healthy subject operate Robot-guided Trajectory Mode on two function-based and two hand-drawn trajectories, the desired end-effector positions and measured end-effector positions are recorded and plotted on figures. The error is calculated by measuring the closest distance to permitted area for each recorded end-effector position if the end-effector is outside the permitted area. (A) Infinite shaped trajectory calculated using equation: x4x2+y2=0superscript𝑥4superscript𝑥2superscript𝑦20x^{4}-x^{2}+y^{2}=0italic_x start_POSTSUPERSCRIPT 4 end_POSTSUPERSCRIPT - italic_x start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_y start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT = 0. The Mean Absolute Error (MAE) between desired and measured is 0.00823mm0.00823𝑚𝑚0.00823mm0.00823 italic_m italic_m. (B) Circle shaped trajectory calculated using equation: x2+y2252=0superscript𝑥2superscript𝑦2superscript2520x^{2}+y^{2}-25^{2}=0italic_x start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_y start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT - 25 start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT = 0. The MAE between desired and measured is 0.023mm0.023𝑚𝑚0.023mm0.023 italic_m italic_m. (C) Hand drawn circular trajectory. The MAE between desired and measured is 0.00878mm0.00878𝑚𝑚0.00878mm0.00878 italic_m italic_m. (D) hand drawn line trajectory. The MAE between desired and measured is 0.00763mm0.00763𝑚𝑚0.00763mm0.00763 italic_m italic_m.

V-C Experimental Validation of Free Mode

The Free Mode has two primary functionalities. First, it incorporates an Admittance Virtual Dynamics control block, which emulates the non-backdrivable end-effector as a free mass in the real world. Second, it enables free moving with the ROM restriction. Two experiments are performed to verify these two functionalities accordingly.

The performance of the Admittance Virtual Dynamics simulation is the key for achieving smooth and natural moving end-effector in both Free Mode and Human-guided Trajectory Mode. Fig. 12 (A) and (B) depict six trials of circular motion performed using Free Mode by a healthy subject, simulating objects with masses of 5, 10, 15, 20, 25, and 30 kilograms, moving freely on a plane with no motion restriction, bearing with a friction coefficient of 0.02. The user, a healthy subject, is instructed to follow an approximately circular trajectory. In Fig. 12 (C), the desired and measured velocities of the end-effector, simulating an object with a mass of 30 kilograms, are demonstrated. The overall outcomes are summarized in Tab. II. The results indicate that the Admittance Virtual Dynamics block can accurately simulate objects with masses of 10 kilograms to 30 kilograms. However, when simulating objects with 5 kilograms or lower masses, the end-effector experiences larger velocity error due to motor acceleration limit.

Refer to caption
Figure 12: Admittance Virtual Dynamics is used allowing six objects with different mass moving freely on taskspace with a friction coefficient of 0.020.020.020.02. The robot is set in Free Mode, a healthy subject is asked to try their best to follow a circular trajectory. (A) End-effector circular trajectory. (B) The force measured on end-effector when moving in a circular trajectory with different simulated object mass. (C) The desired and measured velocity of admittance control when moving in a circular trajectory with 30kg simulated object mass.
TABLE II: Performance of admittance control simulating object with six different mass moving in circular trajectory under free mode.
Mass 5kg 10kg 15kg 20kg 25kg 30kg
Average measured end-effector force (N) 2.08 3.98 6.04 8.08 9.87 11.36
MAE of x-axis desired and measured velocity (mm/s) 2.45 0.75 0.41 0.46 0.37 0.35
MAE of y-axis desired and measured velocity (mm/s) 6.66 1 0.88 0.68 0.73 0.56

The range of motion (ROM) is defined as the area bounded by a closed trajectory traversed by the end-effector. The ROM Motion Restriction Map is generated by filling all triangles constructed by the starting point and two consecutive positions of the end-effector. Fig. 13 (A) and (B) demonstrate the generation of a Motion Restriction Map. The trajectory recorded in (A) is used to generate the Motion Restriction Map in (B). Additionally, Fig. 13 (C) and (D) provide an illustration of an experiment using the Free Mode with Motion Restriction Map generated in (B). In Fig. 13 (C), the end-effector trajectory is shown, this experiment contains both movement inside the permitted area and movement interacting with the area boundary. The end-effector can move freely inside the permitted area and interact with a a hard, smooth, wall-like boundary. Fig. 13 (D) highlights instances at points A, B, and C where dedicated forces are applied trying to exceed the ROM restriction, yet the end-effector remains within the ROM.

Refer to caption
Figure 13: Range of motion generation and evaluation in Free Mode. (A) End-effector trajectory used for range of motion generation. The end-effector trajectory colored in blue demonstrates the recorded trajectory during ROM generation. S𝑆Sitalic_S is the starting point. A𝐴Aitalic_A and B𝐵Bitalic_B are end-effector positions recorded in sequence. The Motion Restriction Map is generated by drawing a triangle between the starting point S𝑆Sitalic_S and the consecutive end-effector position. (B) The Motion Restriction Map generated by the given end-effector trajectory. The permitted areas are marked gray. (C) Random motion within permitted area in Motion Restriction Map. S𝑆Sitalic_S is the starting point. F𝐹Fitalic_F is the finishing point. A𝐴Aitalic_A, B𝐵Bitalic_B, and C𝐶Citalic_C are locations where the user trying to exceed the ROM limitation. (D) Force measured on the end-effector from motion in (C). Box A𝐴Aitalic_A, B𝐵Bitalic_B, and C𝐶Citalic_C are corresponding to point A𝐴Aitalic_A, B𝐵Bitalic_B, and C𝐶Citalic_C in (C).

V-D Experimental Validation of Human-guided Trajectory Modes

The Human-guided Trajectory Mode comprises two sub-modes: Human-guided Trajectory Mode with hard boundary and Human-guided Trajectory Mode with soft boundary. In Human-guided Trajectory Mode with hard boundary, the user can move the end-effector along a trajectory with a smooth hard boundary, sharing the same control method as the Free Mode. In Human-guided Trajectory Mode with soft boundary, the user can move the end-effector along a trajectory with a soft (impedance force) boundary, which will provide assistance force pulling the end-effector back towards the trajectory when the position deviate from the trajectory. Two key functionalities of the Human-guided Modes are highlighted. The first functionality involves the motion restriction algorithms applied to the trajectory to ensure the user can only move the end-effector along the designed trajectory. The second functionality entails impedance control, creating a soft boundary on the trajectory, simulating a impedance spring damper force towards trajectory. Two experiments are conducted to verify the key functionalities of the Human-guided Mode.

The first experiment aims to validate the performance of the IEVC on motion restrictd control. A healthy subject is asked to move the end-effector and complete one circular motion for each trial. During each trial, a Motion Restriction Map which only allow the end-effector to move on a thin trajectory is loaded to the Motion Restriction Controller, and a certain level of random noise is injected on the load cell during motion to simulate undesired force which can possibly affect the end-effector motion. Fig. 14 depicts a total of six trials of human-guided trajectory following on two different trajectory shapes under three different levels of random force injected into the end-effector as noise. The result shows that in all trials, the recorded trajectory almost completely overlaps with the Motion Restriction Map, indicating that the proposed control method effectively restricts the end-effector motion on the trajectory. Tab. III presents the quantitative MAE of each trial. The error is calculated by measuring the closest distance to the permitted area for each recorded end-effector position if the end-effector is outside the permitted area. Interestingly, the error decreases under higher noise levels. This is because the error of the proposed control algorithm depends only on the moving speed and the trajectory. A large injection noise makes it difficult for the subject to move the end-effector, thus reducing the error. The results of this experiment demonstrate that the IEVC algorithm can effectively restrict the end-effector motion within any permitted area, making it an ideal choice for the motion restriction controller.

Refer to caption
Figure 14: Experiment using Human-guided Trajectory Mode with hard boundary and random noise injected. (A) End-effector moving on a circular trajectory Motion Restriction Map. (B) Three level of random force are injected to the end-effector force sensor as noise, results show that the IEVC is robust against noisy end-effector input forces. (C) End-effecotr following moving on a hand drawn trajectory Motion Restriction Map. (D) Three level of random force are injected to the end-effector force sensor as noise, results show that the IEVC is robust against noisy end-effector input forces.
TABLE III: Human-guided Trajectory Mode with hard boundary and random noise injected.
Trajectory Type Circular Circular Circular Hand-drawn Hand-drawn Hand-drawn
Noise magnitude 0N 3.8N 7.7N 0N 3.8N 7.7N
MAE(mm𝑚𝑚mmitalic_m italic_m) 0.067 0.061 0.032 0.134 0.115 0.113

The second experiment involves free moving inside an impedance force zone with radius of 14 cm𝑐𝑚cmitalic_c italic_m. The Spring Force Map is generated using proposed method with a special Motion Restriction Map that has permitted area only at the center location of the taskspace. Fig. 15 (A) shows the derived impedance spring force vector field, every permitted location has an impedance spring force pointing towards the center with a magnitude proportional to the distance from the center. In Fig. 15 (B), one subject is asked to move and hold the end-effector at different locations in the impedance force zone. When the end-effector is at zero acceleration (force equilibrium), the distance between its current position and the center, as well as the current applied force on the end-effector, are recorded and plotted in Fig. 15 (B). The result shows that the characteristic curve of simulated spring area nicely aligned with the characteristic curve of an ideal spring, which concludes that the proposed impedance control method is effective.

Refer to caption
Figure 15: Impedance force zone characteristic experiment. (A) The derived impedance spring force vector field. Every permitted location on the map has a impedance spring force pointing towards the center with a magnitude proportional to the distance from the center. (B) One subject is asked to move and hold the end-effector at different locations in the impedance force zone. When the end-effector is at zero acceleration (force equilibrium), the distance between its current position and the center, as well as the current applied force on the end-effector, are recorded and plotted.

V-E Compare To Previous Researchers

Most of previous works have the path following functionality but do not have quantitative results. Therefore we perform comparison qualitatively. Tab. IV shows the comparison between our robot and previous researcher’s. The Robot-guided path following (impedance) is a trajectory following function we implemented but did not discuss in previous chapters. This function use a virtual leading point that automatically marching forward on the trajectory and perform a impedance control to the end-effector which use the virtual leading point as the target. This function serve as the major functionality of previous works and can be easily accomplished by our robot by combining the Robot-guided Trajectory Mode and the Admittance Virtual Dynamics.

The proposed control method is the pioneering method that facilitates area restricted free moving and impedance-boundary free moving. Additionally, we are the first to deliver quantitative results, establishing a benchmark for future research to reference and compare.

TABLE IV: Rehabilitation Device Comparison.
Functions Robot-guided path Robot-Guided path Trajectory Restricted Area Restricted Impedance Boundary
following (impedance) following (hard) Free Moving Free Moving Free Moving
HIT Manus[4] Yes No No No No
Physiobot[6] Yes No No No No
H-Man[17] Yes No Yes No No
GARD (ours) Yes Yes Yes Yes Yes

VI CONCLUSION

This study introduces a novel upper limb rehabilitation device, focusing on its design and control mechanisms. The device utilizes ball screws for linear actuation along the x and y axis, ensuring a simple structure and enhanced durability. Its non-backdrivable configuration enables the separation of simulated and robot dynamics, facilitating the implementation of controllers.

Three novel control algorithms are proposed. First, the Implicit Euler velocity control algorithm (IEVC) is highlighted for its state-of-the-art accuracy, stability, efficiency and generalizability in solving motion restriction control problem. It allows for trajectory and range of motion adjustments without analytical constraints and with zero cost on additional obstacles or permitted area. Moreover, the IEVC algorithm can be adapted to any robot supporting end-effector velocity control. Second, the Admittance Virtual Dynamics simulation algorithm achieves smooth and natural human-guided motion of the non-backdrivable end-effector by simulating the motion of a virtual mass and applying this simulated motion to the end-effector. This algorithm operates with a time complexity of O(1)𝑂1O(1)italic_O ( 1 ). Third, the study introduces a generalized impedance force calculation algorithm that allows impedance control on any trajectory or area boundary and operates with a runtime time complexity of O(1)𝑂1O(1)italic_O ( 1 ).

The integration of the device and control algorithms results in an upper limb rehabilitation device with three distinct operation modes: Robot-guided Trajectory Mode, Free Mode, and Human-guided Trajectory Mode. These modes support stroke patients through various stages of recovery. Compared to state-of-the-art devices, the proposed device offers enhanced functionality and this paper establishes a detailed performance baseline for future research endeavors.

References

  • [1] S. S. Virani, A. Alonso, H. J. Aparicio, E. J. Benjamin, M. S. Bittencourt, C. W. Callaway, A. P. Carson, A. M. Chamberlain, S. Cheng, F. N. Delling et al., “Heart disease and stroke statistics-2021 update: a report from the american heart association.” 2021.
  • [2] G. Kwakkel, B. J. Kollen, J. van der Grond, and A. J. Prevo, “Probability of regaining dexterity in the flaccid upper limb: impact of severity of paresis and time since onset in acute stroke,” Stroke, vol. 34, no. 9, pp. 2181–2186, 2003.
  • [3] “Inmotion arm for neurological rehabilitation.” [Online]. Available: https://bioniklabs.com/inmotion-arm/
  • [4] H. I. Krebs, M. Ferraro, S. P. Buerger, M. J. Newbery, A. Makiyama, M. Sandmann, D. Lynch, B. T. Volpe, and N. Hogan, “Rehabilitation robotics: pilot trial of a spatial extension for mit-manus,” Journal of neuroengineering and rehabilitation, vol. 1, pp. 1–15, 2004.
  • [5] K. Chua, C. Kuah, C. Ng, L. Yam, A. Budhota, S. Contu, S. Kager, A. Hussain, L. Xiang, and D. Campolo, “Clinical and kinematic evaluation of the h-man arm robot for post-stroke upper limb rehabilitation: Preliminary findings of a randomised controlled trial,” Annals of Physical and Rehabilitation Medicine, vol. 61, p. e95, 2018, 12th World Congress of the International Society of Physical and Rehabilitation Medicine. Paris. 8-12 July 2018. [Online]. Available: https://www.sciencedirect.com/science/article/pii/S187706571830277X
  • [6] B. F. Villar, P. F. Viñas, J. P. Turiel, J. C. F. Marinero, and A. Gordaliza, “Influence on the user’s emotional state of the graphic complexity level in virtual therapies based on a robot-assisted neuro-rehabilitation platform,” Computer Methods and Programs in Biomedicine, vol. 190, p. 105359, 2020.
  • [7] “Armmotus m2 upper limb rehabilitation robotics.” [Online]. Available: https://fourierintelligence.com/m2/
  • [8] W. H. Chang and Y.-H. Kim, “Robot-assisted therapy in stroke rehabilitation,” Journal of stroke, vol. 15, no. 3, p. 174, 2013.
  • [9] T. Johansen, L. Sørensen, K. K. Kolskår, V. Strøm, and M. F. Wouda, “Effectiveness of robot-assisted arm exercise on arm and hand function in stroke survivors-a systematic review and meta-analysis,” Journal of Rehabilitation and Assistive Technologies Engineering, vol. 10, p. 20556683231183639, 2023.
  • [10] E. C. Lu, R. Wang, R. Huq, D. Gardner, P. Karam, K. Zabjek, D. Hébert, J. Boger, and A. Mihailidis, “Development of a robotic device for upper limb stroke rehabilitation: A user-centered design approach,” Paladyn, Journal of Behavioral Robotics, vol. 2, no. 4, pp. 176–184, 2011.
  • [11] I. Díaz, J. M. Catalan, F. J. Badesa, X. Justo, L. D. Lledo, A. Ugartemendia, J. J. Gil, J. Díez, and N. García-Aracil, “Development of a robotic device for post-stroke home tele-rehabilitation,” Advances in Mechanical Engineering, vol. 10, no. 1, p. 1687814017752302, 2018.
  • [12] M. Gandolfi, N. Valè, E. K. Dimitrova, S. Mazzoleni, E. Battini, M. Filippetti, A. Picelli, A. Santamato, M. Gravina, L. Saltuari et al., “Effectiveness of robot-assisted upper limb training on spasticity, function and muscle activity in chronic stroke patients treated with botulinum toxin: a randomized single-blinded controlled trial,” Frontiers in neurology, vol. 10, p. 41, 2019.
  • [13] Q. Miao, M. Zhang, Y. Wang, S. Q. Xie et al., “Design and interaction control of a new bilateral upper-limb rehabilitation device,” Journal of Healthcare Engineering, vol. 2017, 2017.
  • [14] N. Ouendi, R. Hubaut, S. Pelayo, F. Anceaux, and L. Wallard, “The rehabilitation robot: factors influencing its use, advantages and limitations in clinical rehabilitation,” Disability and Rehabilitation: Assistive Technology, vol. 19, no. 3, pp. 546–557, 2024.
  • [15] A. Kerr, M. Smith, L. Reid, L. Baillie et al., “Adoption of stroke rehabilitation technologies by the user community: qualitative study,” JMIR rehabilitation and assistive technologies, vol. 5, no. 2, p. e9219, 2018.
  • [16] A. Hussain, W. Dailey, C. Hughes, P. Tommasino, A. Budhota, W. K. C. Gamage, E. Burdet, and D. Campolo, “Preliminary feasibility study of the h-man planar robot for quantitative motor assessment,” in 2015 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).   IEEE, 2015, pp. 6167–6172.
  • [17] K. Maqsood, J. Luo, C. Yang, Q. Ren, and Y. Li, “Iterative learning-based path control for robot-assisted upper-limb rehabilitation,” Neural Computing and Applications, vol. 35, no. 32, pp. 23 329–23 341, 2023.
  • [18] M. Maier, B. R. Ballester, and P. F. Verschure, “Principles of neurorehabilitation after stroke based on motor learning and brain plasticity mechanisms,” Frontiers in systems neuroscience, vol. 13, p. 74, 2019.
  • [19] D. Wade, R. Langton-Hewer, V. A. Wood, C. Skilbeck, and H. Ismail, “The hemiplegic arm after stroke: measurement and recovery.” Journal of Neurology, Neurosurgery & Psychiatry, vol. 46, no. 6, pp. 521–524, 1983.
  • [20] I. Indrawati and M. Sajidin, “Active, passive, and active-assistive range of motion (rom) exercise to improve muscle strength in post stroke clients: A systematic review,” in 9th International Nursing Conference, Surabaya, Indonesia. https://www. scitepress. org/Papers/2018/83248/83248. pdf, 2018.
  • [21] J. Veldema and P. Jansen, “Resistance training in stroke rehabilitation: systematic review and meta-analysis,” Clinical rehabilitation, vol. 34, no. 9, pp. 1173–1197, 2020.
  • [22] M. L. Turville, L. S. Cahill, T. A. Matyas, J. M. Blennerhassett, and L. M. Carey, “The effectiveness of somatosensory retraining for improving sensory function in the arm following stroke: a systematic review,” Clinical rehabilitation, vol. 33, no. 5, pp. 834–846, 2019.
  • [23] T. Fujiki and K. Tahara, “Series admittance–impedance controller for more robust and stable extension of force control,” ROBOMECH Journal, vol. 9, no. 1, p. 23, 2022.
  • [24] F. B. Hildebrand, Introduction to numerical analysis.   Courier Corporation, 1987.