跳到主要内容

撰写动捕映射配置文件

1. 准备

若希望使用TeleXperience的动捕映射功能,则需要撰写动捕映射配置文件。

以OpenLoong为例:

首先在OpenLoong路径下找到vr_configs.yml,将其中的wo_controller设置为fasle以启动设备内置的控制器。

OpenLoong路径下,创建mocap_to_robot_command_v2.yml文件作为动捕映射配置文件。

2. 撰写配置文件

动捕映射配置文件包括ros节点设置和映射参数设置:

  1. ros节点设置,包括设置ros节点通信频率rate以及通信话题名称mocap_topicjoint_target_topicjoint_state_topic
  2. 映射参数设置,对应map,写入动捕部位对应机器人关节的信息。

mocap_to_robot_command_v2.yml示例如下:

pub_joint: True
rate: 10
mocap_topic: "/mocap/sensor_data"
joint_target_topic: "/io_teleop/target_joint_from_mocap"
joint_state_topic: "/io_teleop/joint_states"

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",
]
map:
l_arm: [
["X", "J_arm_l_01", -1],
["Y", "J_arm_l_02", 1],
["Z", "J_arm_l_03", -1],
]
l_forearm: [
["X", "J_arm_l_04", 1],
["Y", "", 0],
["Z", "", 0],
]
l_hand: [
["Z", "J_arm_l_05", -1],
["Y", "J_arm_l_06", -1],
["X", "J_arm_l_07", 1],
]
r_arm: [
["X", "J_arm_r_01", 1],
["Y", "J_arm_r_02", -1],
["Z", "J_arm_r_03", -1],
]
r_forearm: [
["X", "J_arm_r_04", 1],
["Y", "", 0],
["Z", "", 0],
]
r_hand: [
["Z", "J_arm_r_05", -1],
["Y", "J_arm_r_06", 1],
["X", "J_arm_r_07", 1],
]

注意事项:

  1. 文件名mocap_to_robot_command_v2.yml,文件中各变量名称(eg. pub_jointrate ),以及通信话题内容(eg. "/mocap/sensor_data")无需改动,改动可能造成控制器无法正常运行。
  2. ros节点通信频率rate按实际通信频率设置。
  3. pub_joint确定是否开启动捕映射,True为开启,False关闭。
  4. 映射参数map设置,map是一个字典,每个元素的key是动捕部位的名称(eg. l_arm, l_forearm...),更多部位名称可在动捕设备各部位名称找到,value为将动捕部位映射到机器人关节的相关参数,参数包括欧拉角顺序,机器人关节名称,以及关节旋转方向。
  5. 欧拉角设置:按机器人双臂自然下垂,手掌朝向大腿时的状态设置,各动捕部位坐标系y轴朝前,z轴朝上,如下图所示,对应机器人控制相关部位的关节。以左大臂l_arm为例,x轴对应关节J_arm_l_01,决定大臂前面抬起高度,y轴对应关节J_arm_l_02,决定大臂侧面抬起高度,z轴对应关节J_arm_l_03,对应大臂轴向转动。欧拉角顺序依据机器人结构确定,远端关节在前,近端关节在后。旋转方向由电机旋转方向与图中坐标轴方向是否一致确定。
  6. 文件中注释掉的参数(eg. base_name,ee_name...)在v2.0版本中未使用,撰写时无需设置。

mocap_euler_set

动捕设备各部位名称:

l_arm
l_forearm
l_hand
r_arm
r_forearm
r_hand
head
dorsal
...