撰写动捕映射配置文件
1. 准备
若希望使用TeleXperience的动捕映射功能,则需要撰写动捕映射配置文件。
以OpenLoong为例:
首先在OpenLoong
路径下找到vr_configs.yml
,将其中的wo_controller
设置为fasle以启动设备内置的控制器。
在OpenLoong
路径下,创建mocap_to_robot_command_v2.yml
文件作为动捕映射配置文件。
2. 撰写配置文件
动捕映射配置文件包括ros节点设置和映射参数设置:
- ros节点设置,包括设置ros节点通信频率
rate
以及通信话题名称mocap_topic
,joint_target_topic
,joint_state_topic
。 - 映射参数设置,对应
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],
]
注意事项:
- 文件名
mocap_to_robot_command_v2.yml
,文件中各变量名称(eg.pub_joint
,rate
),以及通信话题内容(eg."/mocap/sensor_data"
)无需改动,改动可能造成控制器无法正常运行。 - ros节点通信频率
rate
按实际通信频率设置。 pub_joint
确定是否开启动捕映射,True为开启,False关闭。- 映射参数
map
设置,map
是一个字典,每个元素的key是动捕部位的名称(eg.l_arm
,l_forearm
...),更多部位名称可在动捕设备各部位名称找到,value为将动捕部位映射到机器人关节的相关参数,参数包括欧拉角顺序,机器人关节名称,以及关节旋转方向。 - 欧拉角设置:按机器人双臂自然下垂,手掌朝向大腿时的状态设置,各动 捕部位坐标系y轴朝前,z轴朝上,如下图所示,对应机器人控制相关部位的关节。以左大臂
l_arm
为例,x轴对应关节J_arm_l_01
,决定大臂前面抬起高度,y轴对应关节J_arm_l_02
,决定大臂侧面抬起高度,z轴对应关节J_arm_l_03
,对应大臂轴向转动。欧拉角顺序依据机器人结构确定,远端关节在前,近端关节在后。旋转方向由电机旋转方向与图中坐标轴方向是否一致确定。 - 文件中注释掉的参数(eg.
base_name
,ee_name
...)在v2.0版本中未使用,撰写时无需设置。
动捕设备各部位名称:
l_arm
l_forearm
l_hand
r_arm
r_forearm
r_hand
head
dorsal
...