跳到主要内容

数据查询

get_base_data()​

Python
get_base_data(key: str) -> list[float]

读取基体(躯干)的运动学数据,约 100 Hz 更新。

key 值返回维度说明
'quat_xyzw'4姿态四元数(x, y, z, w),base → world
'quat_wxyz'4姿态四元数(w, x, y, z),base → world
'rpy'3横滚 / 俯仰 / 偏航角(rad)
'omega_W'3角速度,世界坐标系(rad/s)
'omega_B'3角速度,机体坐标系(rad/s)
'acc_W'3线加速度,世界坐标系(m/s²)
'acc_B'3线加速度,机体坐标系(m/s²)
'vel_W'3线速度,世界坐标系(m/s)
'vel_B'3线速度,机体坐标系(m/s)
'pos_W'3位置,世界坐标系(m)
速度与位置存在静止偏置

GR-W 在静止(状态 0/1/3、无人操控)时,vel_B/vel_W 存在约 0.9 m/s 量级的常值偏置,pos_W 随之以约 1 m/s 漂移;omega_B/rpy 正常近零,安全保护状态(9)下偏置消失。因此:

  • 不要用 vel_B 的绝对值判断"机器人是否静止",也不要把 pos_W 当作可信的定位来源;
  • 速度命令是否生效可用 vel_B 相对自身基线的增量判断(例如 0.05 m/s 命令的窗口内增量约 +0.05 m/s),停止与否以现场观察为准。

示例

Python
import os
import time

os.environ.setdefault("FASTDDS_BUILTIN_TRANSPORTS", "UDPv4") # 机器人上运行必须设置

from fourier_aurora_client import AuroraClient

client = AuroraClient.get_instance(domain_id=123, robot_name="grw")
try:
time.sleep(1.0) # 等待状态数据到达
rpy = client.get_base_data("rpy")
print(f"roll={rpy[0]:.3f}, pitch={rpy[1]:.3f}, yaw={rpy[2]:.3f}")
finally:
client.close()

get_true_data()​

Python
get_true_data(key: str) -> list[float]

读取 true_data_pub 中的真值数据。

key 值说明
'vel_B'线速度,机体坐标系(m/s)
'vel_W'线速度,世界坐标系(m/s)
'pos_W'位置,世界坐标系(m)
'contact_fz'各脚接触法向力(N)
'contact_prob'各脚接触概率 [0, 1]
GR-W 当前限制

当前 GR-W 部署中,vel_B、vel_W 和 pos_W 返回零向量,contact_fz 和 contact_prob 返回空数组;这些字段尚不能作为 GR-W 的实时机体或接触数据使用。读取机体位姿和速度请使用 get_base_data()。


get_contact_data()​

Python
get_contact_data(key: str) -> list[float]

读取 contact_data_pub 的接触数据。

key 值说明
'contact_force'各脚接触力(N)
'contact_prob'各脚接触概率 [0, 1]
GR-W 当前限制

GR-W 没有双足接触语义。当前部署中 contact_force 返回 12 个零值,contact_prob 返回 2 个数值;它们不应被解释为脚部接触状态,也不应用于安全或运动决策。

示例

Python
import os
import time

os.environ.setdefault("FASTDDS_BUILTIN_TRANSPORTS", "UDPv4") # 机器人上运行必须设置

from fourier_aurora_client import AuroraClient

client = AuroraClient.get_instance(domain_id=123, robot_name="grw")
try:
time.sleep(1.0) # 等待状态数据到达
force = client.get_contact_data("contact_force")
prob = client.get_contact_data("contact_prob")
print(f"contact force: {force}, prob: {prob}")
finally:
client.close()

get_cartesian_state()​

Python
get_cartesian_state(group_name: str, key: str = 'pose') -> list[float]

读取指定末端执行器的笛卡尔状态。

参数类型说明
group_namestr关节组名称(如 "left_manipulator")
keystr状态类型,见下表
key 值说明
'pose'末端位姿(位置 + 四元数),默认
'twist'末端速度(线速度 + 角速度)
'wrench'末端力/力矩

当前 GR-W 的左右机械臂会发布 pose(7 个元素)和 twist(6 个元素);wrench 当前返回空数组。请在使用前检查返回长度,不要假设力/力矩数据已提供。

示例

Python
import os
import time

os.environ.setdefault("FASTDDS_BUILTIN_TRANSPORTS", "UDPv4") # 机器人上运行必须设置

from fourier_aurora_client import AuroraClient

client = AuroraClient.get_instance(domain_id=123, robot_name="grw")
try:
time.sleep(1.0) # 等待状态数据到达
pose = client.get_cartesian_state("left_manipulator", key="pose")
print(f"left end-effector pose: {pose}")
finally:
client.close()