* gz: print version number in init, remove gst plugin spam, rename function
* fix 0 timestamp issue by waiting for clock callback before subscribing to other topics. Refactor to cleanup topic subscriptions
* format
* change gzerr to gzwarn
* gz_plugins: add MovingPlatformController
This plugin moves the entity to which it is attached to simulate moving
platforms (boats, trucks, ...) to takeoff and land on. Updates
Tools/simulation/gz submodule with corresponding dependency. Use with:
PX4_GZ_MODEL_POSE=0,0,2.2,0,0,0 PX4_GZ_WORLD=moving_platform make px4_sitl gz_standard_vtol
more in README.md
* MovingPlatformController: Wrench implementation
Now it works by applying appropriate forces & torques to make the
platform move as desired. Compared to the previous velocity-based
version it introduces no kinematic constraints, keeping it realistic.
Other updates:
- Also make heading configurable by env var in addition to velocity
- Cleaner error handling (runtime error, gzerr, gzwarn)
- Read parameters (gravity, platform mass & height) from model rather than hardcoding
- Update README with new env vars, usage in sdf, etc.
* MovingPlatformController: fix warning message
* MovingPlatformController: fix build
https://github.com/PX4/PX4-Autopilot/pull/24518 changed some variable
names in CMakeLists. This adapts ours to use the new ones.
* MovingPlatformController: format
* MovingPlatformController: address code review
From feedback on PR
- Parameterise low pass filters with cutoff frequency (rather than
filter coefficient directly).
- Add comment with units of feedback gains.
- Scale attitude gains with platform inertia (rather than mass).
Additionally
- Wait 5 seconds before moving the platform so the model has time to
spawn (was quicker before rebasing...)
- Refactor: separate noise generation and force/torque calculation into
two separate functions
- rename updatePlatformState -> getPlatformState to emphasise
difference from other update* functions that update internal state only
- remove unused gz transport node
- README grammar
* MovingPlatformController: format
* MovingPlatformController: remove redundant call
* MovingPlatformController: clarify explanation
* MovingPlatformController: clarify & comment units
* MovingPlatformController: wait for model to spawn
Rather than waiting a fixed 5s, we now only move the platform once the
model is spawned.
For that we construct the model name from the relevant environment
variables, in the same way as done in px4-rc.gzsim.
If attaching to an existing model, do not wait.
* MovingPlatformController: correct substring extraction
---------
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
* gz: use server config file for loading world plugins
* submodule
* use server.config in tree
* newlines
* format
* gzbridge: rename function
* format
* gzbridge: add magnetometer callback
* change gz_find_package to find_package
* fix up directory structure and cmake to allow multiple plugins
* newlines
* add comment block explaining gz_env.sh
* remove dupe readme
* remove SENS_EN_MAGSIM from all gz airframe files except spacecraft
* update gz submodule
* added optical flow to gz bridge
* log high rate sensor data
* it builds
* it builds and publishes, need to figure out build system now
* single library
* rename files
* add gz_msg for proto, fix build, test basic flow impl
* update rate, no blur
* PX4-OpticalFlow impl
* rename OpticalFlowSensor
* rename plugins
* disable gps, add plugin path
* cleanup
* fix plugin path export
* properly add OpticalFlowSystem dependency to gz
* move everything under gz_bridge
* cleanup
* add GZ_VEBOSE
* cleanup model/world build target cmake
* added GZ_DISTRO env, harmonic or ionic
* fix gz transport, unstage ark fpv bootloader
* unstage logged_topics.cpp
* cleanup
* make format
* ci fixes
* fix cmake
* remove required for gz-transport
* use model/world namespace for multi vehicle sim. Make format
* make format
* license
* remove needless member var
* made separate Kconfig for gz_msgs, gz_plugins, and gz_bridge
* move OpticalFlow build to it's own cmake
* fix clang
* cleanup comments
* fix rebase
* disable SENS_EN_GPSSIM for all gz airframes
* add GPS + noise to GZBridge
* remove mutex from gz callbacks. Callbacks run synchronously after sim update step and run() loop does not share resources.
* remove hrt check in callbacks
* format
* remove param set-default for already default params
* update submodule
* remove unnecessary comments
* overhaul of the GZBridge and px4-rc.simulator script
* remove arg
* shellcheck disable
* add bus/address
* start gz_bridge before adjusting sim speed or camera follow
* remove temp field from airspeed.msg, adjust temp selection
* temp-sensor hirarchy: airspeed, ext. baro, default value
* directly use diff-press or baro temp in true-airspeed calc
* improve clarity
* add enum for temperature source in VehicleAirData.msg
The current approach was wrong because the gimbal protocol now
handles the case properly where the autopilot is in charge of a
non-MAVLink gimbal.
This means that we don't need to send message "as if we were a gimbal
device" and instead set thet gimbal_device_id to 1 (up to 6) to indicate
we are in charge or a non-MAVLink gimbal.
* fix sign error in appropriate place
In PR https://github.com/PX4/PX4-Autopilot/pull/24175 I changed the
control surface deflection signs in generate_fw_aerodynamics to make the
1103 airframe work correctly. However, this breaks the 1101 airframe,
introducing sing errors there.
So, here the change in generate_fw_aerodynamics is reverted to the state
before PR #24175. Instead, the signs are set correctly by using
the HIL_ACT_REV bitfield in the respective airframe config files.
* match control surface parameters to SIH model
* fix max-hagl restriction to position/altitude control
* max hagl vel restriction in ManAcc position mode
* use interpolate func, change naming
* simplyfied vertical vel limitation
* move velocity-constraint adjustment to StickAccelXY
* add standard vtol airframe to SIH.
mostly took changes from 4d930bde and applied to main.
generate_fw_aerodynamics now takes four arguments rather than using the
_u class member, because depending on vehicle type _u is used
differently.
SIH: use projection functions and constants from geo lib
SIH: remove unnecessary member variable
SIH: clarify names of rotation matrices and frames
SIH: do not store DCM corresponding to quaternion attitude
Using DCM is more efficient when more than 1 rotation needs to be done,
which is not the case here.
SIH: don't store local variable as member
SIH: use Wgs84 constants everywhere
SIH: do not store delta_quaternion
Converting an AxisAngle to a Quaternion uses the exponenial
SIH: organise ECEF member variables
SIH: add earth spin rate to gyro data
Co-authored-by: bresch <brescianimathieu@gmail.com>