I now have both Storm32 and Alexmos gimbal controllers running with my Orange Cube and Copter 4.1.4.
Each controller support both serial and Mavlink connections.
In order to test and fully utilize these gimbals, I need to know exactly what ArduCopter can command to these gimbals on each protocol.
I expect this is somewhat specialized knowledge, and I need to direct this inquiry to the right persons. Can someone please help me identify whom might best help me with this inquiry?
As an example of the differences - I’ve found that doing the “Point Camera Here” option (lat/long/elevation) on the map on the DATA tab of Mission Planner - will cause the Storm32 gimbal to yaw to that point in space using Mavlink. However the Alexmos gimbal will only pitch to elevation - but won’t yaw to that direction.
In order to conduct a through test, and know the limitations of each protocol, I need to know what commands are supported.
As much as it would make my life easier to let other people do my work for me, I have read the docs I’ve been able to find. Of course, I absolutely may have missed something. Do you have something to suggest?
Just as the docs have lists of parameters and mission commands, I’m hoping to find something similar for gimbal commands.
I have read that Storm32 gimbals can do MavLink2 as well as Serial connections. And while I haven’t seen them itemized, Storm32 is supposed to support some of it’s own vocabulary of MavLink commands to support it’s camera module. Storm32 docs seem to suggest that MavLink is the preferred option for flight controller connectivity. I don’t know if it’s serial protocol supports everything that’s supported by MavLink. I’ve only tested MavLink with my Storm32 gimbal.
It’s interesting that the ArduPilot parameter MNT_TYPE only lists option “4” for Mavlink connected gimbals - and is identified only as “Storm32 Mavlink”. That makes me wonder how exactly the Alexmos Mavlink connectivity was implemented and supported.
The Alexmos docs say that their serial protocol has greater functionality than Mavlink - and that only Mavlink version 1 is supported. There is however a passthrough functionality that utilizes Mavlink version 2. But this functionality doesn’t include gimbal control.
I’ve tested both serial and MavLink connections to my AlexMos gimbal.
The ArduPilot docs for using cameras for surveys and mapping all just presume that the gimbal is installed and functioning. But I haven’t yet found something that helps establish what “installed and functioning” includes and can be checked.
Thank you for the references. I have looked over these references.
The section on MavLink is pretty limited. It talks about the Serial Tunnel function - an notes that AuduPilot doesn’t support it. It talks about Telemetry - which is important - but not really about control command sent to the gimbal controller. The only real info about what Mavlink commands are supported is this:
I have the RC channels working fine - as noted in “2)”.
The other commands such as mount control and targeting are used by such things as the Mission Planner “Point Camera Here” functions. But I don’t know what functions to test to get a comprehensive test of the supported MavLink.
I was able to get the “Point Camera Here” function to partially work - I had a setting wrong as you suggested - setting for Mavlink control of all three axis, and using “absolute” for Yaw.
My problem is that the gimbal doesn’t know the heading of the frame. When I had tried these setting before, the gimbal rotated to some unusual heading because it gimbal’s “north” orientation was way off from the copter’s orientation. I hadn’t dug deep enough into this.
It’s interesting that the Storm32 gimbal didn’t seem to need any parameter setting for it to know the proper heading for the “point camera here” function.
So now - I need to figure out how to get the gimbal to use the copter’s heading orientation. It might have something to do with enabling telemetry.
I’ve also been trying to configure my CubeOrange to work with my Alexmos gimbal through Mavlink but without much luck. So far I’m only getting AHRS: Ok GPS: Ok, RC: Ok but no Control on the gimbal. It does work if you set ArduPilot to send Serial API commands to the Alexmos gimbal but I prefer to run everything through Mavlink. Therefore, I’ve dig into the code and found that the function AP_Mount_SToRM32::find_gimbal() is not finding the Alexmos Gimbal at startup, which then disables the AP_Mount_SToRM32::update() where the gimbal mavlink control is. This is as far as I could get into the problem and fixing it seems to be beyond my knowledge.
@rmackay9 git history shows you did this 7 years ago. Could you help us figure this out?
@Corrado_Steri I followed these steps very carefully but I had no success. What is even more weird is that ArduPilot is detecting my gimbal as component 0 instead of 154 (gimbal).
Also, when I enable dubug mode on my gimbal, this is the heartbeat message that is sending over mavlink: 1.MAV.v1.out.45 #0 (1,154) [00 00 00 00 1a 00 10 03 03 ]
I think there is something wrong with that message. Could you help me confirm this?
I added a simple print function in the code to see if AP_Mount_SToRM32::find_gimbal() is working and I found that it times out without finding the gimbal. So, I decided to read the heartbeat from the gimbal using an oscilloscope and decode the message (see pictures below). It all seems correct in my opinion. However, I’m still confused on why my gimbal can’t be detected by ArduPilot.