"매 system 의 independent parameter 의 count". 매 robotics: 매 movable joint. 매 statistics: 매 sample 의 free 의 vary. 매 modern AI: 매 model parameter (over-parameterization).
매 핵심
매 mechanical / robotics
Rigid body in 3D: 6 DOF (3 translation + 3 rotation).
Rigid body in 2D: 3 DOF.
Manipulator: 매 joint 의 sum.
Mobile robot: 매 base + arm.
매 Grübler-Kutzbach formula
DOF = λ(n - j - 1) + Σ f_i
λ: 매 6 (3D), 3 (2D).
n: 매 link 수 (base 포함).
j: 매 joint 수.
f_i: 매 joint 의 freedom.
매 statistical DOF
Sample variance: n - 1 (mean 의 1 의 lose).
Linear regression: n - p - 1 (p predictor).
Chi-square: 매 categories - 1.
t-distribution: 매 sample-dependent.
매 ML / DL
Effective DOF: 매 model 의 parameter count.
Over-parameterization: 매 modern DL 의 paradox (n_param >> n_data).
Implicit regularization: 매 SGD 의 effective DOF 의 reduce.
매 응용
Robot arm design: 매 6+ DOF 의 redundancy.
VR head tracking: 6 DOF.
Hand tracking: 매 26 DOF (each hand).
Statistics: 매 hypothesis test.
Camera pose: 6 DOF.
💻 패턴
Compute DOF (manipulator)
defgrubler_dof_3d(n_links,joints):"""매 3D Grübler. joints: list of (type, freedom)."""j=len(joints)f_sum=sum(ffor_,finjoints)return6*(n_links-j-1)+f_sum# 매 6-axis arm: 6 revolute jointsarm=grubler_dof_3d(7,[('rev',1)]*6)# 6# 매 4-bar linkage (planar)defgrubler_dof_2d(n,joints):return3*(n-len(joints)-1)+sum(ffor_,finjoints)fourbar=grubler_dof_2d(4,[('rev',1)]*4)# 1
importnumpyasnpdefvariance(data,ddof=1):# 매 ddof = degrees of freedom adjustn=len(data)mean=sum(data)/nreturnsum((x-mean)**2forxindata)/(n-ddof)# 매 ddof=1: 매 sample (unbiased)# 매 ddof=0: 매 population
Effective DOF (ridge regression)
defeffective_dof_ridge(X,lam):"""매 trace of hat matrix."""XtX=X.T@Xn_features=X.shape[1]H=X@np.linalg.inv(XtX+lam*np.eye(n_features))@X.Treturnnp.trace(H)
6-DOF pose (3D vision)
classPose6DOF:def__init__(self,position,orientation):self.t=np.array(position)# 매 [x, y, z]self.q=orientation# 매 quaternion [w, x, y, z]defas_matrix(self):T=np.eye(4)T[:3,3]=self.t# 매 quaternion → rotation matrix (Hamilton)w,x,y,z=self.qT[:3,:3]=np.array([[1-2*(y*y+z*z),2*(x*y-z*w),2*(x*z+y*w)],[2*(x*y+z*w),1-2*(x*x+z*z),2*(y*z-x*w)],[2*(x*z-y*w),2*(y*z+x*w),1-2*(x*x+y*y)],])returnT
Hand tracking DOF
HAND_DOF={'wrist':6,# 매 free in space'thumb':5,# 매 CMC 의 2, MCP 의 1, IP 의 1, opposition 의 1'index_finger':4,# 매 MCP 2 + PIP 1 + DIP 1'middle_finger':4,'ring_finger':4,'pinky_finger':4,}total=sum(HAND_DOF.values())# 27
Redundancy (kinematic)
defredundancy(robot_dof,task_dof):"""매 redundancy = robot_dof - task_dof."""returnmax(0,robot_dof-task_dof)# 매 7-DOF arm + 매 6-DOF task → 1-DOF redundancy# 매 self-motion 의 obstacle 의 avoidprint(redundancy(7,6))# 1
Over-parameterization (DL)
defmodel_dof(model):"""매 deep learning effective DOF approximation."""total=sum(p.numel()forpinmodel.parameters())trainable=sum(p.numel()forpinmodel.parameters()ifp.requires_grad)return{'total':total,'trainable':trainable}# 매 GPT-3: 175B parameters >> 매 dataset size# 매 overfitting paradox: 매 implicit regularization 의 explain
매 결정 기준
상황
DOF Approach
Manipulator design
Grübler-Kutzbach
Robot redundancy
n_robot - n_task
Statistics test
Specific test formula
ML model
Parameter count + effective
VR / AR
6 DOF (full) or 3 DOF (rotation)
Hand tracking
~26 per hand
기본값: 매 task-specific DOF + 매 redundancy 의 prefer (manipulator) + 매 statistical 의 ddof aware.