CMD_CONTROL seems to ignore yaw value
  • Hey guys,

    I'm trying to use the serial API to remotely control a CAME-TV 7800 gimbal via the CMD_CONTROL command in MODE_SPEED. The Values are seemingly transmitted correctly with the corresponding headers and checksums.

    My problem is, that the value used for SPEED_YAW seems to be completely ignored. The motor works fine and can be controlled via analog stick. Commands with SPEED_ROLL and SPEED_PITCH causes movement along those axes as well, only yaw seems to be faulty. Even weirder is the fact that when I only transmit the value for yaw, it is instead the pitch that moves.

    Are there any settings for the firmware I'm missing? The gimbal is set in a profile without yaw following.

    Here are some example commands sent:

    pitch: 0 yaw: 216
    body: 0x1 0x0 0x0 0x0 0x0 0xd8 0x0 0x0 0x0 0x0 0x0 0x0 0x0
    pitch: 0 yaw: 222
    body: 0x1 0x0 0x0 0x0 0x0 0xde 0x0 0x0 0x0 0x0 0x0 0x0 0x0

    If I understand the specification correctly, these bytes can be broken down as follows:
    0x1 - MODE_SPEED
    0x0 - 2 bytes SPEED_ROLL = 0
    0x0 - 2 bytes SPEED_PITCH = 0
    0xd8 - 2 bytes signed, little endian SPEED_YAW = 218

    0x0 - six bytes with zero value, two for each ANGLE on the 3 axes

    Even in this example, the only axis that moves is the pitch instead of the yaw.

    In normal operation, the gimbal behaves without any issues. Does anyone see an error ?

    Thanks :)
  • Nevermind, I found the error :)

    For the future: the correct order of the bytes isn't SPEED_ROLL, SPEED_PITCH and then SPEED_YAW, followed by the 3 angles like I assumed, but instead SPEED_ROLL, ANGLE_ROLL, SPEED_PITCH, ANGLE_PITCH and so on. I simply had them ordered wrong, now it works like it should :)