The simulator had hardcoded component ID and system ID (sysID was 0), ignoring what was set up in the params MAV_SYS_ID and MAV_COMP_ID. This caused an issue with multi-vehicle simulations that that rely on sysID to identify the vehicles.
Signed-off-by: Gabriel Moreno <gabrielm@cs.cmu.edu>
Before if you were above the maximum altitude you could not command to
go down anymore until the position controller had overshoot to under the
maximum altitude again.
using only <px4_getopt.h> as include, cleanup related includes
added check that all the option are valid (myoptind >= argc). if there are invalid options on some script that might now lead not to run commands
My recent PR exceeded the 50 char limit (apparently the last character must be null?).
This new attempt changes: "Preflight Fail: Horizontal position estimate Error" to: "Preflight Fail: Position estimate Error"
In fact, this newest wording is more easily understood by the average user and is actually more consistent with the other COM_ARM_EKF_xxx related errors:
COM_ARM_EKF_HGT --> "Preflight Fail: Height estimate Error"
COM_ARM_EKF_VEL --> "Preflight Fail: Velocity estimate Error"
COM_ARM_EKF_POS --> "Preflight Fail: Position estimate Error"
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".