dji-sdk / RoboMaster-SDK

DJI RoboMaster Python SDK and Sample Code for RoboMaster EP.
Apache License 2.0
312 stars 141 forks source link

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

Open xcpuma opened 2 years ago

xcpuma commented 2 years ago

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

mxy161610207 commented 2 years ago

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)  
xcpuma commented 1 year ago

谢谢。

mxy161610207 commented 1 year ago

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

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

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