# 2026-04-09 每日总结
## 📅 日期和当日概览
- **日期:** 2026年4月9日(周四)
- **时间:** 下午 3:00 (UTC)
- **状态:** 活跃对话日
---
## 💬 主要对话话题
### 1. 🐛 copyparty 文件服务器权限问题
- 解决 admin 用户无法读取文件列表的问题
- 深入理解 copyparty 的 `-v` 参数权限配置语法
- 最终配置:`/root/copyparty-files:/files:r:rw,admin`
### 2. 📐 线性代数:机器人变换矩阵
- 学习 4×4 齐次变换矩阵(平移 + 旋转)
- 掌握复合变换的右乘法则
- 实际应用案例:2D 机械臂末端位置计算、无人机姿态变换
- 欧拉角旋转矩阵与万向节死锁概念
---
## ✅ 完成的待办事项
- ✅ 解决 copyparty 文件服务器权限配置问题
- ✅ 搭建可用的文件传输方案(copyparty)
- ✅ 线性代数:机器人变换矩阵学习
---
## 📌 未完成的待办事项(需要后续跟进)
- ⏳ IEEE MDM 2026 Demo 论文准备(投稿截止:4月26日,还有17天)
- ⏳ OpenWrt 旁路由项目(Passwall/OpenClash 依赖包问题)
- ⏳ FRP 内网穿透配置(测试外网访问、设置开机自启)
- ⏳ 蓝桥杯备赛
---
## 📝 重要决定或约定
- 建立 copyparty 文件服务器作为 AI 与用户之间传输大文件的方案
- 服务器地址:`http://129.211.3.54:3923/files/`
---
## 💡 学到的知识点或新发现
### copyparty 权限配置
```bash
# 格式:src:dst:perm1:perm2...
-v /data:/files:r:rw,admin # 公开只读 + admin 可写
```
### 机器人变换矩阵核心要点
- **右乘法则**:先进行的变换写在右边 `P' = T × R × P`
- **旋转矩阵正交性**:`R⁻¹ = Rᵀ`
- **万向节死锁**:欧拉角中间轴旋转90°会丢失一个自由度
---
## 🎯 明日提醒
- IEEE MDM 2026 Demo 论文投稿截止:**4月26日**(还有17天)
- 蓝桥杯备赛进行中
---
## 📁 附件:详细工作记录
🐛 copyparty 文件服务器权限问题(详细)
### 问题现象
- copyparty 服务启动后,admin 用户无法读取文件列表
- API 返回 `"dirs": [], "files": []`,目录显示为空
### 根本原因
copyparty 的 `-v`(volume)参数配置错误:
```bash
# ❌ 错误配置:只给了写权限,没给读权限
-v /root/copyparty-files:/files:w,admin
```
### 解决方法
```bash
# ✅ 正确配置:r 给所有人读权限,rw,admin 给 admin 读写权限
-v /root/copyparty-files:/files:r:rw,admin
```
### copyparty -v 参数详解
**格式:** `src:dst:perm1:perm2:permN:volflag...`
| 部分 | 说明 | 示例 |
|------|------|------|
| `src` | 本地路径 | `/root/copyparty-files` |
| `dst` | URL 路径 | `/files` |
| `perm` | 权限配置 | `r`, `w,user1`, `rw,admin` |
| `volflag` | 卷标志 | `c` (cookie), `nodupe` 等 |
**权限格式:** `权限字母,用户1,用户2,...`
| 权限 | 含义 |
|------|------|
| `r` | 读取(列出目录、下载文件) |
| `w` | 写入(上传文件) |
| `m` | 移动文件/目录 |
| `d` | 删除 |
| `a` | 管理员(看上传者IP、重载配置) |
| `A` | 全部权限(rwmda.) |
**常见配置示例:**
```bash
# 公开只读 + admin 可写
-v /data:/files:r:rw,admin
# 仅特定用户可读写
-v /data:/files:rw,alice:rw,bob
# 多目录挂载
-v /music:/music:r -v /docs:/docs:rw,admin
```
### 验证结果
- ✅ 匿名用户 → 403 Forbidden(无法访问)
- ✅ admin 登录 → 正常显示所有文件,可上传下载
📐 线性代数:机器人变换矩阵(详细)
### 1. 基础变换矩阵
#### 平移矩阵 T
```
| 1 0 0 tx |
T = | 0 1 0 ty |
| 0 0 1 tz |
| 0 0 0 1 |
```
#### 绕 Z 轴旋转矩阵 Rz(θ)
```
| cosθ -sinθ 0 0 |
Rz = | sinθ cosθ 0 0 |
| 0 0 1 0 |
| 0 0 0 1 |
```
#### 绕 X/Y 轴旋转矩阵
```
| 1 0 0 0 | | cosθ 0 sinθ 0 |
Rx = | 0 cosθ -sinθ 0 | Ry = | 0 1 0 0 |
| 0 sinθ cosθ 0 | | -sinθ 0 cosθ 0 |
| 0 0 0 1 | | 0 0 0 1 |
```
### 2. 复合变换核心规则:右乘法则
**变换顺序非常重要!先进行的变换写在右边。**
```
P' = T × R × P # 先旋转 R,再平移 T
```
#### 推导示例
点 P 先绕 Z 轴旋转 θ,再沿 X 轴平移 d:
```
P₁ = Rz(θ) × P # 第一步:旋转
P' = T × P₁ = T × Rz(θ) × P # 第二步:平移
复合矩阵:
| cosθ -sinθ 0 d |
T×Rz = | sinθ cosθ 0 0 |
| 0 0 1 0 |
| 0 0 0 1 |
```
### 3. 实际例子
#### 例子 1:2D 机械臂末端位置
```python
import numpy as np
def rot_z(theta):
c, s = np.cos(theta), np.sin(theta)
return np.array([[c,-s,0,0], [s,c,0,0], [0,0,1,0], [0,0,0,1]])
def translate(x, y, z=0):
return np.array([[1,0,0,x], [0,1,0,y], [0,0,1,z], [0,0,0,1]])
# 机械臂参数
L1, L2 = 2, 1.5
theta1, theta2 = np.radians(30), np.radians(45)
# 变换链:基座 → 关节1 → 关节2 → 末端
T_joint1 = rot_z(theta1) @ translate(L1, 0)
T_joint2 = rot_z(theta2) @ translate(L2, 0)
T_total = T_joint1 @ T_joint2
# 计算末端位置
end = T_total @ np.array([0, 0, 0, 1])
# 结果: (1.366, 2.299)
```
#### 例子 2:无人机姿态变换
无人机依次进行:
1. 绕 Z 轴偏航(Yaw)45°
2. 绕 Y 轴俯仰(Pitch)30°
3. 绕 X 轴翻滚(Roll)15°
4. 向前飞行 10 米
```
T_total = Translate(10,0,0) × Rx(15°) × Ry(30°) × Rz(45°)
```
**注意:** 顺序很重要!先偏航改变"前"方向,后续操作都基于新的姿态。
#### 例子 3:欧拉角旋转矩阵
```
R = Rz(γ) × Ry(β) × Rx(α)
| cγcβ cγsβsα-sγcα cγsβcα+sγsα |
= | sγcβ sγsβsα+cγcα sγsβcα-cγsα |
| -sβ cβsα cβcα |
```
(c=cos, s=sin)
### 4. 重要注意事项
| 注意点 | 说明 |
|--------|------|
| ⚠️ 顺序很重要 | `T × R ≠ R × T`,矩阵乘法不满足交换律 |
| ⚠️ 万向节死锁 | 欧拉角中,中间轴旋转90°会丢失自由度 |
| ✅ 逆变换 | 旋转矩阵正交:`R⁻¹ = Rᵀ` |
### 5. 总结
| 操作 | 矩阵 | 说明 |
|------|------|------|
| 平移 | T(tx,ty,tz) | 沿向量移动 |
| 旋转 | Rx/Ry/Rz(θ) | 绕坐标轴旋转 |
| 复合 | T₂ × R₂ × T₁ × R₁ | 右乘法则,先右后左 |
| 逆变换 | T⁻¹, R⁻¹=Rᵀ | 旋转矩阵正交性质 |
---
*总结生成时间:2026-04-09 15:00 UTC*
*用户:Deshill*