AIGC标识 Modern Robotics

https://modernrobotics.northwestern.edu/nu-gm-book-resource/

Introduction

Introduction to the Lightboard

Chapter 2 Configuration Space

2.1. Degrees of Freedom of a Rigid Body

2.2. Degrees of Freedom of a Robot

2.3.1. Configuration Space Topology

2.3.2. Configuration Space Representation

2.4. Configuration and Velocity Constraints

2.5. Task Space and Workspace

Chapter 3 Rigid-Body Motions

Introduction to Rigid-Body Motions

3.2.1. Rotation Matrices (Part 1 of 2)

3.2.1. Rotation Matrices (Part 2 of 2)

3.2.2. Angular Velocities

3.2.3. Exponential Coordinates of Rotation (Part 1 of 2)

3.2.3. Exponential Coordinates of Rotation (Part 2 of 2)

3.3.1. Homogeneous Transformation Matrices

3.3.2. Twists (Part 1 of 2)

3.3.2. Twists (Part 2 of 2)

3.3.3. Exponential Coordinates of Rigid-Body Motion

3.4. Wrenches

Chapter 4 Forward Kinematics

Chapter 4 Autoplay

4.1.1. Product of Exponentials Formula in the Space Frame

4.1.2. Product of Exponentials Formula in the End-Effector Frame

Forward Kinematics Example

Chapter 5 Velocity Kinematics and Statics

Chapter 5 Autoplay

Velocity Kinematics and Statics

5.1.1. Space Jacobian

5.1.2. Body Jacobian

5.2. Statics of Open Chains

5.3. Singularities

5.4. Manipulability

Chapter 6 Inverse Kinematics

Chapter 6 Autoplay

Inverse Kinematics of Open Chains

6.2. Numerical Inverse Kinematics (Part 1 of 2)

6.2. Numerical Inverse Kinematics (Part 2 of 2)

Chapter 7 Kinematics of Closed Chains

Chapter 7 Autoplay

Kinematics of Closed Chains

Chapter 8 Dynamics of Open Chains

Chapter 8 Autoplay

8.1. Lagrangian Formulation of Dynamics (Part 1 of 2)

8.1. Lagrangian Formulation of Dynamics (Part 2 of 2)

8.1.3. Understanding the Mass Matrix

8.2. Dynamics of a Single Rigid Body (Part 1 of 2)

8.2. Dynamics of a Single Rigid Body (Part 2 of 2)

8.3. Newton-Euler Inverse Dynamics

8.5. Forward Dynamics of Open Chains

8.6. Dynamics in the Task Space

8.7. Constrained Dynamics

8.9. Actuation, Gearing, and Friction

Chapter 9 Trajectory Generation

Chapter 9 Autoplay

9.1 and 9.2. Point-to-Point Trajectories (Part 1 of 2)

9.1 and 9.2. Point-to-Point Trajectories (Part 2 of 2)

9.3. Polynomial Via Point Trajectories

9.4. Time-Optimal Time Scaling (Part 1 of 3)

9.4. Time-Optimal Time Scaling (Part 2 of 3)

9.4. Time-Optimal Time Scaling (Part 3 of 3)

Chapter 10 Motion Planning

Chapter 10 Autoplay

10.1. Overview of Motion Planning

10.2.1. C-Space Obstacles

10.2.3. Graphs and Trees

10.3. Complete Path Planners

10.4. Grid Methods for Motion Planning

10.5. Sampling Methods for Motion Planning (Part 1 of 2)

10.5. Sampling Methods for Motion Planning (Part 2 of 2)

10.6. Virtual Potential Fields

10.7. Nonlinear Optimization

Chapter 11 Robot Control

Chapter 11 Autoplay

11.1. Control System Overview

11.2.1. Error Response

11.2.2. Linear Error Dynamics

11.2.2.1. First-Order Error Dynamics

11.2.2.2. Second-Order Error Dynamics

11.3. Motion Control with Velocity Inputs (Part 1 of 3)

11.3. Motion Control with Velocity Inputs (Part 2 of 3)

11.3. Motion Control with Velocity Inputs (Part 3 of 3)

11.4. Motion Control with Torque or Force Inputs (Part 1 of 3)

11.4. Motion Control with Torque or Force Inputs (Part 2 of 3)

11.4. Motion Control with Torque or Force Inputs (Part 3 of 3)

11.5. Force Control

11.6. Hybrid Motion-Force Control

Chapter 12 Grasping and Manipulation

Chapter 12 Autoplay

Grasping and Manipulation

12.1.1. First-Order Analysis of a Single Contact

12.1.2. Contact Types: Rolling, Sliding, and Breaking

12.1.3. Multiple Contacts

12.1.6. Planar Graphical Methods (Part 1 of 2)

12.1.6. Planar Graphical Methods (Part 2 of 2)

12.1.7. Form Closure

12.2.1. Friction

12.2.2. Planar Graphical Methods

12.2.3. Force Closure

12.2.4. Duality of Force and Motion Freedoms

12.3. Manipulation and the Meter-Stick Trick

12.3. Transport of an Assembly

Chapter 13 Wheeled Mobile Robots

Chapter 13 Autoplay

13.1. Wheeled Mobile Robots

13.2. Omnidirectional Wheeled Mobile Robots (Part 1 of 2)

13.2. Omnidirectional Wheeled Mobile Robots (Part 2 of 2)

13.3.1. Modeling of Nonholonomic Wheeled Mobile Robots

13.3.2. Controllability of Wheeled Mobile Robots (Part 1 of 4)

13.3.2. Controllability of Wheeled Mobile Robots (Part 2 of 4)

13.3.2. Controllability of Wheeled Mobile Robots (Part 3 of 4)

13.3.2. Controllability of Wheeled Mobile Robots (Part 4 of 4)

13.3.3. Motion Planning for Nonholonomic Mobile Robots

13.3.4. Feedback Control for Nonholonomic Mobile Robots

13.4. Odometry

13.5. Mobile Manipulation

A mobile manipulator consists of a mobile base outfitted with one or more robot arms, such as this omnidirectional base with a 5-joint arm. To control the motion of the end-effector, we can control both the wheels and the arm joints. Since the arm motion is typically more precise than the motion of the base, a common way to control a mobile manipulator is to drive the mobile base to some location, park it, and then use the robot arm for high-precision manipulation. In some cases, though, we need to coordinate the simultaneous control of the wheels and the joints. As an example, if we want to control the full 6-dimensional twist of this robot's end-effector, we have to use the wheels and joints together, since the arm has only 5 degrees of freedom.

移动操作机器人由一个移动底盘和一条或多条机械臂组成。比如这里展示的机器人,它使用全向移动底盘,并安装了一条具有5个关节的机械臂。为了控制末端执行器的运动,我们既可以控制车轮,也可以控制机械臂的各个关节。机械臂的运动精度通常高于移动底盘,因此,一种常见的移动操作机器人控制方法是,先让移动底盘移动到某个位置,然后停车,再使用机械臂完成高精度操作。不过,在一些情况下,我们需要同时协调控制车轮和机械臂关节。例如,假如我们希望控制这个机器人末端执行器完整的六维扭量,就必须同时使用车轮和机械臂关节,因为机械臂本身只有5个自由度。

In this final video of Chapter 13, we focus on coordinated control of the mobile base and the robot arm.

在第13章的最后一个视频中,我们重点讨论如何协调控制移动底盘和机器人机械臂。

In this animation, the robot's end-effector tracks a pre-planned trajectory in SE(3). In the animation below, the robot starts with some error in the configuration of the end-effector, but the feedback controller quickly brings it back to the pre-planned trajectory. At the end of the motion, note that the mobile bases are at different configurations, but the purpose of the controller is only to track the planned end-effector trajectory. Let's watch the desired trajectory and the feedback-controlled trajectory one more time. The final end-effector configurations are identical.

在这个动画中,机器人的末端执行器沿着一条事先规划好的 SE(3) 轨迹运动。在下面的动画中,机器人初始时的末端执行器位姿存在一定误差。不过,反馈控制器很快将末端执行器拉回到了预先规划的轨迹上。运动结束时,可以注意到,不同实验中的移动底盘最终处于不同的位姿。控制器的目标只是在于跟踪预定的末端执行器轨迹,并没有规定移动底盘最终必须停在哪里。我们再看一遍期望轨迹和反馈控制之后的实际轨迹。可以看到,最终的末端执行器位姿完全相同。

To derive this controller, we need the Jacobian mapping the wheel and joint speeds to the twist of the end-effector. To derive this Jacobian, let's first define the frames we'll use. We assume a space frame {s} and 3 frames attached to the mobile manipulator: {b} is the reference frame of the mobile base, {zero} is at the base of the robot arm, and {e} is at the end-effector. It's possible to define the {b} and {zero} frames to be the same, but I'm separating them for generality.

为了推导这个控制器,我们需要建立一个雅可比矩阵,用来描述车轮速度和机械臂关节速度如何映射为末端执行器的扭量。在推导这个雅可比矩阵之前,首先定义需要使用的坐标系。我们假设存在一个空间坐标系 {s},同时在移动操作机器人上定义三个坐标系。坐标系 {b} 是移动底盘的参考坐标系。坐标系 {0} 位于机械臂的基座处。坐标系 {e} 位于末端执行器处。坐标系 {b} 和坐标系 {0} 可以定义在相同位置,不过为了保持推导的一般性,这里将它们分开定义。

The end-effector's configuration in the space frame can be written X of q and theta, or \(T_{se}\) of q and theta. q is the configuration of the mobile base and theta is the arm configuration. This transformation is obtained by multiplying \(T_{sb}\) of q, the constant offset \(T_{b0}\), and \(T_{0e}\) of theta, the end-effector frame relative to the {zero} frame.

末端执行器在空间坐标系中的位姿,可以写成 \(X(q, \theta)\),也可以写成 \(T_{se}(q, \theta)\)。其中,\(q\) 表示移动底盘的构型,\(\theta\) 表示机械臂的关节构型。这个变换矩阵可以通过三个变换矩阵相乘得到:

\[T_{se}(q, \theta) = T_{sb}(q) \, T_{b0} \, T_{0e}(\theta) \]

其中,\(T_{sb}(q)\) 表示移动底盘坐标系 {b} 相对于空间坐标系 {s} 的位姿。\(T_{b0}\) 表示底盘坐标系 {b} 到机械臂基座坐标系 {0} 之间的固定变换。\(T_{0e}(\theta)\) 表示末端执行器坐标系 {e} 相对于机械臂基座坐标系 {0} 的位姿。

\(T_{sb}\) can be written as a function of the chassis configuration q equals phi, x, y, and z is the constant height of the frame. \(T_{0e}\) is determined by the forward kinematics of the arm.

\(T_{sb}\) 可以表示为底盘构型 \(q\) 的函数。底盘构型可以写成:

\[q = (\phi, x, y) \]

其中,\(\phi\) 表示底盘的朝向,\(x\)\(y\) 表示底盘在平面中的位置。坐标系的高度 \(z\) 为常数。\(T_{0e}\) 则由机械臂的正运动学决定。

With these definitions, the end-effector twist \(V_e\), expressed in the end-effector frame, is the Jacobian \(J_e\) of theta times the vector of wheel speeds u and joint velocities theta-dot. There are m wheel speeds and n joint velocities, so \(J_e\) is a 6-by-m-plus-n matrix.

根据这些定义,末端执行器扽量 \(V_e\) 使用末端执行器坐标系表示,可以写成:

\[V_e = J_e(\theta) \begin{bmatrix} u \\ \dot{\theta} \end{bmatrix} \]

其中,\(J_e\) 是移动操作机器人的整体雅可比矩阵。\(u\) 表示所有车轮的转速。\(\dot{\theta}\) 表示机械臂所有关节的速度。假设机器人有 \(m\) 个车轮速度输入,以及 \(n\) 个机械臂关节速度输入,那么 \(J_e\) 是一个 \(6 \times (m + n)\) 的矩阵。

矩阵 \(J_e\) 可以分解成两个部分:

\[J_e = \begin{bmatrix} J_{\mathrm{base}} & J_{\mathrm{arm}} \end{bmatrix} \]

其中,\(J_{\mathrm{base}}\) 是一个 \(6 \times m\) 的矩阵,描述车轮速度对末端执行器扽量的影响。\(J_{\mathrm{arm}}\) 是一个 \(6 \times n\) 的矩阵,描述机械臂关节速度对末端执行器扽量的影响。\(J_{\mathrm{arm}}\) 与机械臂的体雅可比矩阵 \(J_b\) 相同。因此,这里唯一需要额外推导的是 \(J_{\mathrm{base}}\)

The \(J_e\) matrix can be decomposed into the 6-by-m matrix \(J_{\mathrm{base}}\) and the 6-by-n matrix \(J_{\mathrm{arm}}\). \(J_{\mathrm{arm}}\) is the same as the body Jacobian \(J_b\), so the only new thing we need to derive is \(J_{\mathrm{base}}\). Note that \(J_e\) only depends on the joint configuration theta, not the chassis configuration q, since the end-effector twist expressed in the end-effector frame is independent of the chassis' position and orientation.

需要注意,\(J_e\) 只依赖机械臂关节构型 \(\theta\),并不依赖移动底盘的构型 \(q\)。原因在于,末端执行器的扽量使用末端执行器自身坐标系表示。在这种表示方法下,它与底盘在全局空间中的位置和朝向无关。

To derive \(J_{\mathrm{base}}\), we write the planar twist of the chassis, expressed in the chassis frame, as \(V_b\) equals F times u, where F is the 3-by-m transformation discussed in earlier videos. By adding rows of zeros above and below, we create the 6-by-m matrix \(F_6\) satisfying \(V_{b6}\) equals \(F_6\) times u, where \(V_{b6}\) is the six-dimensional chassis twist expressed in the chassis frame.

为了推导 \(J_{\mathrm{base}}\),我们首先将底盘的平面扽量写成:\(V_b = F u\)。其中,\(V_b\) 是使用底盘坐标系表示的平面运动速度,\(F\) 是前面课程中讨论过的 \(3 \times m\) 变换矩阵,\(u\) 是车轮速度。通过在 \(F\) 的上方和下方增加若干行零,可以构造一个 \(6 \times m\) 的矩阵 \(F_6\),使得:\(V_{b6} = F_6 u\)。其中,\(V_{b6}\) 是六维形式的底盘扽量,使用底盘坐标系表示。移动底盘只能进行平面运动,因此,它的六维扽量中有一些分量始终为零。

To express this twist in the end-effector frame, we premultiply it by the Adjoint matrix of \(T_{eb}\). We can expand this transform to be \(T_{e0}\) times \(T_{0b}\), and then write \(V_{b6}\) as \(F_6 u\). Then \(J_{\mathrm{base}}\) is just the Adjoint matrix times \(F_6\).

为了将这个扽量从底盘坐标系转换到末端执行器坐标系,需要左乘变换矩阵 \(T_{eb}\) 对应的伴随矩阵:

\[V_e = \mathrm{Ad}_{T_{eb}} V_{b6} \]

我们可以进一步将 \(T_{eb}\) 分解为:

\[T_{eb} = T_{e0} \, T_{0b} \]

再将 \(V_{b6} = F_6 u\) 代入。于是可以得到:

\[J_{\mathrm{base}} = \mathrm{Ad}_{T_{eb}} \, F_6 \]

也就是说,底盘部分的雅可比矩阵,就是从底盘坐标系到末端执行器坐标系的伴随变换矩阵乘以 \(F_6\)

Now that we have the full mobile manipulator Jacobian \(J_e\), we can choose the task-space feedforward plus PI controller from Chapter 11. Remember that \(X_{\mathrm{err}}\) is the twist, expressed in the end-effector frame, that takes the actual end-effector configuration to the desired configuration in unit time.

现在,我们已经得到了完整的移动操作机器人雅可比矩阵 \(J_e\)。接下来,可以使用第11章介绍的任务空间前馈加 PI 反馈控制器。回忆一下,\(X_{\mathrm{err}}\) 是一个使用末端执行器坐标系表达的扽量。它表示,如果希望在单位时间内将当前末端执行器位姿移动到期望位姿,需要怎样的运动。

Once we've calculated the commanded twist V, expressed in the end-effector frame, the wheel and joint velocities are calculated using the pseudoinverse of \(J_e\).

在计算出期望的末端执行器指令扽量 \(V\) 后,可以利用 \(J_e\) 的伪逆求出车轮速度和机械臂关节速度:

\[\begin{bmatrix} u \\ \dot{\theta} \end{bmatrix} = J_e^\dagger V \]

其中,\(J_e^\dagger\) 表示 \(J_e\) 的伪逆。

As an example, consider a planar mobile manipulator with a diff-drive mobile base and a robot arm with a single revolute joint. The desired path for the end-effector is a semicircle, and the end-effector has a large initial error. The path is specified by three variables, and the robot has three controls, one for each wheel and one for the arm joint. So the robot in this example is not redundant for the task of trajectory following, as it was for the example at the beginning of this video.

举一个例子。考虑一个平面移动操作机器人。它具有差速移动底盘,并安装了一条只有一个旋转关节的机械臂。末端执行器的期望运动路径是一条半圆。机器人开始时,末端执行器与期望轨迹之间存在较大的初始误差。这条路径由三个变量描述,而机器人也正好有三个控制输入,分别是左轮速度、右轮速度和机械臂关节速度。因此,对于这个轨迹跟踪任务,这个机器人不存在多余的控制自由度。这与视频开头的机器人有所不同。视频开头的机器人具有4个车轮速度输入和5个机械臂关节速度输入,因此控制输入数量超过末端执行器任务维度,机器人具有冗余自由度。

The task-space feedforward plus PI controller drives the robot along the path shown here. The end-effector error converges to zero after a small overshoot, due to the choice of the integral gain.

任务空间前馈加 PI 控制器使机器人沿着图中所示的路径运动。由于积分增益的选择,末端执行器误差在收敛到零之前出现了轻微的超调。

We used the same control law for the robot with four wheel speeds and five joint speeds at the beginning of this video.

视频开头那个具有4个车轮速度和5个关节速度的机器人,也使用了相同的控制方法。

So that's it for Chapter 13, and the book! Congratulations on making it this far! You should now have a firm foundation for the practice of robotics, or for advanced study in robot motion planning, control, and manipulation. Now go do something great.

到这里,第13章以及整本书的内容就全部结束了。恭喜你坚持学习到这里。现在,你应该已经为机器人学实践,以及进一步学习机器人运动规划、控制和操作,建立了扎实的基础。接下来,去做一些真正出色的事情吧。

末端执行器的运动,可以由移动底盘和机械臂共同产生,因此可以把车轮速度和关节速度统一放进一个整体雅可比矩阵里进行控制。

对于固定机械臂,通常有:

\[V_e = J_{\mathrm{arm}}(\theta)\dot{\theta} \]

加入移动底盘后,变成:

\[V_e = \begin{bmatrix} J_{\mathrm{base}} & J_{\mathrm{arm}} \end{bmatrix} \begin{bmatrix} u \\ \dot{\theta} \end{bmatrix} \]

u是车轮速度,\(\dot{\theta}\)是机械臂关节速度,\(V_e\)是末端执行器希望实现的六维运动速度。

控制器先计算末端执行器应该怎样运动,再通过雅可比矩阵的伪逆,把这个目标分配给车轮和机械臂。

【为什么机械臂只有5个自由度也能控制六维末端运动】

空间中刚体的瞬时运动有6个维度:

三个平移速度,分别沿 x、y、z 方向。

三个旋转速度,分别绕 x、y、z 轴旋转。

一条5自由度机械臂单独无法任意控制完整六维末端扭量,因为它最多只能独立产生5个方向的运动。加入移动底盘之后,底盘又提供了额外自由度。机械臂和底盘共同运动时,整体系统便可能控制完整的六维末端运动。例如,机械臂缺少绕某个方向调整的自由度时,可以通过转动或移动底盘进行补偿。

【为什么最终底盘位置可以不同】

课程中的控制目标只规定了末端执行器轨迹:\(X_d(t)\)

控制器只关心末端执行器是否跟踪这条轨迹,没有规定底盘一定要走哪条路径,也没有规定机械臂关节必须保持哪种姿态。如果机器人拥有的控制自由度多于任务要求的维度,就会出现冗余。

例如:4个车轮速度,加上5个机械臂关节速度,总共有9个控制变量。末端执行器空间运动只有6个维度。

因此,同一个末端执行器运动,可以由很多种底盘和机械臂运动组合实现。两次运行中,底盘最终可能停在不同位置,末端执行器最终位姿仍然完全一致。这也意味着,伪逆通常只会给出其中一种解。后续还可以利用多余自由度实现其他目标,例如:避开关节极限。远离障碍物。保持机械臂处于容易发力的姿态。减少底盘运动。减少能量消耗。提高可操作度。为后续任务保留更好的身体构型。这就是移动操作研究中所谓的冗余解析零空间优化

【为什么雅可比矩阵只依赖机械臂构型】

文中说整体雅可比矩阵 \(J_e\) 只依赖机械臂关节构型 \(\theta\),不依赖底盘的全局位置 \(q\)

这和扭量采用哪个坐标系表达有关。

这里所有速度都使用末端执行器坐标系 {e}表达。假设整个机器人在房间中同时平移或旋转,只要机械臂相对底盘的构型没有改变,车轮和关节对末端执行器局部速度的映射关系也不会改变。

底盘在地图中的绝对坐标发生变化,并不会改变机器人自身各部分之间的相对几何关系。

因此:\(J_e = J_e(\theta)\)它仍然会随机械臂姿态变化。机械臂伸直和弯曲时,车轮运动对末端执行器产生的效果显然不同。

【这和现在的大模型移动操作有什么关系】

这段内容属于经典模型驱动控制。它假设系统已经知道:

期望末端轨迹是什么。

机器人的准确运动学模型是什么。

车轮与底盘速度之间如何映射。

当前关节角和末端位姿是什么。

现代 VLA 或具身大模型通常负责生成高层目标、子目标或期望动作,例如:

把末端执行器移动到杯子旁边。

沿某条轨迹拉开抽屉。

抓住门把手并同时向后移动底盘。

经典雅可比控制器则可以负责把这些期望末端运动,转化成可靠的车轮和关节速度。

所以,大模型时代依然需要这套知识。很多现实系统采用的结构是:

\[\text{视觉语言模型} \rightarrow \text{任务或轨迹目标} \rightarrow \text{雅可比与全身控制器} \rightarrow \text{车轮和关节指令} \]

大模型擅长判断该做什么,经典控制擅长保证身体准确执行。

移动操作未来的重要问题之一,就是怎样把这两个层级稳定地连接起来。

Coursera有学习证书和测验题

https://www.coursera.org/learn/modernrobotics-course1
https://www.coursera.org/specializations/modernrobotics
https://www.coursera.org/learn/modernrobotics-course2
https://www.coursera.org/learn/modernrobotics-course3
https://www.coursera.org/learn/modernrobotics-course4
https://www.coursera.org/learn/modernrobotics-course5
https://www.coursera.org/learn/modernrobotics-course6

posted @ 2026-05-27 20:18  asandstar  阅读(36)  评论(0)    收藏  举报