自定义配置需要如下类似基础。
ROS云课-公钥出错-手工导入-一键配置-2025更新-CSDN博客
一键配置
echo "Upgrade Mission Begins."
echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQINBFzvJpYBEADY8l1YvO7iYW5gUESyzsTGnMvVUmlV3XarBaJz9bGRmgPXh7jc
VFrQhE0L/HV7LOfoLI9H2GWYyHBqN5ERBlcA8XxG3ZvX7t9nAZPQT2Xxe3GT3tro
u5oCR+SyHN9xPnUwDuqUSvJ2eqMYb9B/Hph3OmtjG30jSNq9kOF5bBTk1hOTGPH4
K/AY0jzT6OpHfXU6ytlFsI47ZKsnTUhipGsKucQ1CXlyirndZ3V3k70YaooZ55rG
aIoAWlx2H0J7sAHmqS29N9jV9mo135d+d+TdLBXI0PXtiHzE9IPaX+ctdSUrPnp+
TwR99lxglpIG6hLuvOMAaxiqFBB/Jf3XJ8OBakfS6nHrWH2WqQxRbiITl0irkQoz
pwNEF2Bv0+Jvs1UFEdVGz5a8xexQHst/RmKrtHLct3iOCvBNqoAQRbvWvBhPjO/p
V5cYeUljZ5wpHyFkaEViClaVWqa6PIsyLqmyjsruPCWlURLsQoQxABcL8bwxX7UT
hM6CtH6tGlYZ85RIzRifIm2oudzV5l+8oRgFr9yVcwyOFT6JCioqkwldW52P1pk/
/SnuexC6LYqqDuHUs5NnokzzpfS6QaWfTY5P5tz4KHJfsjDIktly3mKVfY0fSPVV
okdGpcUzvz2hq1fqjxB6MlB/1vtk0bImfcsoxBmF7H+4E9ZN1sX/tSb0KQARAQAB
tCZPcGVuIFJvYm90aWNzIDxpbmZvQG9zcmZvdW5kYXRpb24ub3JnPokCVAQTAQgA
PgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMHPbjHmut6IaLFytPQu1vur
F8ZUBQJgsdhRBQkLTMW7AAoJEPQu1vurF8ZUTMwP/3f7EkOPIFjUdRmpNJ2db4iB
RQu5b2SJRG+KIdbvQBzKUBMV6/RUhEDPjhXZI3zDevzBewvAMKkqs2Q1cWo9WV7Z
PyTkvSyey/Tjn+PozcdvzkvrEjDMftIk8E1WzLGq7vnPLZ1q/b6Vq4H373Z+EDWa
DaDwW72CbCBLWAVtqff80CwlI2x8fYHKr3VBUnwcXNHR4+nRABfAWnaU4k+oTshC
Qucsd8vitNfsSXrKuKyz91IRHRPnJjx8UvGU4tRGfrHkw1505EZvgP02vXeRyWBR
fKiL1vGy4tCSRDdZO3ms2J2m08VPv65HsHaWYMnO+rNJmMZj9d9JdL/9GRf5F6U0
quoIFL39BhUEvBynuqlrqistnyOhw8W/IQy/ymNzBMcMz6rcMjMwhkgm/LNXoSD1
1OrJu4ktQwRhwvGVarnB8ihwjsTxZFylaLmFSfaA+OAlOqCLS1OkIVMzjW+Ul6A6
qjiCEUOsnlf4CGlhzNMZOx3low6ixzEqKOcfECpeIj80a2fBDmWkcAAjlHu6VBhA
TUDG9e2xKLzV2Z/DLYsb3+n9QW7KO0yZKfiuUo6AYboAioQKn5jh3iRvjGh2Ujpo
22G+oae3PcCc7G+z12j6xIY709FQuA49dA2YpzMda0/OX4LP56STEveDRrO+CnV6
WE+F5FaIKwb72PL4rLi4
=i0tj
-----END PGP PUBLIC KEY BLOCK-----" >> ~/ros.asc
sudo apt-key add ros.asc
sudo apt update
echo "Upgrade Mission Completed."
echo "Teb Mission Begins."
sudo apt install ros-kinetic-stage-ros ros-kinetic-teb-local-planner ros-kinetic-teb-local-planner-tutorials ros-kinetic-global-planner* -y
echo "Teb Mission Completed."
差动移动机器人
roslaunch teb_local_planner_tutorials robot_diff_drive_in_stage.launch
导航前行
原地转向
车式移动机器人
roslaunch teb_local_planner_tutorials robot_carlike_in_stage.launch
导航前行
原地转向
视频
ROS云课三分钟-差动和车式移动机器人导航中的运动学特征-2025更新
差动移动机器人teb案例介绍
roslaunch teb_local_planner_tutorials robot_diff_drive_in_stage.launch
是 ROS (Robot Operating System) 中用于启动一个示例场景的命令,该场景演示了如何在差速驱动(differential drive)机器人上使用 TEB (Timed Elastic Band) 局部路径规划算法。下面是对这个案例的详细介绍:
一、背景与目的
在机器人导航中,局部路径规划是一个关键环节,它负责根据全局路径和实时感知的环境信息,为机器人生成安全、可行的行驶轨迹。TEB 算法是一种时间最优轨迹生成算法,特别适用于差动驱动或全向移动机器人,能够生成平滑、实时适应环境变化的路径。
本案例旨在通过具体的 ROS 示例,展示如何在差速驱动机器人上配置和使用 TEB 局部路径规划算法,帮助开发者理解和实践机器人导航技术。
二、案例内容
-
环境设置
- 使用 Stage 仿真器模拟机器人的工作环境。Stage 是一个轻量级的 2D 机器人仿真器,常用于机器人算法的测试和验证。
- 配置机器人的差速驱动模型,包括其动力学和运动学参数。
-
TEB 算法配置
- 在 ROS 的参数服务器(
param_server
)中设置 TEB 算法的相关参数,如时间步长、最大速度、避障参数等。这些参数决定了算法的性能和行为。 - 配置代价地图(
costmap
),用于表示环境中的障碍物和可通行区域。TEB 算法依赖于代价地图来规划无碰撞的路径。
- 在 ROS 的参数服务器(
-
启动流程
- 执行
roslaunch teb_local_planner_tutorials robot_diff_drive_in_stage.launch
命令,启动示例场景。 - 该命令会启动多个 ROS 节点,包括 Stage 仿真器、机器人模型、地图服务器、TEB 局部路径规划器以及可视化工具 RViz 等。
- 在 RViz 中,可以实时观察机器人的位姿、全局路径、局部路径以及环境地图等信息。
- 执行
-
交互与测试
- 通过 RViz 或其他工具设置机器人的导航目标点。
- 观察 TEB 算法如何根据全局路径和实时感知的环境信息,为机器人生成平滑、无碰撞的局部路径。
- 可以调整 TEB 算法的参数,观察不同参数设置对路径规划结果的影响。
三、关键技术与概念
-
差速驱动模型
- 差速驱动机器人通过两个独立驱动的轮子实现转向和移动。其运动学模型描述了轮子速度与机器人线速度和角速度之间的关系。
-
TEB 算法
- TEB 算法通过构建一个弹性带(由一系列控制点组成)来表示机器人的预期轨迹。算法通过优化弹性带的形状和位置,以最小化时间成本、避障成本和其他约束条件。
- TEB 算法能够处理复杂的动力学和运动学约束,生成平滑、时间最优的轨迹。
-
代价地图
- 代价地图是一种表示环境中障碍物和可通行区域的数据结构。它通常由静态地图和动态障碍物层组成,用于路径规划和避障。
-
RViz 可视化工具
- RViz 是 ROS 提供的一个强大的 3D 可视化工具,用于显示传感器数据、机器人模型、路径规划结果等信息。在本案例中,RViz 用于实时观察机器人的导航过程。
四、应用场景与意义
本案例适用于机器人导航、自动驾驶等领域的研发和测试。通过模拟差速驱动机器人在复杂环境中的导航过程,开发者可以验证 TEB 算法的性能和可靠性,优化算法参数,提高机器人的自主导航能力。
五、总结
roslaunch teb_local_planner_tutorials robot_diff_drive_in_stage.launch
命令启动了一个演示 TEB 局部路径规划算法在差速驱动机器人上应用的示例场景。通过该案例,开发者可以深入了解 TEB 算法的原理和实现方式,掌握机器人导航技术的关键技术和概念。
车式移动机器人teb案例介绍
roslaunch teb_local_planner_tutorials robot_carlike_in_stage.launch
是 ROS(Robot Operating System)中用于启动一个模拟汽车模型机器人在 Stage 仿真环境中使用 TEB(Timed Elastic Band)局部路径规划算法的示例场景的命令。以下是对这个案例的详细介绍:
一、案例背景与目的
在机器人导航领域,局部路径规划是确保机器人能够在复杂环境中安全、高效移动的关键技术。TEB 算法作为一种时间最优轨迹生成算法,特别适用于处理具有复杂动力学和运动学约束的机器人,如汽车模型机器人。本案例旨在通过具体的 ROS 示例,展示如何在汽车模型机器人上配置和使用 TEB 局部路径规划算法,帮助开发者理解和实践机器人导航技术。
二、案例内容
-
仿真环境设置
- 使用 Stage 仿真器创建一个二维的仿真环境,模拟汽车模型机器人的工作环境。Stage 是一个轻量级的机器人仿真器,常用于机器人算法的测试和验证。
- 在仿真环境中设置障碍物和道路,模拟真实的交通场景。
-
机器人模型配置
- 配置汽车模型机器人的动力学和运动学参数,如最大速度、最大加速度、最小转弯半径等。这些参数对于 TEB 算法的性能和路径规划结果有重要影响。
-
TEB 算法配置
- 在 ROS 的参数服务器中设置 TEB 算法的相关参数,如时间步长、优化迭代次数、避障权重等。这些参数决定了算法的优化目标和行为特性。
- 配置代价地图,用于表示环境中的障碍物和可通行区域。TEB 算法将基于代价地图进行路径规划,确保机器人能够避开障碍物并沿着最优路径行驶。
-
启动流程
- 执行
roslaunch teb_local_planner_tutorials robot_carlike_in_stage.launch
命令,启动示例场景。 - 该命令会启动多个 ROS 节点,包括 Stage 仿真器、机器人模型、地图服务器、TEB 局部路径规划器以及可视化工具 RViz 等。
- 在 RViz 中,可以实时观察汽车模型机器人的位姿、全局路径、局部路径以及环境地图等信息。通过调整视角和缩放比例,可以更加直观地了解机器人的导航过程。
- 执行
-
交互与测试
- 通过 RViz 或其他工具设置汽车模型机器人的导航目标点。
- 观察 TEB 算法如何根据全局路径和实时感知的环境信息,为机器人生成平滑、无碰撞的局部路径。
- 可以调整 TEB 算法的参数,观察不同参数设置对路径规划结果的影响。例如,增加避障权重可以使机器人更加谨慎地避开障碍物;减小时间步长可以提高路径的平滑度等。
三、关键技术与概念
-
汽车模型机器人
- 汽车模型机器人是一种具有复杂动力学和运动学约束的机器人。其运动学模型描述了机器人轮子的转向角度与机器人行驶方向和速度之间的关系。与差速驱动机器人不同,汽车模型机器人通常需要更多的参数来描述其运动特性。
-
TEB 算法
- TEB 算法是一种时间最优轨迹生成算法,特别适用于处理具有复杂动力学和运动学约束的机器人。它通过构建一个弹性带(由一系列控制点组成)来表示机器人的预期轨迹,并通过优化弹性带的形状和位置来最小化时间成本、避障成本和其他约束条件。
- TEB 算法能够处理复杂的动力学和运动学约束,生成平滑、时间最优的轨迹。这使得它在汽车模型机器人等复杂机器人的导航中得到了广泛应用。
-
代价地图
- 代价地图是一种表示环境中障碍物和可通行区域的数据结构。它通常由静态地图和动态障碍物层组成,用于路径规划和避障。在 TEB 算法中,代价地图是路径规划的重要依据之一。
-
RViz 可视化工具
- RViz 是 ROS 提供的一个强大的 3D 可视化工具,用于显示传感器数据、机器人模型、路径规划结果等信息。在本案例中,RViz 用于实时观察汽车模型机器人的导航过程,帮助开发者更好地理解和调试算法。
四、应用场景与意义
本案例适用于汽车模型机器人导航、自动驾驶等领域的研发和测试。通过模拟汽车模型机器人在复杂环境中的导航过程,开发者可以验证 TEB 算法的性能和可靠性,优化算法参数,提高机器人的自主导航能力。这对于推动自动驾驶技术的发展和应用具有重要意义。
五、总结
roslaunch teb_local_planner_tutorials robot_carlike_in_stage.launch
命令启动了一个演示 TEB 局部路径规划算法在汽车模型机器人上应用的示例场景。通过该案例,开发者可以深入了解 TEB 算法的原理和实现方式,掌握机器人导航技术的关键技术和概念。同时,该案例也为自动驾驶等领域的研发和测试提供了有力的支持。
### 案例详解:`robot_diff_drive_in_stage.launch`
该案例演示了如何在 **Stage 仿真环境** 中运行一个差分驱动机器人,并使用 **TEB(Time Elastic Band)局部规划器** 实现动态路径规划与避障。以下是核心组成部分的详细说明:
---
#### **1. 启动的核心组件**
通过 `roslaunch` 命令启动以下模块:
- **Stage 仿真器**
- 加载预定义的地图(如迷宫或室内环境),生成静态障碍物和动态障碍物(可选)。
- 模拟机器人本体、激光雷达(LaserScan)及环境交互。
- **机器人模型 (URDF)**
- 定义差分驱动机器人的物理属性:轮距、轮半径、质量分布等。
- 包含激光雷达的传感器配置,用于实时感知环境。
- **导航栈 (`move_base`)**
- **全局规划器**(如 `navfn`):生成从起点到目标的最优全局路径。
- **局部规划器 (TEB)**:根据全局路径和实时传感器数据,优化局部轨迹,动态避障。
- **代价地图 (`costmap_2d`)**:管理障碍物信息,划分安全区域。
- **RViz 可视化**
- 显示机器人位姿、激光数据、全局/局部路径及代价地图。
---
#### **2. 差分驱动机器人运动学模型**
**模型定义**:
差分驱动机器人通过独立控制左右轮速度实现移动和转向。其运动学关系如下:
- **线速度**:
\[
v = \frac{v_r + v_l}{2}
\]
- **角速度**:
\[
\omega = \frac{v_r - v_l}{d}
\]
其中:
- \(v_r, v_l\) 为右轮和左轮的线速度
- \(d\) 为两轮间距(轮距)
**位姿更新**:
通过积分速度更新机器人位姿 \((x, y, \theta)\):
\[
\begin{cases}
\dot{x} = v \cos\theta \\
\dot{y} = v \sin\theta \\
\dot{\theta} = \omega
\end{cases}
\]
---
#### **3. TEB 局部规划器的关键配置**
在 `teb_local_planner_params.yaml` 中需指定差分驱动的运动约束:
```yaml
# 运动学类型(必选)
holonomic_robot: false # 非全向机器人
max_vel_x: 0.4 # 最大线速度 (m/s)
max_vel_theta: 1.0 # 最大角速度 (rad/s)
acc_lim_x: 0.2 # 线加速度限制 (m/s²)
acc_lim_theta: 0.3 # 角加速度限制 (rad/s²)
# 轨迹优化权重(平衡路径长度、时间、障碍物距离)
weight_kinematics: 1.0
weight_optimaltime: 2.0
weight_obstacle: 50.0
```
---
#### **4. 案例功能与实验场景**
- **动态避障**:激光雷达检测到障碍物后,TEB 实时调整轨迹绕过障碍物,同时保持平滑性。
- **狭窄通道通过**:优化轨迹以适应机器人的物理尺寸(如避免碰撞墙壁)。
- **实时重规划**:当全局路径被阻塞时,触发全局规划器重新计算路径。
---
#### **5. 运行与观察**
1. **启动仿真**:
```bash
roslaunch teb_local_planner_tutorials robot_diff_drive_in_stage.launch
```
2. **RViz 操作**:
- 使用 `2D Nav Goal` 指定目标点,观察局部路径(绿色)和全局路径(蓝色)的动态调整。
- 在 Stage 窗口中可添加动态障碍物,测试实时避障能力。
---
#### **6. 技术优势**
- **时间弹性带优化**:TEB 同时优化路径的几何形状和时间分配,适应动态环境。
- **计算效率**:适合实时应用,尤其在复杂环境中比传统规划器(如DWA)表现更优。
- **物理约束兼容**:严格遵循差分驱动的非完整性约束,避免不切实际的轨迹。
---
通过此案例,开发者可深入理解 TEB 规划器与差分驱动机器人的集成方法,并为实际机器人部署提供仿真验证基础。
### 案例详解:`robot_carlike_in_stage.launch`
该案例演示了在 **Stage 仿真环境** 中运行一个 **类汽车(Car-like)机器人**,并使用 **TEB 局部规划器** 实现动态路径规划与避障。类汽车机器人采用 **阿克曼(Ackermann)转向模型**,其运动学模型与差分驱动机器人存在显著差异,需特别关注转向约束和轨迹优化。以下是核心内容的详细说明:
---
#### **1. 启动的核心组件**
通过 `roslaunch` 命令启动以下模块:
- **Stage 仿真器**
- 加载包含道路或复杂障碍物的地图(如停车场或城市街道场景)。
- 模拟机器人本体、激光雷达(LaserScan)及动态障碍物(如移动车辆)。
- **机器人模型 (URDF)**
- 定义类汽车机器人的物理属性:轴距、前轮转向角限制、驱动轮位置(通常为前轮转向,后轮驱动)。
- 包含激光雷达或深度相机配置,用于感知环境。
- **导航栈 (`move_base`)**
- **全局规划器**(如 `global_planner`):生成全局路径,需考虑阿克曼转向的最小转弯半径。
- **局部规划器 (TEB)**:针对阿克曼模型优化轨迹,满足非完整约束。
- **代价地图 (`costmap_2d`)**:融合传感器数据,标记可行区域。
- **RViz 可视化**
- 显示机器人位姿、传感器数据、全局/局部路径及转向角动态变化。
---
#### **2. 阿克曼(Car-like)运动学模型**
**模型定义**:
类汽车机器人通过控制 **前轮转向角(Steering Angle)** 和后轮驱动速度实现运动,其运动学模型受 **非完整约束**(横向速度为零)限制。
- **关键参数**:
- \( L \):轴距(前后轮中心间距)
- \( \delta \):前轮转向角(受机械限制,通常 \( |\delta| \leq \delta_{\text{max}} \))
- \( v \):后轮驱动线速度
**运动学方程**:
- **瞬时转向半径**:
\[
R = \frac{L}{\tan\delta} \quad (\delta \neq 0)
\]
- **角速度**:
\[
\omega = \frac{v}{R} = \frac{v \tan\delta}{L}
\]
- **位姿更新**:
\[
\begin{cases}
\dot{x} = v \cos\theta \\
\dot{y} = v \sin\theta \\
\dot{\theta} = \omega = \frac{v \tan\delta}{L}
\end{cases}
\]
**约束条件**:
- 非完整约束:\( \dot{y} \cos\theta - \dot{x} \sin\theta = 0 \)(禁止横向滑动)
- 转向角限制:\( |\delta| \leq \delta_{\text{max}} \)(如 \( \pm 30^\circ \))
- 最小转弯半径:\( R_{\text{min}} = \frac{L}{\tan\delta_{\text{max}}} \)
---
#### **3. TEB 局部规划器的关键配置**
在 `teb_local_planner_params.yaml` 中需适配阿克曼模型:
```yaml
# 运动学类型与约束
holonomic_robot: false # 非全向机器人
robot_type: carlike # 指定为类汽车模型
min_turning_radius: 0.5 # 最小转弯半径 (与轴距和最大转向角相关)
max_vel_x: 1.0 # 最大前进速度 (m/s)
max_vel_x_backwards: 0.2 # 最大倒车速度 (m/s)
max_vel_theta: 0.5 # 最大转向角速度 (rad/s)
acc_lim_x: 0.3 # 线加速度限制 (m/s²)
acc_lim_theta: 0.2 # 转向角加速度限制 (rad/s²)
# 轨迹优化权重(考虑转向平滑性)
weight_kinematics: 2.0
weight_kinematics_turning_radius: 10.0 # 惩罚小于最小转弯半径的路径
weight_optimaltime: 1.0
weight_obstacle: 100.0
```
---
#### **4. 案例功能与实验场景**
- **狭窄道路转向**:验证机器人能否在最小转弯半径限制下完成 U 形弯或直角转弯。
- **倒车避障**:当无法前进避障时,TEB 生成包含倒车的轨迹。
- **动态障碍物规避**:在仿真中测试对移动车辆或行人的实时避让能力。
- **泊车场景**:模拟平行泊车或垂直泊车,依赖 TEB 的轨迹优化能力。
---
#### **5. 运行与观察**
1. **启动仿真**:
```bash
roslaunch teb_local_planner_tutorials robot_carlike_in_stage.launch
```
2. **RViz 操作**:
- 使用 `2D Nav Goal` 指定目标点,观察局部路径的平滑性和转向角变化。
- 在 Stage 窗口中添加障碍物,测试机器人在复杂场景中的避障能力。
- 通过 `rostopic echo` 监控转向角指令(如 `/steering_angle`)和速度指令。
---
#### **6. 技术挑战与解决方案**
- **非完整约束**:TEB 通过优化时间弹性带,确保轨迹满足 \( \dot{y} \cos\theta - \dot{x} \sin\theta = 0 \)。
- **倒车轨迹生成**:启用 `enable_homotopy_class_planning`,允许规划器探索包含倒车的路径拓扑。
- **转向角突变**:通过 `max_vel_theta` 和 `acc_lim_theta` 限制转向角变化率,保证机械可行性。
---
#### **7. 与差分驱动机器人的对比**
| **特性** | **差分驱动机器人** | **类汽车机器人** |
|------------------------|----------------------------------|--------------------------------------|
| **转向方式** | 左右轮差速转向 | 前轮主动转向,后轮驱动 |
| **运动自由度** | 2(线速度、角速度) | 2(线速度、转向角) |
| **最小转弯半径** | 0(可原地旋转) | 由轴距和最大转向角决定 |
| **倒车能力** | 无需调整方向直接倒车 | 需调整前轮转向角后倒车 |
| **适用场景** | 狭窄空间、灵活转向 | 结构化道路(如停车场、城市街道) |
---
#### **8. 开发者注意事项**
1. **URDF 模型校准**:确保 URDF 中定义的轴距 \( L \) 和最大转向角与 TEB 参数一致。
2. **传感器定位**:类汽车机器人需高精度定位(如 `amcl`),避免转向误差累积。
3. **仿真参数调优**:在 Stage 中需设置合理的物理引擎参数(如摩擦系数),避免打滑失真。
---
通过此案例,开发者可掌握 **阿克曼转向模型** 与 **TEB 规划器** 的集成方法,为自动驾驶车辆或类汽车机器人的导航算法开发提供仿真验证基础。