The TECS controller belongs really into the ECL (estimation & control library) where we have collected a number of vehicle control systems. It is being replaced by a new implementation of the algorithm, contributed by Paul Riseborough.
* NuttX cmake
* px4_macros:Pass the stringified predicate as second arg to static assert
CC_ASSERT mapes to the c++ static_assert or provides the same
funtionality for c via the other macros. The c++ static assert
takes 2 argumants the prdicate and a message. This fixes the
lacking second argument.
* Updated nuttx and apps submodule to upstream nuttx 7.21+==master
This is the latest uptake of upstream nuttx and apps.
* ROMFS generate with xxd instead of objcopy
* delete nuttx-patches
* NuttX update submodules to latest px4_nuttx-master
* fix nuttx apps and board dependency
* docker_run update to latest container 2017-08-29
* cmake ROMFS portable sed usage
* NuttX update submodules to latest px4_nuttx-master
The new upstream nuttx defconfig format is compressed. This
will not work well for board configs that are out of the
upstream NuttX tree.
The reconstitution step will not replace all the non default
settings. I.E. CONFIG_ARCH_BOARD_PX4xxxx and will remove
setting that are not defined from the config/KConfig. Like
CONFIG_ARCH_BOARD_PX4xxxx=y.
Also the configure script will fail if run without
and intervening make distclean
The only 2 steps from configure that re needed are
Copying the defconfig to .config and Make.defs
We are running out of flash space in AeroFC so a cleanup is necessary.
Tools not used in Aero RTF, INAV, fixed wing control, vtol control and
unused libs was removed.
before
$ size build_aerofc-v1_default/src/firmware/nuttx/firmware_nuttx
text data bss dec hex filename
956880 3524 14608 975012 ee0a4 firmware_nuttx
after
$ size build_aerofc-v1_default/src/firmware/nuttx/firmware_nuttx
text data bss dec hex filename
832200 3508 14616 850324 cf994 build_aerofc-v1_default/src/firmware/nuttx/firmware_nuttx
This commit changes old trone driver into a generic
TeraRanger driver that supports both TeraRanger One
and TeraRanger Evo.
As a part of the change a new parameter was created
SENS_EN_TRANGER that allows to specify the following
modes of operation:
0 - sensors disabled
1 - autodetect sensors
2 - use TeraRanger One rangefinder
3 - use TeraRanger Evo rangefinder
Signed-off-by: Mateusz Sadowski <msadowski90@gmail.com>
* updated to use rc driver from PX4, instead of from FC addons
* fixed format
* update per comments
* fix format
* fix format
* remove duplicated __PX4_QURT
inverted S.bus signal and fetch the data of each channel and publish it
2. Fix the bug of linux_pwm_out, when the protocol is pca9685,
after the init method is executed,the method of determining the return
value of init method is incorrect,this will cause the driver to fail
3. Add linux_sbus driver to other posix prefixes cmake files
If the build config specifies RTPS topics to import/export and fastrtpsgen is not installed
on the build machine, then a dummy stub is used for the RTPS bridge.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
Add -D__DF_RPI in posix_rpi_common.cmake
Add rpi_rc_in and rpi_pca9685_pwm_out driver in posix_rpi_common.cmake
Rename posix_rpi_cross_without_navio_or_pxfmini to posix_rpi_cross_no_shield.cmake
Add CMake target for strip since these changes break adb_upload_to_bebop.
GCC users should add the cross compiler bin path to PATH (location of arm-linux-gnueabihf-g++).
Clang user should do the following:
* set CMAKE_CXX_COMPILER to clang++ by providing -DCMAKE_CXX_COMPILER=clang++ to cmake
* get GCC cross compiler - needed because Clang does not ship a CRT
* create a symlink for clang and clang++ in GCC cross compiler bin dir.
* add GCC bin dir to PATH
Signed-off-by: Nicolae Rosia <nicolae.rosia@gmail.com>
While the list was sorted, this change serialize the application
of the patches.
Moved the disply to the actual application of the patch not
the configuration step.
* Order patch application
Per discussion with @demarchi this PR adds ordering to the
patch application.
This alos add some encoding
00000 series - is for px4 non up streamable changes
60000 (bp) series - is for back ports
90000 series - is for wip that shold make it upstream
* Restore 00010-workarround-for-flash-data-cache-corruption
Extract this from the 90000-wip-inflight-to-upstream.patch
and orders it.
* Moved upstreamed 0dbf44e flash fix to bp patch
* Moved upstreamed 5481087 cdcacm fix to bp patch
* Moved upstreamed ec85425 STM32F7 copy paste errors to bp patch
* Moved upstreamed 20e7237 HSI should not be turned off to bp patch
* Moved upstreamed ca895b9 Adding missing CONFIG_ prefix to bp patch
* Moved upstreamed 169b398 STM32: Fixes the bkp reference counter issue to bp patch
* Moved upstreamed 550d259 STM32F7: Fixes the bkp reference counter issue to bp patch
* Moved upstreamed 02825f3 STM32F3X: Add missing STM32_BKP_BASE to bp patch
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Renamed for ordering and classification
* Order Patches by Name
Compliments the Bootloader change To simplify the ripple effect on the tools, we will be using /dev/serial/by-id/*_PX4_* to locate PX4 devices. Therefore moving forward all Bootloaders must contain the prefix "PX4 BL " in the USBDEVICESTRING
* Added tool to restore defconfig sections after make [old|menu]config
* Use tool to restore defconfig sections after make [old|menu]config
invocation:
make px4fmu-v2_default oldconfig_px4fmu-v2
make px4fmu-v2_default menuconfig_px4fmu-v2
- pulls more of the travis-ci s3 deploy into the repo so we can potentially migrate to another CI system
- fixed the sizes output and added verbose compiler version to cmake (#6322)
- fixed filenames for firmware uploaded to s3 (was broken by the changes yesterday)
- fixed some broken git version display in cmake
- Makefile organization
- simplified .travis.yml
- added a print to know which config the nuttx patch was being applied to
- docker_run.sh now respects PX4_DOCKER_REPO for setting the docker image, but defaults to the good production nuttx image
- the only difference really is, that scope (the configuration.cmake) is already passed
to px_process_params via the argument --scope. The Paths in --scope are evaluated w.r.t
the path to src provided via the -s /--src-path argument.
- if no --scope is proveided. the Old scheme by simply walking the full --src-path directory
is applied
Measure the battery voltage of Aero RTF kit will be done by FPGA
and read by AeroFC using I2C bus.
The protocol is a little bit odd, it have different I2C slave
address for each "register", in future the FPGA RTL will
have a protocol more similar to other I2C sensors.
Also Aero RTF don't have a ADC line to measure current consumption.
Since the git hashes were being generate by cmake it would only be
generated if the header file was not present. Simple test:
$ make aerofc-v1_default
$ touch a
$ git add a
$ git commit -m tmp
$ make aerofc-v1_default
The file build_aerofc-v1_default/build_git_version.h should have the new
hashes and the correspondent .c/c.pp files should be rebuilt, but they
aren't. The end result is that checking the version with "ver git" in
the nsh console will point to the wrong commit.
This moves the generation of the header to a separate tool and enforces
the command to be executed every time.
AeroFC is updated by Aero board using the UART between AeroFC
and Aero board.
This script will copy firmware and px_uploader.py to Aero board and run
px_uploader.py with the correct paremeters. User only needs to have a
network connection (Ethernet over USB or WiFi) with Aero board to update
AeroFC firmware. The IP/hostname can be given by AERO_HOSTNAME
environment variable.
This disables the following modules to save flash:
- mpu9250 driver because the MPU9250 is rarely used on Pixhawks
- Snapdragon RC PWM passthrough which is rarely used and definitely a
special/custom configuration. Also, it will soon be obsolete with the
upcoming PWM support on Snapdragon.
These are some changes that I needed to compile
most of the unsupported targets.
After this all (make list_config_targets) compile
for me except: posix_eagle_muorb, posix_sdflight_default
and qurt_eagle_legacy_driver_default.
app.h, generated from app.h_in, has unnecessary code duplication
and isn't a header file (it defines globals, static functions
and doesn't have a header guard, moreover, it has a 'using namespace
std;'). Because of this, a real headerfile that declares the stuff
defined in apps.h was missing leading to even more code duplication:
scattered forward declarations in .cpp files and an often repeated
type of std::map<std::string, px4_main_t>.
This patch moves cmake/qurt/apps.h_in to src/platforms/apps.cpp.in
(with some changes) and removes cmake/posix/apps.h_in.
Then src/platforms/apps.cpp.in is split into src/platforms/apps.cpp.in
and src/platforms/apps.h.in, splitting declarations from definitions.
A typedef is defined for the map (apps_map_type).
The main difference between cmake/posix/apps.h_in and
cmake/qurt/apps.h_in was that the first defined a global 'apps',
while qurt stores the apps in QShell. I opted to get rid of
the global variable (which are in general evil for various reasons)
and used the API of cmake/qurt/apps.h_in where a provided 'apps'
map is initialized with a call to init_app_map. Thus removing
the existing code duplication.
The firmware binary is to large to fit into the onboard memory of the Parrot
Bebop. It could be uploaded to the emmc, but for ease of use it would be nice
to have it in /usr/bin. To strip the binary seems to be the best option right now.
The pthread linker flags were changed in c6a2641 and it was questioned in #5504 if the
exception for the Bebop is necessary. It is not, so remove those lines from the cmake
file.
With this change only builds for NuttX which are very much flash size
constraint are optimized for size. All other builds (e.g. SITL,
Snapdragon, etc.) are left at the default for debugging or -O2 for the
usual use.
The px4_os_add_flags defined in cmake/posix/px4_impl_posix.cmake did
add (threading) libraries to added_exe_linker_flags, which subsequently
end up in CMAKE_EXE_LINKER_FLAGS and then have no effect because those
flags are passed to the linker before any of the object files and static
libraries.
Those libraries are already added correctly in the corresponding
src/firmware/*/CMakeLists.txt files (for qurt, nuttx AND posix).
I left in the non-library linker flag '-pthread' for the bebop board,
although it seems very weird to me that this is needed (is it?).
If that is needed then it seems weird to link manually (that is,
src/firmware/*/CMakeLists.txt) with -lpthread.
For linux/g++ -pthread is added to the CXXFLAGS as it should be:
this causes the compiler to define _REENTRANT which is needed
for (the interface of) certain libraries to become thread-safe.
Offically one also can just pass -pthread to the linker, which then
causes the right libraries to be linked, but just linking with
-lpthread -lm -lrt works too.
I ran into this while adding support for libcwd, which explicitly
complains that _REENTRANT isn't defined when trying to link with
the thread-safe version of libcwd (-lcwd_r) and then tells you
to use -pthread.
* This allows one to run 'make posix list_vmd_make_targets' and get output like
>make posix list_vmd_make_targets
[...]
-- Build files have been written to:
/usr/src/debian/px4/Firmware/Firmware.git/build_posix_sitl_default
PX4 CONFIG: /usr/src/debian/px4/Firmware/Firmware.git/build_posix_sitl_default
Scanning dependencies of target list_vmd_make_targets
[100%] List of acceptable 'posix_sitl_default' <viewer_model_debugger> targets:
none
none_iris
none_iris_opt_flow
none_tailsitter
[...]
replay_solo_valgrind
replay_typhoon_h480_valgrind
[100%] Built target list_vmd_make_targets
Or, run 'make list_vmd_make_targets' from the build_posix_* directory.
* This adds the list_cmake_targets make target to print all
cmake targets that one can match with PX4_NO_OPTIMIZATION.
PX4_NO_OPTIMIZATION is ignored (do optimization as normal)
when the CONFIG isn't posix_sitl_*.
* Add comment in Makefile on how/where to find all targets.