Week 5:Linux 目录操作与机器人运动学
本周继续练习 Ubuntu / Linux 终端操作,并通过 Panda 机器人示例理解关节空间、坐标空间、正运动学和逆运动学。
课堂内容
- Ubuntu / Linux 终端操作和目录操作。
- Ubuntu / Linux 学习资料与学习用途。
- Panda 机器人的运动学展示。
- 机器人基本概念:关节空间 / 坐标空间、正运动学 / 逆运动学。
终端操作:人生三问
进入“小区”,保安会问你三大问题:
who
你是谁?
pwd
你从哪里来?也就是当前目录在哪里。
ls
当前目录里有什么文件和文件夹。
cd 目标目录地址
你要去哪里?
Ubuntu 里的目录地址
绝对地址:
/home/robot/ros2_ws
相对地址:
content/week5.md
./content/week5.md
../README.md
Windows 文件管理器也可以操作 WSL 虚拟机中的目录,但建议在课程前期多练习命令行。

VS Code 获取目录路径
VS Code 可以辅助查看、复制目录路径,也可以直接编辑 WSL 中的文件。对于后续 ROS2 工作区、Markdown 作业和 Python 程序,建议通过 VS Code 连接 WSL 后编辑。


Linux 学习资料
经典参考:
https://linux.vbird.org/
也就是“鸟哥的 Linux 私房菜”。
自学 Linux 的用途包括:
- 服务器运维。
- 网站搭建。
- VPS 使用。
- 远程开发。
- 机器人和嵌入式系统开发。
VPS 是 Virtual Private Server,即虚拟专用服务器。它通过虚拟化技术把一台物理服务器划分为多个独立虚拟服务器,每个 VPS 通常有独立公网 IP、操作系统、内存、磁盘和 CPU 资源。

在程序里感受坐标系
课堂使用的示例仓库:
https://github.com/ai-robot-class/ai-robot-frank
练习重点是通过程序和可视化观察机器人坐标系、关节变化和末端执行器运动。





关节空间
关节空间(Joint Space)是基于机器人每一个驱动电机或关节的状态来描述位姿的。
对于 7 轴 Panda 机器人,可以用一组向量表示:
theta = [theta1, theta2, ..., theta7]
常用单位:
- 弧度 rad
- 角度 deg
物理意义:直接对应电机转动角度。当改变滑块 J0 时,就是在关节空间中移动。
特点:
- 唯一性:给定一组关节角度,机器人形状唯一确定。
- 非直观性:人很难直接想象多个关节角组合后末端在空间中的位置。
坐标空间
坐标空间(Task Space / Cartesian Space)基于外部参考系描述机器人末端执行器的位置和姿态。
通常用:
位置: (x, y, z)
姿态: Roll / Pitch / Yaw 或四元数
物理意义:描述夹爪在三维世界里的具体位置。例如输入:
0.5, 0.2, 0.0
就是在坐标空间中操作。
特点:
- 直观:符合人类对前后、上下、左右的理解。
- 多解:同一个空间点,机器人可能用多种关节组合到达。
关节空间与坐标空间
简单理解:
- 关节空间关注“机器人自己是怎么长的”。
- 坐标空间关注“机器人在世界上是怎么动的”。
这两套语言不同,但又紧密相关。

正向运动学 FK
Forward Kinematics:
关节空间 -> 坐标空间
已知每个关节转了多少度,计算末端夹爪在哪里。
特点:
- 计算相对简单。
- 结果唯一。
- 可以通过三角函数组合或齐次变换矩阵计算。
逆向运动学 IK
Inverse Kinematics:
坐标空间 -> 关节空间
已知目标位置,例如:
[0.5, 0.05, 0.1]
计算各个电机分别要转多少度。
特点:
- 计算困难且复杂。
- 可能无解、唯一解或多解。
- 例如同一个杯子,可以手肘向上抓,也可以手肘向下抓。
PyBullet 中可以调用:
p.calculateInverseKinematics(
pandaId,
11,
[tx, ty, tz],
p.getQuaternionFromEuler([math.pi, 0, 0])
)
控制关节目标位置:
p.setJointMotorControl2(
pandaId,
i,
p.POSITION_CONTROL,
target_val,
force=500
)
轨迹示例:画圆
伪代码:
for theta in range(0, 360, step):
x = center_x + R * cos(theta)
y = center_y + R * sin(theta)
z = center_z
robot.move_lin(x, y, z)
每一个小点都可以转换成 IK 问题:给出目标坐标,求对应的关节角度。