diff --git a/CHANGELOG.md b/CHANGELOG.md index 97e05bc455..59d90f1ad1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,86 @@ -Paparazzi 4.9 - development branch -================================== +Paparazzi 5.0.0_stable +====================== + +Stable version release + +General +------- - STM libs completely replaced by libopencm3 +- [gcc-arm-embedded] (https://launchpad.net/gcc-arm-embedded) is the new recommended toolchain +- Use findlib (ocamlfind) for ocaml packages. Faster build. + [#274] (https://github.com/paparazzi/paparazzi/pull/274) +- Building/Running the groundsegment on an ARM (e.g. RaspberryPi). - Input2ivy uses SDL for joysticks (cross-platform, works on OSX as well now) [#220] (https://github.com/paparazzi/paparazzi/pull/220) - Option to change text papget color using a combobox [#194] (https://github.com/paparazzi/paparazzi/pull/194) +- Redundant communications + [#429] (https://github.com/paparazzi/paparazzi/pull/429) +- Log also contains includes like procedures now, so replay if these missions is possible. + [#227] (https://github.com/paparazzi/paparazzi/issues/227) +- Paparazzi Center + - New simulation launcher with dialog and detection of available ones. + [#354] (https://github.com/paparazzi/paparazzi/pull/354) + - Checkbox to print extra configuration information during build. +- GCS: + - Fix panning with mouse if there are no background tiles. + [#9] (https://github.com/paparazzi/paparazzi/issues/9) + - Higher zoom level for maps. + [#277] (https://github.com/paparazzi/paparazzi/issues/277) + +Hardware support +---------------- + +- initial support for STM32F4 + - Apogee autopilot + - KroozSD autopilot +- Parrot AR Drone 2 support: raw and sdk versions +- CH Robotics UM6 IMU/AHRS +- GPS/INS XSens Mti-G support +- GPS Sirf support +- GPS Skytraq now usable for fixedwings as well + [#167] (https://github.com/paparazzi/paparazzi/issues/167) +- Mikrokopter V2 BLDC + [#377] (https://github.com/paparazzi/paparazzi/pull/377) +- PX4Flow sensor + [#379] (https://github.com/paparazzi/paparazzi/pull/379) +- Dropped AVR support + +Airborne +-------- + +- State interface with automatic coordinate transformations + [#237] (https://github.com/paparazzi/paparazzi/pull/237) +- New AHRS filter: Multiplicative quaternion linearized Kalman Filter +- New SPI driver with transaction queues. + - Fix transactions with zero length input. + [#348] (https://github.com/paparazzi/paparazzi/issues/348) +- Peripherals: Cleanup and refactoring. + - MPU60x0 peripheral supporting SPI and I2C with slave. +- UDP datalink. +- Magnetometer current offset calibration. + [#346] (https://github.com/paparazzi/paparazzi/pull/346) +- Gain scheduling module. + [#335] (https://github.com/paparazzi/paparazzi/pull/335) + +Rotorcraft firmware specific +---------------------------- + +- Quadshot transitioning vehicle support. +- Care Free Mode + + +Paparazzi 4.2.1_stable +====================== + +Maintenance release + +- fix elf PT_LOAD type in lpc21iap LPC USB download +- fix electrical.current estimate in sim +- fix LPC+xbee_api in rotorcraft +- fix conversion of vsupply to decivolts if offset is used +- more robust dfu flash script, only upload to Lisa/M Paparazzi 4.2.0_stable diff --git a/conf/airframes/ENAC/quadrotor/blender.xml b/conf/airframes/ENAC/quadrotor/blender.xml index b5efec74a6..2dce3cc671 100644 --- a/conf/airframes/ENAC/quadrotor/blender.xml +++ b/conf/airframes/ENAC/quadrotor/blender.xml @@ -37,7 +37,7 @@ - + @@ -133,7 +133,6 @@
- diff --git a/conf/airframes/ENAC/quadrotor/booz2_g1.xml b/conf/airframes/ENAC/quadrotor/booz2_g1.xml index 0604b4a152..472c32d189 100644 --- a/conf/airframes/ENAC/quadrotor/booz2_g1.xml +++ b/conf/airframes/ENAC/quadrotor/booz2_g1.xml @@ -47,7 +47,7 @@ - + @@ -102,13 +102,13 @@ - - - + + + - - - + + + @@ -206,9 +206,10 @@
+ - - + + diff --git a/conf/airframes/ardrone2_sdk.xml b/conf/airframes/ardrone2_sdk.xml index c7bb880258..dfbcab0f90 100644 --- a/conf/airframes/ardrone2_sdk.xml +++ b/conf/airframes/ardrone2_sdk.xml @@ -14,7 +14,7 @@ - + @@ -97,6 +97,7 @@
+ diff --git a/conf/airframes/examples/quadrotor_lisa_m_2_pwm_spektrum.xml b/conf/airframes/examples/quadrotor_lisa_m_2_pwm_spektrum.xml index 1f4331d59a..e9e9aa9dba 100644 --- a/conf/airframes/examples/quadrotor_lisa_m_2_pwm_spektrum.xml +++ b/conf/airframes/examples/quadrotor_lisa_m_2_pwm_spektrum.xml @@ -32,7 +32,7 @@ - + diff --git a/conf/airframes/examples/quadrotor_mlkf.xml b/conf/airframes/examples/quadrotor_mlkf.xml new file mode 100644 index 0000000000..c4f1066f5f --- /dev/null +++ b/conf/airframes/examples/quadrotor_mlkf.xml @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + +
+ +
+ + + + + +
+ +
+ + + + + +
+ +
+ + + +
+ +
+ + + + +
+ +
diff --git a/conf/control_panel.xml.example b/conf/control_panel.xml.example index 6e36df42b1..0c69ef79c8 100644 --- a/conf/control_panel.xml.example +++ b/conf/control_panel.xml.example @@ -83,28 +83,12 @@
- + - - - - - - - - - - - - - - - - diff --git a/conf/firmwares/subsystems/rotorcraft/fdm_jsbsim.makefile b/conf/firmwares/subsystems/rotorcraft/fdm_jsbsim.makefile index c4624667f1..2e5c837a16 100644 --- a/conf/firmwares/subsystems/rotorcraft/fdm_jsbsim.makefile +++ b/conf/firmwares/subsystems/rotorcraft/fdm_jsbsim.makefile @@ -22,7 +22,7 @@ nps.MAKEFILE = nps nps.CFLAGS += -DSITL -DUSE_NPS nps.CFLAGS += $(shell pkg-config glib-2.0 --cflags) -nps.LDFLAGS += $(shell pkg-config glib-2.0 --libs) -lm -lglibivy -lgsl -lgslcblas +nps.LDFLAGS += $(shell pkg-config glib-2.0 --libs) -lm -lglibivy -lpcre -lgsl -lgslcblas nps.CFLAGS += -I$(NPSDIR) -I$(SRC_FIRMWARE) -I$(SRC_BOARD) -I../simulator -I$(PAPARAZZI_HOME)/conf/simulator/nps nps.LDFLAGS += $(shell sdl-config --libs) diff --git a/conf/firmwares/subsystems/rotorcraft/gps_ardrone2.makefile b/conf/firmwares/subsystems/rotorcraft/gps_ardrone2.makefile new file mode 100644 index 0000000000..fad4a3919f --- /dev/null +++ b/conf/firmwares/subsystems/rotorcraft/gps_ardrone2.makefile @@ -0,0 +1,20 @@ +# Hey Emacs, this is a -*- makefile -*- + +# ARDrone 2 Flightrecorder GPS unit + + +ap.CFLAGS += -DUSE_GPS -DUSE_GPS_ARDRONE2 + +ifneq ($(GPS_LED),none) + ap.CFLAGS += -DGPS_LED=$(GPS_LED) +endif + +ap.CFLAGS += -DGPS_TYPE_H=\"subsystems/gps/gps_ardrone2.h\" +ap.srcs += $(SRC_SUBSYSTEMS)/gps/gps_ardrone2.c + +$(TARGET).srcs += $(SRC_SUBSYSTEMS)/gps.c + +nps.CFLAGS += -DUSE_GPS +nps.CFLAGS += -DGPS_TYPE_H=\"subsystems/gps/gps_sim.h\" +nps.srcs += $(SRC_SUBSYSTEMS)/gps/gps_sim_nps.c + diff --git a/conf/firmwares/subsystems/shared/imu_aspirin_v2.1.makefile b/conf/firmwares/subsystems/shared/imu_aspirin_v2.1.makefile index 446b84af59..1e16703269 100644 --- a/conf/firmwares/subsystems/shared/imu_aspirin_v2.1.makefile +++ b/conf/firmwares/subsystems/shared/imu_aspirin_v2.1.makefile @@ -39,32 +39,37 @@ # for fixedwing firmware and ap only ifeq ($(TARGET), ap) - IMU_ASPIRIN_CFLAGS = -DUSE_IMU + IMU_ASPIRIN_2_CFLAGS = -DUSE_IMU endif -IMU_ASPIRIN_CFLAGS += -DIMU_TYPE_H=\"imu/imu_aspirin2.h\" -IMU_ASPIRIN_SRCS = $(SRC_SUBSYSTEMS)/imu.c \ - $(SRC_SUBSYSTEMS)/imu/imu_aspirin2.c +IMU_ASPIRIN_2_CFLAGS += -DIMU_TYPE_H=\"imu/imu_aspirin_2_spi.h\" +IMU_ASPIRIN_2_SRCS = $(SRC_SUBSYSTEMS)/imu.c +IMU_ASPIRIN_2_SRCS += $(SRC_SUBSYSTEMS)/imu/imu_aspirin_2_spi.c +IMU_ASPIRIN_2_SRCS += peripherals/mpu60x0.c +IMU_ASPIRIN_2_SRCS += peripherals/mpu60x0_spi.c + +# Magnetometer +#IMU_ASPIRIN_2_SRCS += peripherals/hmc58xx.c include $(CFG_SHARED)/spi_master.makefile ifeq ($(ARCH), lpc21) -IMU_ASPIRIN_CFLAGS += -DUSE_SPI1 -IMU_ASPIRIN_CFLAGS += -DUSE_SPI_SLAVE0 +IMU_ASPIRIN_2_CFLAGS += -DUSE_SPI_SLAVE0 +IMU_ASPIRIN_2_CFLAGS += -DASPIRIN_2_SPI_SLAVE_IDX=SPI_SLAVE0 +IMU_ASPIRIN_2_CFLAGS += -DASPIRIN_2_SPI_DEV=spi1 +IMU_ASPIRIN_2_CFLAGS += -DUSE_SPI1 else ifeq ($(ARCH), stm32) -IMU_ASPIRIN_CFLAGS += -DUSE_SPI2 +IMU_ASPIRIN_2_CFLAGS += -DUSE_SPI2 # Slave select configuration # SLAVE2 is on PB12 (NSS) (MPU600 CS) -IMU_ASPIRIN_CFLAGS += -DUSE_SPI_SLAVE2 +IMU_ASPIRIN_2_CFLAGS += -DUSE_SPI_SLAVE2 endif -IMU_ASPIRIN_CFLAGS += -DIMU_ASPIRIN_VERSION_2_1 - # Keep CFLAGS/Srcs for imu in separate expression so we can assign it to other targets # see: conf/autopilot/subsystems/lisa_passthrough/imu_b2_v1.1.makefile for example -ap.CFLAGS += $(IMU_ASPIRIN_CFLAGS) -ap.srcs += $(IMU_ASPIRIN_SRCS) +ap.CFLAGS += $(IMU_ASPIRIN_2_CFLAGS) +ap.srcs += $(IMU_ASPIRIN_2_SRCS) # diff --git a/conf/firmwares/subsystems/shared/imu_aspirin_v2.1_new.makefile b/conf/firmwares/subsystems/shared/imu_aspirin_v2.1_old.makefile similarity index 69% rename from conf/firmwares/subsystems/shared/imu_aspirin_v2.1_new.makefile rename to conf/firmwares/subsystems/shared/imu_aspirin_v2.1_old.makefile index 3ad6e9a953..446b84af59 100644 --- a/conf/firmwares/subsystems/shared/imu_aspirin_v2.1_new.makefile +++ b/conf/firmwares/subsystems/shared/imu_aspirin_v2.1_old.makefile @@ -39,39 +39,32 @@ # for fixedwing firmware and ap only ifeq ($(TARGET), ap) - IMU_ASPIRIN_2_CFLAGS = -DUSE_IMU + IMU_ASPIRIN_CFLAGS = -DUSE_IMU endif -IMU_ASPIRIN_2_CFLAGS += -DIMU_TYPE_H=\"imu/imu_aspirin_2.h\" -IMU_ASPIRIN_2_SRCS = $(SRC_SUBSYSTEMS)/imu.c -IMU_ASPIRIN_2_SRCS += $(SRC_SUBSYSTEMS)/imu/imu_aspirin_2.c -IMU_ASPIRIN_2_SRCS += peripherals/mpu60x0.c -IMU_ASPIRIN_2_SRCS += peripherals/mpu60x0_spi.c - -# Magnetometer -#IMU_ASPIRIN_2_SRCS += peripherals/hmc58xx.c +IMU_ASPIRIN_CFLAGS += -DIMU_TYPE_H=\"imu/imu_aspirin2.h\" +IMU_ASPIRIN_SRCS = $(SRC_SUBSYSTEMS)/imu.c \ + $(SRC_SUBSYSTEMS)/imu/imu_aspirin2.c include $(CFG_SHARED)/spi_master.makefile ifeq ($(ARCH), lpc21) -IMU_ASPIRIN_2_CFLAGS += -DUSE_SPI_SLAVE0 -IMU_ASPIRIN_2_CFLAGS += -DASPIRIN_2_SPI_SLAVE_IDX=SPI_SLAVE0 -IMU_ASPIRIN_2_CFLAGS += -DASPIRIN_2_SPI_DEV=spi1 -IMU_ASPIRIN_2_CFLAGS += -DUSE_SPI1 +IMU_ASPIRIN_CFLAGS += -DUSE_SPI1 +IMU_ASPIRIN_CFLAGS += -DUSE_SPI_SLAVE0 else ifeq ($(ARCH), stm32) -IMU_ASPIRIN_2_CFLAGS += -DUSE_SPI2 +IMU_ASPIRIN_CFLAGS += -DUSE_SPI2 # Slave select configuration # SLAVE2 is on PB12 (NSS) (MPU600 CS) -IMU_ASPIRIN_2_CFLAGS += -DUSE_SPI_SLAVE2 +IMU_ASPIRIN_CFLAGS += -DUSE_SPI_SLAVE2 endif -#IMU_ASPIRIN_2_CFLAGS += -DIMU_ASPIRIN_VERSION_2_1 +IMU_ASPIRIN_CFLAGS += -DIMU_ASPIRIN_VERSION_2_1 # Keep CFLAGS/Srcs for imu in separate expression so we can assign it to other targets # see: conf/autopilot/subsystems/lisa_passthrough/imu_b2_v1.1.makefile for example -ap.CFLAGS += $(IMU_ASPIRIN_2_CFLAGS) -ap.srcs += $(IMU_ASPIRIN_2_SRCS) +ap.CFLAGS += $(IMU_ASPIRIN_CFLAGS) +ap.srcs += $(IMU_ASPIRIN_SRCS) # diff --git a/conf/firmwares/subsystems/shared/imu_aspirin_v2.2.makefile b/conf/firmwares/subsystems/shared/imu_aspirin_v2.2.makefile index 8dfb93613a..99968ac5a2 100644 --- a/conf/firmwares/subsystems/shared/imu_aspirin_v2.2.makefile +++ b/conf/firmwares/subsystems/shared/imu_aspirin_v2.2.makefile @@ -2,11 +2,13 @@ # # Aspirin IMU v2.2 # +# actually identical with v2.1 since baro is not read in IMU driver +# # # required xml: #
# -# +# # # # @@ -37,37 +39,4 @@ # -# for fixedwing firmware and ap only -ifeq ($(TARGET), ap) - IMU_ASPIRIN_CFLAGS = -DUSE_IMU -endif - -IMU_ASPIRIN_CFLAGS += -DIMU_TYPE_H=\"imu/imu_aspirin2.h\" -IMU_ASPIRIN_SRCS = $(SRC_SUBSYSTEMS)/imu.c \ - $(SRC_SUBSYSTEMS)/imu/imu_aspirin2.c - -include $(CFG_SHARED)/spi_master.makefile - -ifeq ($(ARCH), lpc21) -IMU_ASPIRIN_CFLAGS += -DUSE_SPI1 -IMU_ASPIRIN_CFLAGS += -DUSE_SPI_SLAVE0 -else ifeq ($(ARCH), stm32) -IMU_ASPIRIN_CFLAGS += -DUSE_SPI2 -# Slave select configuration -# SLAVE2 is on PB12 (NSS) (MPU600 CS) -IMU_ASPIRIN_CFLAGS += -DUSE_SPI_SLAVE2 -endif - -IMU_ASPIRIN_CFLAGS += -DIMU_ASPIRIN_VERSION_2_2 - -# Keep CFLAGS/Srcs for imu in separate expression so we can assign it to other targets -# see: conf/autopilot/subsystems/lisa_passthrough/imu_b2_v1.1.makefile for example - -ap.CFLAGS += $(IMU_ASPIRIN_CFLAGS) -ap.srcs += $(IMU_ASPIRIN_SRCS) - - -# -# NPS simulator -# -include $(CFG_SHARED)/imu_nps.makefile +include $(CFG_SHARED)/imu_aspirin_v2.1.makefile diff --git a/conf/firmwares/subsystems/shared/imu_drotek_10dof_v2.makefile b/conf/firmwares/subsystems/shared/imu_drotek_10dof_v2.makefile new file mode 100644 index 0000000000..b41ec9b741 --- /dev/null +++ b/conf/firmwares/subsystems/shared/imu_drotek_10dof_v2.makefile @@ -0,0 +1,81 @@ +# Hey Emacs, this is a -*- makefile -*- +# +# Drotek 10DOF V2 IMU via I2C +# +# +# required xml: +#
+# +# +# +# +# +# +# +# +# +# +# +# +# +# +# +# +# +# +# +# +# +# +# +# +# +# +# +#
+# +# + + +# for fixedwing firmware and ap only +ifeq ($(TARGET), ap) + IMU_DROTEK_2_CFLAGS = -DUSE_IMU +endif + +IMU_DROTEK_2_CFLAGS += -DIMU_TYPE_H=\"imu/imu_drotek_10dof_v2.h\" +IMU_DROTEK_2_SRCS = $(SRC_SUBSYSTEMS)/imu.c +IMU_DROTEK_2_SRCS += $(SRC_SUBSYSTEMS)/imu/imu_drotek_10dof_v2.c +IMU_DROTEK_2_SRCS += peripherals/mpu60x0.c +IMU_DROTEK_2_SRCS += peripherals/mpu60x0_i2c.c + +# Magnetometer +IMU_DROTEK_2_SRCS += peripherals/hmc58xx.c + + +# set default i2c bus +ifndef DROTEK_2_I2C_DEV +ifeq ($(ARCH), lpc21) +DROTEK_2_I2C_DEV=i2c0 +else ifeq ($(ARCH), stm32) +DROTEK_2_I2C_DEV=i2c2 +endif +endif + +# convert i2cx to upper case +DROTEK_2_I2C_DEV_UPPER=$(shell echo $(DROTEK_2_I2C_DEV) | tr a-z A-Z) + +IMU_DROTEK_2_CFLAGS += -DDROTEK_2_I2C_DEV=$(DROTEK_2_I2C_DEV) +IMU_DROTEK_2_CFLAGS += -DUSE_$(DROTEK_2_I2C_DEV_UPPER) + + +# Keep CFLAGS/Srcs for imu in separate expression so we can assign it to other targets +# see: conf/autopilot/subsystems/lisa_passthrough/imu_b2_v1.1.makefile for example + +ap.CFLAGS += $(IMU_DROTEK_2_CFLAGS) +ap.srcs += $(IMU_DROTEK_2_SRCS) + + +# +# NPS simulator +# +include $(CFG_SHARED)/imu_nps.makefile diff --git a/conf/joystick/ms_sidewinder.xml b/conf/joystick/ms_sidewinder.xml index 29c61b7734..d439e422e8 100644 --- a/conf/joystick/ms_sidewinder.xml +++ b/conf/joystick/ms_sidewinder.xml @@ -4,8 +4,6 @@ axis 1: pitch axis 2: yaw axis 3: throttle (reversed) - axis 4: hat switch left/right (right is positive) - axis 5: hat switch up/down (down is positive) It has 9 buttons. b0 - fire @@ -18,6 +16,11 @@ It has 9 buttons. b7 - button D b8 - shift button +and a POV hat. +You can use the Hat() function to trigger events, +where is one of +Centered/Up/Right/Down/Left/RightUp/RightDown/LeftUp/LeftDown +so e.g. HatDown(hat) --> @@ -26,8 +29,6 @@ It has 9 buttons. - -