SERVO_OUTPUT_RAW for Rover on Pixhawk

Hi. I have made a boat only version of the old Tower app. The audience targeted is carp anglers using boats to map waters and to drop hook and bait during fishing. Obviously, any boat is supported. The app is not to be used for other frames than rover though (www.carppilot.org).

A good solution for use of servos in the boat is part of this project. And this week I implemented “realtime” feedback from the autopilot to reveal the current state of each servo (action button gets “selected”). Data is retrieved using the SERVO_OUTPUT_RAW mavlink 1 message. And it works great for channels 1-8. But no data from the rover is reported for channels 9-16.

Part of the project is a slightly customized version of Dronekit (now built in). I still have not tried to lift the existing mavlink1 implementation. But reading the mavlink specification I did not think I needed to for this specific purpose. I implemented a class according to the specification, including the “port” attribute. And reading the spec, then a pixhawk implementation of ardupilot:
Servo output port (set of 8 outputs = 1 port). Flight stacks running on Pixhawk should use: 0 = MAIN, 1 = AUX.”
Problem is that the messages I receive all have port = 0, so I only get the PWM outputs for the first 8 channels. Obviously I may have made a mistake building the event, but code at least seems correct. And it works flawlessly for the first 8 channels. Most of my testing is obviously done with SITL.

So the question are:

  1. Does Ardurover follow this specification? I assumed that I would get two messages (one for port = 0, a second for port = 1). I may have misinterpreted the specs of course…
  2. If so - Is it depending on a setting?
  3. Or do I need to upgrade the mavlink library to version 2 where the SERVO_OUTPUT_RAW message is extended with additional attributes for servo channels 9-16?
2 Likes