- Gimbal Version Summary
- Notes On Gimbal Control Limitations
Note: Due to difficulties sourcing low cost and available gimbals, ModalAI no longer has any officially supported gimbal solutions at this time
As a convenience, versions of the VOXL-m500 are available to test out a gimbals. Links to the off the shelf gimbal source are provided along with any configuration software used. The factory setup used is provided here as well to help others adding gimbals of their own choosing.
The m500 houses the VOXL-Flight board, which only supports 8 PWM outputs, and not the additional AUX port. For this reason, the gimbal control is limited to using the RC AUX passthrough feature of PX4, providing pitch/yaw control of the gimbal only using RC AUX passthrough.
Using QGroundControl, you can enable camera triggers on PWM outputs, like channels 5 and 6. At least in PX4 FW v1.10, there’s an issue that causes these channels to get overwritten and zeroed out in some cases, causing problems with camera trigger. A non-warrantied work around is as follows. You’d need to update the
ROMFS/px4fmu_common/mixers/quad_x.main.mix mixer and rebuild the firmware such that the file contains only this content:
R: 4x 10000 10000 10000 0
MAVSDK works by sending MAVLink commands to the flight computer in order to control the drone. When the drone is being operated by MAVSDK, it is placed in “offboard” mode. During operation in “offboard” mode, the drone is still able to respond to “RC_CHANNELS_OVERRIDE” commands if configured correctly. This allows the user to manually control gimbals using RC pass-though from the RC input to PWM outputs.
Though “RC_CHANNELS_OVERRIDE” commands work at the same time as MAVSDK is operating, they do not work if an RC transmitter is connected. The flight computer will only respond to the first type of input it sees. If the flight controller receives “RC_CHANNELS_OVERRIDE” MAVLink messages first, then all RC transmitter input is ignored until the flight computer is rebooted. If the flight controller sees RC transmitter data before any “RC_CHANNELS_OVERRIDE” MAVLink messages are received then all “RC_CHANNELS_OVERRIDE” messages are ignored.
MAVSDK can operate regardless of which form of input is used (“RC_CHANNELS_OVERRIDE” messages or RC transmitter input) but when in offboard mode, MAVSDK will cause the flight computer to ignore flight control input for thrust, yaw, roll and pitch. All other RC channel inputs will be honored if appropriate (such as an RC channel configured to be an RC pass-through.)
Camera not included
For this gimbal, the recommended camera is something like the
Mobius Pro Mini Action Camera based on form factor alone. We are not qualifying this camera’s performance, but based on size, weight and geometry, this camera has been shown to work well in our testing wih the gimbal referenced below.
-G1 configuration consists of:
It is configured with the following:
- Configuration Software: Version 2.2b from https://www.basecamelectronics.com/downloads/8bit/ - WARNING: DON’T UPGRADE THE CONTROLLER FIRMWARE. THIS APPEARS TO BRICK THE GIMBAL CONTROLLER
- Useful links for tuning: here and here
Gimbal control handled through the PWM output connector on VOXL-Flight
J1007, Flight Core
|Gimbal Pitch/Tilt Control (3.3V)
|Gimbal Yaw Control (3.3V)
For reference, a PX4 parameter for setting up a Spektrum DX8 with this gimbal using channels 8/7 to pitch/yaw and enabling outputs on bootup can be found here
The AUX1/2 passthrough RC channels are configured via
RC_MAP_AUX2. These two channels can be configured to control pitch/yaw control on the gimbal from the RC transmitter. In the param file referenced above these are set to 8 and 7.
The Quadrotor x airframe is supported by the m500, which provides us feed-through of RC AUX1 and AUX2 channels to
PWM_CH6 (pins 6 and 7 above) respectively.
The AUX ouptut signals may be disarmed on bootup and only enabled after arming the vehicle which may not be desirable debugging. Setting the
COM_PREARM_MODE mode to
2 (Always) enables the outputs on bootup (this is shown in the param file referenced above).
The PWM signals
PWM_CH6 (pins 6 and 7 above) have a range of 1000 to 2000 us and are controlled by the
PWM_AUX_MAX6 parameters. These are left as the PX4 default.
Also by default, the output is 1500 us when disarmed, which is configured by
The gimbal receives power via the battery (not through the DC plug available on the power module). Upon attaching the battery, the gimbal will self stabilize in roughly 6 seconds. You can hold the camera in position during this time to stabilize into a starting point of your desire.
Using the DX4 transmitter with the params setup as above:
|rotate to middle to have 0 degrees, rotate left/right to pitch up/down
|middle position no movement, up yaw left, down yaw right
The following additional hardware is required to stream video from the camera through VOXL to QGroundControl.
|USB Cable (Host, 4-pin JST to USB 2.0 Type A Female)
|Camera USB Cable
|USB Cable included with camera (Mini USB)
One of the following VOXL Add-on boards is required.
|VOXL Microhard Modem Add-on
|VOXL USB Expansion Board with Fastboot and Emergency Boot
|VOXL Cellular LTE and USB hub add-on
Before beginning setup, make sure the VOXL is disconnected from both it’s power source and it’s USB to host PC cable
Attach the add-on board to the VOXL and make sure that the boot switch(es) are turned off or to the left
Plug the jst side of the MCBL-00009-1 USB Cable into the add-on board
Plug the camera’s USB cable into both the camera and the USB female side of the MCBL-00009-1 USB cable
Power the VOXL
Switch the Mobius camera into webcam mode by pressing the
Shutterbutton. (Button with picture of camera)
Before starting the camera stream, make sure your vehicle is connected to QGroundControl. Instructions on how to do so over WiFi can be found here: How to Connect QGroundControl to VOXL using WiFi
ffmpeg is not currently installed on your VOXL it can be built and installed by following the instructions here: voxl-ffmpeg
- On VOXL, start the video stream by using the following command:
ffmpeg -i /dev/video2 -f mpegts udp://GCS_IP:4242
GCS_IP with the IP Address of your Ground Control Station that is connected to the VOXL.
FFmpeg has a large variety of flags that can be set in order to change the encoder settings and modify the resolution, framerate, bitrate, etc. of the video stream. The documentation can be found on the FFmpeg Website.
In QGC, press the purple QGC logo in the top left corner in order to access the
Generaltab, scroll down until you find the
Video Sourcedropdown, choose
MPEG-TS (h.264) Video Stream.
UDP Portfield enter the default:
You will now be able to view the video stream under QGC’s
To compliment the user guide above, here’s a high level walkthrough:
- Open the SimpleBGC GUI
- Connect to the gimbal using a micro usb
- On the GUI, under Connection, click the dropdown and select the COM port. Should connect automatically
- On the top there are several tabs to select from: Basic Tab, Advanced Tab, RC Settings Tab, Follow mode Tab, Menu Button Tab, Realtime Data Tab, Firmware upgrade Tab
NOTE: Avoid flashing the newest firmware. Will brick the device. Would suggest avoiding the Firmware Upgrade tab altogether.
- Before altering any values, would recommend saving the values to reference back if needed.
- The Basic Tab, allows to set the PID’s, Motor configuration, Sensor configuration and External FC Gain
- Highly recommend calibrating the ACC. and GYRO
- The PID’s work well in default settings, but for more custom settings, change the values to your liking. Too high values and the gimbal becomes very twitchy and too low values make the gimbal sluggish, in general:
- P - is like the power/resistance to change
- I - the speed to which the gimbal will return to center
- D - stabilizes the bumps
- Power is the amount of power each motor is receiving. Can be set anywhere from 0-250. Recommend starting out anywhere from 80-120 to start. Too high a value and the motors start getting hot, too low and there’s not enough power to combat the wind and motions of the camera.
- Invert should be defaulted after plugging in the gimbal, if not select Auto
- NUM Poles should be 14, unless different motors are used then this should be changed to match the poles of the motor
- External FC Gain is left alone
- Sensor Axis should’ve been recorded correctly after connection to usb. If not, use -Z, -Y for Axis Top and Right respectively
- Advanced Tab, leave AHRS alone, good as is.
- In Timings, Serial port speed is left alone
- PWM Frequency is altered to High(silent)
- RC Settings Tab, under RC Input mapping, Source: PWM
- ROLL: RC_ROLL
- PITCH: RC_PITCH
- YAW: EXT_PITCH
- CMD: no_input
- Command Assignment is left alone
- Adjust settings here for angle of gimbal and speed:
- Use Realtime Data Tab, simultaneously as tuning the PID’s. The goal is to get a smooth slope with the least bit of oscillations with the fastest return to center
The Arducam is the recommended UVC camera for the m500. There are many different Arducams to choose from depending on your requirements. You can find the Arducam Specs and Selection guide by going here.
B0229 is an excellent choice:
- Field of View (FOV): D=105°, H= 90°, V= 65°
- Supports MJPG 15fps@ 3264x2448, 30fps@1080P, and YUY2 30fps@ 640x480 formats.
- Gimbal SimpleBGC PID profile settings can be found here (right-click then Save link as…).
- SimpleBGC PID settings screenshot:
We created a mount that you can print on a 3D printer. Download the STEP file here.
Front and Bottom views of Arducam Gimbal Mount: