refactor(topics): 멀티 에이전트용 지식 재편 — _Common(공통 기본기) + Domain_* 구조

에이전트 8종(대화형/프로그래머 C·S/디자이너/설계자/기획자/QA/PD/PM)에게
[공통 기본 능력 + 롤별 Specialty] 2층으로 지식을 주입하기 위한 재분류.
문서 내용·포맷은 무수정, 폴더 이동만 (6,372개 문서 수 보존 확인).

- Topic_Programming → Domain_Programming (내부 구조 보존)
- Topic_Graphic → Domain_Design
- Topic_Business → Domain_Product
- Topic_General → Domain_General
- _Common 신설: Math(구 Topic_Math_Specialty), Reasoning(구 General/From_Thinking & Reasoning),
  Reasoning_Creativity(구 General/From_창의성), Communication(Poetic_Blog_Writing + From_writing)
- 타 도메인의 From_* 폴더는 유지 (출처 표기일 뿐, 이미 도메인에 맞게 분류된 문서)
- 빈 폴더 정리 (memory/procedures)
- 에이전트→폴더 매핑은 workspace의 .astra/agent-knowledge-map.json (9개 에이전트)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Antigravity Agent
2026-07-11 11:05:56 +09:00
parent 6549ead309
commit c24165b8bc
6193 changed files with 1717 additions and 31 deletions
@@ -0,0 +1,208 @@
---
id: wiki-2026-0508-robotics
title: Robotics
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [Robotic Systems, Robot Engineering, Robotics Foundations]
duplicate_of: none
source_trust_level: A
confidence_score: 0.95
verification_status: applied
tags: [robotics, perception, planning, control, foundation-models, embodied-AI]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
language: Python/C++
framework: ROS2/Isaac/MuJoCo/PyTorch
---
# Robotics
## 매 한 줄
> **"매 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.
## 매 핵심
### 매 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.
### 매 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).
### 매 응용
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).
## 💻 패턴
### ROS2 Node Skeleton
```python
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import Image
from geometry_msgs.msg import Twist
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)
def cb_img(self, msg):
cmd = Twist()
cmd.linear.x = 0.5
self.pub.publish(cmd)
def main(): rclpy.init(); rclpy.spin(Controller()); rclpy.shutdown()
```
### Extended Kalman Filter (state estimation)
```python
import numpy as np
class EKF:
def __init__(self, x0, P0, Q, R):
self.x, self.P, self.Q, self.R = x0, P0, Q, R
def predict(self, f, F):
self.x = f(self.x)
self.P = F @ self.P @ F.T + self.Q
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]]
- 변형: [[Surgical-Robotics]]
- 응용: [[Self-Driving]]
- Adjacent: [[Reinforcement Learning]] · [[SLAM]] · [[MPC]]
## 🤖 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 |