发布作者:
Viiicee
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
分析中传入单航点版本和多航点版本 (generateSetpoints
) 的使用场景,可以帮助我们理解它们的适用范围和最佳使用方式。
waypoint
_position_smoothing.generateSetpoints(
current_position, // 当前位置
target_position, // 目标位置(单点)
target_velocity, // 目标速度
dt, // 时间步长
false, // 不强制零速度
smoothed_setpoints // 输出的平滑轨迹点
);
自动生成三个相同的航点 waypoints[3]
:
Vector3f waypoints[3] = {waypoint, waypoint, waypoint};
在内部,waypoints
数组中的每个点都设置为同一个目标点。
waypoint
,忽略路径中下一个或之前的点。单点导航
用于从当前位置直接到达目标点的简单运动。例如:
target_velocity
,生成平滑轨迹。waypoints
数组_position_smoothing.generateSetpoints(
current_position, // 当前位置
waypoints, // 多个航点数组
target_velocity, // 目标速度
dt, // 时间步长
false, // 不强制零速度
smoothed_setpoints // 输出的平滑轨迹点
);
允许传入三个航点:
const Vector3f(&waypoints)[3]
waypoints[0]
: 上一个航点waypoints[1]
: 当前目标航点waypoints[2]
: 下一个目标航点(未来路径点)
内部算法利用这些信息生成更加平滑的轨迹:
复杂路径规划
适用于需要从当前位置经过多个路径点的场景。例如:
特性 | 单航点版本 | 多航点版本 |
---|---|---|
传入参数 | 当前点和目标点 | 当前点及路径的三个关键点 |
路径复杂性 | 简单路径 | 支持复杂路径 |
平滑性 | 相对较低 | 较高(考虑多个点的平滑过渡) |
适用场景 | 短路径、终点单一任务 | 连续航线、复杂路径或动态环境 |
灵活性 | 较低 | 较高 |
实现复杂度 | 较低 | 较高 |
选择单航点版本
选择多航点版本
—— 评论区 ——