Question MAVSDK/Gimbal/mavlink/cube orange

Hi all. My setup is a cube orange connected to usb to my linux computer. I have a gremsy t3v3 connected to the cube via telem2/com2. Whenever I run the mavsdk gimbal example something weird happens. The control of the gimbal works perfectly, but the mavlink gimbal component is never discovered (should be at compid 154). Additionally, whenever I try to request the systemid of the obtained system (via system->get_system_id() )I get an empty value.

I cannot heartbeat my gimbal and therefore also not request gimbal information. However, the gimbal plugin of mavsdk does recognzie my gimbal as “gimbal device 0”. Below is the output of mavsdk’s standard gimbal example.

Can someone help me solve this problem to get gimbal information and heartbeat the component?

$ ./build/gimbal serial:///dev/ttyPixhawk:115200
[02:40:58|Info ] MAVSDK version: v1.4.0-71-gbbdb9e96 (mavsdk_impl.cpp:21)
Waiting to discover system…
[02:40:58|Debug] New system ID: 1 Comp ID: 1 (mavsdk_impl.cpp:601)
[02:40:58|Debug] Component Autopilot (1) added. (system_impl.cpp:376)
[02:40:58|Debug] Discovered 1 component(s) (system_impl.cpp:498)
Discovered autopilot
[02:40:58|Debug] Using Gimbal Version 2 as gimbal manager information for gimbal device 0 was discovered (gimbal_impl.cpp:68)
Start controlling gimbal…
Set yaw mode to lock to a specific direction…
Look North…
[02:40:59|Warn ] Received ack for not-existing command: 1001! Ignoring… (mavlink_command_sender.cpp:262)
Look East…
Look South…
Look West…
Set yaw mode to follow…
And center first…
Tilt gimbal down…
Tilt gimbal back up…
Slowly tilt up …
Back to horizontal…
Pan to the right…
Back to the center…
Pan slowly to the left…
Back to the center…
Set ROI (region of interested) location…
Back to the center…
Stop controlling gimbal…
Finished.

Extra info:
I’m using px4 and have configured mav_1 to TELEM2, baudrate of 115200, mav_1 mode = normal, mav_1 rate = 11520 and mav_1 forward = True.

1 Like

see here the program MAVSDK/examples/gimbal/gimbal.cpp at main · mavlink/MAVSDK · GitHub

and here my try to get a heartbeat message:

{
    MavlinkPassthrough::CommandLong command{};
    command.command = 512;
    command.param1 = static_cast<float>(0); //heartbeat id =0 
    // command.target_sysid = 1;//mavlink_passthrough.get_target_sysid();
    // command.target_compid = 154;//mavlink_passthrough.get_target_compid();
    std::cout<<mavlink_passthrough.send_command_long(command)<<"\n"; 

    return (mavlink_passthrough.send_command_long(command) == MavlinkPassthrough::Result::Success);
}

In broadcasting mode (no target), only the cube responds.