Commit Graph
100 Commits
Author SHA1 Message Date
Julian Oes 62188f6151 px_romfs_pruner.py: PEP8 and comments fixes 2018-11-20 15:16:54 +01:00
Julian Oes 177d14c8ea px_romfs_pruner.py: remove deprecation warning
The open flag `U` causes a deprecation warning starting with Python 3.4.
The option to open all kinds of newlines as `\n` has been replaced with
the argument `newline=None`. However, this argument is not available for
Python 2 unless we use `io.open` instead of `open`.
2018-11-20 15:16:54 +01:00
Julian Oes d7c34ddee4 mavlink: fix yawing to North for LOITER_TIME (#10828)
* mavlink: yaw should wrap at 2 pi, not pi
* mavlink: use newer rad/deg conversion
2018-11-13 14:32:40 -05:00
Julian Oes 428c2f72bd mavlink: always acknowledge a param write
This change has two effects:
1. We always acknowledge a param write no matter if the value was
   actually changed or not. This is according to the spec:
   https://mavlink.io/en/services/parameter.html#write-parameters
2. This fixes the bug where int32 parameters were not actually acked
   because the memory of the param value was casted directly to float
   and then compared. In the case of a int32 parameter set from 0 to 1
   it would mean that the cast to float of the memory representation
   was still 0 and therefore it was assumed to be "no change" and the
   ack was omitted.
2018-11-01 00:06:22 +01:00
Julian Oes 39e0a39224 uavcan: update submodule
This fixes the build with Python 3.7.
2018-10-04 13:46:17 +02:00
Julian Oes 9f7f30a166 jmavsim_run.sh: fall back to Java 9 on macOS
This checks if we are on macOS and if we have Java 8 installed. If yes,
it falls back to Java 8 by setting JAVA_HOME.

This avoids https://github.com/PX4/jMAVSim/issues/81
2018-09-16 17:40:27 -04:00
Julian Oes fec3422f54 jmavsim_run.sh: fix shebang and exit on error 2018-09-16 17:40:27 -04:00
Julian Oes 1789083ab3 jMAVSim: update to latest master
This should resolve the issues with Java 9/10.
2018-09-16 17:40:27 -04:00
Julian Oes a9070ce6e6 sitl_run.sh: fix process grep for jMAVSim
It seems that the oneline to find the process ID of any running jMAVSim
instance was not working correctly.
1. On Linux, the name of the process does not contain Simulator but
   jmavsim_run.jar. Also, it triggers incorrectly, if you have opened
   Simulator.java using the command line :).
2. The cutting to get the PID at the end does not work as intenteded and
   gives the username instead of PID, at least on Arch Linux. Using awk
   should fix this.
2018-09-11 14:09:41 +02:00
Julian Oes d370a7c2b5 commander: remove unused HITL transition function
To my knowledge this hil transition function is not used anymore,
however, it makes sending the DO_SET_MODE command unnecessarily complex.
In my opinion the DO_SET_MODE command should only change the mode but
not other things like arming (already removed) and HITL state (this
commit).

Often times, I was seeing the error message "Set SYS_HITL to 1 and
reboot to enable HITL." when using QGC with a vehicle in HITL.

HITL is set via parameter which then has an impact in the startup script
where the CLI argument `-hil` is added to some of the commands that
require it (like commander as well).
2018-08-30 09:16:02 +02:00
Julian Oes f3e576b6f4 commander: remove set but unused HITL flag
This flag does not seem to be used anywhere.
2018-08-30 09:16:02 +02:00
Julian Oes 0c5c741b1a add posix shell
squashed & rebased version, not including:
- listener changes
- src/firmware renaming

Commits:

tag_to_version.py: fix Python3 error

subprocess.communicate returns bytes instead of a str which is not the
same for Python3. Therefore, we need to decode the bytes.

cmake: remove folder src/firmware

The folder src/firmware was not intuitive. Why would the binaries for
SITL be inside a src and why even inside a src/firmware folder. Also,
the rootfs was put there which made it even more confusing.

The CMakeLists.txt files are moved into cmake/ and get now called from
the main CMakeLists.txt.

qshell: support for return value

Instead of just sending commands, qshell will now also wait until
the command has finished on QURT and sent back a return value. This will
allow all modules on the DSP side to be spawned from the Linux side
meaning that we only need one config/startup file instead of two.

adb_upload: create folders before pushing

Previously the script failed if the folder on the destination was not
already existing. This therefore makes pushing easier.

posix: spawn PX4 modules in bash

This adds the possibility to spawn PX4 modules out of bash. Basically,
the main executable can now be started as a server/daemon or as a
client.
The server replaces the existing functionality of the main exe with
the pxh shell, however, it also opens a pipe that clients can talk to.

Clients can run or spawn PX4 modules or commands by connecting to the
server over the pipe. They clients will get the stdout and return value
of their commands via a client specific pipe back.

This work will allow to start all modules using a bash script similar to
the way it is done in NuttX where the NuttShell scripts the startup
scripts and starts the modules.

SITL: use new client shell in SITL

This is a first step to use the new shell capabilities for SITL.
The new startup bash script rcS merges (and therefore replaces) the two
existing scripts rcS_gazebo_iris and rcS_jmavsim_iris.

More cleanup will be necessary for the rest of the SITL startup scripts.

Snapdragon: use new shell to start all modules

Instead of different mainapp.config and px4.config files, we can now use
a unified rcS bash script which starts all the modules based on
parameters, mainly the SYS_AUTOSTART param.

Snapdragon: fix the airframe description

pxh: argv needs to end with a nullptr

The comment was wrong that argv needs an additional 0 termination.
Instead it needs a nullptr at the end.

px4_posix_tasks: variable cleanup

The px4_task_spawn_cmd function got a cleanup while debugging, however,
no functional changes.

Snapdragon: move some drivers to 4100 config

These drivers are supported by the community, so they go into the 4100
config.

Snapdragon: update 210qc platform

px4_daemon: use doxygen comments

apps.h_in: fix string printf: use .c_str()

px4_daemon: \b -> \n in printf

px4_daemon: handle error in generate_uuid (close the file on error)

posix main: some clarifications in comment (it's the symlinks not the script aliases)

cmake: remove new install command again

This one was probably wrong and untested. Installing needs revisiting.

POSIX: remove argument USES_TERMINAL

POSIX: copy init and mixer files for SITL

Instead of using non-working install commands, the mixer and startup
files are now copied as part of the build in cmake.

adb_upload.sh: remove leftover commented printf

POSIX main: just the pointer instead of memmove

POSIX main: remove chroot

chroot is removed because it hasn't been used anywhere and seems
untested.

px4_daemon: remove client pipe when cleaning up

px4_daemon: fail if the client pipe already exists

The client pipe is supposed to be specific (by UUID), so the path
shouldn't exist already.

history: limit the number of history entries

This is a protection to avoid filling the memory if we are entering a
lot of commands (e.g. auto-generated).

px4_daemon: add a threadsafe map and use it

px4_daemon: whitespace

px4_daemon: fix client parsing

Sometimes the client ends up reading more than one packet in one read.
The parsing is not made for this and would require a (ring)buffer for
it.

The solution of this commit just reads as much as needed from the pipe
which avoids having to do buffering and parsing.

posix: changes sitl_run.sh and main.cpp cleanup

This changes the paths in sitl_run.sh quite a bit to allow the px4
binary to run in the rootfs directory which should make it convenient
and very close to the NuttX variant.

Also main.cpp got a big cleanup after the big rebase with some
conflicts. Quite some functionality was removed but it has yet to be
seen if it needs to be re-added.

px4_log: cleanup log levels, now they make sense

Before DEBUG and INFO log levels where inverted which didn't make much
sense in my eyes.

dataman: fix path for bash shell

logger: fix paths for bash shell

mavlink: fix paths for bash shell

param: fix path for bash shell

inav: fix paths for bash shell

sdlog2: fix paths for bash shell

ROMFS: add forgotten mixer to list

SITL init: more models, more options

- Support for different models using the unified startup
script rcS.
- Support to choose the estimator by setting the environment variable
  PX4_ESTIMATOR.
- Support to choose the logger by setting the environment variable
  PX4_LOGGER.

rcS: fix string comparison

listener: use template file

Instead of having all of the C++ code inside the Python file it is
nicer to have a separate template file with the C++ headers, etc.

px4_log: add PX4_INFO_RAW for raw printfs

This allows to do custom formatting but is still transported over
sockets to clients.

topic_listener: use PX4_INFO_RAW instead of printf

commander: use PX4_INFO_RAW for status

listener: rewrite to classes and factory

posix: fix some argument warnings

generate_listener.py: by accident changed shebang

listener: big refactor of the generator

Hopefully this makes it easier to read and change in the future.

rcS: manually take over rebase changes

listener: remove leftover try

listener: properly clean up topic instance

rcS: take over some vehicle specific changes

posix-configs: vehicle specifics to separate files

posix-configs: remove leftover lines

uORBDevices: new PX4_INFO_RAW instead of printf

px4_log: just use printf on NuttX

listener: use less binary space, strip on NuttX

generate_listener.py: remove commented code

cmake: fix syntax error from merge

px4_daemon: fixes after rebase of apps.h/cpp fix

px4_daemon: namespace missing

posix: only create stub for fsync on QURT

unitests: reduce dependencies of param test

This makes the unit test compile and link again after the bash changes.

QURT: some compile fixes after a rebase

SITL: arg change for sitl_run.sh to use rcS_test

This allows to use a custom startup file for testing.

SITL: add the folder test_data

SITL: implement shutdown command as systemcmd

The shutdown command needs to be a proper systemcmd, otherwise the alias
and symlink generation doesn't work and we end up calling shutdown of
the host computer which is to be avoided.

px4fmu_test: same IO_pass mixer as px4fmu_default

px4fmu_test: use normal quad x mixer

There is no good reason to use a specific test mixer, except more cmake
code around it. Therefore just use the same mixer as default, and at
some point px4fmu_test and px4fmu_default can get merged

POSIX: cleanup, dir and symlink fixes

This cleans up the logic behind the symlinking and creating directories.

POSIX: correct arg order in usage info

tests: fix paths for SITL tests

POSIX: printf fix

sitl_run.sh: try to make this run on Mac as well

cmake: try to make jenkins happier

Path cleanup, the bin is no longer in src/firmware

POSIX: fix symlink logic

SITL: prefix all exported env variables

cmake: fix path for ROS tests

integrationtests: fix log path

launch: try to make tets with ROS working again

px4_defines: fix after wrong merge deconflicting

px4_defines: get paths for POSIX correct

cmake: fix cmake arguments

This was fine with cmake 3.6 but did not work with cmake 3.2.2

cmake: use cp instead of cmake -E copy

cmake -E copy does not support copying multiple files with versions <
3.5. Therefore, just use cp for now.

ROMFS: fix build error after rebase

cmake: fix paths in configs

launch: use `spawn_model` again

cmake: various fixes after big rebase

param: path fixes after rebase

posix platform: fixes after rebase

test_mixer: fix screwed up rebase
2018-08-08 21:09:39 +02:00
Julian Oes 462cf131d5 mavlink: add sysid to UUID
To avoid that multiple SITL instances have the same UUID we add the
mavlink system ID to the UUID which is sent via mavlink.

This should resolve the case where multiple vehicles show up with the
same UUID in simulation.

Note that the UUID show in `ver` will still be the same for all
instances.
2018-07-27 11:49:28 +02:00
Julian Oes 80cac6561f sensors: no temperature compensation in HITL
Temperature compensation is not supported in HITL. Therefore, don't try
and fail. This basically removes the confusing error message that we get
in HITL.
2018-07-24 18:56:36 +02:00
Julian Oes 11d4c32cd4 px_uploader: fix unknown variables 2018-07-17 07:44:58 -07:00
Julian Oes 8b91a68fea px_uploader: white space PEP8 fixes 2018-07-17 07:44:58 -07:00
Julian Oes 6ff9fd2209 calibration: remove warning message
The calibration warning was only used in the ESC calibration and in all
cases it actually meant that the calibration failed. In order to keep
the API as small as possible, I've deprecated the warning string and
converted the warning messages to failed messages.
2018-06-29 16:07:32 +00:00
Julian Oes 193993c54f px_uploader: fix typo and Python 3 issue 2018-06-29 08:46:45 +00:00
Julian Oes b0ec64efe8 px_uploader: fixed a couple small PEP8 warnings 2018-06-29 08:46:45 +00:00
Julian Oes 48edf9b65e px_uploader: remove commented out line 2018-06-29 08:46:45 +00:00
Julian Oes 4e43cc3518 px_uploader.py fix flashing issue (#9792)
This fixes a problem where the pyserial write call gets stuck.
It happens on a specific Fedora 28 system with internal USB ports as
well as USB hubs.
It is not clear why the problem is resolved but it is clearly
reproducible that with a timeout of 0, the write can get stuck and with
a timeout > 0 it works every time.

The exception added as part of this commit makes sense but has never
been triggered in my testing.
2018-06-28 20:18:22 -04:00
Julian Oes 27e75920bd px4io: fix NuttX build
This change lead to a build error and is therefore reverted here.
2018-06-11 12:09:36 +02:00
Julian Oes f09f305866 Updated mavlink submodule
This fixes the compiler warning with GCC 8.
2018-05-21 16:49:52 +02:00
Julian Oes e08ab0646f sitl_gazebo: update submodule
This brings Gazebo 9 compatibility.
2018-03-28 16:26:54 +02:00
Julian Oes 9c6b1a0f04 navigator: fix incorrect takeoff altitude
This fixes a problem where we do not properly go to the set takeoff
altitude but end up lower.

The problem was that the setpoint triplet is reset when the navigation
mode changes. So in this case, the triplet is reset when we switch from
takeoff to loiter which can happen before reaching the actual takeoff
altitude.

The fix is an ugly hack to prevent the reset in the case of takeoff to
loiter. A better solution would be to remove the general reset and have
all navigation modes do the proper resets themselves.

This hotfix should however be lower risk.
2018-03-07 08:48:44 +01:00
Julian Oes 38e5a06136 jMAVSim: update submodule again
This gets rid of a printf.
2018-02-26 10:37:34 +01:00
Julian Oes 3917eb2d00 mavlink: don't send wrong time
This prevents the autopilot from sending an invalid unix timestamp.
Usually, if no time is set yet by a GPS, the date is somehow set
to 2000-01-01, therefore we can ignore anything earlier than 2001.
2018-02-23 16:14:02 +01:00
Julian Oes 4cac6d1a44 tune_control: added define for tune strength
This adds a define for the tune strength instead of hard-coding it with
a magic number.
2018-02-22 15:24:46 +01:00
Julian Oes a6e863ac89 sitl_gazebo: updated submodule (#8917)
* This includes the new basic camera control.
2018-02-19 09:28:34 -05:00
Julian Oes cc36c8ee37 mission: warn at 2/3 of the max distance
This was wrong, instead of warning at 2/3 of the max distance as
mentioned in the comment, we would start to warn at 3/2 of the distance
which would then never actually happen.
2018-02-12 17:36:54 -05:00
Julian Oes d646abcee7 px_uploader: improve silicon check
- Move check to proper location, out of the try catch block for OTP.
- Add Pixhawk specific check to notify users that want to flash
  px4fmu-v3_default on Pixhawks with older v4 bootloaders that do not
  support the silicon errata check.
2018-02-04 18:14:51 +01:00
Julian Oes a1ab84e5b9 px_uploader: make rev check a bit more intuitive 2018-02-04 18:14:51 +01:00
Julian Oes d175a75691 px_uploader: fix Python3 upload
This fixes the error below when using Python3:

  File "Tools/px_uploader.py", line 128, in
  __init__
      self.image.append('\xff')
      TypeError: an integer is required
2018-02-03 09:33:13 -05:00
Julian Oes 9c86cdab2e Robustify mission upload/download (take 2) (#8794)
* Revert "mavlink_mission: don't retransmit automatically"

This reverts commit 4e008fe89120e24e321e93fb551753242797f022.

* mavlink_mission: don't retry to send mission item

The mission items need to be requested one by one by a ground station.
This is a "pull" protocol and we should not retry to "push" the mission
items down.

If we do this we can trigger the situation where the autopilot keeps
retrying and the ground station does not time out because it keeps
receiving items (even though the items are the wrong ones).

* mavlink_mission: reduce retry timeout

When actively re-requesting lost mission items, we can be more agressive
and therefore lose less time when a mission item is lost on the way.
2018-02-01 16:59:22 -05:00
Julian Oes 757f0e7334 mavlink_mission: straightaway send item again
Instead of using a timeout to resend a mission item, we should directly
send the mission request again. This is needed because we removed the
automatic resending which lead to troubles.
2018-01-25 15:31:40 +01:00
Julian Oes d5219c8bc0 mavlink_mission: answer with mission NACKs
if anything doesn't go according to protocol we should not just throw
warnings but actually tell the ground station with a mission nack.
2018-01-25 15:31:40 +01:00
Julian Oes e43cc9a9c1 mavlink_mission: send request again if unsupported
When we receive a MAV_MISSION_UNSUPPORTED, we should try to send a
mission request again with or without int mode.
2018-01-25 15:31:40 +01:00
Julian Oes ffc7f37f12 mavlink_mission: don't retransmit automatically
This is an attempt to fix mission upload and download with QGC on a
lossy link. The way it should work according to the protocol on
https://mavlink.io/en/protocol/mission.html is that in general
the ground station should be concerned about timeouts and
retransmission. This means the autopilot does not need to retransmit by
itself but just answer requests.

This seems like it would make the transfer less robust, however, it
actually resolves an edge case where QGC fails to make requests because
it gets spammed by the autopilot and keeps resetting the timeout.
2018-01-25 15:31:40 +01:00
Julian Oes b7404ad6c1 vmount: fix new input getting lost in throttling
This fixes the case where a new gimbal input gets lost in the output
throttling.

This is required because an input is potentially set only once and
then not computed again. In the failure case, control_data is set
to nullptr in subsequent calls and therefore not used for the output
calculation ever.
2018-01-18 11:09:17 +01:00
Julian Oes b468551b6c vmount: remove mavlink dependency
Let's just hardcode 0 because we don't want to include the mavlink
headers just for this.
2018-01-18 11:09:17 +01:00
Julian Oes 3adb389b7c vmount: don't ignore commands to all component ids
This resolves the case where a gimbal command assembled by
QGroundControl is rejected because the component id is set to 0 (for
all) and the component id of the vehicle is e.g. 1.
2018-01-18 11:09:17 +01:00
Julian Oes 14cc9e9919 mavlink_messages: fix length of NAV_CONTROLLER msg
This was caught in an unrelated review.
2018-01-05 19:53:41 +01:00
Julian Oes f3bd241dbe jMAVSim: update to latest master
This brings some support for mavlink 2, and various other bugfixes.
2018-01-04 21:27:16 +01:00
Julian Oes 585b03898f vtol_att_control: ack transition commands
Previously transition commands were not acked at all which meant that a
mavlink consumer such as a ground station would not get feedback if the
command arrived.

This solution is not optimal because it does not take into account if
the transition actually happened but at least it is feedback that the
command has arrived at the destination.
2017-11-13 09:56:11 -05:00
Julian Oes 6d8d6323cb navigator: bring follow me back to life
The function `mission_item_to_position_setpoint()` is called in
`FollowTarget::update_position_sp()`. The nav_cmd is a
NAV_CMD_DO_FOLLOW_REPOSITION as set earlier in `set_follow_target_item`.

Since `mission_item_to_position_setpointi` returns early because the item
presumably contains no position, the lat/lon of the mission_item are
not copied over to the position_setpoint and therefore the vehicle will
never move in follow me position mode.
2017-10-29 12:58:00 +01:00
Julian Oes 10de946cdf navigator: remove leftover debug variable 2017-10-29 12:58:00 +01:00
Julian Oes 787931f04f navigator: check distances between waypoints
Instead of just checking whether the first waypoint is too far away from
home it makes sense to also check between waypoints.
This can prevent
- flyaways due to user errors, or
- catch the corner case where a takeoff waypoint is added to a mission
  and therefore the first waypoint is not too far away, however, the
  subsequent waypoints are still too far away.
2017-10-18 08:42:20 +02:00
Julian Oes 07ae1e4044 posix-configs: attitude quaternion for DroneCore
DroneCore uses the attitude quaternion, and not the attitude
Euler angles.
2017-10-13 18:11:33 +02:00
Julian Oes 2837870733 posix-configs: send gimbal attitude to mavros port
The gimbal attitude is required by DroneCore.
2017-10-13 18:11:33 +02:00
Julian Oes 1e91b8cd32 posix-configs: send gimbal attitude over mavlink 2017-10-13 18:11:33 +02:00
Julian Oes 7229ec2a37 Move throttle check from land detector to posctrl
This commit is an attempt to fix a race condition happening on takeoff
between the land detector and the multicopter position controller.

Previously, an auto-takeoff leads to the following events:

1. A takeoff setpoint is given.
2. The thrust setpoint spikes because we don't enter smooth takeoff yet.
3. The land detector detects a takeoff because of the high thrust.
4. The position controller sees the landed state transition and
   initiates the smooth takeoff. Thrust goes back down.
5. Depending on control gains the takeoff is successful or fails
   if the smoothing takes too long which causes thrust to be too low, so
   the land detector detects land again.

The two obvious problems with this are:
- The intermittent spike.
- The failed takeoff because of the smoothing leads to a delay..

With this change, the logic for a takeoff detection is moved from the
land detector to the position controller.

The events are now:

1. A takeoff setpoint is given.
2. The position controller detects the takeoff setpoint and initiates
   the smooth takeoff.
3. As thrust ramps up, the land detector detects the take off.

In the same way, we now detect the intent to takeoff in manual,
altitude, control, position control in the position controller instead
of in the land detector.
2017-10-09 19:05:15 +02:00
Julian Oes 98de8c85a4 vmount: accept mavlink input from [0..360] degrees
This enables mavlink user input not only in the range of [-180..180]
degrees but also [0..360] degrees.
2017-09-15 14:41:07 +02:00
Julian Oes ee6a79279f commander: require local position for home
This fixes (or at least works around) a race condition where the
`status_flags.condition_local_position_valid` is still `false` but the
`status_flags.condition_global_position_valid` is already `true`.

The way to reproduce it is t:
1. Poll home position to check if home is initialized
2. Send arm and takeoff command as soon as home is initialized

Then arming will succeed but takeoff will fail because there is a check
for `status_flags.condition_local_position_valid` in
`main_state_transition()` to enter TAKEOFF.
2017-09-13 10:06:40 +02:00
Julian Oes ba150566c6 mavlink_command_sender: add some log printfs
This improves the printfs which will be logged. This should improve to
debug the camera triggering. The debug printfs are disabled by default.
2017-08-16 09:47:50 +02:00
Julian Oes 31edab6d6d mavlink_command_sender: remove unused include 2017-08-16 09:47:50 +02:00
Julian Oes 0ed29192b8 mavlink_mission: don't reset vertex_count
Since vertex_count is in a union with do_jump_current_count, we can't
always reset the current count, otherwise the vertex_count ends up being
0.
2017-08-04 18:08:51 +02:00
Julian Oes a13f23f244 timestamped_list: use const ref 2017-07-08 11:52:23 +02:00
Julian Oes 7e1e98b258 timestamped_list: fix comment syntax 2017-07-08 11:52:23 +02:00
Julian Oes 1576094d9f mavlink_command_sender: use const ref 2017-07-08 11:52:23 +02:00
Julian Oes 893b7b5d46 mavlink_command_sender: instantiate in initialize 2017-07-08 11:52:23 +02:00
Julian Oes c66af00753 mavlink_command_sender: fix NuttX build 2017-07-08 11:52:23 +02:00
Julian Oes e6d31f951c mavlink_command_sender: fix logic after first test
- change/add a few printfs so they make more sense
- don't accidentally ignore command_acks
- don't forward commands to the same component id, and don't forward
  commands that are broadcast to all components (target component 0)
2017-07-08 11:52:23 +02:00
Julian Oes af0107ae0a mavlink: add class for command retransmission
This adds a class to allow for retransmission of outgoing commands.
The sent commands are kept in a timestamped list to check if they are
acked as required by the mavlink protocol.
If they are not acked within a timeout, they can be retransmitted.
2017-07-08 11:52:23 +02:00
Julian Oes 9854fc0d84 Set timestamp with vehicle commands
The vehicle_command uORB messages had the timestamp unset at 0.
2017-07-08 11:52:23 +02:00
Julian Oes d64b7706f5 check_code_style_all: accept astyle version 3.0.1 2017-07-08 11:52:23 +02:00
Julian Oes 723a6bf6ac mavlink: new MAV_CMD_IMAGE_START_CAPTURE spec
The spec of the mavlink command MAV_CMD_IMAGE_START_CAPTURE has changed.
2017-06-03 02:53:58 +08:00
Julian Oes bcd66f1408 mc_pos_control: ignore a NaN/inf position setpoint (#7186)
* mc_pos_control: ignore a NaN/inf position setpoint

This is a hotfix that prevents the position controller from trying to
do velocity control with a position setpoint that isn't valid in the
first place.

This is only a workaround, ideally the controls later should not scale
down throttle to the minimum just because the position setpoint is far
away if they still have valid setpoint in z.

* mc_pos_control: use PX4_ISFINITE and not isfinite
2017-05-04 22:55:53 +02:00
Julian Oes e9aef2eb95 px_uploader.py: properly loop through all baudrates
In case when the baudrate change failed, we should still try that
baudrate again in the next iteration.
2017-04-22 08:00:51 +02:00
Julian Oes 2467297acf px_uploader.py: fix exception on baudrate change
This prevents an exception happening inside the serial stack.
2017-04-22 08:00:51 +02:00
Julian Oes 349a468f81 vmount: add to startup script, disable by default
vmount is now added to the startup script, however, it will only start
if the param MNT_MODE_IN is set to anything but -1.
2017-04-19 16:59:48 +02:00
Julian Oes 7c0c97ce03 vmount: added commented output printf 2017-04-19 16:59:48 +02:00
Julian Oes f4b1623550 vmount: wrong pointer was passed to update 2017-04-19 16:59:48 +02:00
Julian Oes 87d5b41b84 vmount: fixed wrong index 2017-04-19 16:59:48 +02:00
Julian Oes ec36bdcd10 vmount: always initialize
MNT_MODE_IN 0 now means to automatically check all inputs.
2017-04-19 16:59:48 +02:00
Julian Oes e3d1b7fab4 vmount: _first_time flag wasn't ever reset 2017-04-19 16:59:48 +02:00
Julian Oes 07de797e8d vmount: correctly set control_data output arg
The control_data pointer wasn't correctly set for the cases where there
actually was a change/command.
2017-04-19 16:59:48 +02:00
Julian Oes e1246063e9 vmount: another try to get abs and types right 2017-04-19 16:59:48 +02:00
Julian Oes 702922e677 vmount: _get_aux_value needs to be re-used 2017-04-19 16:59:48 +02:00
Julian Oes c33e46167c vmount: type-promotion fix clang-tidy 2017-04-19 16:59:48 +02:00
Julian Oes a9523155cf vmount: small formatting change 2017-04-19 16:59:48 +02:00
Julian Oes caf69b290a vmount: refactor to auto-select between all inputs
It is not convenient having to change a parameter to change a gimbal
from RC input to mavlink input mode or back. This refactor changes the
behaviour to use whatever is available, RC or mavlink commands.

Once a mavlink command is followed, control can be taken back using RC,
however, this requires a clear stick change.
2017-04-19 16:59:48 +02:00
Julian Oes 0d2e847c57 tag_to_version.py: fix Python3 error (#7056)
subprocess.communicate returns bytes instead of a str which is not the
same for Python3. Therefore, we need to decode the bytes.
2017-04-16 10:03:06 -04:00
Julian Oes bb168287da gps: just use termios on QURT
QURT has added support for termios calls a while back that we can now
use.
2017-04-14 09:56:42 +02:00
Julian Oes 3c1d785d86 mavlink_mission: set INT frame correctly
Also when formatting malvink mission items from internal mission items,
the INT flag should be obeyed.
2017-04-01 20:07:55 +02:00
Julian Oes 80ce1b6dd8 mavlink_mission: support INT altitude frames
The relative altitude flag was not set correclty when waypoints are sent
using the INT protocol.
2017-04-01 20:07:55 +02:00
Julian Oes 404719953c commander: fix abs bug / trigger POSCTL both ways
The check if stick were touched was only working in one direction (per
axis) because fabsf was used incorrectly.

However, this check is still only a differential check triggered by
fast movement and does not trigger if someone slowly moves a stick to
the side. Also, the sensitivity depends on the rate of the commander
loop and/or the RC update loop. The correct solution would be a proper
filtering and trigger for movement.
2017-03-11 22:41:23 +01:00
Julian Oes 0c926106f1 param_shmem.c: comment out locking on Snappy
The param locking doesn't seem to be working on Snapdragon, so let's
just comment it out again.
2017-03-08 15:44:31 +01:00
Julian Oes 9235c0fd67 Update jMAVSim submodule
This fixes the compass, see:
https://github.com/PX4/jMAVSim/pull/55
2017-03-08 19:37:57 +08:00
Julian Oes 24819ce7b1 commander: no datalink failsafe on ground
On SITL startup we got a datalink lost failsafe message whenever home
was initialized. The reason that in standalone SITL, there is usually no
datalink connected. However, on ground, we shouldn't really failsafe,
therefore it makes sense not to enter the state in the first place.
2017-03-08 05:33:32 +08:00
Julian Oes 12c7421be9 px_uploader.py: remove unused exception vars 2017-02-27 11:23:09 +01:00
Julian Oes 974a9a0673 px_uploader.py: enable file to be used as module
In order to use px_uploader as a module from another Python script, all
the action needs to be moved into a main() function which is only called
if the file is run directly.
2017-02-27 11:23:09 +01:00
Julian Oes 090d7ebd6b px_uploader: fix SerialException error
Sometimes right after reboot, we got a `raise SerialException(
msg.errno, "could not open port {}: {}".format(self._port, msg))`.
If this happens now, we will just try again later.
2017-02-27 11:23:09 +01:00
Julian Oes b0a8073e15 px_uploader.py: small whitespace fix
Found by PEP8 checker.
2017-02-27 11:23:09 +01:00
Julian Oes ff87d43be0 px_uploader.py: vim modeline for indent settings 2017-02-27 11:23:09 +01:00
Julian Oes 172f35042f px_uploader.py: use consistent indenting
This file had the indentending mixed up between 4 and 8 spaces.
This changes it to the Pythonic way of 4 spaces.
2017-02-27 11:23:09 +01:00
Julian Oes 9369262e63 navigator: allow more mission items
Since using more than 256 mission items has been tested and fixed, the
limit can now be raised to more than 256 (but smaller than UINT16_MAX).

Since the whole file is allocated in advance on NuttX, the limit there
is (arbitrarily) set to 2000. For POSIX archs such as SITL, we don't
really need to constrain ourselves any longer.
2017-02-15 22:29:24 -05:00
Julian Oes 8c1e85a65f dataman: don't wrap around at 256
The dataman started overwriting contents after 256 items because the
item index were only uint8_t. This fix allows for more than 256
waypoints.
2017-02-15 22:29:24 -05:00
Julian Oes 4ee8c43ea2 mavlink: send attitude quaternion in onboard mode 2017-02-13 21:38:10 +01:00
Julian Oes aaa24b0cc8 Reduce attitude rate but add Quaternion 2017-02-08 12:47:34 +01:00
Julian Oes 4ceba407f2 commander: raise stack size
A stack usage of 3000 bytes was observed, therefore it's safer to raise
the commander's stack size by 400 bytes.
2017-01-21 16:04:43 +01:00