Has anyone successfully compiled 3DR's Ardupilot-Solo fork?


I’m using Windows and Eclipse and I’m hoping I can get an answer, and maybe a shove in the right direction.

I can compile the diydrones/ardupilot Master with no errors, but not the 3DRobotics Solo fork

I tried searching, but I can’t locate a thread that tells me what to change in my Windows Eclipse setting to get the 3DR fork to work.

If/When I get this to work, I’ll post a thread with Step-by-Step “Starting from scratch” instructions for those that are interested.
(I did this already on how to compile the diydrones/ardupilot Master)

Thanks for any/all suggestions and help!!!

I think you would be better off starting with Linux. (Ubuntu)

OK, if that’s the only way, I’ll do it!

Do the Wiki’s work “As-Is” for Linux?

I see:
dev.ardupilot.com/wiki/building- … with-make/
dev.ardupilot.com/wiki/building- … e-onlinux/

I’m thinking a Solo would be closest to a PX4 so I’ll try following that Wiki
VM Virtualbox and Ubuntu 12.04 should work…

I haven’t compiled it. But I just found even compiling APM is much easier on Linux.

I would go for 14.04 if you want LTS, but honestly 15.04 would work just fine. That’s what I use. And it has most up-to-date features while developing, like gitg v3

Thanks for the hints!

I’d really like to get you to try to compile the 3DR-Solo fork, to know if it’s just me or if everyone has issues compiling it.
git clone github.com/3drobotics/ardupilot-solo.git

So far I have found no one that admits to being able to compile their fork :frowning:

Below is using the normal diydrones/ardupiloit Master, not the 3DR fork! [/size]
As expected, if I try and follow the Wiki for Ubuntu using my 12.04, it crashes and burns.

Something is wrong with the Step Run the install-prereqs-ubuntu.sh script:
and it stops with errors about not being able to locate pip2, among other things.

So… I kept plugging away at it and fixing what the compiler complained about every time it stopped.

Here’s what I found out:
If you follow the steps in the Wiki including the errors with Run the install-prereqs-ubuntu.sh script: , then:

Install pip2:
pip install hg.python.org/distutils2/archive/python3.tar.bz2

Install arm-none-eabi-gcc:
sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
sudo apt-get update
sudo apt-get install gcc-arm-none-eabi

Install Python Packages:
sudo apt-get install python-empy
sudo pip install catkin_pkg

Then go back to the Wiki and run the steps:
Reload the path (log-out and log-in to make permanent):
. ~/.profile

Then run:
cd ardupilot/ArduCopter
make px4-v2


It works!!!

It is obvious now that nothing works with the 3DR Solo’s version of ardupilot code.

Not Linux, Not VM Ubunto, Not Eclipse, Not Atmel Studio, Not Visual Studio, Not Arduino… not anything. :frowning:
Isn’t this some sort of violation of the GPL License they claim to support?

According to the 3DRobotics web site, everyone should have been able to compile their fork with absolutely zero changes to the compiler. http://dev.ardupilot.com/wiki/solo/ says:
[i]“Compile instructions are the same as for master ardupilot for a Pixhawk with the exception that the modified repos should be used.”[/i]
…but this is untrue.

No one has been able to compile using the standard diydrones/ardupilot configuration.
Only those working at 3DR know how it’s done… and their not talking!

I hate to sound like a conspiracy theorist, but something smells mighty funny here…

From reading here and on some of the other forums it seems that 3DRobitics is purposely making changes to the settings so only they can successfully compile their fork of diydrones/ardupilot

They are using the code that was developed by diydrones for a “For-Profit” product, and modifying the code so no one else can use it. This is wrong on so many levels.

Well, I’m not going to give up just yet.
If I can hack at this long enough and come up with a way to get it post, I’ll make it public.

A little progress: I’ve narrowed it down to the exact spot it crashes.
\ardupilot-solo\mk\PX4\px4_targets.mk is the error:

On line #95 it says:
$(PX4_MAKE) px4fmu-v2_APM

On my system, this is what it’s passing:

@ GIT_SUBMODULES_ARE_EVIL=1 make -C /home/solo_pilot/ardupilot-solo -f /home/solo_pilot/PX4Firmware/Makefile EXTRADEFINES=-I/home/solo_pilot/ardupilot-solo/ArduCopter -I/home/solo_pilot/ardupilot-solo/libraries/AC_AttitudeControl -I/home/solo_pilot/ardupilot-solo/libraries/AC_Fence -I/home/solo_pilot/ardupilot-solo/libraries/AC_PID -I/home/solo_pilot/ardupilot-solo/libraries/AC_Sprayer -I/home/solo_pilot/ardupilot-solo/libraries/AC_WPNav -I/home/solo_pilot/ardupilot-solo/libraries/AP_ADC -I/home/solo_pilot/ardupilot-solo/libraries/AP_ADC_AnalogSource -I/home/solo_pilot/ardupilot-solo/libraries/AP_AHRS -I/home/solo_pilot/ardupilot-solo/libraries/AP_AccelCal -I/home/solo_pilot/ardupilot-solo/libraries/AP_Airspeed -I/home/solo_pilot/ardupilot-solo/libraries/AP_Baro -I/home/solo_pilot/ardupilot-solo/libraries/AP_BattMonitor -I/home/solo_pilot/ardupilot-solo/libraries/AP_BoardConfig -I/home/solo_pilot/ardupilot-solo/libraries/AP_Buffer -I/home/solo_pilot/ardupilot-solo/libraries/AP_Camera -I/home/solo_pilot/ardupilot-solo/libraries/AP_Common -I/home/solo_pilot/ardupilot-solo/libraries/AP_Compass -I/home/solo_pilot/ardupilot-solo/libraries/AP_Curve -I/home/solo_pilot/ardupilot-solo/libraries/AP_Declination -I/home/solo_pilot/ardupilot-solo/libraries/AP_EPM -I/home/solo_pilot/ardupilot-solo/libraries/AP_Frsky_Telem -I/home/solo_pilot/ardupilot-solo/libraries/AP_GPS -I/home/solo_pilot/ardupilot-solo/libraries/AP_HAL -I/home/solo_pilot/ardupilot-solo/libraries/AP_HAL_AVR -I/home/solo_pilot/ardupilot-solo/libraries/AP_HAL_AVR_SITL -I/home/solo_pilot/ardupilot-solo/libraries/AP_HAL_Empty -I/home/solo_pilot/ardupilot-solo/libraries/AP_HAL_FLYMAPLE -I/home/solo_pilot/ardupilot-solo/libraries/AP_HAL_Linux -I/home/solo_pilot/ardupilot-solo/libraries/AP_HAL_PX4 -I/home/solo_pilot/ardupilot-solo/libraries/AP_HAL_VRBRAIN -I/home/solo_pilot/ardupilot-solo/libraries/AP_InertialNav -I/home/solo_pilot/ardupilot-solo/libraries/AP_InertialSensor -I/home/solo_pilot/ardupilot-solo/libraries/AP_LandingGear -I/home/solo_pilot/ardupilot-solo/libraries/AP_Math -I/home/solo_pilot/ardupilot-solo/libraries/AP_Menu -I/home/solo_pilot/ardupilot-solo/libraries/AP_Mission -I/home/solo_pilot/ardupilot-solo/libraries/AP_Motors -I/home/solo_pilot/ardupilot-solo/libraries/AP_Mount -I/home/solo_pilot/ardupilot-solo/libraries/AP_NavEKF -I/home/solo_pilot/ardupilot-solo/libraries/AP_Notify -I/home/solo_pilot/ardupilot-solo/libraries/AP_OpticalFlow -I/home/solo_pilot/ardupilot-solo/libraries/AP_Parachute -I/home/solo_pilot/ardupilot-solo/libraries/AP_Param -I/home/solo_pilot/ardupilot-solo/libraries/AP_Progmem -I/home/solo_pilot/ardupilot-solo/libraries/AP_RCMapper -I/home/solo_pilot/ardupilot-solo/libraries/AP_Rally -I/home/solo_pilot/ardupilot-solo/libraries/AP_RangeFinder -I/home/solo_pilot/ardupilot-solo/libraries/AP_Relay -I/home/solo_pilot/ardupilot-solo/libraries/AP_Scheduler -I/home/solo_pilot/ardupilot-solo/libraries/AP_SerialManager -I/home/solo_pilot/ardupilot-solo/libraries/AP_ServoRelayEvents -I/home/solo_pilot/ardupilot-solo/libraries/AP_Terrain -I/home/solo_pilot/ardupilot-solo/libraries/AP_Vehicle -I/home/solo_pilot/ardupilot-solo/libraries/DataFlash -I/home/solo_pilot/ardupilot-solo/libraries/Filter -I/home/solo_pilot/ardupilot-solo/libraries/GCS_MAVLink -I/home/solo_pilot/ardupilot-solo/libraries/RC_Channel -I/home/solo_pilot/ardupilot-solo/libraries/SITL -I/home/solo_pilot/ardupilot-solo/libraries/StorageManager -I/home/solo_pilot/ardupilot-solo/ArduCopter -DARDUPILOT_BUILD -DTESTS_MATHLIB_DISABLE -DCONFIG_HAL_BOARD=HAL_BOARD_PX4 -DSKETCHNAME=“ArduCopter” -DSKETCH_MAIN=ArduPilot_main -DAPM_BUILD_DIRECTORY=APM_BUILD_ArduCopter -Werror -Wno-psabi -Wno-packed -Wno-error=double-promotion -Wno-error=unused-variable -Wno-error=reorder -Wno-error=float-equal -Wno-error=pmf-conversions -Wno-error=missing-declarations -Wno-error=unused-function ‘-DGIT_VERSION="" -DNUTTX_GIT_VERSION=“d447403a” -DPX4_GIT_VERSION=“b0cb142b”’ APM_MODULE_DIR=/home/solo_pilot/ardupilot-solo SKETCHBOOK=/home/solo_pilot/ardupilot-solo CCACHE=/usr/bin/ccache PX4_ROOT=/home/solo_pilot/PX4Firmware NUTTX_SRC=/home/solo_pilot/PX4NuttX/nuttx/ MAXOPTIMIZATION=-Os UAVCAN_DIR= px4fmu-v2_APM

make[1]: Entering directory /home/solo_pilot/ardupilot-solo' make[1]: *** No rule to make targetpx4fmu-v2_APM’. Stop.
make[1]: Leaving directory `/home/solo_pilot/ardupilot-solo’
make: *** [px4-v2] Error 2

No luck with VirtualBox running Ubuntu 10.04, 12.04, 14.04 or 15.04
With all of them I can compile all of the diydrones/ardupilot modules 100% complete no errors.

None of the 3drobotics/ardupilot-solo modules get past the px4_targets.mk file, bombing out when making the $(PX4_MAKE) px4fmu-v2_APM line.

Oh, but the way, there is a typo in both diydrones and 3drobotics code for px4_targets.mk
It’s a minor, but it should read $(v) $(PX4_MAKE) px4fmu-v2_APM
This has no effect on compiling, but shows to poor coding proofreading etiquette.

The issue of the 3DRobotics Code not being able to compile has been brought up on some of the groups where there are actually 3DR coders hanging out, so maybe one of them will take pity on us and all of the hours/days/weeks we have spent trying to compile their releases and tell us how to make their code compile…

Keep your fingers crossed…

A little progress was made today.
Gabe over on the Googlegroups posted up one of the Undocumented Secrets to posting 3DR’s Solo code.
You have to add a custom PX4Firmware and edit the config.mk file to use it.

from the folder that contains your ardupilot-solo directory (not in it):
git clone github.com/3drobotics/PX4Firmware-solo.git

and edit the /ardupilot-solo/config.mk file to read:

This will get you further, but still a crash that will say:
compilation terminated due to -Wfatal-errors.
cc1plus: all warnings being treated as errors
make[3]: *** [libraries/AP_NavEKF/AP_NavEKF.cpp.o] Error 1

OK, I can’t edit the post above, but I did solve the issue and can now post 3DR’s ardupilot-solo complete.

The last piece of the puzzle is in the version of gcc-arm-none-eabi you have installed.

It MUST be gcc-arm-none-eabi-4_7-2014q2-20140408
No other version, older or newer, will work.

You can find the correct version at: http://firmware.diydrones.com/Tools/PX4-tools/

To sum it up, I will write a single post explaining exactly what to do starting with a freshly installed copy of Ubuntu 15.04

1 Like