Commit Graph
100 Commits
Author SHA1 Message Date
Julian Oes f9ddbd7e2a mpu6000: remove factory test for fmu-v2 2019-10-18 15:00:41 -04:00
Julian Oes de90543d6f FlightTasks: add Descend task to land without GPS
This adds a flight task to catch the case where we want to do an
emergency descent without GPS but only a baro.

Previously, this would lead to the navigator land class being called
without position estimates which then made the flight tasks fail and
react with a flight task failsafe. This however meant that landed was
never detected and a couple of confusing error messages.

This applies if NAV_RCL_ACT is set to 3 "land".
2019-10-18 16:18:19 +02:00
Julian Oes d3da4a92e0 msg: don't implement print_message for fmu-v2
This saves about 3.4k of flash for fmu-v2.
2019-10-18 11:54:24 +02:00
Julian Oes 2fcddd9b8d mavlink: fix uninitialized mavlink warnings 2019-10-17 08:44:53 -04:00
Julian Oes ec95378821 logger: fix uninitialized coverity warnings 2019-10-17 08:44:53 -04:00
Julian Oes 8e625285fc platforms: initialize strings
This might fix a warning about argv being a TAINTED_SCALAR further down.
2019-10-17 08:44:53 -04:00
Julian Oes 307dc3e32d mavlink: fix boot complete without lockstep
Without lockstep the actual monotonic clock of the host computer is
used. Therefore, this time is likely much more than 20 seconds and the
check if the boot complete happened in time will fail immediately.

Therefore, it probably makes more sense to count the time from the first
mavlink creation.
2019-10-10 08:58:34 +02:00
Julian Oes ea35923d3a navigator: bugfix to prevent NaN setpoints
The asinf function is NaN outside of -1 to 1. Therefore, it probably
makes sense to constrain the input to prevent NaN setpoints further down
the line.
2019-10-09 08:36:34 -06:00
Julian Oes 741f6787a7 mavlink: disable sending RC override
This was added to enable a Pixhawk to be used as an RC input for e.g.
SITL. As far as we're aware of that's not really used. However, sending
this can cause issues if multiple Pixhawks are in the same network.
Also, is uses up some of the MAVLink bandwidth.

Therefore, it's probably best to remove that feature for now.
2019-10-07 09:59:17 -04:00
Julian Oes 5e663b9321 Remove eigen leftovers
It looks like we're not using Eigen for a while now.
2019-10-07 12:04:50 +02:00
Julian Oes fa9ac6ecf6 github: tone stalebot down
My suggestion is to re-configure stale bot so it just adds the label
stale but does not close the issue/PR.

This enables us to look for outdated issues using the stale label and
close them.

This brings these advantages:
- No more endless re-opening of PRs and issues which is not fun (and I
  will eventually give up on).
- Less stalebot comment noise. (Because it is handy to look for all
  issues/PRs without any comments to see what is unanswered).
- I'm not listed as "participating" in all the issues/PRs just because
  I was just fighting the stalebot.
- Less notifications meaning we can see anything in the noise.
2019-10-01 10:35:28 -04:00
Julian Oes ce4290c8d4 mavlink: typo fix att -> act 2019-09-28 16:40:13 -04:00
Julian Oes b0035e5704 mavlink: prevent race if shut down immediately
If we do mavlink stop-all right after mavlink start, we do a perf_free
before actually having stopped the threads accessing the perf counters.
2019-09-28 16:40:13 -04:00
Julian Oes 0b368d043f mavlink: always check stream subscriptions (#13018)
This fixes the regression where we saw this in SITL:
ERROR [mavlink] system boot did not complete in 20 seconds

The reason was that the stream subscription requests were not checked
because the while loop was not running yet because mavlink was not
booted completely.
By moving the stream subscription requests into a function we can run
them even if we don't run the rest of the loop.
2019-09-25 14:37:08 +02:00
Julian Oes c8d13bacf2 pwm_out_sim: don't advertise garbage 2019-09-04 09:21:54 -07:00
Julian Oes 5e9cae11f8 controllib: fix for undefined sanitizer 2019-09-03 11:54:09 -05:00
Julian Oes 78d3986013 platforms: fix main function signature 2019-09-03 11:52:54 -05:00
Julian Oes a7c541d7e2 version: more tests to check tags with - prefix 2019-08-23 13:18:52 +02:00
Julian Oes 3fa3cbd28a version: add beta tag
This adds the "beta" tag and adds a dash before "rc" or "beta".
2019-08-23 13:18:52 +02:00
Julian Oes c3529baa5b jMAVSim: disable GUI using HEADLESS=1
@katzfey added the option to run jMAVSim without GUI. Now we just need
to read the HEADLESS env variable to use it.
2019-08-23 09:27:42 +02:00
Julian Oes 68078795c0 px_update_git_header.py: allow -beta/-rc in tag
This changes two things:
- This adds "-beta" as a valid tag suffix.
- This changes "rc" without "-" to "-rc". "rc" without is now described
  as deprecated and with "-rc" is preferred.
2019-08-22 18:45:50 +02:00
Julian Oes dd2d5c029f platforms: match usb-Hex_ProfiCNC device (#12772)
This means that we are able to detect and flash the Pixhawk Cube Black.
2019-08-22 01:32:39 -07:00
Julian Oes 82bee2bf54 mavlink: match commands aimed at any sysid/compid
When we send a command to any sysid or any compid, we need to match an
ack from a specific sysid or compid. If we don't do that, we keep
sending retransmissions and eventually time out.
2019-08-14 13:29:07 -04:00
Julian Oes a4fb18a6c4 commander: fix arming auth param translation
The int32 param COM_ARM_AUTH is mapped to a packed struct. However, this
struct was not actually packed (anymore) and therefore the values were
applied incorrectly.

I fixed this by applying the packed attribute. By using a union with a
int32_t I could rid of the warning about address-of-packed-member.
2019-08-14 13:29:07 -04:00
Julian Oes 98dfa30838 commander: fix disarming for rovers
We have to ignore the landed flag for rovers, it doesn't really apply
for them.
2019-07-26 02:52:38 -07:00
Julian Oes 308d91e5ff commander: prevent potential disarms in-air
This fixes the terrifying case where the drone disarms in-air just
because it receives a MAVLink disarm command. We now check param2 for a
magic number which enforces arming/disarming.

This is added to the mavlink protocol in:
https://github.com/mavlink/mavlink/pull/1162
2019-07-26 02:52:38 -07:00
Julian Oes 46c00ca6a4 vscode: add PX4_SIM_SPEED_FACTOR
This env variable can be changed to adapt the simulation speed.
2019-06-18 01:56:49 +02:00
Julian Oes 1cee945a22 vscode: use lockstep
This changes the VSCode debugging to use lockstep. For lockstep, the
rate needs to be 250 Hz.
2019-06-18 01:56:49 +02:00
Julian Oes e1671571c8 jMAVSim: use PX4_SIM_SPEED_FACTOR, not cli arg
In order to be consistent between Gazebo and jMAVSim we should be using
the env variable PX4_SIM_SPEED_FACTOR in the same way. This enables
vscode to set the speed using the env variable.
2019-06-18 01:56:49 +02:00
Julian Oes fea284f728 vscode: start gzclient GUI for Gazebo simulation 2019-06-18 01:55:21 +02:00
Julian Oes d2c824c534 gpssim: don't advertize uninitialized data
According to valgrind uninitialized bytes were being advertized.
2019-06-07 17:10:35 -04:00
Julian Oes e7d0cabb52 logger: fix uninitialized member variable
This was reported by Coverity Scan.
2019-06-05 14:46:03 +02:00
Julian Oes bece63866d platforms: remove px4_backtrace 2019-06-05 08:16:19 +02:00
Julian Oes 35074aaffd posix: remove segfault handler
I could not get a core dump without removing the segfault handler, hence
this change.
2019-06-05 08:16:19 +02:00
Julian Oes f3620f7018 Remove all leftover PX4_BACKTRACE calls 2019-06-05 08:16:19 +02:00
Julian Oes 5273e2af04 Tools: remove decode_backtrace.py
This hasn't been used in a while and didn't quite work with the
backtraces produced anyway.
2019-06-05 08:16:19 +02:00
Julian Oes 6f9598c76a topic_listener: document how to exit
This was left out when the feature was added.
2019-06-04 09:24:00 -04:00
Julian Oes 2ac8841f35 vtol/fw/mc: fix VTOL enum shadowing
This changes the enums used for various VTOL states to enum classes
which makes them type-safe and should avoid shadowing.

This change was motivated by a Clang warning about shadowing of the
enum const TRANSITION_TO_FW which was declared twice, once in
vtol_type.h and once in standard.h.

This change only removes the shadowing but presumably these enums could
be cleaned up and consolidated further.
2019-05-29 23:51:10 -04:00
Julian Oes b135503447 wqueue: check before dereferencing
This was found by coverity.
2019-05-29 08:57:46 -04:00
Julian Oes 29915cbc6d BlockingQueue: default initialize _data
This was reported by coverity.
2019-05-29 08:57:46 -04:00
Julian Oes 4d7a1afd92 Revert "Revert "simulator: remove hack for diff_pressure noise""
This reverts commit 2142459027.
2019-05-29 08:56:33 -04:00
Julian Oes b29e5e3adb hysteresis: remove dependency/side effect on time 2019-05-27 09:57:50 +02:00
Julian Oes 7b9562e3b1 hysteresis: move out of systemlib, move to gtest
This moves the hysteresis test out of the systemlib and makes it its own
small library. Since it still depends on hrt_absolute_time this does not
link yet. My attempt to get all link dependencies together failed.
2019-05-27 09:57:50 +02:00
Julian Oes 12374490cb visibility.h: clean up includes, add comments
This tries to make the visibility.h header clearer and better
structured. We don't actually need the ifdef for lockstep enabled or
disabled because that's now handled elsewhere.
2019-05-20 12:39:02 -04:00
Julian Oes 84537921e9 visibility.h: fix missing headers 2019-05-20 12:39:02 -04:00
Julian Oes 7a768dbab3 lockstep_scheduler: always use the same code
This define was not set anyway, and in my opinion we should
not use different code for tests anyway.
2019-05-20 12:39:02 -04:00
Julian Oes 52099f5792 cmake: include lockstep_scheduler test
This makes sure we add the lockstep_scheduler_test even if the
ENABLE_LOCKSTEP_SCHEDULER is not set to yes. This means the
lockstep_scheduler is not used for SITL but the CMakeLists.txt file
still used and the test added.
2019-05-20 12:39:02 -04:00
Julian Oes 8d8799097d lockstep_scheduler: convert test to gtest 2019-05-20 12:39:02 -04:00
Julian Oes 9d8015d029 modules/lib: ignore address-of-packed-member
For now we need to ignore this warning which GCC 9 shows for the MAVLink
headers.
2019-05-16 13:06:25 +02:00
Julian Oes b20feacdb5 drivers: fix -Wstringop-truncation
GCC 9 complained about stringop-truncation which is a cautionary message
to prevent using strncpy with non-null terminated strings.

We can fix this by copying one byte less than the destination size and
then manually adding the null termination, as we already do.
2019-05-16 13:06:25 +02:00
Julian Oes 01fdd00c41 init.d-posix: $ is apparently not needed here 2019-05-14 11:04:04 +02:00
Julian Oes ffeeedc310 init.d-posix: raise timeouts for fast SITL
When simulating with lockstep we can raise the speed by setting the env
variable `PX4_SIM_SPEED_FACTOR`. Some inputs like RC, MAVLink heartbeats
from a ground station, or offboard controls via MAVLink are still at the
normal speed which leads to timeouts getting detected in PX4.

To work around this issue we can automatically multiply the timeout
parameters by the speed factor.
2019-05-14 11:04:04 +02:00
Julian Oes 79651ed6a4 launch: count multi UAVs from 0
This fixes the IDs of multi UAVs started with ROS/Gazebo.

Previously the 3 vehicles were displayed in QGC as Vehicle 2, 3, 4.
With this change it is more intuitive Vehicle 1, 2, 3 and this is
also consistent with the way it is documented and how it is in
jMAVSim.
2019-05-13 10:33:17 +01:00
Julian Oes e80d3940a6 jmavsim_run.sh: enable SDK UDP port
We forgot to add the option -s for jmavsim_run.sh which starts jMAVSim
with the UDP port connecting to the SDK (port 14540).
2019-05-09 18:27:14 +02:00
Julian Oes d2ab31f0d7 jMAVSim: update submodule
This fixes cross-talk between the QGC and SDK UDP ports for HITL.
2019-05-09 18:27:14 +02:00
Julian Oes e1f42ae767 sitl_run.sh: use tabs, not spaces 2019-05-09 12:02:56 -04:00
Julian Oes abed18dd0d sitl_gazebo: update submodule
This brings support for UDP port 14550 and 14540 for HITL simulation.
2019-05-09 12:02:56 -04:00
Julian Oes 0a978f51e6 px4_atomic: use volatile hack for Snappy
It looks like the atomic builtins are not available using QuRT and the
Hexagon toolchain, so our best bet is to use `volatile` for the atomics.
2019-05-06 12:06:01 -04:00
Julian Oes e6621bf7fb boards: ignore sih for Snappy
When sih (simulation in hardware) was compiled for Snapdragon, we got
the linking problem below. I'm not sure why, supposedly the symbol
`double sin(double)` is missing.

undefined PLT symbol _LSin (705) /libpx4.so (symbol.c:303)
2019-05-06 12:06:01 -04:00
Julian Oes 7dc10d2bea CMakeLists.txt: fix cmake warning
It implicitly converted STRINGS to STRING.
2019-05-02 16:26:37 -05:00
Julian Oes 9e96c4a4ea sitl_gazebo: update submodule (#11939)
This should fix the regression where the mag values were not properly
initialized and caused EKF2 to stop in CI.
2019-04-30 23:18:04 -05:00
Julian Oes 611417acd2 ROMFS: use auto-disarm in HITL Gazebo with Iris
It is expected that Iris auto-disarms the same as in SITL.
2019-04-30 06:39:35 -05:00
Julian Oes 4ef59e0a59 standard_vtol: transition at airspeed of 16 m/s
This way we prevent a big dip due to TECS in altitude when the
transition happens at 10 m/s already. Apparently the rule of thumb
is to set this transition speed at the same as airspeed cruise speed.
2019-04-28 18:22:21 -04:00
Julian Oes 4a71984f77 simulator: remove hack for diff_pressure noise
The noise for airspeed is now applied on the Gazebo side and we can
remove this hack.
2019-04-28 18:22:21 -04:00
Julian Oes 585b9d8cf1 sitl_gazebo: update submodule
Includes:
- Fix for vibration on ground for standard_vtol.
- Noise for diff pressure / airspeed on Gazebo side.
- Fix for macOS magnetometer plugin linking error.
2019-04-28 18:22:21 -04:00
Julian Oes c95394f57f navigator: fix uninitalized param values
By declaring the params above the navigator modes inheriting from
mission block we make sure the params in navigator are set before
read in the constructor of mission block.
2019-04-24 11:15:43 -04:00
Julian Oes 90ee26dd2d mavlink_mission: properly initialize padding
This prevents uninitialized padding from being written to dataman.
2019-04-24 11:15:43 -04:00
Julian Oes 4c56994d7a mavlink_system: set update_counter for safe points
This variable was not set and lead to uninitialized memory being written
to dataman.
2019-04-24 11:15:43 -04:00
Julian Oes bf32ff32f8 dataman: make _file_write more readable
This should not be any functional change. The only difference are the
variable scopes, and early return versus nested ifs.
2019-04-24 11:15:43 -04:00
Julian Oes a9c3bce20d px_uploader.py: fix version check
Presumably older versions of pyserial do not implement __version__ but
only VERSION, so we need to check for that as well.
2019-04-24 14:47:10 +02:00
Julian Oes c78aaeb0f7 ak09916: fail if device is not found
This should fix the case where the driver initializes even though the
device is not found. The change changes the behavior to return ERROR
if the whoami call fails several times instead of returning OK.

Also, the reset() and thus probe() calls are moved before initializing
the ringbuffer and device name.
2019-04-20 12:52:56 +02:00
Julian Oes e88f1b33b2 FlightTasks: fix mission DO_CHANGE_SPEED
This fixes the issue where the  DO_CHANGE_SPEED command was ignored and
the drone always travelled at the MPC_XY_CRUISE velocity.
2019-04-12 15:47:36 +02:00
Julian Oes cd9b3d6b27 CI: move no-ninja builds to Jenkinsfile 2019-04-11 10:07:00 +02:00
Julian Oes 471d05381b CI: also build PX4 SITL without ninja 2019-04-11 10:07:00 +02:00
Julian Oes f74aab33ad CI: also build two targets without ninja
This should prevent future regressions when compiling with "Unix
Makefiles" or others instead of ninja as the generator behind cmake.
2019-04-11 10:07:00 +02:00
Julian Oes 5b3a6facfa cmake: fix races without ninja
This fixes build races which happened if "Unix Makefiles" instead of
ninja-build was used as the cmake backend.

For any dependencies of commands on files we need to create a target.
Otherwise, if "Unix Makefiles" are used as the generator the commands
are run in parallel on the different files which often can lead to
races or redundancies in our build.

A nice write-up can be found here:
https://samthursfield.wordpress.com/2015/11/21/
cmake-dependencies-between-targets-and-files-and-custom-commands/#
custom-commands-and-parallel-make
2019-04-11 10:07:00 +02:00
Julian Oes 4907b87882 sitl_gazebo: update submodule
This should fix the macOS build.
2019-04-05 09:42:34 -04:00
Julian Oes 95ab984f4c commander: fix toggling datalink lost and regained
When using QGC and/or the Dronecode SDK it was possible to get in a
state where the two mavlink instances were both publishing their last
heartbeat_time and cause commander to consistently toggle between
data link lost and regained. With this fix, we only ever look at the
very last heartbeat time and therefore seem to avoid this issue.
2019-04-05 09:25:40 -04:00
Julian Oes 98857b4b94 ROMFS: don't check for UAVCAN_ENABLE param in SITL
This prevents a warning message being printed to SITL users because the
UAVCAN_ENABLE param does not exist.
2019-04-05 08:18:17 +02:00
Julian Oes 82682ac716 init.d-posix: re-use rc.logging
With this change the param SDLOG_MODE can be used for SITL as well.
2019-04-05 08:18:17 +02:00
Julian Oes a21242b0e3 FlightTasks: fix mission DO_CHANGE_SPEED
This fixes the issue where the  DO_CHANGE_SPEED command was ignored and
the drone always travelled at the MPC_XY_CRUISE velocity.
2019-04-03 11:21:12 +02:00
Julian Oes be8ad46fc9 px_uploader.py: write timeout workaround
This is a workaround for the write timeout that we have seen for some
host computers trying to flash the firmware.

We don't know the root cause of the problem but we do observed the
following:

- For blocking writes with timeout (Pyserial write_timeout=0.5):
  write() throws SerialTimeoutException. In systrace we see that the
  select() call after write waiting for the write to be finished hangs
  and finally times out.
- For blocking writes without timeout (Pyserial write_timeout=None):
  write() hangs indefinitely. In systrace we see that the
  select() call after write waiting for the write to be finished hangs.
- For non-blocking writes:
  write() works but flush() hangs. In systrace we see that
  ioctl(fd, TCSBRK, 1) which is (correctly) triggered by termios tcdrain
  hangs.

Inspecting USB traffic using usbmon, we can see that the data which is
written actually seems to be sent and looking at responses from the
Pixhawk bootloader and the timings it looks like all the data has
arrived.

This workaround uses non-blocking writes without flushing and this
seemed to prevent the issue from happening so far.

Debugging was done in collaboration with Beat Küng and David Sidrane.
2019-03-27 14:53:00 +01:00
Julian Oes 187f3f2834 SITL: interim fix for replay
The replay functionality was broken with lockstep. This is an interim
fix for the replay functionality.

In the longer term it would be nice to leverage the lockstep speedup
for the replay.
2019-03-27 12:55:37 +01:00
Julian Oes 7be05396ba px_uploader.py: check for pyserial
If we dont explicitly check for pyserial, we can have the case where the
import works but the Serial object creation fails. However, we don't see
this because we have this huge try/catch block which swallows
everything.
2019-03-27 07:55:05 +01:00
Julian Oes ed3b924f97 nuttx: update submodule (#11705)
This fixes a build error due to a Scandinavian letter in the help text.
2019-03-23 11:09:35 -04:00
Julian Oes b54ca67de9 lockstep_scheduler: check if mutex is still valid
It turns out that we can fix the unit tests of the lockstep_scheduler
just by checking if `passed_lock` is not `nullptr`.

Without this check, the unit tests segfaulted.
2019-03-15 13:38:11 +01:00
Julian Oes 2ebb9d2ab5 mixer_multirotor.py: fixes for Python3
This fixed running `make tests` on Arch Linux where Python 3 is the
default.
2019-03-15 10:53:55 +01:00
Julian Oes 18f7ee2d50 jMAVSim: update submodule, use -lockstep CLI arg
This updates the jMAVSim submodule which includes a fix for HITL.
In order to fix HITL, a CLI argument `-lockstep` was required to enable
lockstep. This has now been added to the command in jmavsim_run.sh.
2019-02-18 20:25:50 +00:00
Julian Oes 4dea79b2d6 sensors: prevent double orb_copy of gyro topic
By using the uORB::Subscription API we use a separate subscription
rather than `orb_copy` on the existing file descriptor used in
sensors through `px4_poll`.

This fixes a very peculiar problem that we observed in SITL in CI for
fixedwing. The events were as follows:

1. `sensors` does `px4_poll` on the gyro topic (as normal), and gets
   the latest sample using `orb_copy`.
2. A parameter update happens when the mag is initialized and triggers
   `VotedSensorsUpdate::parameters_update()` where `orb_copy` happens
   before the main loop in `sensors` has started a `px4_poll`.
3. `sensors` now does the `px4_poll`, however waits indefinitely because
   it has already copied the latest sample.
   Also, the `px4_poll` will never time out because in lockstep the
   simulator waits for the next actuator control message which it never
   gets and therefore it never sends the next sensor message with a new
   timestamp to advance the time.

This only happens for fixedwing because there is only one "uORB path"
through the system unlike for multicopter where a gyro sample can get
picked up by either `sensors` or directly `mc_att_control`, so the
system can survive if `sensors` has "drops".
2019-02-18 11:44:07 -05:00
Julian Oes b17c0a11ab mavlink: improve comments about message forwarding (#11323)
This removes the confusing ugly magic number of 233 introduced as part
of https://github.com/PX4/Firmware/pull/7670.

Also, the convoluted if is cleaned up using 3 separate bools with some
comments to explain what's going on.

This should not change anything function-wise except that the flight
controller could now potentially also use system ID 233 and not break
forwarding.
2019-02-05 10:33:49 -05:00
Julian Oes 027d7e632e sitl_multiple_run.sh: fix port description
This has changed as we changed to TCP with the lockstep implementation.
2019-01-30 09:51:30 +01:00
Julian Oes e1472818dc mavlink_mission: round lat/lon
This avoids casting errors. An alternative to `std::round` would be to
add 0.5 before casting for positive values and subtract 0.5 before
casting for negative values.
2019-01-22 09:49:24 -05:00
Julian Oes 2e3fa30c83 sitl_gazebo: update to revision that doesn't abort on timeout (#11196)
* this should fix the CI failures where we intermittently saw SIGABRT. (fixes #11144)
2019-01-11 10:23:16 -05:00
Julian Oes b0dd55e80b jMAVSim: update submodule
This should fix:
- HITL regression (Init MAVLink forever).
- Starting using default arguments.
2019-01-08 09:49:47 -05:00
Julian Oes 032e64aaf2 px4_sem: set errno, return -1 on any error
- Don't duplicate the ret variable to err.
- Return -1 on any error, 0 otherwise.
- Set errno to return value of pthread_cond_timedwait.
2019-01-01 20:35:42 +01:00
Julian Oes 23653f9f39 lockstep_scheduler: fix return value, remove errno
The API of cond_timedwait was wrong. It used return -1 and set errno
instead of returning the error as specified for pthread_cond_timedwait
which it tries to mock.
2019-01-01 20:35:42 +01:00
Julian Oes 29bfdb0c88 platforms: fix linking for qurt (#11115) 2018-12-29 16:21:52 -05:00
Julian 3e87013936 simulator: fix TCP on Cygwin-Windows
It turns out that `sendto` does not work for TCP on Cygwin-Windows,
instead we need to use `send`. This required some refactoring since we
need to have the internet protocol and the port stored as a member
variable.

This should fix that lockstep SITL simulation was not working on
Windows.
2018-12-27 07:49:12 +01:00
Julian Oes 73ed9deac5 mixer: add missing include 2018-12-22 10:32:18 +01:00
Julian Oes ea87bcb5a2 DriverFramework: update submodule
Now that the lockstep changes are merged to master.
2018-12-22 10:32:18 +01:00