[G1-Sync] Manual knowledge update
This commit is contained in:
@@ -2,67 +2,144 @@
|
||||
id: wiki-2026-0508-neuromuscular-control
|
||||
title: Neuromuscular Control
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
status: verified
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-NMCTL-001]
|
||||
aliases: [신경근 조절, Motor Control, NMS Control]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.96
|
||||
tags: [auto-reinforced, motor-control, sensorimotor]
|
||||
confidence_score: 0.9
|
||||
verification_status: applied
|
||||
tags: [neuroscience, biomechanics, motor-control, robotics, biomedical]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
last_reinforced: 2026-05-10
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: python
|
||||
framework: opensim
|
||||
---
|
||||
|
||||
# [[Neuromuscular-Control|Neuromuscular-Control]]
|
||||
# Neuromuscular Control
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "감각이 명령을 만들고, 명령이 동작을 빚어낸다: 소뇌와 고유수용성 감각이 협력하여 무의식적으로 움직임을 미세 조정하는 실시간 하이퍼 오토메이션."
|
||||
## 매 한 줄
|
||||
> **"매 brain plans, spine reflexes, muscle executes"**. Neuromuscular control 은 CNS 가 motor neuron 을 통해 muscle 활성화를 조절해 movement 를 produce 하는 hierarchical process. 2026 perspective 에서 EMG-driven simulation, exoskeleton control, BCI prosthetics 의 핵심.
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
신경근 제어(Neuromuscular Control)는 중추신경계(CNS)가 신체 내부 및 외부의 감각 정보를 통합하여 근육의 수축과 이완을 정밀하게 실행하는 과정입니다.
|
||||
## 매 핵심
|
||||
|
||||
1. **제어 레이어**:
|
||||
* **Feedforward(선행 제어)**: 동작을 수행하기 전, 과거 데이터를 바탕으로 근육의 긴장도를 미리 설정(전전두엽/기저핵 개입).
|
||||
* **Feedback(후행 제어)**: 고유수용감각([[Proprioception|Proprioception]])을 통해 실시간으로 들어오는 오차 정보를 바탕으로 동작을 수정(소뇌/척수 개입).
|
||||
2. **핵심 조절 요소**:
|
||||
* **Proprioception**: 신체 각 부위의 위치와 움직임을 감지하는 6번째 감각.
|
||||
* **Muscle Synergies**: 복잡한 움직임을 위해 여러 근육을 하나의 단위로 묶어 제어함으로써 뇌의 계산 부하를 줄임.
|
||||
3. **부상 방지 아키텍처**:
|
||||
* 갑작스러운 균형 상실 시 반사 작용(Stretch Reflex)을 통해 관절 손상을 방지.
|
||||
### 매 hierarchy
|
||||
- **Cortex (M1, PMC, SMA)**: motor planning.
|
||||
- **Cerebellum**: timing, coordination, error correction.
|
||||
- **Basal ganglia**: action selection, gain modulation.
|
||||
- **Spinal cord**: reflex circuits, central pattern generators (CPG).
|
||||
- **Motor unit**: α-MN + muscle fibers (final common pathway).
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌**: 과거에는 뇌가 모든 근육 세포 하나하나에 명령을 내린다고 생각했으나(고전적 제어론), 현대에는 뇌가 '목표'만 설정하면 척수와 말초 신경계가 알아서 디테일을 채우는 'Self-organized criticality' 모델로 전환됨.
|
||||
- **정책 변화(RL Update)**: 로봇 공학의 인공다리(Prosthetic) 설계 시, 단순 모터 힘 강화보다는 인간의 '신경근 제어' 데이터를 모방하여 지면의 굴곡에 따라 스스로 적응하는 '지능형 제어 알고리즘' 주입이 필수 정책이 됨.
|
||||
### 매 control principles
|
||||
- **Size principle (Henneman)**: small MN 먼저, large 나중.
|
||||
- **Co-contraction**: agonist + antagonist 동시 활성화 → stiffness 조절.
|
||||
- **Stretch reflex**: muscle spindle Ia → α-MN monosynaptic.
|
||||
- **Equilibrium point hypothesis**: descending command = desired length.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related**: Motor Control, [[Proprioception|Proprioception]], Biomechanics, Cerebellum Function
|
||||
- **Modern Tech/Tools**: Computational Motor Control, Kinematic [[Analysis|Analysis]], BCI.
|
||||
---
|
||||
### 매 응용
|
||||
1. Prosthetic / exoskeleton control.
|
||||
2. Rehabilitation robotics.
|
||||
3. Surgical motor mapping.
|
||||
4. Sport biomechanics.
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
## 💻 패턴
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
### Hill-type muscle model
|
||||
```python
|
||||
import numpy as np
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
def hill_muscle(activation, length, velocity,
|
||||
F_max=1000, l_opt=0.1, v_max=10):
|
||||
f_l = np.exp(-((length - l_opt) / (0.5 * l_opt))**2)
|
||||
if velocity <= 0:
|
||||
f_v = (v_max + velocity) / (v_max - 4 * velocity)
|
||||
else:
|
||||
f_v = (1.8 - 0.8 * (v_max + velocity) / (v_max - 7.56 * velocity))
|
||||
return F_max * activation * f_l * f_v
|
||||
```
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
### Motor unit recruitment (size principle)
|
||||
```python
|
||||
def recruit(excitation, n_units=100, threshold_max=1.0):
|
||||
thresholds = np.linspace(0.05, threshold_max, n_units)
|
||||
return np.where(excitation > thresholds,
|
||||
(excitation - thresholds) / (1 - thresholds), 0)
|
||||
```
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
### EMG → activation mapping
|
||||
```python
|
||||
from scipy.signal import butter, filtfilt
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
def emg_to_activation(emg_raw, fs=1000):
|
||||
b, a = butter(4, [20, 450], btype="band", fs=fs)
|
||||
emg = filtfilt(b, a, emg_raw)
|
||||
emg = np.abs(emg)
|
||||
b, a = butter(4, 6, btype="low", fs=fs)
|
||||
env = filtfilt(b, a, emg)
|
||||
return env / env.max()
|
||||
```
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
### Inverse dynamics (joint torque)
|
||||
```python
|
||||
def inverse_dynamics(theta, theta_dot, theta_ddot, m=5, l=0.4, g=9.81):
|
||||
I = m * l**2 / 3
|
||||
return I * theta_ddot + 0.5 * m * g * l * np.sin(theta)
|
||||
```
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
### CPG (Matsuoka oscillator)
|
||||
```python
|
||||
def matsuoka_step(x1, x2, v1, v2, u=1.0, beta=2.5, tau=0.1, dt=0.001):
|
||||
y1, y2 = max(0, x1), max(0, x2)
|
||||
dx1 = (-x1 - beta*v1 - 2.0*y2 + u) / tau
|
||||
dx2 = (-x2 - beta*v2 - 2.0*y1 + u) / tau
|
||||
dv1 = (-v1 + y1) / (tau * 12)
|
||||
dv2 = (-v2 + y2) / (tau * 12)
|
||||
return x1 + dx1*dt, x2 + dx2*dt, v1 + dv1*dt, v2 + dv2*dt
|
||||
```
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
### EMG-driven prosthetic control
|
||||
```python
|
||||
class MyoelectricController:
|
||||
def __init__(self, n_channels=8):
|
||||
self.classifier = train_lda()
|
||||
def predict(self, emg_window):
|
||||
feat = extract_features(emg_window) # MAV, ZC, WL, AR4
|
||||
return self.classifier.predict(feat)
|
||||
```
|
||||
|
||||
## 매 결정 기준
|
||||
| 상황 | Approach |
|
||||
|---|---|
|
||||
| Whole-body simulation | OpenSim / MyoSuite |
|
||||
| Single joint, real-time | Hill-type + LDA EMG |
|
||||
| Locomotion robot | CPG + reflexes |
|
||||
| Pathology study | Inverse dynamics + EMG |
|
||||
|
||||
**기본값**: Hill-type muscle + size-principle recruitment + EMG envelope.
|
||||
|
||||
## 🔗 Graph
|
||||
- 부모: [[Neuroscience]] · [[Biomechanics]]
|
||||
- 변형: [[Perceptual-Motor-Skills]] · [[Motor Learning]]
|
||||
- 응용: [[Prosthetics]] · [[Exoskeleton Control]]
|
||||
- Adjacent: [[Reinforcement Learning]] · [[BCI]]
|
||||
|
||||
## 🤖 LLM 활용
|
||||
**언제**: simulation parameter tuning, EMG feature engineering, paper synthesis.
|
||||
**언제 X**: clinical motor diagnosis — neurologist 필수.
|
||||
|
||||
## ❌ 안티패턴
|
||||
- **Linear EMG-force assumption**: 매 force 는 nonlinear (length × velocity × activation).
|
||||
- **Ignoring co-contraction**: stiffness control 무시 → unstable model.
|
||||
- **Pure feedback control**: feed-forward (internal model) 누락 → laggy.
|
||||
|
||||
## 🧪 검증 / 중복
|
||||
- Verified (Zajac 1989, Delp OpenSim 2018, Henneman 1965).
|
||||
- 신뢰도 A.
|
||||
|
||||
## 🕓 Changelog
|
||||
| 날짜 | 변경 |
|
||||
|---|---|
|
||||
| 2026-05-08 | Phase 1 |
|
||||
| 2026-05-10 | Manual cleanup — Hill model + EMG + CPG 패턴 |
|
||||
|
||||
Reference in New Issue
Block a user