腰部关节

1.waist_front - 腰部前倾

方法: ctrl.waist_front(spd, acc, dec)

参数:

  • spd:速度值,int 类型
  • acc:加速度值,int 类型
  • dec:减速度值,int 类型

返回值:

  • bool:操作结果
    • True:指令发送成功
    • False:指令发送失败

使用示例:

Python
from fd_api import Control

ctrl = Control()
ctrl.init({"node_name": "fd_api_control"})

# 腰部前倾
ctrl.waist_front(100, 50, 50)

2.waist_back - 腰部后倾

方法: ctrl.waist_back(spd, acc, dec)

参数:

  • spd:速度值,int 类型
  • acc:加速度值,int 类型
  • dec:减速度值,int 类型

返回值:

  • bool:操作结果
    • True:指令发送成功
    • False:指令发送失败

使用示例:

Python
from fd_api import Control

ctrl = Control()
ctrl.init({"node_name": "fd_api_control"})

# 腰部后倾
ctrl.waist_back(100, 50, 50)

3.waist_pos - 腰部位置控制

方法: ctrl.waist_pos(spd, acc, dec, pos_deg)

参数:

  • spd:速度值,int 类型
  • acc:加速度值,int 类型
  • dec:减速度值,int 类型
  • pos_deg:目标角度,float 类型,范围 0° ~ 35°

返回值:

  • bool:操作结果
    • True:指令发送成功
    • False:指令发送失败

使用示例:

Python
from fd_api import Control

ctrl = Control()
ctrl.init({"node_name": "fd_api_control"})

# 腰部转到 20° 位置
ctrl.waist_pos(100, 50, 50, 20.0)

4.waist_stop - 腰部停止

方法: ctrl.waist_stop()

参数:

  • 无

返回值:

  • bool:操作结果
    • True:指令发送成功
    • False:指令发送失败

使用示例:

Python
from fd_api import Control

ctrl = Control()
ctrl.init({"node_name": "fd_api_control"})

# 停止腰部运动
ctrl.waist_stop()

5.waist_get_current_pos - 获取腰部当前位置(同步读取)

方法: state.waist_get_current_pos()

参数:

  • 无

返回值:

  • float:当前腰部角度,单位:度 (°),范围约 0° ~ 35°。初始值为 0.0,收到订阅数据后更新为缓存值

使用示例:

Python
from fd_api import State

state = State()
state.init({"node_name": "fd_api_state"})

# 读取当前腰部角度
deg = state.waist_get_current_pos()
print(f"当前腰部角度:{deg:.1f}°")

6.waist_sub_current_pos - 订阅腰部位置(异步回调)

方法: state.waist_sub_current_pos(callback)

参数:

  • callback:回调函数,签名 callback(deg),deg 为 float 类型,单位:度 (°)。回调在线程池中执行。

返回值:

  • SubscriptionId:订阅ID,类型为 int。可用于后续取消订阅;空回调返回 0

使用示例:

Python
from fd_api import State

state = State()
state.init({"node_name": "fd_api_state"})

# 定义回调函数
def on_waist_pos(deg):
    print(f"腰部角度更新:{deg:.1f}°")

# 订阅腰部位置
sub_id = state.waist_sub_current_pos(on_waist_pos)
print(f"订阅成功,订阅ID:{sub_id}")

# 取消订阅
state.unsubscribe(sub_id)
print("已取消腰部位置订阅")

建议:

  • 回调在线程池中执行,注意线程安全
  • 无需接收位置更新时及时取消订阅,避免不必要的回调
  • 可与 waist_get_current_pos 同步读取配合使用

7.waist_encoder_to_deg - 编码器值转角度

方法: waist_encoder_to_deg(enc)

参数:

  • enc:编码器值,int 类型,范围 262144 ~ 310000

返回值:

  • float:对应角度值,单位:度 (°),范围 0° ~ 35°

使用示例:

Python
from fd_api.waist_angle import waist_encoder_to_deg

# 编码器值 280000 转换为角度
deg = waist_encoder_to_deg(280000)
print(f"编码器 280000 对应角度:{deg:.2f}°")

8.waist_deg_to_encoder - 角度转编码器值

方法: waist_deg_to_encoder(deg)

参数:

  • deg:角度值,float 类型,范围 0° ~ 35°

返回值:

  • int:对应编码器值,范围 262144 ~ 310000

使用示例:

Python
from fd_api.waist_angle import waist_deg_to_encoder

# 角度 20° 转换为编码器值
enc = waist_deg_to_encoder(20.0)
print(f"角度 20° 对应编码器值:{enc}")