Docking Server

源代码上 Github.

opennav_docking 中的 Docking Server 实现了用于对接和解除对接机器人的服务器。 这可以是充电站(即码头)或非充电对接位置,例如传送带或托盘的末端。 它使用特定平台的插件 dock 实现,使框架能够推广到具有许多不同运动模型、充电方法、传感器模式、充电类型等的机器人。 它还可以处理许多不同对接位置和对接模型的数据库,以处理异构环境。 此任务服务器设计为由应用程序 BT 或自主应用程序调用,以便在完成任务或电池电量不足时对接 - 而不是在导航到姿势操作本身内(尽管可以从导航操作内部调用 undock!)。

感谢 NVIDIA 赞助此 Docking Server 套件!

参数

controller_frequency:

Type

Default

double

50.0

Description

视觉控制环路的控制频率(Hz)。

initial_perception_timeout:

Type

Default

double

5.0

Description

等待获取码头初步感知的超时时间(秒)。

wait_charge_timeout:

Type

Default

double

5.0

Description

等待对接后是否开始充电的超时时间(秒)。

dock_approach_timeout:

Type

Default

double

30.0

Description

尝试视觉控制接近循环的超时时间(秒)。

undock_linear_tolerance:

Type

Default

double

0.05

Description

在准备姿势下退出脱离控制环的容差(m)。

undock_angular_tolerance:

Type

Default

double

0.05

Description

在准备姿势下脱离环的角公差(rad)。

max_retries:

Type

Default

int

3

Description

尝试重试的最大次数。

base_frame:

Type

Default

string

“base_link”

Description

机器人控制律的基本框架。

fixed_frame:

Type

Default

string

“odom”

Description

固定使用框架,建议使用平滑的里程计框架,而不是地图。

dock_backwards:

Type

Default

bool

false

Description

机器人对接基座时,基座是向前移动还是向后移动。

dock_prestaging_tolerance:

Type

Default

double

0.5

Description

从准备姿势到绕过导航在 X、Y、Theta 方向上的 L2 距离。

dock_plugins:

Type

Default

vector<string>

N/A

Description

一组需要加载的 dock 插件。

dock_database:

Type

Default

string

N/A

Description

此环境使用的 dock 数据库的文件路径。使用“docks”或此参数。

docks:

Type

Default

vector<string>

N/A

Description

而不是 dock_database,参数文件本身中指定的 dock 集。使用 dock_database 或此参数。

navigator_bt_xml:

Type

Default

string

“”

Description

如果非默认,则使用 BT XML 来导航。

controller.k_phi:

Type

Default

double

3.0

Description

角度变化率与目标距离之比。必须 > 0。

controller.k_delta:

Type

Default

double

2.0

Description

值越高,收敛到目标的速度就越快。

controller.beta:

Type

Default

double

0.4

Description

与路径曲率成比例地降低线速度的参数。增加该参数会线性降低速度 (v(t) = v_max / (1 + beta * |curv|^lambda))。

controller.lambda:

Type

Default

double

2.0

Description

与路径曲率成比例降低线速度的参数。增加该参数会以指数方式降低速度 (v(t) = v_max / (1 + beta * |curv|^lambda))。

controller.v_linear_min:

Type

Default

double

0.1

Description

接近码头的最小速度。

controller.v_linear_max:

Type

Default

double

0.24

Description

接近码头的最大速度。

controller.v_angular_max:

Type

Default

double

0.75

Description

接近码头的最大角速度。

controller.slowdown_radius:

Type

Default

double

0.25

Description

到最终目标的半径开始减速。

Note: 需要“dock_plugins”和“docks”或“dock_database”。

SimpleChargingDock 参数

简单充电基座是一个提供的充电基座插件,可以处理许多基座和常用技术。

<dock_name>.staging_x_offset:

Type

Default

double

-0.7

Description

暂存姿势相对于停靠姿势 (m) 向前 (负) 偏移。

<dock_name>.staging_yaw_offset:

Type

Default

double

0.0

Description

相对于停靠姿势的暂存姿势角度(rad)。

<dock_name>.use_battery_status:

Type

Default

bool

true

Description

是否使用电池状态消息或“isDocked()”作为“isCharging()”的参数。

<dock_name>.use_external_detection_pose:

Type

Default

bool

false

Description

是否使用外部检测主题进行对接或者使用数据库的姿势。

<dock_name>.external_detection_timeout:

Type

Default

double

1.0

Description

如果最新的检测更新未达到超时时间(秒),则失败。

<dock_name>.external_detection_translation_x:

Type

Default

double

-0.20

Description

与检测到的对接姿势相关的 X 方向偏移(米)。

<dock_name>.external_detection_translation_y:

Type

Default

double

0.0

Description

与检测到的对接姿势的 Y 方向偏移(m)。

<dock_name>.external_detection_rotation_yaw:

Type

Default

double

0.0

Description

与检测到的对接姿势相对应的偏航偏移量(rad)。

<dock_name>.external_detection_rotation_pitch:

Type

Default

double

1.57

Description

与检测到的姿势的对接姿势的俯仰偏移(rad)。注意:外部检测旋转角度设置为与“image_proc”和“isaac_ros”中的 Apriltags 检测器配合使用。

<dock_name>.external_detection_rotation_roll:

Type

Default

double

-1.57

Description

与检测到的姿势的对接姿势 (rad) 的滚动偏移。注意:外部检测旋转角度设置为与 image_procisaac_ros 中的 Apriltags 检测器配合使用。

<dock_name>.filter_coef:

Type

Default

double

0.1

Description

码头外部检测方法滤波算法系数。

<dock_name>.charging_threshold:

Type

Default

double

0.5

Description

电池状态电流阈值,高于该阈值“isCharging() = true”。

<dock_name>.use_stall_detection:

Type

Default

bool

false

Description

是否对“isDocked()”或位置阈值使用失速检测。

<dock_name>.stall_joint_names:

Type

Default

vector<string>

N/A

Description

要跟踪的关节的“joint_states”主题中的名称。

<dock_name>.stall_velocity_threshold:

Type

Default

double

1.0

Description

低于该关节速度时触发“isDocked() = true”。

<dock_name>.stall_effort_threshold:

Type

Default

double

1.0

Description

关节状态下的当前或运动努力触发“isDocked() = true”。

<dock_name>.docking_threshold:

Type

Default

double

0.05

Description

如果不使用失速检测,则姿势阈值为对接姿势,其中“isDocked() = true”。

Example

docking_server:
  ros__parameters:
    controller_frequency: 50.0
    initial_perception_timeout: 5.0
    wait_charge_timeout: 5.0
    dock_approach_timeout: 30.0
    undock_linear_tolerance: 0.05
    undock_angular_tolerance: 0.1
    max_retries: 3
    base_frame: "base_link"
    fixed_frame: "odom"
    dock_backwards: false
    dock_prestaging_tolerance: 0.5

    # Types of docks
    dock_plugins: ['nova_carter_dock']
    nova_carter_dock:
      plugin: 'opennav_docking::SimpleChargingDock'  # Also 'opennav_docking::SimpleNonChargingDock'
      docking_threshold: 0.05
      staging_x_offset: -0.7
      use_external_detection_pose: true
      use_battery_status: false # true
      use_stall_detection: false

      external_detection_timeout: 1.0
      external_detection_translation_x: -0.18
      external_detection_translation_y: 0.0
      external_detection_rotation_roll: -1.57
      external_detection_rotation_pitch: -1.57
      external_detection_rotation_yaw: 0.0
      filter_coef: 0.1

    # Dock instances
    docks: ['home_dock']
    home_dock:
      type: 'nova_carter_dock'
      frame: map
      pose: [0.0, 0.0, 0.0]
      id: 'c67f50cb-e152-4720-85cc-5eb20bd85ce8'

    controller:
      k_phi: 3.0
      k_delta: 2.0
      v_linear_min: 0.15
      v_linear_max: 0.15