我的机器人课程作业

AI Robotics 课程作业整理

View project on GitHub

Week 5 作业记录:Linux 目录操作、PyBullet 与机械臂运动学

1. 学习目标

  • 熟悉 Linux 基础目录操作和命令行工作流。
  • 使用 PyBullet 搭建机械臂仿真环境。
  • 理解机械臂的关节空间、笛卡尔空间、正运动学和逆运动学。
  • 控制 Franka Panda 机械臂画圆和画直线。

2. 实验文件

  • robot_sim.py:交互式机械臂控制,包含 IK 与关节控制模式。
  • robot_sim2.py:自动绘制圆形与直线轨迹。

3. Linux 操作记录

常用命令:

pwd
ls
cd week5
python3 robot_sim.py
python3 robot_sim2.py

这些命令用于定位目录、查看文件和运行课程实验代码。

4. 运动学实验设计

4.1 关节空间控制

关节空间控制直接设置每个关节角度,例如 J0J6。这种方式容易理解单个关节的影响,但末端执行器轨迹不一定是直线。

4.2 笛卡尔空间控制与 IK

笛卡尔空间控制直接给定末端执行器目标位置 [x, y, z],再通过逆运动学计算关节角度:

joint_poses = p.calculateInverseKinematics(
    pandaId,
    11,
    [tx, ty, tz],
    p.getQuaternionFromEuler([math.pi, 0, 0])
)

4.3 轨迹绘制

robot_sim2.py 中将圆形轨迹拆成多个采样点,并持续调用 IK 计算每个点对应的关节角度。直线轨迹则通过关节角度插值完成。

5. 实验结果

机械臂画圆和画直线

6. 核心理解

  • 正运动学:已知关节角度,计算末端位置。
  • 逆运动学:已知末端目标位置,反求关节角度。
  • 机械臂轨迹控制需要考虑关节限位、末端姿态和插值平滑性。
  • PyBullet 可以快速验证机器人运动学程序,减少真实硬件调试风险。

7. 问题与解决

  • IK 结果不稳定时,需要加入关节上下限、restPoses 和迭代次数限制。
  • 轨迹不平滑时,可以增加采样点数量或降低每步移动距离。

8. 本周总结

本周从 Linux 操作进入机械臂仿真,完成了关节空间和笛卡尔空间两种控制方式的对比,并通过画圆、画直线理解了机器人运动学。