Yes this is one photo of 8 taken on my very first successful photo taking APM mission, today.

Photo taken after waypoint achieved using APM cmd.

More details to come later (probably in wiki/manual)

A couple of things about the photo mission I'm not happy with and shall attempt to rectify.

Anybody else taken some photos at waypoints? Love to see them.


Views: 615


Reply to This

Replies to This Discussion

Noticed you took your pic NOT at vertical. If trying to do stitching. you should take vertical pics since they are geo-referenced by the waypoints.

Just a thought.....
Nice. What type of camera? Did you use the IMU relay as a trigger? How did you modify the camera?
How did you set up the software to trigger at the waypoint?

This is the first goal of mine.

MikeInFrance: Yes verticals are good for that but I deliberately angled the camera to get a picture that is more dramatic and people can relate to easier. Angled photos are actually more difficult to take.
I would be fun to loiter around an area or building at different altitudes with that camera angle and put the resulting images in
arashi: Full details will come in wiki - there is a placemark for it already. Quick sysnopsis though: 9 g servo hot glued to Canon A470 (a normal aim and shoot small digital weighing about 100g with own batteries). Some EPO foam hot glued to servo arm to soften any overthrow. About 2 mm wider than arm.
Ch6 used. Commands, so far, are

{CMD_WAYPOINT, 0, 40, -32.017783,115.898563}, // 1
{CMD_SERVO, CH_6, 2000, 0, 0}, // Camera:click
{CMD_DELAY, 0, 0, 5, 0}, // delay millisecs (nominal delay really)
{CMD_SERVO, CH_6, 1500, 0, 0}, // Camera:return servo back to mid position

This mix was required because my setup was time critical - at first I got focus only. Adjusted thro and times a bit and got clicks every second servo move. Then added the dodgy delay to get reliable clicks every time. 'Dodgy' delay is not accurate at low millisecs because the call to the command is controlled by the loop it is in and that is around 1/3 sec but does vary.
If your setup isn't time critical you might be able to use:
{CMD_REPEAT, CH_6_TOGGLE, 2000, 0, 1},

I'm planning to make a subroutine/procedure to simplify the mission code and encapsulate the action.

My testing mission that works on ground (motor disconnected) is like:
{CMD_SERVO, CH_6, 1600, 0, 0}, // Camera: up position - near mid position (may need tweaking)
{CMD_LOITER_TIME, 600, 40, -31.993901,115.993009}, // Loiter for 60 secs (over your current location. True Lat, Long may not be needed.)
{CMD_DELAY, 0, 0, 1900, 0}, // delay 1.9 second
{CMD_SERVO, CH_6, 2000, 0, 0}, // Camera:move servo to click
{CMD_DELAY, 0, 0, 500, 0}, // delay millisecs (code may force round to 2 slow loops cycles)
{CMD_SERVO, CH_6, 1500, 0, 0}, // Camera:move servo back to mid position

The issues still existing are:
a) blurry pictures - May be motor shake or poor focus?
b) plane rapidly banks after waypoint achieved (see tilt in my photo?)
Maybe we can force a zero throttle and stay level for a second after waypoint?
Blur may also be solvable by a manually set shutter speed that is high - 1/200 sec?
Ideas welcome.
sure would - thanks for the link arashi
Excellent! Brett, here's the page to add your event-driven photo tutorial.
I'd say, set your camera to "infinity" focus, you don't need to do "half-shutter" (soft-click) it will just take picture.
And set the camera to manual mode,it will speedup the process, (if you not planning to include sky in your picture)

"infinity" focus (after 3-5 meters on small cameras focus have no effect, it just trying to focus for nothing)
aperture should go around F8, best for wide shots, it removes fogy halo effect.

ISO can be 300-400 or even lower if the sun is out :) don't go over 400 it will get noisy
shutter speed should be high is possible

again if you shooting ground without the sky your light condition is not changing,
so you can get correct exposer on the ground..

i hope it helps :)
Thanks Max, your comments make alot of sense. I shall have to try them.
Shall do Chris, just waiting till I've got a reasonably stable method and fair quality result. Maybe a week or two.
Could code for these sorts of events be placed into a "activity.pde" so we can call them during one of the loops (medium or slow).
All the activities in one place like this:
void waypoint_check(void)
if(wp_index > 3 && wp_index <=10){ //between these waypoints it will do what you want
wp_radius = 10;
if(wp_distance < wp_radius){ //get as close as it can for you
//call a function below

void take_picture(void)
servo_out[CH_6] = -45 //Camera click
delayMicroseconds(5000) //delay
servo_out[CH_6] = 0 // Return servo to mid position

void egg_waypoint(void)
float temp = (float)(current_loc.alt - home.alt) * .01;
egg_dist = sqrt(temp / 4.903) * (float)ground_speed *.01;

if(wp_index == 3){
wp_radius = 10;
if(wp_distance < egg_dist){
servo_out[CH_RUDDER] = -45;
wp_radius = 20;
servo_out[CH_RUDDER] = 45;

Hi Brett

I tested your testing code (ground) several times, but the shutter servo did not response. I used the exact same mission code as you use, with my own coordinates, nothing happen when im inside the loiter coordinates.

Do you have any idea what is wrong with my setting?





Reply to Discussion


© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service