Refactor arm UDP controller with user-space height coordinates and gripper toggle
- Switch height to user coordinates (0=top, 290=bottom mm), invert sign internally for UDP protocol - Replace raw --j5 arg with --up flag (gripper up/down toggle) - Add default geometry constants (L1, L2, X4, Z4) and gripper open/closed angles - Update --show-fk and pose mode to derive Z4 from gripper state - Add mm unit annotations to all CLI help text and output - Update cached joint state to match new coordinate convention - Add camera_capture.py: single-shot JPEG grabber from ESP32 MJPEG stream - Fix missing newline at EOF in craic.md
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
|
||||
为了让数学表达更清晰,我们先统一一下坐标系和变量的定义。
|
||||
|
||||
除角度外,所有线性长度和坐标统一使用 **mm**。
|
||||
|
||||
### 变量与坐标系定义
|
||||
|
||||
我们将基坐标系原点设在红色滑轨的零点位置。
|
||||
@@ -110,4 +112,4 @@ $$\theta_4 = \Phi - \theta_2 - \theta_3$$
|
||||
|
||||
1. **使用 `atan2` 替代 `asin/acos**`:上面逆解公式中我全部使用了 $\text{atan2}(y, x)$。在标准库中,`atan2` 能够自动处理四个象限的符号问题,且能避免 $x=0$ 时的除零错误,这在底层驱动中至关重要。
|
||||
2. **死区与奇异点保护**:当 $X_4^2 + Y_4^2 \approx 0$ 时(关节 4 缩回到了原点正上方),此时 $\theta_2$ 会失去意义(奇异点)。在代码中应当加入对 $X_4^2 + Y_4^2 < \epsilon$(一个极小值)的判断,防止产生 NaN。
|
||||
3. **角度范围归一化**:计算出的角度可能会超出电机支持的物理限位范围(例如超出了 $[-180^\circ, +180^\circ]$),在下发脉冲或指令前,记得对 $\theta_2, \theta_3, \theta_4$ 进行归一化和软限位拦截。
|
||||
3. **角度范围归一化**:计算出的角度可能会超出电机支持的物理限位范围(例如超出了 $[-180^\circ, +180^\circ]$),在下发脉冲或指令前,记得对 $\theta_2, \theta_3, \theta_4$ 进行归一化和软限位拦截。
|
||||
|
||||
Reference in New Issue
Block a user