dji-sdk/RoboMaster-SDK

robomaster ep sdk ,订阅底盘位置信息,返回结果没有Z轴旋转角度

xcpuma opened this issue · 3 comments

采用python sdk api 方式与ep通讯,底盘执行sub_position时,并没有按照说明文档返回Z轴旋转角度,始终为0.

#39 这里有一个解决方案。

另一个方案是如果你的云台相对底盘不动的话,你可以使用云台的角度。

初始化时,设置底盘主导(CHASSIS_LEAD)的运动模式:

    ep_robot = robot.Robot()
    ep_robot.initialize(conn_type="sta")
    ep_robot.set_robot_mode(mode=robot.CHASSIS_LEAD)

开启云台的角度订阅

    ep_gimbal = ep_robot.gimbal
    ep_gimbal.sub_angle(freq,your_callback_func,*args,**kw)

sub_angle的官方文档
callback 回调函数 会获得4个参数 (pitch_angle, yaw_angle, pitch_ground_angle, yaw_ground_angle)
最后一个参数为上电时刻z轴角度,你可以在第一次回调时记录为init_angle,并在之后计算差值作为当前angle

def your_callback_func(angle_info):
    pitch_angle, yaw_angle, pitch_ground_angle, yaw_ground_angle = angle_info
    print("上电时刻z轴角度",yaw_ground_angle)  

谢谢。

关于sub_position的返回值z,在不久前的提交ff6646e中进行了描述修改。


:z: z轴方向旋转角度,单位 °
改为
:z: z轴方向距离,单位 m

即返回结果并非是角度,而是高度差。
着实是被坑了!