跳转到内容

导航

导航模块为 3we 平台提供高级运动原语。命令在仿真和硬件上的行为完全一致,规划器自动处理避障、路径平滑和麦克纳姆轮运动学。

在世界坐标系中导航到目标位姿。规划器使用最新的 LiDAR 数据计算无碰撞路径并执行。

await robot.move_to(x=2.0, y=1.5, theta=0.0)

参数:

参数类型默认值描述
xfloat必需目标 X 位置,单位为米。
yfloat必需目标 Y 位置,单位为米。
thetafloatNone目标朝向,单位为弧度。如果为 None,则最终朝向不受约束。
timeoutfloat30.0尝试到达目标的最大秒数。
tolerancefloat0.05位置容差,单位为米。

返回值: MoveResult,包含 successfinal_posedurationdistance_traveled 字段。

相对于当前朝向直线前进。

await robot.move_forward(0.5) # move 50 cm forward

原地旋转给定角度。

import math
await robot.rotate(math.pi / 2) # turn 90 degrees counter-clockwise

执行一系列路径点,中间不停顿。

path = [(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)]
result = await robot.follow_path(path)

参数:

参数类型默认值描述
waypointslist[tuple]必需(x, y)(x, y, theta) 元组列表。
speedfloat0.3沿路径的目标速度(m/s)。
lookaheadfloat0.2纯追踪前瞻距离(米)。

使用基于前沿的策略自主探索环境。适用于地图构建。

await robot.explore(duration=120.0) # explore for 2 minutes
occupancy_grid = robot.get_map()

参数:

参数类型默认值描述
durationfloat60.0最大探索时间,单位为秒。
strategystr"frontier"探索算法:"frontier""random""coverage"

用于直接速度控制(如遥操作或自定义控制器):

# Holonomic velocity: vx (forward), vy (strafe), omega (rotation)
robot.set_velocity(vx=0.2, vy=0.0, omega=0.1)

调用 robot.stop() 可立即停止所有运动。

所有高级命令默认启用避障功能。通过以下方式配置:

robot.navigation.set_avoidance(
enabled=True,
safety_margin=0.15, # meters from obstacle
reactive=True # enable reactive dodge maneuvers
)

在探索或导航过程中,可以访问构建的地图:

grid = robot.get_map()
# OccupancyGrid with .data (numpy array), .resolution, .origin