# SITL GImbal Control

**URL:** <https://discuss.px4.io/t/sitl-gimbal-control/10377>\
**Category:** Uncategorized\
**Created:** [April 9, 2019, 1:20pm UTC](https://discuss.px4.io/t/sitl-gimbal-control/10377 "2019-04-09T13:20:34Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![arcematrix](https://discuss.px4.io/user_avatar/discuss.px4.io/arcematrix/32/3953_2.png) [@arcematrix](https://discuss.px4.io/u/arcematrix)\
**Post date:** [April 9, 2019, 1:20pm UTC](https://discuss.px4.io/t/sitl-gimbal-control/10377/1 "2019-04-09T13:20:35Z")

</div>

Hello people,

I am searching for the method for controlling the gimbal inside sitl.  
I addapted gimbal from Typhoon to Solo model, but cannot understand how it is possible to control the gimbal position for following point mode (for example after getting into Offboard mode while drone is doing his mission I want to control the gimbal).

---

<div class="post-metadata">

**Author:** ![JulianOes](https://discuss.px4.io/user_avatar/discuss.px4.io/julianoes/32/30_2.png) [@JulianOes](https://discuss.px4.io/u/JulianOes)\
**Post date:** [April 10, 2019, 9:45am UTC](https://discuss.px4.io/t/sitl-gimbal-control/10377/2 "2019-04-10T09:45:56Z")

</div>

You should be able to move the gimbal using the Dronecode SDK:

> **[Dronecode/DronecodeSDK](https://github.com/Dronecode/DronecodeSDK)**
>
> API and library for PX4 Autopilot using MAVLink written in C++11 - Dronecode/DronecodeSDK

The command to run the integration tests for the gimbal is:

```auto
make && build/default/integration_tests/integration_tests_runner --gtest_filter="SitlTest.Gimbal*"

```

---

<div class="post-metadata">

**Author:** ![arcematrix](https://discuss.px4.io/user_avatar/discuss.px4.io/arcematrix/32/3953_2.png) [@arcematrix](https://discuss.px4.io/u/arcematrix)\
**Post date:** [April 10, 2019, 12:12pm UTC](https://discuss.px4.io/t/sitl-gimbal-control/10377/3 "2019-04-10T12:12:53Z")

</div>

Not autostarting SITL (use AUTOSTART\_SITL=1)  
[02:21:36|Info] DronecodeSDK version: 0.15.0 (dronecode\_sdk\_impl.cpp:25)  
[02:21:36|Error] bind error: Address already in use (udp\_connection.cpp:82)  
…/…/integration\_tests/gimbal.cpp:29: Failure  
Expected equality of these values:  
ret  
Which is: 4-byte object \<03-00 00-00\>  
ConnectionResult::SUCCESS  
Which is: 4-byte object \<00-00 00-00\>  
[FAILED] SitlTest.GimbalMove (4035 ms)  
[RUN] SitlTest.GimbalTakeoffAndMove  
Not autostarting SITL (use AUTOSTART\_SITL=1)  
[02:21:40|Info] DronecodeSDK version: 0.15.0 (dronecode\_sdk\_impl.cpp:25)  
[02:21:40|Error] bind error: Address already in use (udp\_connection.cpp:82)  
…/…/integration\_tests/gimbal.cpp:53: Failure  
Expected equality of these values:  
ret  
Which is: 4-byte object \<03-00 00-00\>  
ConnectionResult::SUCCESS  
Which is: 4-byte object \<00-00 00-00\>  
[FAILED] SitlTest.GimbalTakeoffAndMove (4025 ms)  
[RUN] SitlTest.GimbalROIOffboard  
Not autostarting SITL (use AUTOSTART\_SITL=1)  
[02:21:44|Info] DronecodeSDK version: 0.15.0 (dronecode\_sdk\_impl.cpp:25)  
[02:21:44|Error] bind error: Address already in use (udp\_connection.cpp:82)  
…/…/integration\_tests/gimbal.cpp:92: Failure  
Expected equality of these values:  
ret  
Which is: 4-byte object \<03-00 00-00\>  
ConnectionResult::SUCCESS  
Which is: 4-byte object \<00-00 00-00\>  
[FAILED] SitlTest.GimbalROIOffboard (4023 ms)  
[----------] 3 tests from SitlTest (12083 ms total)

[----------] Global test environment tear-down  
[==========] 3 tests from 1 test case ran. (12083 ms total)  
[PASSED] 0 tests.  
[FAILED] 3 tests, listed below:  
[FAILED] SitlTest.GimbalMove  
[FAILED] SitlTest.GimbalTakeoffAndMove  
[FAILED] SitlTest.GimbalROIOffboard

3 FAILED TESTS

😕 Gonna try to find what causes errors

---

<div class="post-metadata">

**Author:** ![JulianOes](https://discuss.px4.io/user_avatar/discuss.px4.io/julianoes/32/30_2.png) [@JulianOes](https://discuss.px4.io/u/JulianOes)\
**Post date:** [April 10, 2019, 12:19pm UTC](https://discuss.px4.io/t/sitl-gimbal-control/10377/4 "2019-04-10T12:19:57Z")

</div>

> [@arcematrix](#):
>
> [02:21:36|Error] bind error: Address already in use (udp\_connection.cpp:82)

Something is already on the 14540 port. Any chance you have already MAVROS connected?

---

<div class="post-metadata">

**Author:** ![arcematrix](https://discuss.px4.io/user_avatar/discuss.px4.io/arcematrix/32/3953_2.png) [@arcematrix](https://discuss.px4.io/u/arcematrix)\
**Post date:** [April 10, 2019, 12:29pm UTC](https://discuss.px4.io/t/sitl-gimbal-control/10377/5 "2019-04-10T12:29:11Z")

</div>

Yes, I run “roslaunch px4 mavros\_posix\_sitl.launch”, I will look how it will work in other way and will will answer with result, I hope it will solve the problem. Thanks for fast answer 😄

---

<div class="post-metadata">

**Author:** ![arcematrix](https://discuss.px4.io/user_avatar/discuss.px4.io/arcematrix/32/3953_2.png) [@arcematrix](https://discuss.px4.io/u/arcematrix)\
**Post date:** [April 10, 2019, 12:47pm UTC](https://discuss.px4.io/t/sitl-gimbal-control/10377/7 "2019-04-10T12:47:01Z")

</div>

I did it with my solo, I get errors

[02:49:57|Error] Retrying failed (205) (mavlink\_commands.cpp:235)  
…/…/integration\_tests/gimbal.cpp:182: Failure  
Expected equality of these values:  
result  
Which is: 4-byte object \<02-00 00-00\>  
Gimbal::Result::SUCCESS  
Which is: 4-byte object \<00-00 00-00\>

But If I run Typhoon\_h480 everything works great, should I search for mistake in sdf file of my model or it is somewhere else?

---

<div class="post-metadata">

**Author:** ![arcematrix](https://discuss.px4.io/user_avatar/discuss.px4.io/arcematrix/32/3953_2.png) [@arcematrix](https://discuss.px4.io/u/arcematrix)\
**Post date:** [April 10, 2019, 1:01pm UTC](https://discuss.px4.io/t/sitl-gimbal-control/10377/8 "2019-04-10T13:01:12Z")

</div>

Ok I solved it, problem was that after creating copy of gimbal i changed channels for gimbal control. Now it works (they had to be the same as for typhoon channel 6,7,8).  
But for some reasons it is not doing the same staff. Only holds horrizont, not like typhoons one which inside test where following circle trajectories.

---

<div class="post-metadata">

**Author:** ![JulianOes](https://discuss.px4.io/user_avatar/discuss.px4.io/julianoes/32/30_2.png) [@JulianOes](https://discuss.px4.io/u/JulianOes)\
**Post date:** [April 11, 2019, 8:07am UTC](https://discuss.px4.io/t/sitl-gimbal-control/10377/9 "2019-04-11T08:07:03Z")

</div>

Not sure. Can you push a branch so I can have a look at the changes?

---

<div class="post-metadata">

**Author:** ![arcematrix](https://discuss.px4.io/user_avatar/discuss.px4.io/arcematrix/32/3953_2.png) [@arcematrix](https://discuss.px4.io/u/arcematrix)\
**Post date:** [April 11, 2019, 8:21am UTC](https://discuss.px4.io/t/sitl-gimbal-control/10377/10 "2019-04-11T08:21:27Z")

</div>

I found issue, the mixer for typhoon\_h480 (leg mixer) contains gimbal mixer also in the order RPY, but mount.aux.mix has PRY. So I had actually to attach right mixer (created new one) and now it works the same as for typhoon\_h480, makes a few ROI tests.

One more question, I have this error all the time:  
[Err] [Plugin.hh:187] Failed to load plugin libgazebo\_ros\_camera.so: libCameraPlugin.so: cannot open shared object file: No such file or directory

---

<div class="post-metadata">

**Author:** ![JulianOes](https://discuss.px4.io/user_avatar/discuss.px4.io/julianoes/32/30_2.png) [@JulianOes](https://discuss.px4.io/u/JulianOes)\
**Post date:** [April 11, 2019, 8:59am UTC](https://discuss.px4.io/t/sitl-gimbal-control/10377/11 "2019-04-11T08:59:37Z")

</div>

Great, glad you figured it out!

I think that happens if the camera plugin is not built. You would have to dig into the cmake magic and check why it doesn’t get built. I’m suspecting that gstreamer dependencies are not found and therefore the plugin isn’t compiled.
