Developer

### Camera Stabilization (Tilt) w/ infinite servos (360)

Does anyone know how to configure APM to use infinite servos with camera stabilization? I have the photoshipone 2x gimbal.

#### Replies

• I am also working on a project using continuous servos for gimbal. I need a way to compensate for the gyro drift (for yaw) and thus, make the use gyro drift to determine the velocity of the servo.

Any suggestions on how to achieve these two aims will be helpful.
• I think Adam did the code for the infinite-servos, than I had some changes made that made his code incompatible with mine.

I'm not sure if he already merged his changes on top of mine.

I do not have infinite servos to test width, so I will not add infinite-servo control features.

• Developer

Turns out the solution was quite simple. I just checked new code into master that will allow users to specify if they are using 360 (continuous) servos. Currently the code uses the angular output from the AHRS solution to compute a corresponding PWM "position" for the servo. This works with regular servos where PWM = position, but with 360 servos PWM = speed of rotation. The solution was to use the output of the gyros (rate of rotation) from the AHRS rather than the angle. This way we know how fast the angle is changing instead of the actual angle. This is then multiplied by the proportional gain and transformed into the PWM signal. I did several tests today with my photoshipone gimbal (Spektrum H6040 servos) and it worked perfectly! This should be available in the next release and I will add documentation to the wiki when the code rolls out to everyone.

• If you're using some external rotary encoders, like the AS5040 magnetic encoder, and are using an Arduino or similar board to control a motor driver, maybe use the arduino map function to convert the pulse output from the APM for tilt or pan to a value in degrees at which you want to point the camera, then feed that into the controller for the servo/encoder. There is an excellent PID library for arduino that I've used for this very issue.

http://arduino.cc/en/Reference/map

http://arduino.cc/playground/Code/PIDLibrary

In the setup below I'm using a Baby Orangutan B-328 from Pololu.com, which has an ATmega328 and a dual channel motor driver that can push 1 amp, and is compatible with most arduino code. I cut the gears on the servo to allow continuous rotation, and removed all the electronics, setting it up as a basic gear motor. The magnetic encoder is on a board from Mad Scientist Hut.

• I'm wondering this as well.  I've got THESE installed in a pan tilt gimbal, but i'm not sure how to set them up.  Or if you even can.

Has anyone had luck with this?

• I have a 360 modded servo setup that uses the guts from two servos, one is used for the motor/gears the other is used for the potentiometer. they are geared together so I get 720degrees out of standard servo signals. its not really that hard, but if you mess up like i did it costs you a couple servos.

• Does it have optical encoders? Or how does it get the position data?

• Developer

I think that this is impossible because the code has no way of knowing the current position of the servo.

### Activity

May 13
RT @f1tenth: Say hi to our newest #F1TENTH creation for @ieee_ras_icra next week in Philly. It’s going to be huge! 😎 🔥 @AutowareFdn @PennEn…
May 13
May 8
RT @SmallpixelCar: Noticed my car zigzagged in last run. It turned out to be the grass stuck in the wheel and made the odometry less accura…
May 8
RT @SmallpixelCar: Test my car. RTK GPS worked great. Thanks @emlid for their support. https://t.co/EkQ6qmjmWR
May 8
RT @chr1sa: @kane That's @diydrones circa 2009. Still have a box of those Canon cameras that we used to strap into planes, just like this.…
May 3
RT @chr1sa: Our next @diyrobocars race is going to be outside at a real RC racetrack in Fremont on May 28. Fully autonomous racing, head-to…
Apr 30
RT @f1tenth: Our Spring 2022 F1TENTH course @PennEngineers is coming to an end with a head-to-head race as a big finale. So proud of our st…
Apr 26