Skip to main content
🤝

이 가이드는 인류와 AI가 함께 만드는 지식입니다.

이 콘텐츠는 Human + AI Partnership 철학 아래 모든 사람이 로봇·AI를 배울 수 있도록 무료로 제공됩니다. 당신의 질문과 기여가 다음 학생의 미래를 바꿉니다.

ROS 2 Medical Rehabilitation Robotics Guide 2026

Rehabilitation robots help patients recover movement after stroke, injury, or surgery — delivering repeatable, measurable therapy. This guide covers the ROS 2 stack for exoskeletons and therapy devices: compliant control, assist-as-needed algorithms, intent detection, and medical-grade safety.

Safety note: This is an engineering overview for research and education. Devices that physically support or move a patient require regulatory clearance (FDA, EU MDR), IEC 60601 compliance, and clinical validation. Never test experimental control code on a person.

1. The Rehabilitation Robot Stack

sudo apt-get install -y   ros-humble-ros2-control   ros-humble-ros2-controllers   ros-humble-realtime-tools

# Layers:
#   1. Actuator control  (torque/impedance, 1kHz)
#   2. Intent detection   (EMG / force / motion)
#   3. Assist controller   (assist-as-needed therapy)
#   4. Session logic        (exercises, progression, metrics)
#   5. Safety monitor        (ROM limits, force caps, e-stop)

2. Impedance Control

Rehab robots must be compliant — behaving like a tunable spring-damper around the patient's limb:

def impedance_torque(self, q, qd, q_desired):
    # tau = K (q_des - q) - D qd    (virtual spring-damper)
    # Low K early in therapy (patient leads), higher K later (more support)
    tau = self.K @ (q_desired - q) - self.D @ qd
    tau = np.clip(tau, -self.tau_max, self.tau_max)   # hard safety cap
    return tau
    # Adjusting K/D changes how much the robot 'helps' vs 'resists'.

3. Assist-As-Needed Therapy

The core principle: help only as much as the patient needs — encourage their own effort:

def assist_as_needed(self, tracking_error):
    # Deadband: within tolerance, provide NO assistance (patient works)
    if abs(tracking_error) < self.deadband:
        return 0.0
    # Outside the band, assistance grows with error, but capped
    beyond = abs(tracking_error) - self.deadband
    assist = self.gain * beyond
    # Slowly shrink assistance over sessions as the patient improves
    return np.sign(tracking_error) * min(assist, self.max_assist)

4. EMG-Based Intent Detection

Read muscle activation so the robot moves withthe patient's intention:

def emg_intent(self, emg_channels):
    # Rectify + smooth EMG -> activation envelope per muscle
    env = [lowpass(np.abs(ch)) for ch in emg_channels]
    flex = env[self.flexor] - env[self.extensor]
    # Threshold above resting noise = intended motion
    if abs(flex) > self.emg_threshold:
        direction = np.sign(flex)
        return direction * self.assist_velocity
    return 0.0   # trigger assistance the instant the patient tries to move

5. Gait Training

# Lower-limb exo replays a physiological gait trajectory, assisting
# each joint through the stance/swing cycle.
def gait_cycle(self, phase):        # phase 0..1 over one stride
    hip = self.gait_ref['hip'](phase)
    knee = self.gait_ref['knee'](phase)
    ankle = self.gait_ref['ankle'](phase)
    for joint, q_des in [('hip', hip), ('knee', knee), ('ankle', ankle)]:
        tau = self.impedance_torque_1d(joint, q_des)
        self.apply(joint, tau)
    # Body-weight support + treadmill sync complete the setup.

6. Progress Metrics

7. Patient Safety Architecture

8. Engagement & Gamification

9. Regulatory Context

10. Platforms

Key Takeaways

Rehabilitation robotics turns therapy into repeatable, measurable, motivating treatment. Impedance control makes the device compliant, assist-as-needed encourages the patient's own effort, and EMG intent detection lets the robot move with the patient's intention. Quantify progress through participation and ROM metrics, gamify for engagement, and build the whole system around patient-safe ROM limits, force caps, and back-drivability — under IEC 60601/62304 compliance before anyone is treated.