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_proc 和 isaac_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