Commit Graph

15670 Commits

Author SHA1 Message Date
Lucas De Marchi
2c48434110 AP_HAL_Linux: use a table to initialize threads
Refactor function calls into a table and pass in the name so it can be
used in error message.
2015-04-14 09:17:21 +10:00
Lucas De Marchi
e3d78b8960 AP_HAL_Linux: fix passing callback to member function
It's undefined behavior to pass the callback to pthread to a class
member like we were doing. Refactor the code so the callbacks are static
members.

This fixes the following warnings:

libraries/AP_HAL_Linux/Scheduler.cpp: In member function 'virtual void Linux::LinuxScheduler::init(void*)':
/home/lucas/p/dronecode/ardupilot/libraries/AP_HAL_Linux/Scheduler.cpp:61:76: warning: converting from 'void* (Linux::LinuxScheduler::*)()' to 'Linux::LinuxScheduler::pthread_startroutine_t {aka void* (*)(void*)}' [-Wpmf-conversions]
                            (pthread_startroutine_t)&Linux::LinuxScheduler::_timer_thread);
                                                                            ^
libraries/AP_HAL_Linux/Scheduler.cpp:65:76: warning: converting from 'void* (Linux::LinuxScheduler::*)()' to 'Linux::LinuxScheduler::pthread_startroutine_t {aka void* (*)(void*)}' [-Wpmf-conversions]
                            (pthread_startroutine_t)&Linux::LinuxScheduler::_uart_thread);
                                                                            ^
libraries/AP_HAL_Linux/Scheduler.cpp:69:76: warning: converting from 'void* (Linux::LinuxScheduler::*)()' to 'Linux::LinuxScheduler::pthread_startroutine_t {aka void* (*)(void*)}' [-Wpmf-conversions]
                            (pthread_startroutine_t)&Linux::LinuxScheduler::_rcin_thread);
                                                                            ^
libraries/AP_HAL_Linux/Scheduler.cpp:73:76: warning: converting from 'void* (Linux::LinuxScheduler::*)()' to 'Linux::LinuxScheduler::pthread_startroutine_t {aka void* (*)(void*)}' [-Wpmf-conversions]
                            (pthread_startroutine_t)&Linux::LinuxScheduler::_tonealarm_thread);
                                                                            ^
libraries/AP_HAL_Linux/Scheduler.cpp:77:76: warning: converting from 'void* (Linux::LinuxScheduler::*)()' to 'Linux::LinuxScheduler::pthread_startroutine_t {aka void* (*)(void*)}' [-Wpmf-conversions]
                            (pthread_startroutine_t)&Linux::LinuxScheduler::_io_thread);
2015-04-14 09:17:20 +10:00
Lucas De Marchi
62c2f737d5 AP_HAL_Linux: fix setting RT priorities
LinuxScheduler::init() was not really working as it should. This was the
result of "ps -Leo class,rtprio,wchan,comm | grep ArduCopter":

FF      12 futex_ ArduCopter.elf
FF      12 usleep ArduCopter.elf
FF      12 hrtime ArduCopter.elf
FF      12 poll_s ArduCopter.elf
FF      12 hrtime ArduCopter.elf
FF      12 hrtime ArduCopter.elf

As can be seen all the threads run with the same priority, the one of the main
thread. There were basically 2 mistakes:

	1) pthread_attr_setschedpolicy() needs to be called before
	   pthread_attr_setschedparam(). Otherwise the latter will just return
	   an error and not set the priority

	2) pthread_create() defaults to ignore the priority and inherit the
	   it from the parent thread. pthread_attr_setinheritsched() needs to
	   be called to change the behavior to PTHREAD_EXPLICIT_SCHED. See
	   pthread_attr_setinheritsched(3) for an example program to test the
	   behaviors.

Also, it's undefined behavior to call pthread_attr_init() several times on the
same pthread_attr_t. Although we could reutilize the same attribute without
calling  pthread_attr_init() again, lets refactor the code a little bit, so all
the pthread calls are in a single place. Then also call pthread_attr_destroy()
when we are done.
2015-04-14 09:17:20 +10:00
Lucas De Marchi
29b667efdf AP_HAL_Linux: remove useless mlock of stack
In Linux the default stack size is always greater than 32k, either 2MB
or 8MB depending on the architecture. There's no point in creating a
function to lock 32k.
2015-04-14 09:17:20 +10:00
Lucas De Marchi
5d69e2027c Travis: install gcc-multilib to get dependency libraries
We are failing to execute arm-none-eabi-gcc due to missing 32 bits
libraries in travis. Install gcc-multilib so we get all of them.

This commit also calls this version of gcc in the end of
install-travis-env.sh so if it's to fail, force it to fail early on.
2015-04-14 09:07:31 +10:00
Lucas De Marchi
b4718f6943 Travis: require sudo so not to run on a container 2015-04-14 09:07:31 +10:00
Andrew Tridgell
d4e9418ad4 autotest: rename jsmsim folder to jsb_sim
this prevents problems on windows with virtualbox. It tries to run
JSBSim as the directory 'jsbsim' and fails
2015-04-14 09:04:11 +10:00
Randy Mackay
e2071a4630 Notify: ToneAlarm fix to stopping continuous tones 2015-04-13 17:44:45 +09:00
Randy Mackay
ea5c24b70b Copter: rename lost_copter to vehicle_lost 2015-04-13 17:44:44 +09:00
Randy Mackay
2472702838 Notify: rename lost_copter to vehicle_lost 2015-04-13 17:44:44 +09:00
Jaime Machuca
3c00b0a0a8 Copter: ch7/ch8 for lost copter sound 2015-04-13 17:44:39 +09:00
Jaime Machuca
043d24f03a Notify: add Lost Copter tone 2015-04-13 17:42:07 +09:00
Randy Mackay
a20a89181c Copter: enable CPU failsafe after initialisation
This removes a false positive during startup that lead to an error
appearing at the start of the dataflash log
2015-04-13 15:58:13 +09:00
Andrew Tridgell
82f6bb3c17 autotest: use common frame time handling 2015-04-13 10:08:12 +10:00
Andrew Tridgell
7f89f73ad1 autotest: use simulation time for all time delays 2015-04-13 10:08:12 +10:00
Andrew Tridgell
d2a188c55d autotest: run plane test at maximum speed 2015-04-13 10:08:12 +10:00
Andrew Tridgell
9fdb74e006 autotest: run JSBSim in lock step mode
this requires an updated JSBSim
2015-04-13 10:08:11 +10:00
Andrew Tridgell
e8c115b9c3 autotest: check for the right version of JSBSim 2015-04-13 09:06:21 +10:00
Andrew Tridgell
370edde286 autotest: no need for special SIGCONT handling any more 2015-04-13 06:08:35 +10:00
Andrew Tridgell
0695277773 HAL_SITL: use pthread barriers for synthetic clock synchronisation
this avoids siganls and provides a race free way of keeping time in
lock step
2015-04-13 06:05:55 +10:00
Randy Mackay
83c966eaa7 Copter: update 3.3-rc1 release notes 2015-04-12 09:41:23 +09:00
Randy Mackay
5a4039d99c Copter: version to APM:Copter 3.3-rc1 2015-04-12 09:21:44 +09:00
Randy Mackay
df59a912d1 Copter: 3.3-rc1 release notes 2015-04-12 09:21:22 +09:00
Paul Riseborough
e79ccf1fcc AP_NavEKF: Fix bug allowing terrain to be above vehicle position
The terrain state and vehicle state need to be compared at the same time horizon.
2015-04-11 15:51:08 +09:00
Paul Riseborough
6d58c63c4c AP_NavEKF: Prevent potential divide by zeros in OF fusion 2015-04-11 15:51:03 +09:00
Paul Riseborough
89142f1c5f AP_NavEKF: Prevent inadvertent use of DCM roll and pitch estimates.
the use of roll and pitch from the AHRS object is bad because that object could be returning estimates from the backup DCM algorithm.
2015-04-11 15:19:05 +09:00
Randy Mackay
56d2306a18 BattMon_SMBus_PX4: read capacity 2015-04-11 14:10:22 +09:00
Randy Mackay
c6440a48b3 BattMon_Backend: add init and set_capacity methods 2015-04-11 14:10:19 +09:00
Randy Mackay
11576a0f1e Copter: fix bitmask for use with SET_POSITION_TARGET
Thanks to vooon for spotting this
2015-04-11 11:57:41 +09:00
Randy Mackay
4b5d07252e Copter: ekf_check ok if optflow pos available 2015-04-10 11:08:21 +09:00
Randy Mackay
52f7186cbf Copter: pre-arm check primary compass health
Previously we would check the 1st compass which might not necessarily be
the primary compass
2015-04-10 11:08:18 +09:00
Paul Riseborough
9268024094 AP_NavEKF: Update default parameters for copter optical flow fusion 2015-04-10 11:08:11 +09:00
Paul Riseborough
4fbdab27ff AP_NavEKF: Use range finder for primary hgt ref in opt flow mode
Falls back to baro if range finder is unavailable
Adds parameter enabling user to select which height source (baro or range finder) will be used during optical flow nav.
2015-04-10 11:08:07 +09:00
Randy Mackay
6834b5943e Copter: pre-arm alt disparity check only if using baro
We should probably consolidate the baro pre-arm and arming checks into a
single check_baro function but the difference in the error message stops
me from immediately doing that
2015-04-10 11:08:02 +09:00
Paul Riseborough
1d7cb25c17 Copter : Update pre-arm and arm checks using EKF health status
Bypass alt disparity check when doing ground relative navigation using range finder height
Add check of EKF health status to indicate when EKF is waiting to complete checks
2015-04-10 11:07:50 +09:00
Paul Riseborough
ff9917d338 AP_AHRS: Fix bug preventing EKF from initialising 2015-04-10 11:07:42 +09:00
Paul Riseborough
d618c55e2f AP_NavEKF: Improved handling of noisy GPS speed accuracy data 2015-04-10 11:07:34 +09:00
Paul Riseborough
53358a4e10 AP_OpticalFlow: Add parameter to compensate for flow sensor yaw angle
AP_OpticalFlow: update parameter name
2015-04-10 11:07:31 +09:00
Paul Riseborough
cab171b580 AP_InertialNav: Add method to return EKF height above ground estimate
AP_InertialNav: Add validity flag to height above ground estimate
2015-04-10 11:07:27 +09:00
Paul Riseborough
e98edaa6cb AP_NavEKF: Return more accurate validity status for height above ground 2015-04-10 11:07:24 +09:00
Paul Riseborough
586e4a7d2b AP_NavEKF: Add Matlab derivations and simulations behind small EKF 2015-04-10 11:07:21 +09:00
Randy Mackay
fea7632eac Copter: save EKF learned compass to primary compass 2015-04-10 11:07:18 +09:00
Paul Riseborough
2406e26ab4 Copter : Save EKF learned compass offsets on disarm
Requires compass learning to be enabled in the compass parameters

Copter: fix compass offsets patch
2015-04-10 11:07:13 +09:00
Leonard Hall
70fbb3c67e Copter: RATE_RLL_P param def max to 0.30
same for RATE_PIT_P
2015-04-09 20:19:57 +09:00
Jonathan Challinger
dc5bdd5ad8 AP_AHRS: use filtered INS output to compute _accel_ef_blended 2015-04-09 20:19:56 +09:00
Leonard Hall
2bf8f21b7a Copter: roll, pitch rate IMAX to 2000 2015-04-09 20:19:56 +09:00
Randy Mackay
a095a8c3a1 AC_PID: more protection against NaN and Inf 2015-04-09 20:19:55 +09:00
Randy Mackay
bdfe8bbc54 AC_AttControl_Heli: remove RATE_RP_MAX, RATE_Y_MAX 2015-04-09 20:19:54 +09:00
Leonard Hall
afcd1c6ec3 AC_AttitudeControl: sqrt controller on Stab 2015-04-09 20:19:43 +09:00
Leonard Hall
ae77c18a19 AC_PID: Protect against NaN and INF 2015-04-09 18:30:12 +09:00