Precision Land ArduCopter

Did some test flights this weekend for my precision landing program(A detailed explanation of this project can be found here.). They were short due to the cold conditions and battery life but beneficial. I was able to attempt the landing four times. All attempts went well in that the Copter didn't crash and held its position using vision. Only one attempt succeeded. Two had to be aborted due to low battery and poorly secured landing mat. One missed the target. I think it was because of wind.

Next I plan to implement a more robust controls strategy which should increase accuracy.


E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • The key benefit of solution by is that even if the visual target for landing is lost from the camera view, the system still knows where the copter is. Thus, the system can provide data to guide the copter back to the landing target

  • You can use a precise (+-2cm) Indoor "GPS":

    Here a couple of demos:

  • @Daniel thanks for your reply. Yes, Randy was very helpful and now the altitude control looks perfect, very reactive!

  • @Tiziano sorry for the late response but it looks like you got help from Randy on your cross-post. Good luck! 

  • @Daniel: I am doing something similar, AC 3.3.2, dronekit not updated, is the release of August 2015. As soon as I send velocity commands through set_position_target_local_ned_encode, the horizontal flight is perfect, while the vertical control is a mess. Actually the reference altitude is properly updated (I can see from the data flash log), but the throttle keeps oscillating and the vehicle bumps up and down. Have you ever happened before?

    Here is the function I am using. I tried different update rates, still I have the same issue

    msg = vehicle.message_factory.set_position_target_local_ned_encode(
    0, # time_boot_ms (not used)
    0, 0, # target system, target component
    mavutil.mavlink.MAV_FRAME_LOCAL_NED, # frame
    # 0b0000111111000111, # type_mask (only speeds enabled)
    0x01C7, # type_mask (ignore pos | ignore acc)
    0, 0, 0, # x, y, z positions (not used)
    velocity_x, velocity_y, velocity_z, # x, y, z velocity in m/s
    0, 0, 0, # x, y, z acceleration (not used)
    0, 0) # yaw, yaw_rate (not used)
    # send command to vehicle

    See my comment in this post:

  • Great work Daniel.  Did you use any kind of vibration dampening (or gimbal) to help keep the c920 from producing "jello-like" video or was it able to focus on the concentric circles with the camera just hard mounted to the frame?  

  • Hi, I see your code uploaded on github. It seemed that there is only code on SITL, am I right? 

    I really want to have a look about your true filght code.

    would you show me some code ? 

  • Nice! I'm doing something similar but instead of using a pattern image I'm using infrared leds as waypoints but for now I haven't integrated it into the ArduCopter code.

  • This is awesome - nice work!

  • wow. great.
    Maybe you should test a different ground pattern (circle and cross in the middle). In case you lose the pattern, you more robust calculate in which direction/rotation you've lost it. But keep us updated (maybe on your youtube channel?). Best C.

This reply was deleted.