Solo Smart Drone Lands Smartly: PART 2

Our precision landing Solo is flying great! :) This test rig has an IR-LOCK sensor (via I2C), an SF/10A rangefinder (via Serial), and is running a customized precision landing firmware based on APM:Copter (solo-rebase). The video above shows two vision-guided landings. The full 10-landing test sequence is shown below. The typical landing accuracy ranges from 0-10cm, even in moderate/gusty wind.


One of the primary challenges of designing a precision landing UAV system is the controls tuning. Every UAV has different flight characteristics, and finding the right PID (+EKF) parameters can be a painstaking process. So it is very helpful to have a popular, consistent hardware platform (e.g., Solo) to develop on. Solo flies nicely out of the box without significant parameter modifications. The precision landing performance is noticeably better than our IRIS+ platform, and our previous Solo test platform (w/out a laser rangefinder). In the 10-landing test sequence, the typical landing accuracy ranged from ~0-10cm. There was only one ‘failure’ (landing #5 out of 10), in which the copter landed far outside of the specified bounds. This will be analyzed and corrected via the controls code.


This test platform is running a customized precision landing firmware, which uses the vision-based localization data to actively manage the landing accuracy. You can read more about the code, and see previous testing here. USER BEWARE: this code is experimental, and it assumes that you have a reliable rangefinder connected. 

Customized Firmware: ArduCopter-v2.px4


Connecting IR-LOCK to Solo: article

E-mail me when people leave their comments –

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

Join diydrones


  • I just 'un-bricked' a Solo, and honestly couldn't explain exactly what I did. I performed at least one factory reset, and I also uploaded a default firmware to the Solo computer.... among other things. 

    John is correct that the solid green lights might indicate that the IR-LOCK Sensor is not detected on the I2C bus. For some reason, this causes an error during driver initialization on Pixhawk2, instead of simply skipping it. 

    This (below) shows a startup with the sensor connected (via NuttX Shell (NSH)).



  • @Savannah

    Which firmware (Pixhawk2) do you have uploaded currently? Also, do you have an IR-LOCK Sensor connected on the I2C bus#1 (w/ magnetometer)?

  • @Thomas

    Thank you for your response! The link you provided is very helpful in showing what I'll be able to do once I get this Solo unbricked, so to speak. I'm still working on fixing the Solo due to its firmware update being interrupted. I've tried connecting my PC directly to the IMX6 via the accessory port, but I didn't have any way to view or manipulate the files on the system (or maybe I'm just not doing it correctly). I also tried connecting directly to the Pixhawk, and I received no input on the PC's side. 

    @John carff

    Also, to clarify I do intend on setting up IR-LOCK when I can get the Solo to boot up again. So far I've been trying to factory reset the Solo using the SSWT method, and from there I plan to load the original firmware onto the machine so that I can start from scratch and try again with the sensors attached.

  • @Savannah

    This is Thomas from IR-LOCK. 

    Here is our preferred setup/hardware/code for precision landing with Solo: link. It is fairly easy for us to setup a Solo/IR-LOCK (now). But when we got started with Solo, debugging was a pain. 

    Also, we will eventually transition to the standard ArduCopter repository (i.e., ArduCopter3.4).

    Wibotic Charging Project
    Wibotic Automated Solo Charging Project June 2016 IR-LOCK, LLC IMPORTANT NOTES: Do NOT install firmware on IR-LOCK sensor. Customized firmwa…
  • Thanks for the quick response! I'm not having much luck with that procedure. The lights stay green and I'm having some trouble connecting the Solo to the controller. The controller screen shows "update completed" as I just factory reset it. I believe this means that it is no longer paired with the Solo, so perhaps that may be causing additional issues. If you don't mind could you explain the other process you went though?

  • First try this, there is another small button in the gimbal bay. Turn off the drone, hold down the button in the gimbal bay while you turn the drone back on... after a series of about 3 tone groups. let go and see if the drone will boot up and connect to the remote. latley this has worked for me. if that doesnt work i can go through the other process. Are you trying to setup the IRLock. If so i found that the reason it bricks is because it doesn't detect the irlock.

  • Hi John,

    Can you please explain how you fixed your Solo? I'm having the exact same problem as you; I loaded the firmware into root@, rebooted, then after waiting 20 minutes or so for it to update I turned it off since the batteries were about to go. When I started it back up the lights stayed a solid green and I could not connect to the drone. I tried factory resetting and it was no use, the green lights are still there. I also did not have any sensors attached to the drone at the time that I attempted to flash the firmware. Any advice?

  • Yes, there could be a error in the code when it tries to search on bus 2. For some reason, the solo-rebase no longer includes any explicit references to bus 2 in its APM init file. I don't have time to work on it right now, but I am pretty sure something needs to change here.

    Contribute to ThomasSFL/solo-reb development by creating an account on GitHub.
  • i will check things out on Monday. Thanks for the help. first thing I will try is using i2C bus 1. Say I didn't have anything hook up, no pixy and no rangefinder, could that cause a problem because it is "looking" for them. The first drone I tried on had the rangefinder on serial2 and the pixy on i2C bus 2. the second drone I tried it on was a fresh drone that has never been modified, I simply uploaded the code and same effect. Thanks for the help.

  • Also, this is really 'in the weeds', but I should note that this test had the IR-LOCK sensor connected via I2C bus 1 (i.e., shared with the magnetometer). The bus 2 sensor startup has not been tested with this rebased version of the code, and maybe it is causing a failure at startup for you. 

    Bus 1 Connection:

    I have added these notes in a release on Github.

This reply was deleted.