跳到主要内容

撰写控制器配置文件

1. 准备

若希望使用TeleXperience的通用控制器,控制机器人的关节空间运动,则需要撰写控制器配置文件。

以OpenLoong为例:

首先在OpenLoong路径下找到vr_configs.yml,将其中的wo_controller设置为fasle。

继续在OpenLoong路径下,创建controller_v2.yml文件作为控制器配置文件。

2. 撰写配置文件

控制器配置文件主要包括三部分:

  1. ros节点设置,对应control_ros,用来设置ros节点通信频率rate以及通信话题名称joint_targetjoint_cmdjoint_stateee_targetee_statesol_q
  2. 模型参数设置,对应model,用来设置urdf的加载路径urdf,选择可活动关节free_joints,基坐标系对应link名称base_name,跟踪目标对应link名称ee_name
  3. 控制器参数设置,对应controller,用来设置采样时间dt,跟踪目标各自由度误差优化权重ee_weight,各关节角度误差优化权重j_weight,跟踪目标比例控制增益x_p_gain,各关节比例控制增益j_p_gain,关节速度限制q_dot_limit,跟踪目标工作空间限制x_limit和跟踪目标速度限制x_dot_limit

controller_v2.yml示例如下:

control_ros:
rate: 100
joint_target: "/io_teleop/target_joint_from_mocap"
joint_cmd: "/io_teleop/joint_cmd"
joint_state: "/io_teleop/joint_states"
ee_target: "/io_teleop/target_ee_poses"
ee_state: "/io_teleop/state_ee_poses"
sol_q: "/io_teleop/sol_q"

model:
urdf: azureloong_description/urdf/AzureLoong_sr.urdf
free_joints: [
"J_arm_l_01",
"J_arm_l_02",
"J_arm_l_03",
"J_arm_l_04",
"J_arm_l_05",
"J_arm_l_06",
"J_arm_l_07",
"J_arm_r_01",
"J_arm_r_02",
"J_arm_r_03",
"J_arm_r_04",
"J_arm_r_05",
"J_arm_r_06",
"J_arm_r_07",
]
base_name: ["base_link", "base_link"]
ee_name: ["Link_arm_r_07", "Link_arm_l_07"]
controller:
dt: 0.01
ee_weight: [[5, 5, 5, 1, 1, 1], [5, 5, 5, 1, 1, 1]]
j_weight: [0, 0.1, 0, 0, 0, 0, 0, 0, 0.1, 0, 0, 0, 0, 0]
x_p_gain: [10, 10, 10, 100, 100, 100]
j_p_gain: [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]
q_dot_limit: [180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180]
x_limit: []
x_dot_limit: [[0.2, 0.2, 0.2, 90, 90, 90],[0.2, 0.2, 0.2, 90, 90, 90]]

注意事项:

  1. 文件名controller_v2.yml,文件中各变量名称(eg. control_rosrate ),以及通信话题内容(eg. "/io_teleop/target_joint_from_mocap")无需改动,改动可能造成控制器无法正常运行。
  2. ros节点通信频率rate和控制器采样时间dt对应,互为倒数,按实际通信频率设置。
  3. urdf的加载路径urdfcontroller_v2.yml文件的相对路径,应都放在OpenLoong路径下。
  4. 可活动关节free_joints和跟踪目标ee_name可任意选择urdf文件中已有的关节和连杆,关节和连杆的名称即为urdf文件里对应关节和连杆的名称,无顺序要求。
  5. 基坐标系base_name的选取与跟踪目标ee_name必须一一对应。如示例中所示,基坐标系中第一个 base_link对应跟踪目标的Link_arm_r_07,第二个base_link对应Link_arm_l_07
  6. 控制器变量j_weightj_p_gainq_dot_limit内的数据和free_joints内的关节必须一一对应(eg. j_weight中的两个0.1分别对应J_arm_l_02J_arm_r_02);ee_weightx_dot_limit内的数据和ee_name内的跟踪目标一一对应。
  7. v2.0版本没有用到变量x_p_gainx_limit,参数设置为空即可。
  8. base_nameee_name的设置需与vr_configs.ymlcontroller_indicesbasecmd_ee保持一致,否则会导致机器人不跟踪vr设备的移动,并朝向其他方向移动,可能造成机器人的损坏。

控制器参数设置:

  1. 控制器变量ee_weightj_weight分别表示跟踪目标位姿误差优化权重和动捕信号对应关节角度误差优化权重,权重越高,对应物理量的误差惩罚力度越大,误差越小。其中,ee_weight的第二维数值按顺序分别对应跟踪目标的xyz位置误差和xyz角度误差[errX.p, errY.p, errZ.p, errX.ang, errY.ang, errZ.ang],其他与跟踪目标相关的变量(x_dot_limit)也按该顺序进行设置。
  2. j_p_gain为关节比例控制增益,数值越大系统相应越迅速,置0则关节无响应。
  3. q_dot_limitx_dot_limit分别表示关节速度限制和跟踪目标速度限制。