[G1-Sync] Manual knowledge update
This commit is contained in:
@@ -2,70 +2,207 @@
|
||||
id: wiki-2026-0508-robotics
|
||||
title: Robotics
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
status: verified
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-ROBO-001]
|
||||
aliases: [Robotic Systems, Robot Engineering, Robotics Foundations]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.95
|
||||
tags: [auto-reinforced, robotics, mechatronics, sensors, embodiment]
|
||||
verification_status: applied
|
||||
tags: [robotics, perception, planning, control, foundation-models, embodied-AI]
|
||||
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/C++
|
||||
framework: ROS2/Isaac/MuJoCo/PyTorch
|
||||
---
|
||||
|
||||
# [[Robotics|Robotics]]
|
||||
# Robotics
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "지능에 육체를 부여하다: 센서로 세상을 느끼고, 알고리즘으로 사고하며, 액추에이터로 물리적 영향을 행사하는 ' Embodied AI(구현된 지능)'의 결정체."
|
||||
## 매 한 줄
|
||||
> **"매 sense → think → act 의 closed loop 의 physical world 의 agent."**. Robotics 의 perception (vision/lidar/IMU), planning (motion + task), control (PID → MPC → RL) 의 stack 의, 매 2024-2026 inflection 의 vision-language-action (VLA) foundation models — Google RT-2, Physical Intelligence π0, Figure 02 — 의 generalist embodied AI 의 era 의 driving.
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
로보틱스(Robotics)는 기계 공학, 전자 공학, 컴퓨터 과학이 결합하여 스스로 동작하거나 인간의 일을 돕는 로봇을 설계, 제작, 운영하는 학문입니다.
|
||||
## 매 핵심
|
||||
|
||||
1. **3가지 핵심 구성 요소**:
|
||||
* **Sensing (Perception)**: LiDAR, 카메라, 초음파 센서 등을 통해 주변 환경 데이터를 수집.
|
||||
* **Thinking ([[Processing|Processing]])**: 경로 계획(Path Planning), 물체 인식, 제어 알고리즘 연산.
|
||||
* **Acting (Motion Control)**: 모터와 유압 장치를 이용해 팔을 움직이거나 바퀴를 굴림.
|
||||
2. **주요 패러다임 변화**:
|
||||
* **Industrial Robotics**: 고정된 장소에서 고도의 정밀도로 반복 작업 수행.
|
||||
* **Service/Social Robotics**: 가정, 병원 등에서 인간과 상호작용하며 복잡한 환경 적응.
|
||||
* **Soft Robotics**: 부드러운 소재를 사용하여 생명체와 유사한 유연한 움직임 구현.
|
||||
3. **핵심 난제**:
|
||||
* **Localization (SLAM)**: 모르는 장소에서 자신의 위치를 찾고 지도를 동시에 만드는 기술.
|
||||
* **Grasp Control**: 형태가 제각각인 물체를 적절한 힘으로 집어 올리는 정교함.
|
||||
### 매 classical stack
|
||||
1. **Perception**: SLAM (ORB-SLAM3, Kimera), object detection, pose estimation.
|
||||
2. **State estimation**: Kalman filter, factor graphs (GTSAM).
|
||||
3. **Planning**:
|
||||
- Task: PDDL, behavior trees, LLM planners.
|
||||
- Motion: RRT*, trajectory optimization (TrajOpt, CHOMP).
|
||||
4. **Control**: PID, LQR, MPC, impedance control.
|
||||
5. **Hardware abstraction**: ROS2, drivers, real-time scheduling.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌**: 과거에는 모든 동작을 수학적으로 사전 프로그래밍했으나, 현대 로보틱스는 강화학습(RL)과 대규모 파운데이션 모델을 결합하여 로봇이 스스로 '시행착오'를 통해 복잡한 동작을 습득하게 하는 정책으로 진화함(Embodied AI).
|
||||
- **정책 변화(RL Update)**: 자율주행 로봇의 공공장소 주행 허용 여부와 로봇에 의한 사고 발생 시 책임 소재를 규명하는 '로봇 윤리 및 안전 법안'이 전 세계적으로 입법 초기 단계에 진입함.
|
||||
### 매 modern (2026) shift
|
||||
- **VLA models**: π0, RT-2, OpenVLA — image+text→action tokens.
|
||||
- **Diffusion policies**: Chi et al. 2023 — multimodal action distributions.
|
||||
- **Sim2Real**: Isaac Lab, MuJoCo MJX — massive parallel simulation + DR.
|
||||
- **Humanoids**: Figure 02, Tesla Optimus, Apptronik Apollo, 1X Neo — commercial pilots.
|
||||
- **Whole-body MPC**: real-time on humanoid (Boston Dynamics Atlas).
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- Control-Systems, [[Computer-Vision|Computer-Vision]], [[Reinforcement Learning (RL)|Reinforcement Learning (RL)]], Cyber-Physical[[_system|system]]s, Human-Computer Interaction (HCI)
|
||||
- **Modern Tech/Tools**: ROS (Robot [[Opera|Opera]]ting System), Boston Dynamics, Tesla Optimus, NVIDIA Isaac Sim.
|
||||
---
|
||||
### 매 응용
|
||||
1. Industrial automation (pick-and-place, welding).
|
||||
2. Autonomous mobile robots (Amazon Proteus, warehouse AGVs).
|
||||
3. Surgical robotics (da Vinci, Intuitive Ion).
|
||||
4. Humanoid general purpose (Figure, Optimus, BMW pilot 2025).
|
||||
5. Self-driving (Waymo, Tesla FSD).
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
## 💻 패턴
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
### ROS2 Node Skeleton
|
||||
```python
|
||||
import rclpy
|
||||
from rclpy.node import Node
|
||||
from sensor_msgs.msg import Image
|
||||
from geometry_msgs.msg import Twist
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
class Controller(Node):
|
||||
def __init__(self):
|
||||
super().__init__("controller")
|
||||
self.sub = self.create_subscription(Image, "/cam", self.cb_img, 10)
|
||||
self.pub = self.create_publisher(Twist, "/cmd_vel", 10)
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
def cb_img(self, msg):
|
||||
cmd = Twist()
|
||||
cmd.linear.x = 0.5
|
||||
self.pub.publish(cmd)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
def main(): rclpy.init(); rclpy.spin(Controller()); rclpy.shutdown()
|
||||
```
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
### Extended Kalman Filter (state estimation)
|
||||
```python
|
||||
import numpy as np
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
class EKF:
|
||||
def __init__(self, x0, P0, Q, R):
|
||||
self.x, self.P, self.Q, self.R = x0, P0, Q, R
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
def predict(self, f, F):
|
||||
self.x = f(self.x)
|
||||
self.P = F @ self.P @ F.T + self.Q
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
def update(self, z, h, H):
|
||||
y = z - h(self.x)
|
||||
S = H @ self.P @ H.T + self.R
|
||||
K = self.P @ H.T @ np.linalg.inv(S)
|
||||
self.x = self.x + K @ y
|
||||
self.P = (np.eye(len(self.x)) - K @ H) @ self.P
|
||||
```
|
||||
|
||||
### MPC (acados / cvxpy)
|
||||
```python
|
||||
import cvxpy as cp
|
||||
import numpy as np
|
||||
|
||||
def mpc_step(x0, A, B, Q, R, N=10, u_max=1.0):
|
||||
nx, nu = A.shape[0], B.shape[1]
|
||||
x = cp.Variable((nx, N+1))
|
||||
u = cp.Variable((nu, N))
|
||||
cost = sum(cp.quad_form(x[:,k], Q) + cp.quad_form(u[:,k], R) for k in range(N))
|
||||
cons = [x[:,0] == x0]
|
||||
for k in range(N):
|
||||
cons += [x[:,k+1] == A @ x[:,k] + B @ u[:,k],
|
||||
cp.norm_inf(u[:,k]) <= u_max]
|
||||
cp.Problem(cp.Minimize(cost), cons).solve()
|
||||
return u.value[:,0]
|
||||
```
|
||||
|
||||
### RRT* Motion Planning
|
||||
```python
|
||||
def rrt_star(start, goal, obstacles, max_iter=2000, step=0.5, radius=2.0):
|
||||
tree = {tuple(start): {"parent": None, "cost": 0.0}}
|
||||
for _ in range(max_iter):
|
||||
rnd = sample_free(obstacles)
|
||||
nearest = min(tree, key=lambda n: dist(n, rnd))
|
||||
new = steer(nearest, rnd, step)
|
||||
if collision_free(nearest, new, obstacles):
|
||||
neighbors = [n for n in tree if dist(n, new) < radius]
|
||||
best = min(neighbors, key=lambda n: tree[n]["cost"] + dist(n, new))
|
||||
tree[tuple(new)] = {"parent": best, "cost": tree[best]["cost"] + dist(best, new)}
|
||||
if dist(new, goal) < step: return reconstruct_path(tree, tuple(new))
|
||||
return None
|
||||
```
|
||||
|
||||
### Diffusion Policy (modern)
|
||||
```python
|
||||
import torch
|
||||
import torch.nn as nn
|
||||
|
||||
class DiffusionPolicy(nn.Module):
|
||||
def __init__(self, obs_dim, action_dim, T=100):
|
||||
super().__init__()
|
||||
self.net = nn.Sequential(nn.Linear(obs_dim+action_dim+1, 256),
|
||||
nn.SiLU(),
|
||||
nn.Linear(256, action_dim))
|
||||
self.T = T
|
||||
|
||||
def forward(self, obs, a_t, t):
|
||||
return self.net(torch.cat([obs, a_t, t.float().unsqueeze(-1)/self.T], -1))
|
||||
|
||||
@torch.no_grad()
|
||||
def sample(self, obs, scheduler):
|
||||
a = torch.randn(obs.shape[0], self.action_dim, device=obs.device)
|
||||
for t in reversed(range(self.T)):
|
||||
eps = self.forward(obs, a, torch.full((obs.shape[0],), t, device=obs.device))
|
||||
a = scheduler.step(eps, t, a)
|
||||
return a
|
||||
```
|
||||
|
||||
### VLA Inference (π0-style)
|
||||
```python
|
||||
def vla_act(model, image, instruction: str):
|
||||
"""매 VLA: image + text → action chunk."""
|
||||
inputs = model.processor(image=image, text=instruction, return_tensors="pt")
|
||||
out = model.generate(**inputs, max_new_tokens=64)
|
||||
action_chunk = model.detokenize_actions(out) # e.g. (8, 7) — 8 timesteps × 7 DoF
|
||||
return action_chunk
|
||||
```
|
||||
|
||||
### Sim2Real Domain Randomization
|
||||
```python
|
||||
def randomize_env(env):
|
||||
env.set_friction(np.random.uniform(0.5, 1.5))
|
||||
env.set_mass_scale(np.random.uniform(0.8, 1.2))
|
||||
env.set_lighting(np.random.uniform(0.3, 1.0))
|
||||
env.add_observation_noise(scale=np.random.uniform(0.0, 0.05))
|
||||
```
|
||||
|
||||
## 매 결정 기준
|
||||
| 상황 | Approach |
|
||||
|---|---|
|
||||
| Industrial repetitive | Classical: vision + IK + PID |
|
||||
| Mobile navigation | SLAM + planning (Nav2) + MPC |
|
||||
| Manipulation, varied tasks | Diffusion policy or VLA |
|
||||
| Generalist humanoid | VLA (π0/RT-2) + whole-body MPC |
|
||||
| Safety-critical (surgery, AV) | Verified controllers + redundant perception |
|
||||
|
||||
**기본값**: Classical stack for known tasks; VLA + diffusion policy 의 manipulation/general; Sim2Real with massive DR for new skills.
|
||||
|
||||
## 🔗 Graph
|
||||
- 부모: [[Embodied AI]] · [[Control Theory]] · [[Computer Vision]]
|
||||
- 변형: [[Mobile Robotics]] · [[Manipulation]] · [[Humanoid Robotics]] · [[Surgical Robotics]]
|
||||
- 응용: [[Self-Driving]] · [[Warehouse Automation]] · [[VLA Models]]
|
||||
- Adjacent: [[Reinforcement Learning]] · [[SLAM]] · [[MPC]] · [[Imitation Learning]]
|
||||
|
||||
## 🤖 LLM 활용
|
||||
**언제**: high-level task planning (LLM-as-planner), code generation for robot skills, error diagnosis, sim asset generation.
|
||||
**언제 X**: 매 closed-loop control 의 X — latency/safety 의 LLM 의 unsuitable; small specialized policy 의 fast inference 의 use.
|
||||
|
||||
## ❌ 안티패턴
|
||||
- **Open-loop trust**: sensor noise 의 underestimate — 매 always close the loop.
|
||||
- **Sim-only training**: no DR / no real fine-tune → fails reality.
|
||||
- **VLA for everything**: 매 simple reach-and-place 의 IK 의 better — VLA 의 long-tail 의 reserve.
|
||||
- **No safety layer**: ML policy 의 unbounded — torque limits + collision shield 필요.
|
||||
- **Real-time on Python only**: critical loop 의 C++/Rust + ROS2 real-time scheduler.
|
||||
|
||||
## 🧪 검증 / 중복
|
||||
- Verified (Siciliano "Robotics: Modelling, Planning and Control"; π0/RT-2 papers; Boston Dynamics Atlas reports 2024-25).
|
||||
- 신뢰도 A.
|
||||
|
||||
## 🕓 Changelog
|
||||
| 날짜 | 변경 |
|
||||
|---|---|
|
||||
| 2026-05-08 | Phase 1 |
|
||||
| 2026-05-10 | Manual cleanup — robotics canonical: classical + VLA + diffusion policy + Sim2Real |
|
||||
|
||||
Reference in New Issue
Block a user