From fa706c905f8ba402ce52aa759c02fe0ad711d82a Mon Sep 17 00:00:00 2001 From: PX4 Build Bot Date: Wed, 8 Oct 2025 15:58:35 +1100 Subject: [PATCH 01/71] New Crowdin translations - uk (#25660) Co-authored-by: Crowdin Bot --- docs/uk/SUMMARY.md | 2 + docs/uk/config/_autotune.md | 30 +++- docs/uk/debug/failure_injection.md | 42 ++--- docs/uk/flight_modes/offboard.md | 128 +++++++++----- docs/uk/flight_modes_rover/api.md | 29 ++++ docs/uk/frames_rover/index.md | 6 +- docs/uk/releases/main.md | 8 +- docs/uk/ros2/offboard_control.md | 4 +- docs/uk/ros2/px4_ros2_control_interface.md | 37 ++++ docs/uk/ros2/px4_ros2_interface_lib.md | 7 +- docs/uk/ros2/px4_ros2_waypoint_missions.md | 190 +++++++++++++++++++++ docs/uk/sim_gazebo_gz/index.md | 35 ++-- docs/uk/sim_gazebo_gz/vehicles.md | 12 +- 13 files changed, 439 insertions(+), 91 deletions(-) create mode 100644 docs/uk/flight_modes_rover/api.md create mode 100644 docs/uk/ros2/px4_ros2_waypoint_missions.md diff --git a/docs/uk/SUMMARY.md b/docs/uk/SUMMARY.md index a438e6bfeb..accfcd8598 100644 --- a/docs/uk/SUMMARY.md +++ b/docs/uk/SUMMARY.md @@ -436,6 +436,7 @@ - [Attitude Tuning](config_rover/attitude_tuning.md) - [Velocity Tuning](config_rover/velocity_tuning.md) - [Position Tuning](config_rover/position_tuning.md) + - [Apps & API](flight_modes_rover/api.md) - [Complete Vehicles](complete_vehicles_rover/index.md) - [Aion Robotics R1](complete_vehicles_rover/aion_r1.md) - [Submarines (experimental)](frames_sub/index.md) @@ -872,6 +873,7 @@ - [Інтерфейсна бібліотека PX4 ROS 2](ros2/px4_ros2_interface_lib.md) - [Керування інтерфейсом](ros2/px4_ros2_control_interface.md) - [Навігаційний інтерфейс](ros2/px4_ros2_navigation_interface.md) + - [Waypoint Missions](ros2/px4_ros2_waypoint_missions.md) - [ROS 2 Message Translation Node](ros2/px4_ros2_msg_translation_node.md) - [ROS 1 (Deprecated)](ros/ros1.md) - [Посібник із встановлення ROS/MAVROS](ros/mavros_installation.md) diff --git a/docs/uk/config/_autotune.md b/docs/uk/config/_autotune.md index f03800852a..7c31b3604b 100644 --- a/docs/uk/config/_autotune.md +++ b/docs/uk/config/_autotune.md @@ -95,9 +95,17 @@ The RC sticks cannot be used during autotuning (moving the sticks will stop the 4. Read the warning popup and click on **OK** to start tuning. -4. Дрон спочатку почне виконувати швидкі рухи кочення, а потім рухи тангажу та рухи курсу. +
+ +4. The drone will first start to perform quick roll motions followed by pitch and yaw motions. The progress is shown in the progress bar, next to the _Autotune_ button. +
+ +4. The drone will first start to perform quick roll motions followed by pitch and yaw motions. When [`FW_AT_SYSID_TYPE`](../advanced_config/parameter_reference.md#FW_AT_SYSID_TYPE) is set to linear/logarithmic sine sweep (recommended), the max rates are approximately 45 deg/s for roll and 30 deg/s for pitch and yaw. + The progress is shown in the progress bar, next to the _Autotune_ button. + +
5. Manually land and disarm to apply the new tuning parameters. @@ -108,6 +116,13 @@ The RC sticks cannot be used during autotuning (moving the sticks will stop the 5. The tuning will be immediately/automatically be applied and tested in flight (by default). PX4 will then run a 4 second test and revert the new tuning if a problem is detected. +The figure below shows how steps 4 and 5 might look in flight on the pitch axis. +The pitch rate gradually increases up until it reaches the target. +This amplitude is then held while the signal frequency is increased. +You can then see how the tuned system is able to follow the setpoint in the test signal. + + +
:::warning @@ -174,9 +189,20 @@ Fast oscillations (more than 1 oscillation per second): this is because the gain ### Послідовність автоматичної настройки не вдається +
+ Якщо безпілотник не рухався достатньо під час автоматичного налаштування, алгоритм ідентифікації системи може мати проблеми з визначенням правильних коефіцієнтів. -Increase the
[MC_AT_SYSID_AMP](../advanced_config/parameter_reference.md#MC_AT_SYSID_AMP)
[FW_AT_SYSID_AMP](../advanced_config/parameter_reference.md#FW_AT_SYSID_AMP)
parameter by steps of 1 and trigger the auto-tune again. +Increase the [MC_AT_SYSID_AMP](../advanced_config/parameter_reference.md#MC_AT_SYSID_AMP) parameter by steps of 1 and trigger the auto-tune again. + +
+
+ +By default, the autotune maneuvers ensure that a sufficient angular rate is reached for system identification. The target rates are approximately 45 deg/s for roll and 30 deg/s for pitch and yaw. + +If the signal-to-noise ratio of the vehicle is low, the system identification algorithm might have issues finding the correct coefficients. Ensure that there is no excessive noise and/or platform vibration. + +
### The drone oscillates after auto-tuning diff --git a/docs/uk/debug/failure_injection.md b/docs/uk/debug/failure_injection.md index aaa939dc0c..7fc066c5da 100644 --- a/docs/uk/debug/failure_injection.md +++ b/docs/uk/debug/failure_injection.md @@ -9,7 +9,7 @@ Failure injection is disabled by default, and can be enabled using the [SYS_FAIL Failure injection still in development. На момент написання (PX4 v1.14): -- Це можна використовувати лише в симуляції (підтримка як для впровадження в реальному польоті запланована). +- Support may vary by failure type and between simulatiors and real vehicle. - Потребує підтримки в симуляторі. Це підтримується в Gazebo Classic - Багато типів відмов не широко реалізовані. @@ -33,31 +33,31 @@ failure [-i ] - _component_: - Датчики: - - `gyro`: Gyro. - - `accel`: Accelerometer. + - `gyro`: Gyroscope + - `accel`: Accelerometer - `mag`: Magnetometer - `baro`: Barometer - - `gps`: GPS + - `gps`: Global navigation satellite system - `optical_flow`: Optical flow. - - `vio`: Visual inertial odometry. + - `vio`: Visual inertial odometry - `distance_sensor`: Distance sensor (rangefinder). - - `airspeed`: Airspeed sensor. + - `airspeed`: Airspeed sensor - Системи: - - `battery`: Battery. - - `motor`: Motor. - - `servo`: Servo. - - `avoidance`: Avoidance. - - `rc_signal`: RC Signal. - - `mavlink_signal`: MAVLink signal (data telemetry). + - `battery`: Battery + - `motor`: Motor + - `servo`: Servo + - `avoidance`: Avoidance + - `rc_signal`: RC Signal + - `mavlink_signal`: MAVLink data telemetry connection - _failure_type_: - - `ok`: Publish as normal (Disable failure injection). - - `off`: Stop publishing. - - `stuck`: Report same value every time (_could_ indicate a malfunctioning sensor). - - `garbage`: Publish random noise. Це схоже на читання неініціалізованої пам'яті. - - `wrong`: Publish invalid values (that still look reasonable/aren't "garbage"). - - `slow`: Publish at a reduced rate. - - `delayed`: Publish valid data with a significant delay. - - `intermittent`: Publish intermittently. + - `ok`: Publish as normal (Disable failure injection) + - `off`: Stop publishing + - `stuck`: Constantly report the same value which _can_ happen on a malfunctioning sensor + - `garbage`: Publish random noise. This looks like reading uninitialized memory + - `wrong`: Publish invalid values that still look reasonable/aren't "garbage" + - `slow`: Publish at a reduced rate + - `delayed`: Publish valid data with a significant delay + - `intermittent`: Publish intermittently - _instance number_ (optional): Instance number of affected sensor. 0 (за замовчуванням) вказує на всі сенсори вказаного типу. @@ -65,7 +65,7 @@ failure [-i ] Щоб симулювати втрату сигналу RC без вимкнення вашого пульта керування RC: -1. Enable the parameter [SYS_FAILURE_EN](../advanced_config/parameter_reference.md#SYS_FAILURE_EN). +1. Enable the parameter [SYS_FAILURE_EN](../advanced_config/parameter_reference.md#SYS_FAILURE_EN). And specifically to turn off motors also [CA_FAILURE_MODE](../advanced_config/parameter_reference.md#CA_FAILURE_MODE). 2. Enter the following commands on the MAVLink console or SITL _pxh shell_: ```sh diff --git a/docs/uk/flight_modes/offboard.md b/docs/uk/flight_modes/offboard.md index c9d04c0255..e2c100783d 100644 --- a/docs/uk/flight_modes/offboard.md +++ b/docs/uk/flight_modes/offboard.md @@ -62,6 +62,11 @@ bool thrust_and_torque bool direct_actuator ``` +:::warning +The following list shows the `OffboardControlMode` options for copter, fixed-wing, and VTOL. +For rovers see the [rover section](#rover). +::: + The fields are ordered in terms of priority such that `position` takes precedence over `velocity` and later fields, `velocity` takes precedence over `acceleration`, and so on. Перше поле, яке має ненульове значення (зверху вниз), визначає, яка допустима оцінка необхідна для використання режиму безпілотного керування, а також повідомлення заданих значень, які можуть бути використані. For example, if the `acceleration` field is the first non-zero value, then PX4 requires a valid `velocity estimate`, and the setpoint must be specified using the `TrajectorySetpoint` message. @@ -90,20 +95,93 @@ Before using offboard mode with ROS 2, please spend a few minutes understanding - Velocity setpoint (`velocity` different from `NaN` and `position` set to `NaN`). Non-`NaN` values acceleration are used as feedforward terms for the inner loop controllers. - Acceleration setpoint (`acceleration` different from `NaN` and `position` and `velocity` set to `NaN`) - - Всі значення інтерпретуються в NED (Nord, East, Down) координатну систему і одиниці вимірювання, є \[m/s\] і \[m/s^2\] для позиції, швидкості і прискорення, відповідно. + - All values are interpreted in NED (Nord, East, Down) coordinate system and the units are `[m]`, `[m/s]` and `[m/s^2]` for position, velocity and acceleration, respectively. - [px4_msgs::msg::VehicleAttitudeSetpoint](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitudeSetpoint.msg) - Підтримується наступна комбінація введення: - quaternion `q_d` + thrust setpoint `thrust_body`. - Non-`NaN` values of `yaw_sp_move_rate` are used as feedforward terms expressed in Earth frame and in \[rad/s\]. + Non-`NaN` values of `yaw_sp_move_rate` are used as feedforward terms expressed in Earth frame and in `[rad/s]`. - - Кватерніон представляє обертання між корпусом дрона у системі координат FRD (перед, праворуч, вниз) та системою координат NED. Тяга у корпусі дрона виражена у системі координат FRD та у нормалізованих значеннях. + - Кватерніон представляє обертання між корпусом дрона у системі координат FRD (перед, праворуч, вниз) та системою координат NED. + Тяга у корпусі дрона виражена у системі координат FRD та у нормалізованих значеннях. - [px4_msgs::msg::VehicleRatesSetpoint](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleRatesSetpoint.msg) - Підтримується наступна комбінація введення: - `roll`, `pitch`, `yaw` and `thrust_body`. - - Всі значення подані в для дрона в системі FRD. Значення в \[rad/s\] і thrust_body нормалізовано в \[-1, 1\]. + - Всі значення подані в для дрона в системі FRD. + The rates are in `[rad/s]` while thrust_body is normalized in `[-1, 1]`. + +### Ровер + +Rover modules must set the control mode using `OffboardControlMode` and use the appropriate messages to configure the corresponding setpoints. +The approach is similar to other vehicle types, but the allowed control mode combinations and setpoints are different: + +| Category | Використання | Setpoints | +| -------------------------------------------------------------------------------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| (Recommended) [Rover Setpoints](#rover-setpoints) | General rover control | [RoverPositionSetpoint](../msg_docs/RoverPositionSetpoint.md), [RoverSpeedSetpoint](../msg_docs/RoverSpeedSetpoint.md), [RoverAttitudeSetpoint](../msg_docs/RoverAttitudeSetpoint.md), [RoverRateSetpoint](../msg_docs/RoverRateSetpoint.md), [RoverThrottleSetpoint](../msg_docs/RoverThrottleSetpoint.md), [RoverSteeringSetpoint](../msg_docs/RoverSteeringSetpoint.md) | +| [Actuator Setpoints](#actuator-setpoints) | Direct actuator control | [ActuatorMotors](../msg_docs/ActuatorMotors.md), [ActuatorServos](../msg_docs/ActuatorServos.md) | +| (Deprecated) [Trajectory Setpoint](#deprecated-trajectory-setpoint) | General vehicle control | [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) | + +#### Rover Setpoints + +The rover modules use a hierarchical structure to propagate setpoints: + +![Rover Control Structure](../../assets/middleware/ros2/px4_ros2_interface_lib/rover_control_structure.svg) + +The "highest" setpoint that is provided will be used within the PX4 rover modules to generate the setpoints that are below it (overriding them!). +With this hierarchy there are clear rules for providing a valid control input: + +- Provide a position setpoint **or** +- One of the setpoints on the "left" (speed **or** throttle) **and** one of the setpoints on the "right" (attitude, rate **or** steering). + All combinations of "left" and "right" setpoints are valid. + +The following are all valid setpoint combinations and their respective control flags that must be set through [OffboardControlMode](../msg_docs/OffboardControlMode.md) (set all others to _false_). +Additionally, for some combinations we require certain setpoints to be published with `NAN` values so that the setpoints of interest are not overridden by the rover module (due to the hierarchy above). +✓ are the relevant setpoints we publish, and ✗ are the setpoint that need to be published with `NAN` values. + +| Setpoint Combination | Control Flag | [RoverPositionSetpoint](../msg_docs/RoverPositionSetpoint.md) | [RoverSpeedSetpoint](../msg_docs/RoverSpeedSetpoint.md) | [RoverThrottleSetpoint](../msg_docs/RoverThrottleSetpoint.md) | [RoverAttitudeSetpoint](../msg_docs/RoverAttitudeSetpoint.md) | [RoverRateSetpoint](../msg_docs/RoverRateSetpoint.md) | [RoverSteeringSetpoint](../msg_docs/RoverSteeringSetpoint.md) | +| -------------------- | ----------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------------- | +| Положення | положення | ✓ | | | | | | +| Speed + Attitude | швидкість | | ✓ | | ✓ | | | +| Speed + Rate | швидкість | | ✓ | | ✗ | ✓ | | +| Speed + Steering | швидкість | | ✓ | | ✗ | ✗ | ✓ | +| Throttle + Attitude | attitude | | | ✓ | ✓ | | | +| Throttle + Rate | body_rate | | | ✓ | | ✓ | | +| Throttle + Steering | thrust_and_torque | | | ✓ | | | ✓ | + +:::info +If you intend to use the rover setpoints, we recommend using the [PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md) instead since it simplifies the publishing of these setpoints. +::: + +#### Actuator Setpoints + +Instead of controlling the vehicle using position, speed, rate and other setpoints, you can directly control the motors and actuators using [ActuatorMotors](../msg_docs/ActuatorMotors.md) and [ActuatorServos](../msg_docs/ActuatorServos.md). +In [OffboardControlMode](../msg_docs/OffboardControlMode.md) set `direct_actuator` to _true_ and all other flags to _false_. + +:::info +This bypasses the rover modules including any limits on steering rates or accelerations and the inverse kinematics step. +We recommend using [RoverSteeringSetpoint](../msg_docs/RoverSteeringSetpoint.md) and [RoverThrottleSetpoint](../msg_docs/RoverThrottleSetpoint.md) instead for low level control (see [Rover Setpoints](#rover-setpoints)). +::: + +#### (Deprecated) Trajectory Setpoint + +:::warning +The [Rover Setpoints](#rover-setpoints) are a replacement for the [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) and we highly recommend using those instead as they have a well defined behaviour and offer more flexibility. +::: + +The rover modules support the _position_, _velocity_ and _yaw_ fields of the [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md). +However, only one of the fields is active at a time and is defined by the flags of [OffboardControlMode](../msg_docs/OffboardControlMode.md): + +| Control Mode Flag | Active Trajectory Setpoint Field | +| ----------------- | -------------------------------- | +| положення | положення | +| швидкість | швидкість | +| attitude | yaw | + +:::info +Ackermann rovers do not support the yaw setpoint. +::: ### Універсальний апарат @@ -116,8 +194,10 @@ Before using offboard mode with ROS 2, please spend a few minutes understanding - [px4_msgs::msg::ActuatorMotors](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorMotors.msg) + [px4_msgs::msg::ActuatorServos](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorServos.msg) - Ви безпосередньо керуєте вихідними сигналами моторів та/або сервоприводів. - - Currently works at lower level than then `control_allocator` module. Do not publish these messages when not in offboard mode. - - Усі значення нормалізовані у діапазоні \[-1, 1\]. For outputs that do not support negative values, negative entries map to `NaN`. + - Currently works at lower level than then `control_allocator` module. + Do not publish these messages when not in offboard mode. + - All the values normalized in `[-1, 1]`. + For outputs that do not support negative values, negative entries map to `NaN`. - `NaN` maps to disarmed. ## Повідомлення MAVLink @@ -206,41 +286,7 @@ Before using offboard mode with ROS 2, please spend a few minutes understanding ### Ровер -- [SET_POSITION_TARGET_LOCAL_NED](https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_LOCAL_NED) - - The following input combinations are supported (in `type_mask`): - - Position setpoint (only `x`, `y`, `z`) - - Specify the _type_ of the setpoint in `type_mask`: - - ::: info - The _setpoint type_ values below are not part of the MAVLink standard for the `type_mask` field. - :: - - Значення: - - - 12288: задане значення Loiter (пристрій зупиняється, коли вже достатньо близько, щоб встановити точку). - - - Velocity setpoint (only `vx`, `vy`, `vz`) - - - PX4 supports the coordinate frames (`coordinate_frame` field): [MAV_FRAME_LOCAL_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_LOCAL_NED) and [MAV_FRAME_BODY_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_BODY_NED). - -- [SET_POSITION_TARGET_GLOBAL_INT](https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_GLOBAL_INT) - - The following input combinations are supported (in `type_mask`): - - Position setpoint (only `lat_int`, `lon_int`, `alt`) - - - Specify the _type_ of the setpoint in `type_mask` (not part of the MAVLink standard). - Значення: - - Якщо наступні біти не встановлені, то виконується звичайна поведінка. - - 12288: задане значення Loiter (пристрій зупиняється, коли вже достатньо близько, щоб встановити точку). - - - PX4 supports the coordinate frames (`coordinate_frame` field): [MAV_FRAME_GLOBAL](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL). - -- [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET) - - Підтримуються наступні вхідні комбінації: - - Attitude/orientation (`SET_ATTITUDE_TARGET.q`) with thrust setpoint (`SET_ATTITUDE_TARGET.thrust`). - ::: info - Only the yaw setting is actually used/extracted. - -::: +Rover does not support a MAVLink offboard API (ROS2 is supported). ## Параметри для відключення diff --git a/docs/uk/flight_modes_rover/api.md b/docs/uk/flight_modes_rover/api.md new file mode 100644 index 0000000000..e32de3e8ee --- /dev/null +++ b/docs/uk/flight_modes_rover/api.md @@ -0,0 +1,29 @@ +# Apps & API + +The rover modules have been tested and integrated with a subset of the available [Apps & API](../middleware/index.md) methods. +We specifically provide guides for using [ROS 2](../ros2/index.md) to interface a companion computer with PX4 via [uXRCE-DDS](../middleware/uxrce_dds.md). + +| Method | Опис | +| ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [PX4 ROS 2 Interface](#px4-ros-2-interface) (Recommended) | Register a custom mode and publish [RoverSetpointTypes](../ros2/px4_ros2_control_interface.md#rover-setpoints). | +| [ROS 2 Offboard Control](#ros-2-offboard-control) | Use the PX4 internal [Offboard Mode](../flight_modes/offboard.md) and publish messages defined in [dds_topics.yaml](../middleware/dds_topics.md). | + +## PX4 ROS 2 Interface + +We recommend the use of the [PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md) which allows you to register a custom drive mode and exposes [RoverSetpointTypes](../ros2/px4_ros2_control_interface.md#rover-setpoints). + +By using these setpoints (instead of the PX4 internal rover setpoints), you are guaranteed to send valid control inputs to your vehicle and the control flags for the setpoints you are using are automatically set for you. +Registering a custom drive mode instead of using [ROS 2 Offboard Control](#ros-2-offboard-control) additionally provides the advantages listed [here](../concept/flight_modes.md#internal-vs-external-modes). + +To get familiar with this method, read through the guide for the [PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md) where we also provide an example app for rover. + +## ROS 2 Offboard Control + +[ROS 2 Offboard Control](../ros2/offboard_control.md) uses the PX4 internal [Offboard Mode](../flight_modes/offboard.md). + +While you can subscribe/publish to all topics specified in [dds_topics.yaml](../middleware/dds_topics.md), not all rover modules support all of these topics (see [Supported Setpoints](../flight_modes/offboard.md#rover)). +Unlike the [RoverSetpointTypes](../ros2/px4_ros2_control_interface.md#rover-setpoints) exposed through the [PX4 ROS 2 Interface](#px4-ros-2-interface), there is no guarantee that the published setpoints lead to a valid control input. + +In addition, the correct control mode flags must be set through [OffboardControlMode](../msg_docs/OffboardControlMode.md). +This requires a deeper understanding of PX4 and the structure of the rover modules. +For general information on setting up offboard mode read through [Offboard Mode](../flight_modes/offboard.md) and then consult [Supported Setpoints](../flight_modes/offboard.md#rover). diff --git a/docs/uk/frames_rover/index.md b/docs/uk/frames_rover/index.md index 39f404f32c..f2d7e9e4b7 100644 --- a/docs/uk/frames_rover/index.md +++ b/docs/uk/frames_rover/index.md @@ -57,15 +57,17 @@ Each wheel is driven by its own motor, and by controlling the speed and directio ## Дивіться також -- [Drive Modes](../flight_modes_rover/index.md). +- [Drive Modes](../flight_modes_rover/index.md) - [Configuration/Tuning](../config_rover/index.md) +- [Apps & API](../flight_modes_rover/api.md) - [Complete Vehicles](../complete_vehicles_rover/index.md) ## Симуляція -[Gazebo](../sim_gazebo_gz/index.md) provides simulations for ackermann and differential rovers: +PX4 provides synthetic simulation models for [Gazebo](../sim_gazebo_gz/index.md) of all three rover types to test the software and validate changes and new features: - [Ackermann rover](../sim_gazebo_gz/vehicles.md#ackermann-rover) - [Differential rover](../sim_gazebo_gz/vehicles.md#differential-rover) +- [Mecanum rover](../sim_gazebo_gz/vehicles.md#mecanum-rover) ![Rover gazebo simulation](../../assets/airframes/rover/rover_simulation.png) diff --git a/docs/uk/releases/main.md b/docs/uk/releases/main.md index dd3875875b..dbce991f2c 100644 --- a/docs/uk/releases/main.md +++ b/docs/uk/releases/main.md @@ -58,7 +58,10 @@ Please continue reading for [upgrade instructions](#upgrade-guide). ### Симуляція -- Уточнюється +- Overhaul rover simulation: + - Add synthetic differential rover model: [PX4-gazebo-models#107](https://github.com/PX4/PX4-gazebo-models/pull/107) + - Add synthetic mecanum rover model: [PX4-gazebo-models#113](https://github.com/PX4/PX4-gazebo-models/pull/113) + - Update synthetic ackermann rover model: [PX4-gazebo-models#117](https://github.com/PX4/PX4-gazebo-models/pull/117) ### Ethernet @@ -67,6 +70,7 @@ Please continue reading for [upgrade instructions](#upgrade-guide). ### uXRCE-DDS / ROS2 - [PX4 ROS 2 Interface Library](../ros2/px4_ros2_control_interface.md) support for [Fixed Wing lateral/longitudinal setpoint](../ros2/px4_ros2_control_interface.md#fixed-wing-lateral-and-longitudinal-setpoint-fwlaterallongitudinalsetpointtype) (`FwLateralLongitudinalSetpointType`) and [VTOL transitions](../ros2/px4_ros2_control_interface.md#controlling-a-vtol). ([PX4-Autopilot#24056](https://github.com/PX4/PX4-Autopilot/pull/24056)). +- [PX4 ROS 2 Interface Library](../ros2/px4_ros2_control_interface.md) support for [ROS-based waypoint missions](../ros2/px4_ros2_waypoint_missions.md). ### MAVLink @@ -89,6 +93,8 @@ Please continue reading for [upgrade instructions](#upgrade-guide). ### Ровер - Removed deprecated rover module ([PX4-Autopilot#25054](https://github.com/PX4/PX4-Autopilot/pull/25054)). +- Add support for [Apps & API](../flight_modes_rover/api.md) ([PX4-Autopilot#25074](https://github.com/PX4/PX4-Autopilot/pull/25074), [PX4-ROS2-Interface-Lib#140](https://github.com/Auterion/px4-ros2-interface-lib/pull/140)). +- Update [rover simulation](../frames_rover/index.md#simulation) ([PX4-Autopilot#25644](https://github.com/PX4/PX4-Autopilot/pull/25644)) (see [Simulation](#simulation) release note for details). ### ROS 2 diff --git a/docs/uk/ros2/offboard_control.md b/docs/uk/ros2/offboard_control.md index 142c9931cb..2a6b62079d 100644 --- a/docs/uk/ros2/offboard_control.md +++ b/docs/uk/ros2/offboard_control.md @@ -1,6 +1,6 @@ # ROS 2 Offboard Control Приклад -The following C++ example shows how to do position control in [offboard mode](../flight_modes/offboard.md) from a ROS 2 node. +The following C++ example shows how to do multicopter position control in [offboard mode](../flight_modes/offboard.md) from a ROS 2 node. Приклад починає відправляти установочні точки, входить у режим offboard, озброюється, піднімається на 5 метрів і чекає. Незважаючи на простоту, він демонструє основні принципи використання offboard control і способи надсилання команд транспортному засобу. @@ -22,7 +22,7 @@ To subscribe to data coming from nodes that publish in a different frame (for ex ## Випробування -Follow the instructions in [ROS 2 User Guide](../ros2/user_guide.md) to install PX and run the simulator, install ROS 2, and start the XRCE-DDS Agent. +Follow the instructions in [ROS 2 User Guide](../ros2/user_guide.md) to install PX and run the multicopter simulator, install ROS 2, and start the XRCE-DDS Agent. After that we can follow a similar set of steps to those in [ROS 2 User Guide > Build ROS 2 Workspace](../ros2/user_guide.md#build-ros-2-workspace) to run the example. diff --git a/docs/uk/ros2/px4_ros2_control_interface.md b/docs/uk/ros2/px4_ros2_control_interface.md index 1bf129ee18..0905f468a6 100644 --- a/docs/uk/ros2/px4_ros2_control_interface.md +++ b/docs/uk/ros2/px4_ros2_control_interface.md @@ -348,6 +348,7 @@ private: - [MulticopterGotoSetpointType](#go-to-setpoint-multicoptergotosetpointtype): Smooth position and (optionally) heading control - [FwLateralLongitudinalSetpointType](#fixed-wing-lateral-and-longitudinal-setpoint-fwlaterallongitudinalsetpointtype): Direct control of lateral and longitudinal fixed wing dynamics - DirectActuatorsSetpointType: Пряме керування моторами та установками сервоприводів польотних поверхонь +- [Rover Setpoints](#rover-setpoints): Direct access to rover control setpoints (Position, Speed, Attitude, Rate, Throttle and Steering). :::tip The other setpoint types are currently experimental, and can be found in: [px4_ros2/control/setpoint_types/experimental](https://github.com/Auterion/px4-ros2-interface-lib/tree/main/px4_ros2_cpp/include/px4_ros2/control/setpoint_types/experimental). @@ -359,6 +360,8 @@ The other setpoint types are currently experimental, and can be found in: [px4_r + + :::info This setpoint type is currently only supported for multicopters. ::: @@ -552,6 +555,40 @@ and [`FW_THR_MAX`](../advanced_config/parameter_reference.md#FW_THR_MAX). Якщо ви хочете керувати клапаном, який не контролює рух транспортного засобу, але, наприклад, сервопривід навантаження, подивіться нижче. ::: +#### Rover Setpoints + + + +The rover modules use a hierarchical structure to propagate setpoints: + +![Rover Control Structure](../../assets/middleware/ros2/px4_ros2_interface_lib/rover_control_structure.svg) + +:::info +The "highest" setpoint that is provided will be used within the PX4 rover modules to generate the setpoints that are below it (Overriding them!). +With this hierarchy there are clear rules for providing a valid control input: + +- Provide a position setpoint, **or** +- One of the setpoints on the "left" (speed **or** throttle) **and** one of the setpoints on the "right" (attitude, rate **or** steering). All combinations of "left" and "right" setpoints are valid. + +For ease of use we expose these valid combinations as new SetpointTypes. +::: + +The RoverSetpointTypes exposed through the control interface are combinations of these setpoints that lead to a valid control input: + +| SetpointType | Положення | Speed | Тяга | Attitude | Rate | Steering | Control Flags | +| ----------------------------------------------------------------------------------------------------------------------------------- | --------------------------- | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------------ | +| [RoverPosition](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1RoverPositionSetpointType.html#details) | ✓ | (✓) | (✓) | (✓) | (✓) | (✓) | Position, Velocity, Attitude, Rate, Control Allocation | +| [RoverSpeedAttitude](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1RoverSpeedAttitudeSetpointType.html) | | ✓ | (✓) | ✓ | (✓) | (✓) | Velocity, Attitude, Rate, Control Allocation | +| [RoverSpeedRate](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1RoverSpeedRateSetpointType.html) | | ✓ | (✓) | | ✓ | (✓) | Velocity, Rate, Control Allocation | +| [RoverSpeedSteering](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1RoverSpeedSteeringSetpointType.html) | | ✓ | (✓) | | | ✓ | Velocity, Control Allocation | +| [RoverThrottleAttitude](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1RoverThrottleAttitudeSetpointType.html) | | | ✓ | ✓ | (✓) | (✓) | Attitude, Rate, Control Allocation | +| [RoverThrottleRate](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1RoverThrottleRateSetpointType.html) | | | ✓ | | ✓ | (✓) | Rate, Control Allocation | +| [RoverThrottleSteering](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1RoverThrottleSteeringSetpointType.html) | | | ✓ | | | ✓ | Control Allocation | + +✓ are the setpoints we publish, and (✓) are generated internally by the PX4 rover modules according to the hierarchy above. + +An example for a rover specific drive mode using the `RoverSpeedAttitudeSetpointType` is provided [here](https://github.com/Auterion/px4-ros2-interface-lib/tree/main/examples/cpp/modes/rover_velocity). + ### Controlling a VTOL diff --git a/docs/uk/ros2/px4_ros2_interface_lib.md b/docs/uk/ros2/px4_ros2_interface_lib.md index 1829bd5d64..c392c93f85 100644 --- a/docs/uk/ros2/px4_ros2_interface_lib.md +++ b/docs/uk/ros2/px4_ros2_interface_lib.md @@ -9,15 +9,12 @@ [PX4 ROS 2 Інтерфейс бібліотеки](https://github.com/Auterion/px4-ros2-interface-lib) є бібліотекою C+++, яка спрощує контроль і взаємодіє з PX4 з ROS 2. -Бібліотека надає два інтерфейси високого рівня для розробників: +The library provides three high-level interfaces for developers: 1. [Control Interface](./px4_ros2_interface.md) дозволяє розробникам створювати та динамічно реєструвати режими, написані з використанням ROS 2. Бібліотека також надає класи для надсилання різних типів налаштувань, починаючи від багаторівневих навігаційних завдань на високому рівні аж до прямого контролю приводу. 2. [Навігаційний інтерфейс](./px4_ros2_navigation_interface.md) дозволяє надсилати позицію автомобіля з позиції PX4 з ROS 2 додатків, таких як система VIO. - - +3. [Waypoint Missions](./px4_ros2_waypoint_missions.md) allows waypoint missions to run entirely in ROS 2. ## Встановлення в робочому просторі ROS 2 diff --git a/docs/uk/ros2/px4_ros2_waypoint_missions.md b/docs/uk/ros2/px4_ros2_waypoint_missions.md new file mode 100644 index 0000000000..e1a3b16bbc --- /dev/null +++ b/docs/uk/ros2/px4_ros2_waypoint_missions.md @@ -0,0 +1,190 @@ +# PX4 ROS 2 Waypoint Missions + + + +The [PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md) provides a high-level interface for executing ROS-based waypoint missions in ROS 2. +The main use-case is for creating missions where a custom behavior is required, such as a pickup action within a mission. + +:::warning +ROS 2 missions are not compatible with MAVLink mission definitions, plan files, or ground stations. +They completely bypass the existing PX4 mission mode and waypoint logic, and cannot be planned or displayed within a ground station. +::: + +ROS 2 waypoint missions are effectively special PX4 ROS 2 custom modes that are run based on the content of a [JSON mission definition](#mission-definition). +Mission definitions can contain actions that reference existing PX4 modes, such as Takeoff mode or RTL, and can also be extended with arbitrary custom actions written in ROS. +A [mode executor](px4_ros2_control_interface.md#mode-executor) is used to schedule the modes. + +Mission definitions can be hard coded in the custom mission mode (either in code or statically loaded from a JSON string), or directly generated within the application. +They can also be dynamically loaded based on modification of a particular JSON file — this allows for building a more generic mission framework with a fixed set of custom actions. +The file can then be written by any other application, for example a HTTP or MAVFTP server. + +The current implementation only supports multicopters but is designed to be extendable to any other vehicle type. + +## Comparison to PX4/MAVLink Missions + +There are some benefits and drawbacks to using ROS-based missions, which are provided in the following paragraphs. + +### Переваги + +- Allows to extend mission capabilities by registering custom actions. +- More control over how the mission is executed. + A custom trajectory executor can be implemented, which can use any of the existing PX4 setpoint types to track the trajectory. +- Reduced complexity on the flight controller side by running non-safety-critical and non-real-time code on a more high-level companion computer. +- It can be extended to support other trajectory types, like Bezier or Dubin curves. + +### Drawbacks + +- QGroundControl currently does not display the mission or progress during execution, and cannot upload or download a mission. + Therefore you will need another mechanism to provide a mission, such as from a web server, a custom GCS, or by generating it directly inside the application. +- The current implementation only supports multicopters (it uses the [GotoSetpointType](../ros2/px4_ros2_control_interface.md#go-to-setpoint-gotosetpointtype), which only works for multicopters, and VTOL in MC mode). + It is designed to be extendable to any other vehicle type. + +## Загальний огляд + +This diagram provides a conceptual overview of the main classes and their interactions: + +![Waypoint missions overview diagram](../../assets/middleware/ros2/px4_ros2_interface_lib/waypoint_missions.svg) + + + +Missions can be defined in [JSON](#mission-definition), either as a file, or directly inside the application. +There is a file change monitor (`MissionFileMonitor`), that can be used to automatically load a mission from a specific file whenever it is created by another application (e.g. upload via MAVFTP or a cloud service). + +The **`MissionExecutor`** class contains the state machine to progress the mission index, and is at the core of the implementation: + +- Internally, it builds on top of the [Modes and Mode Executors](px4_ros2_control_interface.md#overview) and registers itself through a custom mode and executor with PX4. +- It handles switching in and out of missions: it gets activated when the user switches to the custom mode that represents the mission and the vehicle is armed. + The mode name can be customized (`My Mission` in the example below). + The mission can be paused, which makes the vehicle switch into _Hold mode_. + To resume the mission, the custom mode has to be selected again. +- When an action switches into another mode (for example Takeoff), QGroundControl will display this mode until it is completed. + The mission executor will then automatically continue. +- Custom actions can be registered. +- The mission can be set. + It then checks that all the actions which the mission defines are available and can be run. +- The state can be stored persistently by providing a file name, allowing for battery swapping. + +The **`ActionInterface`** is an interface class for custom actions. +They are identified by a name, and any number of these can be registered with the `MissionExecutor`. +A custom action is then run whenever a mission item with matching name is executed, and any extra arguments from the JSON definition are passed as arguments (for example an altitude for a takeoff action). +Actions can call other actions, run any mode (PX4 or external by its ID), run a trajectory, or run any other external action before deciding when to continue the mission. + +There is a set of default actions, for example for RTL, Land, etc. +These simply trigger the corresponding PX4 mode. +They can be disabled or replaced with custom implementations. +There are also some special actions (which can be replaced as well): + +- `OnFailure`: this is called in case of a failure, e.g. a mode switch failed, a non-existing action is called (by another action) or by an explicit call to `MissionExecutor::abort()`. + The default is to run RTL, with fallback to Land. +- `OnResume`: this is called when resuming a mission (either from the ground or in-air). + It handles a number of cases: + - when called with an argument `action="storeState"`: this can be used to store the current position when the mission is deactivated, so it can be resumed from the same position. + Currently it does not store anything. + - otherwise, when called without a valid mission index or 0, it directly continues. + - otherwise, when called while in-air, it also directly continues. + - otherwise, if landed and if the current mission item is an action that supports resuming from landed, it continues to let the action handle the resuming. + - otherwise, if landed, it finds the takeoff action from the mission, runs it, and then flies to the previous waypoint from the current index to continue the mission. +- `ChangeSettings`: this can be used to change the mission settings, such as the velocity. + The settings are applied to all following items in the mission. + +The **`TrajectoryExecutorInterface`** is an interface class to execute segments of a trajectory. +It can use any setpoint that PX4 and the current vehicle supports for tracking the trajectory. +This class is vehicle-type specific. +The current default implementation (`multicopter::WaypointTrajectoryExecutor`) uses a Goto setpoint (and thus is limited to multicopters). +The default can be replaced with a custom implementation. + +## Використання + +The following provides a small example. +It defines a custom action and a mission that uses it. + +```c++ +class CustomAction : public px4_ros2::ActionInterface { +public: + CustomAction(px4_ros2::ModeBase & mode) : _node(mode.node()) { } + + std::string name() const override {return "customAction";} + + void run( + const std::shared_ptr & handler, + const px4_ros2::ActionArguments & arguments, + const std::function & on_completed) override + { + RCLCPP_INFO(_node.get_logger(), "Running custom action"); + // Do something... + + on_completed(); + } +private: + rclcpp::Node & _node; +}; + +class MyMission { +public: + MyMission(const std::shared_ptr & node) : _node(node) + { + const auto mission = px4_ros2::Mission(nlohmann::json::parse(R"( + { + "version": 1, + "mission": { + "items": [ + { + "type": "takeoff" + }, + { + "type": "navigation", + "navigationType": "waypoint", + "x": 47.3977419, + "y": 8.5455939, + "z": 500, + "frame": "global" + }, + { + "type": "navigation", + "navigationType": "waypoint", + "x": 47.39791657, + "y": 8.54595214, + "z": 500, + "frame": "global" + }, + { + "type": "customAction" + }, + { + "type": "rtl" + } + ] + } + } +)")); + _mission_executor = std::make_unique("My Mission", + px4_ros2::MissionExecutor::Configuration().addCustomAction(), *node); + + if (!_mission_executor->doRegister()) { + throw std::runtime_error("Failed to register mission executor"); + } + _mission_executor->setMission(mission); + + _mission_executor->onProgressUpdate([&](int current_index) { + RCLCPP_INFO(_node->get_logger(), "Current mission index: %i", current_index); + }); + _mission_executor->onCompleted([&] { + RCLCPP_INFO(_node->get_logger(), "Mission completed callback"); + }); + } + +private: + std::shared_ptr _node; + std::unique_ptr _mission_executor; +}; +``` + +A full example with a few custom actions can be found under [github.com/Auterion/px4-ros2-interface-lib/tree/main/examples/cpp/modes/mission/include](https://github.com/Auterion/px4-ros2-interface-lib/tree/main/examples/cpp/modes/mission/include). + +## Mission Definition + +The mission JSON file can contain mission defaults and a list of mission items, including user-defined types with custom arguments. +Waypoint coordinates currently need to be defined in global frame, and other frame types might be added in future. + +The schema can be found under [github.com/Auterion/px4-ros2-interface-lib/blob/main/mission/schema.yaml](https://github.com/Auterion/px4-ros2-interface-lib/blob/main/mission/schema.yaml). +It provides more details and can be used to validate a JSON file. diff --git a/docs/uk/sim_gazebo_gz/index.md b/docs/uk/sim_gazebo_gz/index.md index 01fbe74cbe..a05e18c158 100644 --- a/docs/uk/sim_gazebo_gz/index.md +++ b/docs/uk/sim_gazebo_gz/index.md @@ -20,6 +20,8 @@ See [Simulation](../simulation/index.md) for general information about simulator Gazebo Harmonic is installed by default on Ubuntu 22.04 as part of the normal [development environment setup](../dev_setup/dev_env_linux_ubuntu.md#simulation-and-nuttx-pixhawk-targets). +Gazebo versions Harmonic, Ionic, and Jetty are supported on Ubuntu 24.04. The latest installed Gazebo release is used by default. + :::info The PX4 installation scripts are based on the instructions: [Binary Installation on Ubuntu](https://gazebosim.org/docs/harmonic/install_ubuntu/) (gazebosim.org). ::: @@ -48,22 +50,23 @@ make px4_sitl gz_x500 The supported vehicles and `make` commands are listed below. Note that all gazebo make targets have the prefix `gz_`. -| Транспортний засіб | Команда | `PX4_SYS_AUTOSTART` | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------- | ------------------- | -| [Quadrotor (x500)](../sim_gazebo_gz/vehicles.md#x500-quadrotor) | `make px4_sitl gz_x500` | 4001 | -| [X500 Quadrotor with Depth Camera (Front-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-depth-camera-front-facing) | `make px4_sitl gz_x500_depth` | 4002 | -| [Quadrotor(x500) with Vision Odometry](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-visual-odometry) | `make px4_sitl gz_x500_vision` | 4005 | -| [Quadrotor(x500) with 1D LIDAR (Down-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-1d-lidar-down-facing) | `make px4_sitl gz_x500_lidar_down` | 4016 | -| [Quadrotor(x500) with 2D LIDAR](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-2d-lidar) | `make px4_sitl gz_x500_lidar_2d` | 4013 | -| [Quadrotor(x500) with 1D LIDAR (Front-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-1d-lidar-front-facing) | `make px4_sitl gz_x500_lidar_front` | 4017 | -| [Quadrotor(x500) with gimbal (Front-facing) in Gazebo](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-gimbal-front-facing) | `make px4_sitl gz_x500_gimbal` | 4019 | -| [VTOL](../sim_gazebo_gz/vehicles.md#standard-vtol) | `make px4_sitl gz_standard_vtol` | 4004 | -| [Plane](../sim_gazebo_gz/vehicles.md#standard-plane) | `make px4_sitl gz_rc_cessna` | 4003 | -| [Advanced Plane](../sim_gazebo_gz/vehicles.md#advanced-plane) | `make px4_sitl gz_advanced_plane` | 4008 | -| [Differential Rover](../sim_gazebo_gz/vehicles.md#differential-rover) | `make px4_sitl gz_r1_rover` | 4009 | -| [Ackermann Rover](../sim_gazebo_gz/vehicles.md#ackermann-rover) | `make px4_sitl gz_rover_ackermann` | 4012 | -| [Quad Tailsitter VTOL](../sim_gazebo_gz/vehicles.md#quad-tailsitter-vtol) | `make px4_sitl gz_quadtailsitter` | 4018 | -| [Tiltrotor VTOL](../sim_gazebo_gz/vehicles.md#tiltrotor-vtol) | `make px4_sitl gz_tiltrotor` | 4020 | +| Транспортний засіб | Команда | `PX4_SYS_AUTOSTART` | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------- | ------------------- | +| [Quadrotor (x500)](../sim_gazebo_gz/vehicles.md#x500-quadrotor) | `make px4_sitl gz_x500` | 4001 | +| [X500 Quadrotor with Depth Camera (Front-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-depth-camera-front-facing) | `make px4_sitl gz_x500_depth` | 4002 | +| [Quadrotor(x500) with Vision Odometry](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-visual-odometry) | `make px4_sitl gz_x500_vision` | 4005 | +| [Quadrotor(x500) with 1D LIDAR (Down-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-1d-lidar-down-facing) | `make px4_sitl gz_x500_lidar_down` | 4016 | +| [Quadrotor(x500) with 2D LIDAR](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-2d-lidar) | `make px4_sitl gz_x500_lidar_2d` | 4013 | +| [Quadrotor(x500) with 1D LIDAR (Front-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-1d-lidar-front-facing) | `make px4_sitl gz_x500_lidar_front` | 4017 | +| [Quadrotor(x500) with gimbal (Front-facing) in Gazebo](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-gimbal-front-facing) | `make px4_sitl gz_x500_gimbal` | 4019 | +| [VTOL](../sim_gazebo_gz/vehicles.md#standard-vtol) | `make px4_sitl gz_standard_vtol` | 4004 | +| [Plane](../sim_gazebo_gz/vehicles.md#standard-plane) | `make px4_sitl gz_rc_cessna` | 4003 | +| [Advanced Plane](../sim_gazebo_gz/vehicles.md#advanced-plane) | `make px4_sitl gz_advanced_plane` | 4008 | +| [Quad Tailsitter VTOL](../sim_gazebo_gz/vehicles.md#quad-tailsitter-vtol) | `make px4_sitl gz_quadtailsitter` | 4018 | +| [Tiltrotor VTOL](../sim_gazebo_gz/vehicles.md#tiltrotor-vtol) | `make px4_sitl gz_tiltrotor` | 4020 | +| [Differential Rover](../sim_gazebo_gz/vehicles.md#differential-rover) | `make px4_sitl gz_rover_differential` | 50000 | +| [Ackermann Rover](../sim_gazebo_gz/vehicles.md#ackermann-rover) | `make px4_sitl gz_rover_ackermann` | 51000 | +| [Mecanum Rover](../sim_gazebo_gz/vehicles.md#mecanum-rover) | `make px4_sitl gz_rover_mecanum` | 52000 | All [vehicle models](../sim_gazebo_gz/vehicles.md) (and [worlds](#specify-world)) are included as a submodule from the [Gazebo Models Repository](../sim_gazebo_gz/gazebo_models.md) repository. diff --git a/docs/uk/sim_gazebo_gz/vehicles.md b/docs/uk/sim_gazebo_gz/vehicles.md index 25a52f2447..1660045bed 100644 --- a/docs/uk/sim_gazebo_gz/vehicles.md +++ b/docs/uk/sim_gazebo_gz/vehicles.md @@ -185,7 +185,7 @@ make px4_sitl gz_tiltrotor [Differential Rover](../frames_rover/index.md#differential) uses the [rover world](../sim_gazebo_gz/worlds.md#rover) by default. ```sh -make px4_sitl gz_r1_rover +make px4_sitl gz_rover_differential ``` ![Differential Rover in Gazebo](../../assets/simulation/gazebo/vehicles/rover_differential.png) @@ -199,3 +199,13 @@ make px4_sitl gz_rover_ackermann ``` ![Ackermann Rover in Gazebo](../../assets/simulation/gazebo/vehicles/rover_ackermann.png) + +### Mecanum Rover + +[Mecanum Rover](../frames_rover/index.md#mecanum) uses the [rover world](../sim_gazebo_gz/worlds.md#rover) by default. + +```sh +make px4_sitl gz_rover_mecanum +``` + +![Mecanum Rover in Gazebo](../../assets/simulation/gazebo/vehicles/rover_mecanum.png) From d3bcdf8ba78d9f1182696fdf3902421e8e4a3634 Mon Sep 17 00:00:00 2001 From: PX4 Build Bot Date: Wed, 8 Oct 2025 16:19:27 +1100 Subject: [PATCH 02/71] New Crowdin translations - zh-CN (#25661) Co-authored-by: Crowdin Bot --- docs/zh/SUMMARY.md | 2 + docs/zh/companion_computer/pixhawk_rpi.md | 2 +- docs/zh/config/_autotune.md | 28 +- docs/zh/debug/failure_injection.md | 42 +-- docs/zh/flight_modes/offboard.md | 128 +++++--- docs/zh/flight_modes_rover/api.md | 29 ++ docs/zh/frames_rover/index.md | 12 +- docs/zh/middleware/uxrce_dds.md | 20 +- docs/zh/releases/main.md | 8 +- docs/zh/ros2/index.md | 14 +- docs/zh/ros2/multi_vehicle.md | 38 +-- docs/zh/ros2/offboard_control.md | 10 +- docs/zh/ros2/px4_ros2_control_interface.md | 55 +++- docs/zh/ros2/px4_ros2_interface_lib.md | 5 +- docs/zh/ros2/px4_ros2_msg_translation_node.md | 2 +- docs/zh/ros2/px4_ros2_waypoint_missions.md | 190 ++++++++++++ docs/zh/ros2/user_guide.md | 280 +++++++++--------- docs/zh/sim_gazebo_gz/index.md | 35 ++- docs/zh/sim_gazebo_gz/vehicles.md | 12 +- docs/zh/telemetry/telemetry_wifi.md | 2 +- 20 files changed, 631 insertions(+), 283 deletions(-) create mode 100644 docs/zh/flight_modes_rover/api.md create mode 100644 docs/zh/ros2/px4_ros2_waypoint_missions.md diff --git a/docs/zh/SUMMARY.md b/docs/zh/SUMMARY.md index cbe5e1a28b..1a4deb2d9c 100644 --- a/docs/zh/SUMMARY.md +++ b/docs/zh/SUMMARY.md @@ -436,6 +436,7 @@ - [Attitude Tuning](config_rover/attitude_tuning.md) - [Velocity Tuning](config_rover/velocity_tuning.md) - [Position Tuning](config_rover/position_tuning.md) + - [Apps & API](flight_modes_rover/api.md) - [Complete Vehicles](complete_vehicles_rover/index.md) - [Aion Robotics R1](complete_vehicles_rover/aion_r1.md) - [Submarines (experimental)](frames_sub/index.md) @@ -872,6 +873,7 @@ - [PX4 ROS 2 Interface Library](ros2/px4_ros2_interface_lib.md) - [Control Interface](ros2/px4_ros2_control_interface.md) - [Navigation Interface](ros2/px4_ros2_navigation_interface.md) + - [Waypoint Missions](ros2/px4_ros2_waypoint_missions.md) - [ROS 2 Message Translation Node](ros2/px4_ros2_msg_translation_node.md) - [ROS 1 (Deprecated)](ros/ros1.md) - [ROS/MAVROS安装指南](ros/mavros_installation.md) diff --git a/docs/zh/companion_computer/pixhawk_rpi.md b/docs/zh/companion_computer/pixhawk_rpi.md index beb8a1f7fe..73406d2a8d 100644 --- a/docs/zh/companion_computer/pixhawk_rpi.md +++ b/docs/zh/companion_computer/pixhawk_rpi.md @@ -266,7 +266,7 @@ The configuration steps are: ``` [MAV_1_CONFIG=0](../advanced_config/parameter_reference.md#MAV_1_CONFIG) and [UXRCE_DDS_CFG=102](../advanced_config/parameter_reference.md#UXRCE_DDS_CFG) disable MAVLink on TELEM2 and enable the uXRCE-DDS client on TELEM2, respectively. - The `SER_TEL2_BAUD` rate sets the comms link data rate.\ + The `SER_TEL2_BAUD` rate sets the comms link data rate. You could similarly configure a connection to `TELEM1` using either `MAV_1_CONFIG` or `MAV_0_CONFIG`. ::: info diff --git a/docs/zh/config/_autotune.md b/docs/zh/config/_autotune.md index 8c5df070ae..6a75da6380 100644 --- a/docs/zh/config/_autotune.md +++ b/docs/zh/config/_autotune.md @@ -95,9 +95,17 @@ The test steps are: 4. Read the warning popup and click on **OK** to start tuning. +
+ 4. The drone will first start to perform quick roll motions followed by pitch and yaw motions. The progress is shown in the progress bar, next to the _Autotune_ button. +
+ +4. The drone will first start to perform quick roll motions followed by pitch and yaw motions. When [`FW_AT_SYSID_TYPE`](../advanced_config/parameter_reference.md#FW_AT_SYSID_TYPE) is set to linear/logarithmic sine sweep (recommended), the max rates are approximately 45 deg/s for roll and 30 deg/s for pitch and yaw. + The progress is shown in the progress bar, next to the _Autotune_ button. + +
5. Manually land and disarm to apply the new tuning parameters. @@ -108,6 +116,13 @@ The test steps are: 5. The tuning will be immediately/automatically be applied and tested in flight (by default). PX4 will then run a 4 second test and revert the new tuning if a problem is detected. +The figure below shows how steps 4 and 5 might look in flight on the pitch axis. +The pitch rate gradually increases up until it reaches the target. +This amplitude is then held while the signal frequency is increased. +You can then see how the tuned system is able to follow the setpoint in the test signal. + + +
:::warning @@ -174,9 +189,20 @@ Fast oscillations (more than 1 oscillation per second): this is because the gain ### The auto-tuning sequence fails +
+ If the drone was not moving enough during auto-tuning, the system identification algorithm might have issues to find the correct coefficients. -Increase the
[MC_AT_SYSID_AMP](../advanced_config/parameter_reference.md#MC_AT_SYSID_AMP)
[FW_AT_SYSID_AMP](../advanced_config/parameter_reference.md#FW_AT_SYSID_AMP)
parameter by steps of 1 and trigger the auto-tune again. +Increase the [MC_AT_SYSID_AMP](../advanced_config/parameter_reference.md#MC_AT_SYSID_AMP) parameter by steps of 1 and trigger the auto-tune again. + +
+
+ +By default, the autotune maneuvers ensure that a sufficient angular rate is reached for system identification. The target rates are approximately 45 deg/s for roll and 30 deg/s for pitch and yaw. + +If the signal-to-noise ratio of the vehicle is low, the system identification algorithm might have issues finding the correct coefficients. Ensure that there is no excessive noise and/or platform vibration. + +
### The drone oscillates after auto-tuning diff --git a/docs/zh/debug/failure_injection.md b/docs/zh/debug/failure_injection.md index e013753243..772e67c1a3 100644 --- a/docs/zh/debug/failure_injection.md +++ b/docs/zh/debug/failure_injection.md @@ -9,7 +9,7 @@ Failure injection is disabled by default, and can be enabled using the [SYS_FAIL Failure injection still in development. At time of writing (PX4 v1.14): -- It can only be used in simulation (support for both failure injection in real flight is planned). +- Support may vary by failure type and between simulatiors and real vehicle. - It requires support in the simulator. It is supported in Gazebo Classic - Many failure types are not broadly implemented. @@ -33,31 +33,31 @@ where: - _component_: - 传感器: - - `gyro`: Gyro. - - `accel`: Accelerometer. + - `gyro`: Gyroscope + - `accel`: Accelerometer - `mag`: Magnetometer - `baro`: Barometer - - `gps`: GPS + - `gps`: Global navigation satellite system - `optical_flow`: Optical flow. - - `vio`: Visual inertial odometry. + - `vio`: Visual inertial odometry - `distance_sensor`: Distance sensor (rangefinder). - - `airspeed`: Airspeed sensor. + - `airspeed`: Airspeed sensor - Systems: - - `battery`: Battery. - - `motor`: Motor. - - `servo`: Servo. - - `avoidance`: Avoidance. - - `rc_signal`: RC Signal. - - `mavlink_signal`: MAVLink signal (data telemetry). + - `battery`: Battery + - `motor`: Motor + - `servo`: Servo + - `avoidance`: Avoidance + - `rc_signal`: RC Signal + - `mavlink_signal`: MAVLink data telemetry connection - _failure_type_: - - `ok`: Publish as normal (Disable failure injection). - - `off`: Stop publishing. - - `stuck`: Report same value every time (_could_ indicate a malfunctioning sensor). - - `garbage`: Publish random noise. This looks like reading uninitialized memory. - - `wrong`: Publish invalid values (that still look reasonable/aren't "garbage"). - - `slow`: Publish at a reduced rate. - - `delayed`: Publish valid data with a significant delay. - - `intermittent`: Publish intermittently. + - `ok`: Publish as normal (Disable failure injection) + - `off`: Stop publishing + - `stuck`: Constantly report the same value which _can_ happen on a malfunctioning sensor + - `garbage`: Publish random noise. This looks like reading uninitialized memory + - `wrong`: Publish invalid values that still look reasonable/aren't "garbage" + - `slow`: Publish at a reduced rate + - `delayed`: Publish valid data with a significant delay + - `intermittent`: Publish intermittently - _instance number_ (optional): Instance number of affected sensor. 0 (default) indicates all sensors of specified type. @@ -65,7 +65,7 @@ where: To simulate losing RC signal without having to turn off your RC controller: -1. Enable the parameter [SYS_FAILURE_EN](../advanced_config/parameter_reference.md#SYS_FAILURE_EN). +1. Enable the parameter [SYS_FAILURE_EN](../advanced_config/parameter_reference.md#SYS_FAILURE_EN). And specifically to turn off motors also [CA_FAILURE_MODE](../advanced_config/parameter_reference.md#CA_FAILURE_MODE). 2. Enter the following commands on the MAVLink console or SITL _pxh shell_: ```sh diff --git a/docs/zh/flight_modes/offboard.md b/docs/zh/flight_modes/offboard.md index 63e474ed76..da076bf211 100644 --- a/docs/zh/flight_modes/offboard.md +++ b/docs/zh/flight_modes/offboard.md @@ -62,6 +62,11 @@ bool thrust_and_torque bool direct_actuator ``` +:::warning +The following list shows the `OffboardControlMode` options for copter, fixed-wing, and VTOL. +For rovers see the [rover section](#rover). +::: + The fields are ordered in terms of priority such that `position` takes precedence over `velocity` and later fields, `velocity` takes precedence over `acceleration`, and so on. 第一个非零字段(从上到下) 定义了Offboard模式所需的有效估计以及可用的设定值消息。 For example, if the `acceleration` field is the first non-zero value, then PX4 requires a valid `velocity estimate`, and the setpoint must be specified using the `TrajectorySetpoint` message. @@ -90,20 +95,93 @@ Before using offboard mode with ROS 2, please spend a few minutes understanding - Velocity setpoint (`velocity` different from `NaN` and `position` set to `NaN`). Non-`NaN` values acceleration are used as feedforward terms for the inner loop controllers. - Acceleration setpoint (`acceleration` different from `NaN` and `position` and `velocity` set to `NaN`) - - 所有值都是基于NED(北, 东, 地)坐标系,位置、速度和加速的单位分别为\[m\], \[m/s\] 和\[m/s^2\] 。 + - All values are interpreted in NED (Nord, East, Down) coordinate system and the units are `[m]`, `[m/s]` and `[m/s^2]` for position, velocity and acceleration, respectively. - [px4_msgs::msg::VehicleAttitudeSetpoint](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleAttitudeSetpoint.msg) - 支持以下输入组合: - quaternion `q_d` + thrust setpoint `thrust_body`. - Non-`NaN` values of `yaw_sp_move_rate` are used as feedforward terms expressed in Earth frame and in \[rad/s\]. + Non-`NaN` values of `yaw_sp_move_rate` are used as feedforward terms expressed in Earth frame and in `[rad/s]`. - - 姿态四元数表示无人机机体坐标系FRD(前、右、下) 与NED坐标系之间的旋转。 这个推力是在无人机体轴FRD坐标系下,并归一化为 \[-1, 1\] 。 + - 姿态四元数表示无人机机体坐标系FRD(前、右、下) 与NED坐标系之间的旋转。 + 这个推力是在无人机体轴FRD坐标系下,并归一化为 \[-1, 1\] 。 - [px4_msgs::msg::VehicleRatesSetpoint](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/VehicleRatesSetpoint.msg) - 支持以下输入组合: - `roll`, `pitch`, `yaw` and `thrust_body`. - - 所有值都表示在无人机体轴FRD坐标系下。 角速率(roll, pitch, yaw) 单位为\[rad/s\] ,thrust_body归一化为 \[-1, 1\]。 + - 所有值都表示在无人机体轴FRD坐标系下。 + The rates are in `[rad/s]` while thrust_body is normalized in `[-1, 1]`. + +### 无人车 + +Rover modules must set the control mode using `OffboardControlMode` and use the appropriate messages to configure the corresponding setpoints. +The approach is similar to other vehicle types, but the allowed control mode combinations and setpoints are different: + +| Category | 用法 | Setpoints | +| -------------------------------------------------------------------------------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| (Recommended) [Rover Setpoints](#rover-setpoints) | General rover control | [RoverPositionSetpoint](../msg_docs/RoverPositionSetpoint.md), [RoverSpeedSetpoint](../msg_docs/RoverSpeedSetpoint.md), [RoverAttitudeSetpoint](../msg_docs/RoverAttitudeSetpoint.md), [RoverRateSetpoint](../msg_docs/RoverRateSetpoint.md), [RoverThrottleSetpoint](../msg_docs/RoverThrottleSetpoint.md), [RoverSteeringSetpoint](../msg_docs/RoverSteeringSetpoint.md) | +| [Actuator Setpoints](#actuator-setpoints) | Direct actuator control | [ActuatorMotors](../msg_docs/ActuatorMotors.md), [ActuatorServos](../msg_docs/ActuatorServos.md) | +| (Deprecated) [Trajectory Setpoint](#deprecated-trajectory-setpoint) | General vehicle control | [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) | + +#### Rover Setpoints + +The rover modules use a hierarchical structure to propagate setpoints: + +![Rover Control Structure](../../assets/middleware/ros2/px4_ros2_interface_lib/rover_control_structure.svg) + +The "highest" setpoint that is provided will be used within the PX4 rover modules to generate the setpoints that are below it (overriding them!). +With this hierarchy there are clear rules for providing a valid control input: + +- Provide a position setpoint **or** +- One of the setpoints on the "left" (speed **or** throttle) **and** one of the setpoints on the "right" (attitude, rate **or** steering). + All combinations of "left" and "right" setpoints are valid. + +The following are all valid setpoint combinations and their respective control flags that must be set through [OffboardControlMode](../msg_docs/OffboardControlMode.md) (set all others to _false_). +Additionally, for some combinations we require certain setpoints to be published with `NAN` values so that the setpoints of interest are not overridden by the rover module (due to the hierarchy above). +✓ are the relevant setpoints we publish, and ✗ are the setpoint that need to be published with `NAN` values. + +| Setpoint Combination | Control Flag | [RoverPositionSetpoint](../msg_docs/RoverPositionSetpoint.md) | [RoverSpeedSetpoint](../msg_docs/RoverSpeedSetpoint.md) | [RoverThrottleSetpoint](../msg_docs/RoverThrottleSetpoint.md) | [RoverAttitudeSetpoint](../msg_docs/RoverAttitudeSetpoint.md) | [RoverRateSetpoint](../msg_docs/RoverRateSetpoint.md) | [RoverSteeringSetpoint](../msg_docs/RoverSteeringSetpoint.md) | +| -------------------- | ----------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------------- | +| 安装位置 | 位置 | ✓ | | | | | | +| Speed + Attitude | 速度 | | ✓ | | ✓ | | | +| Speed + Rate | 速度 | | ✓ | | ✗ | ✓ | | +| Speed + Steering | 速度 | | ✓ | | ✗ | ✗ | ✓ | +| Throttle + Attitude | attitude | | | ✓ | ✓ | | | +| Throttle + Rate | body_rate | | | ✓ | | ✓ | | +| Throttle + Steering | thrust_and_torque | | | ✓ | | | ✓ | + +:::info +If you intend to use the rover setpoints, we recommend using the [PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md) instead since it simplifies the publishing of these setpoints. +::: + +#### Actuator Setpoints + +Instead of controlling the vehicle using position, speed, rate and other setpoints, you can directly control the motors and actuators using [ActuatorMotors](../msg_docs/ActuatorMotors.md) and [ActuatorServos](../msg_docs/ActuatorServos.md). +In [OffboardControlMode](../msg_docs/OffboardControlMode.md) set `direct_actuator` to _true_ and all other flags to _false_. + +:::info +This bypasses the rover modules including any limits on steering rates or accelerations and the inverse kinematics step. +We recommend using [RoverSteeringSetpoint](../msg_docs/RoverSteeringSetpoint.md) and [RoverThrottleSetpoint](../msg_docs/RoverThrottleSetpoint.md) instead for low level control (see [Rover Setpoints](#rover-setpoints)). +::: + +#### (Deprecated) Trajectory Setpoint + +:::warning +The [Rover Setpoints](#rover-setpoints) are a replacement for the [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) and we highly recommend using those instead as they have a well defined behaviour and offer more flexibility. +::: + +The rover modules support the _position_, _velocity_ and _yaw_ fields of the [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md). +However, only one of the fields is active at a time and is defined by the flags of [OffboardControlMode](../msg_docs/OffboardControlMode.md): + +| Control Mode Flag | Active Trajectory Setpoint Field | +| ----------------- | -------------------------------- | +| 位置 | 位置 | +| 速度 | 速度 | +| attitude | yaw | + +:::info +Ackermann rovers do not support the yaw setpoint. +::: ### Generic Vehicle @@ -116,8 +194,10 @@ Before using offboard mode with ROS 2, please spend a few minutes understanding - [px4_msgs::msg::ActuatorMotors](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorMotors.msg) + [px4_msgs::msg::ActuatorServos](https://github.com/PX4/PX4-Autopilot/blob/main/msg/versioned/ActuatorServos.msg) - 直接控制电机输出和/或伺服系统(舵机)输出。 - - Currently works at lower level than then `control_allocator` module. Do not publish these messages when not in offboard mode. - - 所有值归一化为\[-1, 1\]。 For outputs that do not support negative values, negative entries map to `NaN`. + - Currently works at lower level than then `control_allocator` module. + Do not publish these messages when not in offboard mode. + - All the values normalized in `[-1, 1]`. + For outputs that do not support negative values, negative entries map to `NaN`. - `NaN` maps to disarmed. ## MAVLink 消息 @@ -207,41 +287,7 @@ Before using offboard mode with ROS 2, please spend a few minutes understanding ### 无人车 -- [SET_POSITION_TARGET_LOCAL_NED](https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_LOCAL_NED) - - The following input combinations are supported (in `type_mask`): - - Position setpoint (only `x`, `y`, `z`) - - Specify the _type_ of the setpoint in `type_mask`: - - ::: info - The _setpoint type_ values below are not part of the MAVLink standard for the `type_mask` field. - :: - - 值为: - - - 12288:悬停设定值(无人机足够接近设定值时会停止)。 - - - Velocity setpoint (only `vx`, `vy`, `vz`) - - - PX4 supports the coordinate frames (`coordinate_frame` field): [MAV_FRAME_LOCAL_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_LOCAL_NED) and [MAV_FRAME_BODY_NED](https://mavlink.io/en/messages/common.html#MAV_FRAME_BODY_NED). - -- [SET_POSITION_TARGET_GLOBAL_INT](https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_GLOBAL_INT) - - The following input combinations are supported (in `type_mask`): - - Position setpoint (only `lat_int`, `lon_int`, `alt`) - - - Specify the _type_ of the setpoint in `type_mask` (not part of the MAVLink standard). - 值为: - - 下面的比特位没有置位,是正常表现。 - - 12288:悬停设定值(无人机足够接近设定值时会停止)。 - - - PX4 supports the coordinate frames (`coordinate_frame` field): [MAV_FRAME_GLOBAL](https://mavlink.io/en/messages/common.html#MAV_FRAME_GLOBAL). - -- [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET) - - 支持以下输入组合: - - Attitude/orientation (`SET_ATTITUDE_TARGET.q`) with thrust setpoint (`SET_ATTITUDE_TARGET.thrust`). - ::: info - Only the yaw setting is actually used/extracted. - -::: +Rover does not support a MAVLink offboard API (ROS2 is supported). ## Offboard参数 diff --git a/docs/zh/flight_modes_rover/api.md b/docs/zh/flight_modes_rover/api.md new file mode 100644 index 0000000000..1783ee9344 --- /dev/null +++ b/docs/zh/flight_modes_rover/api.md @@ -0,0 +1,29 @@ +# Apps & API + +The rover modules have been tested and integrated with a subset of the available [Apps & API](../middleware/index.md) methods. +We specifically provide guides for using [ROS 2](../ros2/index.md) to interface a companion computer with PX4 via [uXRCE-DDS](../middleware/uxrce_dds.md). + +| Method | 描述 | +| ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [PX4 ROS 2 Interface](#px4-ros-2-interface) (Recommended) | Register a custom mode and publish [RoverSetpointTypes](../ros2/px4_ros2_control_interface.md#rover-setpoints). | +| [ROS 2 Offboard Control](#ros-2-offboard-control) | Use the PX4 internal [Offboard Mode](../flight_modes/offboard.md) and publish messages defined in [dds_topics.yaml](../middleware/dds_topics.md). | + +## PX4 ROS 2 Interface + +We recommend the use of the [PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md) which allows you to register a custom drive mode and exposes [RoverSetpointTypes](../ros2/px4_ros2_control_interface.md#rover-setpoints). + +By using these setpoints (instead of the PX4 internal rover setpoints), you are guaranteed to send valid control inputs to your vehicle and the control flags for the setpoints you are using are automatically set for you. +Registering a custom drive mode instead of using [ROS 2 Offboard Control](#ros-2-offboard-control) additionally provides the advantages listed [here](../concept/flight_modes.md#internal-vs-external-modes). + +To get familiar with this method, read through the guide for the [PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md) where we also provide an example app for rover. + +## ROS 2 Offboard Control + +[ROS 2 Offboard Control](../ros2/offboard_control.md) uses the PX4 internal [Offboard Mode](../flight_modes/offboard.md). + +While you can subscribe/publish to all topics specified in [dds_topics.yaml](../middleware/dds_topics.md), not all rover modules support all of these topics (see [Supported Setpoints](../flight_modes/offboard.md#rover)). +Unlike the [RoverSetpointTypes](../ros2/px4_ros2_control_interface.md#rover-setpoints) exposed through the [PX4 ROS 2 Interface](#px4-ros-2-interface), there is no guarantee that the published setpoints lead to a valid control input. + +In addition, the correct control mode flags must be set through [OffboardControlMode](../msg_docs/OffboardControlMode.md). +This requires a deeper understanding of PX4 and the structure of the rover modules. +For general information on setting up offboard mode read through [Offboard Mode](../flight_modes/offboard.md) and then consult [Supported Setpoints](../flight_modes/offboard.md#rover). diff --git a/docs/zh/frames_rover/index.md b/docs/zh/frames_rover/index.md index 79d212bdca..76b1749d4f 100644 --- a/docs/zh/frames_rover/index.md +++ b/docs/zh/frames_rover/index.md @@ -21,7 +21,7 @@ The supported frames can be seen in [Airframes Reference > Rover](../airframes/a ## Ackermann -<0/> <1/> + An Ackermann rover controls its direction by pointing the front wheels in the direction of travel — the [Ackermann steering geometry](https://en.wikipedia.org/wiki/Ackermann_steering_geometry) compensates for the fact that wheels on the inside and outside of the turn move at different rates. This kind of steering is used on most commercial vehicles, including cars, trucks etc. @@ -34,7 +34,7 @@ PX4 does not require that the vehicle uses the Ackermann geometry and will work ## Differential -<0/> <1/> + A differential rover's motion is controlled using a differential drive mechanism, where the left and right wheel speeds are adjusted independently to achieve the desired forward speed and yaw rate. Forward motion is achieved by driving both wheels at the same speed in the same direction. @@ -48,7 +48,7 @@ The differential setup also work for rovers with skid or tank steering. ## Mecanum -<0/> <1/> + A Mecanum rover is a type of mobile robot that uses Mecanum wheels to achieve omnidirectional movement. These wheels are unique because they have rollers mounted at a 45-degree angle around their circumference, allowing the rover to move not only forward and backward but also side-to-side and diagonally without needing to rotate first. Each wheel is driven by its own motor, and by controlling the speed and direction of each motor, the rover can move in any direction or spin in place. @@ -57,15 +57,17 @@ Each wheel is driven by its own motor, and by controlling the speed and directio ## See Also -- [Drive Modes](../flight_modes_rover/index.md). +- [Drive Modes](../flight_modes_rover/index.md) - [Configuration/Tuning](../config_rover/index.md) +- [Apps & API](../flight_modes_rover/api.md) - [Complete Vehicles](../complete_vehicles_rover/index.md) ## 仿真 -[Gazebo](../sim_gazebo_gz/index.md) provides simulations for ackermann and differential rovers: +PX4 provides synthetic simulation models for [Gazebo](../sim_gazebo_gz/index.md) of all three rover types to test the software and validate changes and new features: - [Ackermann rover](../sim_gazebo_gz/vehicles.md#ackermann-rover) - [Differential rover](../sim_gazebo_gz/vehicles.md#differential-rover) +- [Mecanum rover](../sim_gazebo_gz/vehicles.md#mecanum-rover) ![Rover gazebo simulation](../../assets/airframes/rover/rover_simulation.png) diff --git a/docs/zh/middleware/uxrce_dds.md b/docs/zh/middleware/uxrce_dds.md index fbf9244522..65b014b0c1 100644 --- a/docs/zh/middleware/uxrce_dds.md +++ b/docs/zh/middleware/uxrce_dds.md @@ -389,12 +389,12 @@ While most releases should support a very similar set of messages, to be certain Note that ROS 2/DDS needs to have the _same_ message definitions that were used to create the uXRCE-DDS client module in the PX4 Firmware in order to interpret the messages. The message definitions are stored in the ROS 2 interface package [PX4/px4_msgs](https://github.com/PX4/px4_msgs), and they are automatically synchronized by CI on the `main` and release branches. -Note that all the messages from PX4 source code are present in the repository, but only those listed in `dds_topics.yaml` will be available as ROS 2 topics. -Therefore, +需要注意的是,PX4 源代码中的所有消息均存在于该代码仓库中,但只有在dds_topics.yaml文件中列出的消息,才会作为 ROS 2 话题可用。 +因此 -- If you're using a main or release version of PX4 you can get the message definitions by cloning the interface package [PX4/px4_msgs](https://github.com/PX4/px4_msgs) into your workspace. -- If you're creating or modifying uORB messages you must manually update the messages in your workspace from your PX4 source tree. - Generally this means that you would update [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml), clone the interface package, and then manually synchronize it by copying the new/modified message definitions from [PX4-Autopilot/msg](https://github.com/PX4/PX4-Autopilot/tree/main/msg) to its `msg` folders. +- 如果您正在使用 PX4 的主要版本或发布版本,您可以通过克隆接口包[PX4/px4_msgs](https://github.com/PX4/px4_msgs)获得消息定义。 +- 如果您要创建或修改 uORB 消息,必须从 PX4 源代码树中手动更新工作空间中的消息。 + 一般来说,这意味着您将更新 [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml),克隆接口包。 然后手动同步,将新的/修改的消息定义从 [PX4-Autopilot/msg](https://github.com/PX4/PX4-Autopilot/tree/main/msg)复制到它的 `msg` 文件夹。 Assuming that PX4-Autopilot is in your home directory `~`, while `px4_msgs` is in `~/px4_ros_com/src/`, then the command might be: ```sh @@ -412,13 +412,13 @@ Therefore, Custom topic and service namespaces can be applied at build time (changing [dds_topics.yaml](../middleware/dds_topics.md)), at runtime, or through a parameter (which is useful for multi vehicle operations): -- One possibility is to use the `-n` option when starting the [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) from command line. - This technique can be used both in simulation and real vehicles. -- A custom namespace can be provided for simulations (only) by setting the environment variable `PX4_UXRCE_DDS_NS` before starting the simulation. +- 一种可能性是在从命令行启动[uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client)时使用 "-n" 选项。 + 这种技术既可用于模拟,也可用于实际机体。 +- 在开始模拟前,可以通过设置环境变量 `PX4_UXRCE_DDS_NS`来提供自定义命名空间 (仅限) :::info Changing the namespace at runtime will append the desired namespace as a prefix to all `topic` fields in [dds_topics.yaml](../middleware/dds_topics.md) and all [service servers](#dds-ros-2-services). -Therefore, commands like: +因此,命令如下: ```sh uxrce_dds_client start -n uav_1 @@ -430,7 +430,7 @@ uxrce_dds_client start -n uav_1 PX4_UXRCE_DDS_NS=uav_1 make px4_sitl gz_x500 ``` -will generate topics under the namespaces: +将在以下命名空间下生成话题: ```sh /uav_1/fmu/in/ # for subscribers diff --git a/docs/zh/releases/main.md b/docs/zh/releases/main.md index 6166e251c5..cd60a90e55 100644 --- a/docs/zh/releases/main.md +++ b/docs/zh/releases/main.md @@ -58,7 +58,10 @@ Please continue reading for [upgrade instructions](#upgrade-guide). ### 仿真 -- TBD +- Overhaul rover simulation: + - Add synthetic differential rover model: [PX4-gazebo-models#107](https://github.com/PX4/PX4-gazebo-models/pull/107) + - Add synthetic mecanum rover model: [PX4-gazebo-models#113](https://github.com/PX4/PX4-gazebo-models/pull/113) + - Update synthetic ackermann rover model: [PX4-gazebo-models#117](https://github.com/PX4/PX4-gazebo-models/pull/117) ### Ethernet @@ -67,6 +70,7 @@ Please continue reading for [upgrade instructions](#upgrade-guide). ### uXRCE-DDS / ROS2 - [PX4 ROS 2 Interface Library](../ros2/px4_ros2_control_interface.md) support for [Fixed Wing lateral/longitudinal setpoint](../ros2/px4_ros2_control_interface.md#fixed-wing-lateral-and-longitudinal-setpoint-fwlaterallongitudinalsetpointtype) (`FwLateralLongitudinalSetpointType`) and [VTOL transitions](../ros2/px4_ros2_control_interface.md#controlling-a-vtol). ([PX4-Autopilot#24056](https://github.com/PX4/PX4-Autopilot/pull/24056)). +- [PX4 ROS 2 Interface Library](../ros2/px4_ros2_control_interface.md) support for [ROS-based waypoint missions](../ros2/px4_ros2_waypoint_missions.md). ### MAVLink @@ -89,6 +93,8 @@ Please continue reading for [upgrade instructions](#upgrade-guide). ### 无人车 - Removed deprecated rover module ([PX4-Autopilot#25054](https://github.com/PX4/PX4-Autopilot/pull/25054)). +- Add support for [Apps & API](../flight_modes_rover/api.md) ([PX4-Autopilot#25074](https://github.com/PX4/PX4-Autopilot/pull/25074), [PX4-ROS2-Interface-Lib#140](https://github.com/Auterion/px4-ros2-interface-lib/pull/140)). +- Update [rover simulation](../frames_rover/index.md#simulation) ([PX4-Autopilot#25644](https://github.com/PX4/PX4-Autopilot/pull/25644)) (see [Simulation](#simulation) release note for details). ### ROS 2 diff --git a/docs/zh/ros2/index.md b/docs/zh/ros2/index.md index a99b6c3963..0e35981d71 100644 --- a/docs/zh/ros2/index.md +++ b/docs/zh/ros2/index.md @@ -6,23 +6,23 @@ 小提示 PX4 开发团队强烈建议您使用此 ROS 版本,或将现有系统迁移至此 ROS 版本! -这是最新版本的 [ROS](https://www.ros.org/) (机器人操作系统)。 +这是最新版本的 [ROS](https://www.ros.org/)(机器人操作系统)。 它在 ROS “1” 的基础上进行了显著改进,尤其能够实现与 PX4 更深度、更低延迟的集成。 ::: ROS的优势在于拥有活跃的开发者生态系统 —— 该生态系统致力于解决各类常见的机器人技术问题,同时还能调用其他为 Linux 系统编写的软件库。 -例如,它可以用于 [computer vision](../computer_vision/index.md)解决问题。 +例如,它可以用于 [计算机试图](../computer_vision/index.md) 解决问题。 ROS 2 能够实现与 PX4 极深度的集成,你可以在 ROS 2 中创建飞行模式,这些模式与 PX4 内部原生飞行模式毫无区别;同时还能以高速率直接读取和写入 PX4 内部的 uORB 主题。 (尤其)建议在以下场景中使用:从伴飞计算机进行控制与通信(且低延迟至关重要时)、需借助 Linux 系统的现有库时,或编写新的高级飞行模式时。 ROS 2 与 PX4 之间的通信使用的中间件需实现 [XRCE-DDS protocol](../middleware/uxrce_dds.md). -这个中间件将以 ROS 2 消息和类型显示 PX4 [uORB messages](../msg_docs/index.md) 会转换为 ROS 2 消息和数据类型,从而切实支持从 ROS 2 工作流与节点直接访问 PX4。 +这个中间件将以 ROS 2 消息和类型显示 PX4 [uORB messages](../msg_docs/index.md) 会转换为 ROS 2 消息和数据类型,从而切实支持从 ROS 2 工作流与节点直接访问 PX4。 中间件使用 uORB 消息定义生成代码来序列化和反序列化来处理PX4 的收发消息。 这些相同的消息定义也用于 ROS 2 应用程序中以便能够解析这些消息。 :::info -ROS 2 也可以使用 [MAVROS](https://github.com/mavlink/mavros/tree/ros2/mavros而不是 XRCE-DDS连接到 PX4。 +ROS 2 也可以使用 [MAVROS](https://github.com/mavlink/mavros/tree/ros2/mavros)而不是 XRCE-DDS连接到 PX4。 该选项受 MAVROS 项目支持(本文档未对此进行说明)。 ::: @@ -33,9 +33,9 @@ ROS 2 也可以使用 [MAVROS](https://github.com/mavlink/mavros/tree/ros2/mavro 本节的主要主题是: -- ROS 2 用户指南: PX4 视角下的 ROS 2,包括安装、设置和如何构建与 PX4 通信的 ROS 2 应用。 -- [ROS 2 离板控制示例](../ros2/offboard_control.md):一个 C++ 教程示例显示如何在 [离板模式] (../flight_modes/offboard.md) 中使用 ROS 2 节点进行位置控制。 -- [ROS 2 多车辆模拟](../ros2/multi_vehicle.md):通过单独的ROS2 代理商连接到多极PX4 模拟的说明。 +- [ROS 2 用户指南](../ros2/user_guide.md): PX4 视角下的 ROS 2,包括安装、设置和如何构建与 PX4 通信的 ROS 2 应用。 +- [ROS 2 离板控制实例](../ros2/offboard_control.md):一个 C++ 教程示例显示如何在 [离板模式] (../flight_modes/offboard.md) 中使用 ROS 2 节点进行位置控制。 +- [ROS 2 多载具模拟](../ros2/multi_vehicle.md):通过单独的ROS2 代理商连接到多极PX4 模拟的说明。 - [PX4 ROS2 接口库](../ros2/px4_ros2_interface_lib.md):一个C++ 库,它与ROS2的 PX4 交互。 可以使用 ROS 2 创建和注册飞行模式,并从 ROS2 应用程序如VIO 系统发送位置估计数。 - [ROS 2 消息翻译节点](../ros2/px4_ros2_msg_translation_node.md):一个 ROS 2 消息翻译节点,它允许在 PX4 和 ROS 2 应用程序之间共享,这些应用程序被编译成不同的消息版本。 diff --git a/docs/zh/ros2/multi_vehicle.md b/docs/zh/ros2/multi_vehicle.md index a525a32445..16f02d9deb 100644 --- a/docs/zh/ros2/multi_vehicle.md +++ b/docs/zh/ros2/multi_vehicle.md @@ -1,54 +1,54 @@ -# 使用 ROS 2 进行多车辆模拟 +# 使用 ROS 2 的多载具模拟 -[XRCE-DDS](../middleware/uxrce_dds.md) 支持多个客户端通过 UDP 协议连接到同一个代理。 +[XRCE-DDS](../middleware/uxrce_dds.md)支持多个客户端通过 UDP 协议连接到同一个代理。 这在模拟中特别有用,因为只有一个代理需要启动。 ## 设置和要求 唯一的要求是 -- 能够在不依赖 ROS 2 的情况下,使用所需的仿真器([Gazebo](../sim_gazebo_gz/multi_vehicle_simulation.md), [Gazebo Classic](../sim_gazebo_classic/multi_vehicle_simulation.md#multiple-vehicle-with-gazebo-classic), [FlightGear](../sim_flightgear/multi_vehicle.md) 和 [JMAVSim](../sim_jmavsim/multi_vehicle.md))运行多车辆仿真[multi-vehicle simulation](../simulation/multi-vehicle-simulation.md)。 -- 能够在单一车辆仿真中使用ROS 2(机器人操作系统 2) +- 能够在不依赖 ROS 2 的情况下,使用所需的仿真器([Gazebo](../sim_gazebo_gz/multi_vehicle_simulation.md), [Gazebo Classic](../sim_gazebo_classic/multi_vehicle_simulation.md#multiple-vehicle-with-gazebo-classic), [FlightGear](../sim_flightgear/multi_vehicle.md) and [JMAVSim](../sim_jmavsim/multi_vehicle.md))运行多载具模拟 [multi-vehicle simulation](../simulation/multi-vehicle-simulation.md) 。 +- 能够在单一载具模拟中使用 [ROS 2](../ros2/user_guide.md) ## 工作原理 -在仿真中,每个 PX4 实例都会获得一个唯一的px4_instance编号,编号从0开始。 +在模拟中,每个 PX4 实例都会获得一个唯一的`px4_instance`编号,编号从`0`开始。 该值用于为 [UXRCE_DDS_KEY](../advanced_config/parameter_reference.md#UXRCE_DDS_KEY)分配一个唯一值: ```sh -参数设置 UXRCE_DDS_KEY $(px4_instance+1)) +参数设置UXRCE_DDS_KEY $((px4_instance+1)) ``` :::info -通过这种方式,UXRCE_DDS_KEY 将始终与 [MAV_SYS_ID] 保持一致(../advanced_config/parameter_reference.md#MAV_SYS_ID) +通过这种方式, `UXRCE_DDS_KEY` 将始终与 [MAV_SYS_ID] 保持一致(../advanced_config/parameter_reference.md#MAV_SYS_ID) ::: -此外,当 px4_instance 大于 0 时,会添加一个格式为 px4_$px4_instance 的唯一 ROS 2 命名空间前缀: +此外,当 `px4_instance` 大于 0 时,会添加一个格式为 `px4_$px4_instance` 的唯一 ROS 2[namespace prefix](../middleware/uxrce_dds.md#customizing-the-namespace): ```sh uxrce_dds_ns="-n px4_$px4_instance" ``` :::info -环境变量 PX4_UXRCE_DDS_NS 若已设置,将覆盖上文所述的命名空间行为。 +环境变量`PX4_UXRCE_DDS_NS` 若已设置,将覆盖上文所述的命名空间行为。 ::: -第一个实例(px4_instance=0)没有额外的命名空间,此举是为了与真实载具上 xrce-dds 客户端的默认行为保持一致。 -这种不匹配可以通过手动使用 `PX4_UXRCE_DDS_NS` 来修复,或者通过从索引 `1` 中添加车辆而不是 `0` (这是Gazebo Classic的 [sitl_multiple_run.sh](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/simulation/gazebo-classic/sitl_multiple_run.sh) 的默认行为)。 +第一个实例(`px4_instance=0`)没有额外的命名空间,此举是为了与真实载具上 xrce-dds 客户端的默认行为保持一致。 +这种不匹配可以通过手动使用 `PX4_UXRCE_DDS_NS` 来修复,或者通过从索引 `1` 中添加车辆而不是 `0` (这是Gazebo Classic的 [sitl_multiple_run.sh](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/simulation/gazebo-classic/sitl_multiple_run.sh) 的默认行为)。 模拟中的默认客户端配置概述如下: -| `PX4_UXRCE_DDS_NS` | `px4_instance` | `UXRCE_DDS_KEY` | 客户端命名空间 | +| `PX4_UXRCE_DDS_NS` | `px4_instance` | `UXRCE_DDS_KEY` | client namespace | | ------------------ | -------------- | ---------------- | --------------------- | -| 未提供 | 0 | `px4_instance+1` | 无 | -| 已提供 | 0 | `px4_instance+1` | `PX4_UXRCE_DDS_NS` | -| 未提供 | > 0 | `px4_instance+1` | `px4_${px4_instance}` | -| 已提供 | > 0 | `px4_instance+1` | `PX4_UXRCE_DDS_NS` | +| not provided | 0 | `px4_instance+1` | 无 | +| provided | 0 | `px4_instance+1` | `PX4_UXRCE_DDS_NS` | +| not provided | > 0 | `px4_instance+1` | `px4_${px4_instance}` | +| provided | > 0 | `px4_instance+1` | `PX4_UXRCE_DDS_NS` | ## 调整 `target_system` 值 -PX4 只在他们的 `target_system` 字段为 0 (路由通信) 或与 `MAV_SYS_ID` 一致时,才接受 [VehicleCommand](../msg_docs/VehicleCommand.md)。 +PX4 只在他们的 `target_system` 字段为 0`(路由通信) 或与`MAV_SYS_ID` 一致时,才接受[VehicleCommand](../msg_docs/VehicleCommand.md)。 在所有其他情况下,信息都被忽视。 -因此,当 ROS 2 节点需向 PX4 发送 VehicleCommand(载具指令)消息时,必须确保消息中填写了合适的 target_system(目标系统)字段值。 +因此,当 ROS 2 节点需向 PX4 发送`VehicleCommand`消息时,必须确保消息中填写了合适的`target_system\`字段值。 -例如,若你想向 px4_instance=2 的第三台飞行器发送指令,则需要在所有 VehicleCommand消息中设置 target_system=3。 +例如,若你想向 `px4_instance=2` 的第三台飞行器发送指令,则需要在所有`VehicleCommand`消息中设置 `target_system=3`。 diff --git a/docs/zh/ros2/offboard_control.md b/docs/zh/ros2/offboard_control.md index 03dcfc63dd..681d4bd155 100644 --- a/docs/zh/ros2/offboard_control.md +++ b/docs/zh/ros2/offboard_control.md @@ -1,6 +1,6 @@ # ROS 2 Offboard 控制示例 -以下的 C++ 示例展示了如何在 [离板模式] (../flight_modes/offboard.md) 中从 ROS 2 节点进行位置控制。 +以下的 C++ 示例展示了如何在 [离板模式] (../flight_modes/offboard.md) 中从 ROS 2 节点进行多轴位置控制。 示例将首先发送设置点、进入offboard模式、解锁、起飞至5米,并悬停等待。 虽然简单,但它显示了如何使用offboard控制以及如何向无人机发送指令。 @@ -16,13 +16,13 @@ _Offboard_ control is dangerous. ROS 与 PX4 存在若干不同的预设(假设),尤其是在坐标系约定([frame conventions])方面../ros/external_position_estimation.md#reference-frames-and-ros 当主题发布或订阅时,坐标系类型之间没有隐含转换! -这个例子按照PX4的预期在NED坐标系下发布位置。 +这个例子按照 PX4 的预期在NED坐标系下发布位置。 若要订阅来自在不同框架内发布的节点的数据(例如ENU, 这是ROS/ROS 2中的标准参考框架,使用 [frame_transforms](https://github.com/PX4/px4_ros_com/blob/main/src/lib/frame_transforms.cpp)库中的辅助函数。 ::: ## 小試身手 -请遵循 ROS 2 用户指南 (../ros2/user_guide.md)中的说明,完成安装 PX4和运行模拟器,安装 ROS 2和启动 XRCE-DDS 代理(Agent)。 +按照 [ROS 2 User Guide](../ros2/user_guide.md)中的说明来安装PX 并运行多轴模拟器,安装ROS 2, 并启动XRCE-DDS代理。 之后,我们可参照 ROS 2 用户指南 > 构建 ROS 2 工作空间 (../ros2/user_guide.md#build-ros-2-workspace)中的相似的步骤来运行这个例子。 @@ -95,7 +95,7 @@ ROS 与 PX4 存在若干不同的预设(假设),尤其是在坐标系约 ros2 run px4_ros_com offboard_control ``` -飞行器将解锁、起飞至5米并悬停等待(永久)。 +飞行器将解锁、起飞至 5 米并悬停等待(永久)。 ## 实现 @@ -133,7 +133,7 @@ timer_ = this->create_wall_timer(100ms, timer_callback); ``` 循环运行在一个100毫秒计时器。 -在最初的 10 个循环中,它会调用 publish_offboard_control_mode() 和 publish_trajectory_setpoint() 这两个函数,向 PX4 发送 OffboardControlMode(离板控制模式)(../msg_docs/OffboardControlMode.md) 和 TrajectorySetpoint(轨迹设定点)(../msg_docs/TrajectorySetpoint.md) 消息。 +在最初的 10 个循环中,它会调用 `publish_offboard_control_mode()` 和 `publish_trajectory_setpoint()` 这两个函数,向 PX4 发送 OffboardControlMode[OffboardControlMode](../msg_docs/OffboardControlMode.md) 和 [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) 消息。 OffboardControlMode消息会持续发送,以便 PX4 切换到离板模式后允许解锁;而 TrajectorySetpoint消息会被忽略(直到载具处于离板模式) 10 个循环后,会调用 publish_vehicle_command() 函数切换至离板模式,并调用 arm() 函数对载具进行解锁。 diff --git a/docs/zh/ros2/px4_ros2_control_interface.md b/docs/zh/ros2/px4_ros2_control_interface.md index 3fa4820ae6..5be7fedde0 100644 --- a/docs/zh/ros2/px4_ros2_control_interface.md +++ b/docs/zh/ros2/px4_ros2_control_interface.md @@ -327,7 +327,7 @@ private: }; ``` -- `[1]`: 首先创建一个从 [`px4_ros2::ModeExecutorBase`](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1ModeExecutorBase.html) 继承的类。 +- `[1]`: 首先创建一个继承 [`px4_ros2::ModeExecutorBase`](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1ModeExecutorBase.html)。 - `[2]`: 构造函数采用与执行器相关联的自定义模式,并传递给`ModeExecutorBase`的构造函数。 - `[3]`: 我们为想要运行的状态定义一个枚举。 - `[4]`: `onActivate` 在执行器激活时被调用。 此时,我们可以开始遍历这些状态了。 @@ -344,9 +344,10 @@ private: 以下章节提供了支持的设置点类型列表: -- [MulticopterGotoSetpointType](#go-to-setpoint-multicoptergotosetpointtype): Smooth position and (optionally) heading control -- [FwLateralLongitudinalSetpointType](#fixed-wing-lateral-and-longitudinal-setpoint-fwlaterallongitudinalsetpointtype): Direct control of lateral and longitudinal fixed wing dynamics +- [MulticopterGotoSetpointType](#go-to-setpoint-multicoptergotosetpointtype): 平滑的位置控制以及(可选的)航向控制 +- [FwLateralLongitudinalSetpointType](#fixed-wing-lateral-and-longitudinal-setpoint-fwlaterallongitudinalsetpointtype): 对横向和纵向固定翼动态的直接控制 - [DirectActuatorsSetpointType](#direct-actuator-control-setpoint-directactuatorssetpointtype):直接控制发动机和飞行地面servo setpoints +- [Rover Setpoints](#rover-setpoints): Direct access to rover control setpoints (Position, Speed, Attitude, Rate, Throttle and Steering). :::tip 其他设置点类型目前是实验性的,可在以下网址找到:[px4_ros2/control/setpoint_types/experimental](https://github.com/Auterion/px4-ros2-interface-lib/tree/main/px4_ros2_cpp/include/px4_ros2/control/setpoint_types/experimental)。 @@ -354,18 +355,20 @@ private: 您可以通过添加一个从 `px4_ros2::SetpointBase` 继承的类来添加您自己的 setpoint 类型, 根据设置点的要求设置配置标志,然后发布任何包含设置点的主题。 ::: -#### Go-to Setpoint (MulticopterGotoSetpointType) +#### 转到设置点 (MulticopterGotoSetpointType) + + :::info -This setpoint type is currently only supported for multicopters. +当前,此设定点类型仅支持多旋翼飞行器。 ::: -Smoothly control position and (optionally) heading setpoints with the [`px4_ros2::MulticopterGotoSetpointType`](https://github.com/Auterion/px4-ros2-interface-lib/blob/main/px4_ros2_cpp/include/px4_ros2/control/setpoint_types/multicopter/goto.hpp) setpoint type. -The setpoint type is streamed to FMU based position and heading smoothers formulated with time-optimal, maximum-jerk trajectories, with velocity and acceleration constraints. +可通过[`px4_ros2::MulticopterGotoSetpointType`](https://github.com/Auterion/px4-ros2-interface-lib/blob/main/px4_ros2_cpp/include/px4_ros2/control/setpoint_types/multicopter/goto.hpp)设定点类型,对位置设定点以及(可选的)航向设定点进行平滑控制。 +设定点类型会被传输至飞控主模块(FMU),该模块基于采用时间最优、最大加加速度轨迹构建的位置及航向平滑器。 -There is also a [`px4_ros2::MulticopterGotoGlobalSetpointType`](https://github.com/Auterion/px4-ros2-interface-lib/blob/main/px4_ros2_cpp/include/px4_ros2/control/setpoint_types/multicopter/goto.hpp) class that allows to send setpoints in global coordinates. +还有一个 [\`px4_ros2::MulticopterGotoGlobalSetpootType'(https://github.com/Auterion/px4-ros2-interface-lib/blob/main/px4_ros2_cpp/include/px4_ros2/control/setpoint_types/multicopter/goto.hpp), 该类支持在全局坐标系下发送设定点。 最简单的用法就是直接向update method中输入一个3D 位置 @@ -551,13 +554,47 @@ _fw_lateral_longitudinal_setpoint->update(setpoint_s, config_s); 若你想控制的执行器并非用于控制飞行器的运动(例如,而是用于控制有效载荷舵机),请参阅 [below](#controlling-an-independent-actuator-servo)。 ::: +#### Rover Setpoints + + + +The rover modules use a hierarchical structure to propagate setpoints: + +![Rover Control Structure](../../assets/middleware/ros2/px4_ros2_interface_lib/rover_control_structure.svg) + +:::info +The "highest" setpoint that is provided will be used within the PX4 rover modules to generate the setpoints that are below it (Overriding them!). +With this hierarchy there are clear rules for providing a valid control input: + +- Provide a position setpoint, **or** +- One of the setpoints on the "left" (speed **or** throttle) **and** one of the setpoints on the "right" (attitude, rate **or** steering). All combinations of "left" and "right" setpoints are valid. + +For ease of use we expose these valid combinations as new SetpointTypes. +::: + +The RoverSetpointTypes exposed through the control interface are combinations of these setpoints that lead to a valid control input: + +| SetpointType | 安装位置 | Speed | 油门 | Attitude | 频率 | Steering | Control Flags | +| ----------------------------------------------------------------------------------------------------------------------------------- | --------------------------- | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------------ | +| [RoverPosition](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1RoverPositionSetpointType.html#details) | ✓ | (✓) | (✓) | (✓) | (✓) | (✓) | Position, Velocity, Attitude, Rate, Control Allocation | +| [RoverSpeedAttitude](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1RoverSpeedAttitudeSetpointType.html) | | ✓ | (✓) | ✓ | (✓) | (✓) | Velocity, Attitude, Rate, Control Allocation | +| [RoverSpeedRate](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1RoverSpeedRateSetpointType.html) | | ✓ | (✓) | | ✓ | (✓) | Velocity, Rate, Control Allocation | +| [RoverSpeedSteering](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1RoverSpeedSteeringSetpointType.html) | | ✓ | (✓) | | | ✓ | Velocity, Control Allocation | +| [RoverThrottleAttitude](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1RoverThrottleAttitudeSetpointType.html) | | | ✓ | ✓ | (✓) | (✓) | Attitude, Rate, Control Allocation | +| [RoverThrottleRate](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1RoverThrottleRateSetpointType.html) | | | ✓ | | ✓ | (✓) | Rate, Control Allocation | +| [RoverThrottleSteering](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1RoverThrottleSteeringSetpointType.html) | | | ✓ | | | ✓ | Control Allocation | + +✓ are the setpoints we publish, and (✓) are generated internally by the PX4 rover modules according to the hierarchy above. + +An example for a rover specific drive mode using the `RoverSpeedAttitudeSetpointType` is provided [here](https://github.com/Auterion/px4-ros2-interface-lib/tree/main/examples/cpp/modes/rover_velocity). + ### 控制VTOL 要在外部飞行模式下控制VTOL,需确保根据当前飞行配置返回正确的设定值类型: -- 多旋翼模式:使用与多旋翼控制兼容的设定值类型。 For example: either the [`MulticopterGotoSetpointType`](#go-to-setpoint-multicoptergotosetpointtype) or the [`TrajectorySetpointType`](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1TrajectorySetpointType.html). +- 多旋翼模式:使用与多旋翼控制兼容的设定值类型。 例如:要么[`MulticopterGotoSetpootType`](#go-to-setpoint-multicoptergotosetpointtype) 要么[`TrattorySettpointType`](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1TrajectorySetpointType.html)。 - 固定翼形模式:使用 [`FwLateralLongitudinalSetpointType` ](#fixed-wing-lateral-and-longitudinal-setpoint-fwlaterallongitudinalsetpointtype)。 只要VTOL在整个外部模式期间始终处于多旋翼模式或固定翼模式中的任意一种,就无需额外处理。 diff --git a/docs/zh/ros2/px4_ros2_interface_lib.md b/docs/zh/ros2/px4_ros2_interface_lib.md index 5be98766c8..e73f8efffe 100644 --- a/docs/zh/ros2/px4_ros2_interface_lib.md +++ b/docs/zh/ros2/px4_ros2_interface_lib.md @@ -14,10 +14,7 @@ Experimental 1. [Control Interface](./px4_ros2_control_interface.md) 允许开发者创建并动态注册使用 ROS2 编写的模式。 它为发送不同类型的设置点提供了课程,涵盖范围从高级导航任务一直到直接执行器控制。 2. [导航界面](./px4_ros2_navigation_interface.md) 允许从ROS 2应用程序(如VIO系统)向PX4发送车辆位置估计数。 - - +3. [Waypoint Missions](./px4_ros2_waypoint_missions.md) 允许航点飞行任务完全在ROS2中运行。 ## 在 ROS 2 工作区中安装 diff --git a/docs/zh/ros2/px4_ros2_msg_translation_node.md b/docs/zh/ros2/px4_ros2_msg_translation_node.md index c496de825e..f60083a53e 100644 --- a/docs/zh/ros2/px4_ros2_msg_translation_node.md +++ b/docs/zh/ros2/px4_ros2_msg_translation_node.md @@ -1,6 +1,6 @@ # PX4 ROS 2 消息翻译节点 -<0/> <1/> + 消息翻译节点允许针对不同版本的 PX4 消息编译的 ROS 2 应用程序与更新版本的 PX4 交互。 反之亦然,而不必更改应用程序或PX4一侧。 diff --git a/docs/zh/ros2/px4_ros2_waypoint_missions.md b/docs/zh/ros2/px4_ros2_waypoint_missions.md new file mode 100644 index 0000000000..8fcd7986f4 --- /dev/null +++ b/docs/zh/ros2/px4_ros2_waypoint_missions.md @@ -0,0 +1,190 @@ +# PX4 ROS 2 Waypoint Missions + + + +The [PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md) provides a high-level interface for executing ROS-based waypoint missions in ROS 2. +The main use-case is for creating missions where a custom behavior is required, such as a pickup action within a mission. + +:::warning +ROS 2 missions are not compatible with MAVLink mission definitions, plan files, or ground stations. +They completely bypass the existing PX4 mission mode and waypoint logic, and cannot be planned or displayed within a ground station. +::: + +ROS 2 waypoint missions are effectively special PX4 ROS 2 custom modes that are run based on the content of a [JSON mission definition](#mission-definition). +Mission definitions can contain actions that reference existing PX4 modes, such as Takeoff mode or RTL, and can also be extended with arbitrary custom actions written in ROS. +A [mode executor](px4_ros2_control_interface.md#mode-executor) is used to schedule the modes. + +Mission definitions can be hard coded in the custom mission mode (either in code or statically loaded from a JSON string), or directly generated within the application. +They can also be dynamically loaded based on modification of a particular JSON file — this allows for building a more generic mission framework with a fixed set of custom actions. +The file can then be written by any other application, for example a HTTP or MAVFTP server. + +The current implementation only supports multicopters but is designed to be extendable to any other vehicle type. + +## Comparison to PX4/MAVLink Missions + +There are some benefits and drawbacks to using ROS-based missions, which are provided in the following paragraphs. + +### Benefits + +- Allows to extend mission capabilities by registering custom actions. +- More control over how the mission is executed. + A custom trajectory executor can be implemented, which can use any of the existing PX4 setpoint types to track the trajectory. +- Reduced complexity on the flight controller side by running non-safety-critical and non-real-time code on a more high-level companion computer. +- It can be extended to support other trajectory types, like Bezier or Dubin curves. + +### Drawbacks + +- QGroundControl currently does not display the mission or progress during execution, and cannot upload or download a mission. + Therefore you will need another mechanism to provide a mission, such as from a web server, a custom GCS, or by generating it directly inside the application. +- The current implementation only supports multicopters (it uses the [GotoSetpointType](../ros2/px4_ros2_control_interface.md#go-to-setpoint-gotosetpointtype), which only works for multicopters, and VTOL in MC mode). + It is designed to be extendable to any other vehicle type. + +## 综述 + +This diagram provides a conceptual overview of the main classes and their interactions: + +![Waypoint missions overview diagram](../../assets/middleware/ros2/px4_ros2_interface_lib/waypoint_missions.svg) + + + +Missions can be defined in [JSON](#mission-definition), either as a file, or directly inside the application. +There is a file change monitor (`MissionFileMonitor`), that can be used to automatically load a mission from a specific file whenever it is created by another application (e.g. upload via MAVFTP or a cloud service). + +The **`MissionExecutor`** class contains the state machine to progress the mission index, and is at the core of the implementation: + +- Internally, it builds on top of the [Modes and Mode Executors](px4_ros2_control_interface.md#overview) and registers itself through a custom mode and executor with PX4. +- It handles switching in and out of missions: it gets activated when the user switches to the custom mode that represents the mission and the vehicle is armed. + The mode name can be customized (`My Mission` in the example below). + The mission can be paused, which makes the vehicle switch into _Hold mode_. + To resume the mission, the custom mode has to be selected again. +- When an action switches into another mode (for example Takeoff), QGroundControl will display this mode until it is completed. + The mission executor will then automatically continue. +- Custom actions can be registered. +- The mission can be set. + It then checks that all the actions which the mission defines are available and can be run. +- The state can be stored persistently by providing a file name, allowing for battery swapping. + +The **`ActionInterface`** is an interface class for custom actions. +They are identified by a name, and any number of these can be registered with the `MissionExecutor`. +A custom action is then run whenever a mission item with matching name is executed, and any extra arguments from the JSON definition are passed as arguments (for example an altitude for a takeoff action). +Actions can call other actions, run any mode (PX4 or external by its ID), run a trajectory, or run any other external action before deciding when to continue the mission. + +There is a set of default actions, for example for RTL, Land, etc. +These simply trigger the corresponding PX4 mode. +They can be disabled or replaced with custom implementations. +There are also some special actions (which can be replaced as well): + +- `OnFailure`: this is called in case of a failure, e.g. a mode switch failed, a non-existing action is called (by another action) or by an explicit call to `MissionExecutor::abort()`. + The default is to run RTL, with fallback to Land. +- `OnResume`: this is called when resuming a mission (either from the ground or in-air). + It handles a number of cases: + - when called with an argument `action="storeState"`: this can be used to store the current position when the mission is deactivated, so it can be resumed from the same position. + Currently it does not store anything. + - otherwise, when called without a valid mission index or 0, it directly continues. + - otherwise, when called while in-air, it also directly continues. + - otherwise, if landed and if the current mission item is an action that supports resuming from landed, it continues to let the action handle the resuming. + - otherwise, if landed, it finds the takeoff action from the mission, runs it, and then flies to the previous waypoint from the current index to continue the mission. +- `ChangeSettings`: this can be used to change the mission settings, such as the velocity. + The settings are applied to all following items in the mission. + +The **`TrajectoryExecutorInterface`** is an interface class to execute segments of a trajectory. +It can use any setpoint that PX4 and the current vehicle supports for tracking the trajectory. +This class is vehicle-type specific. +The current default implementation (`multicopter::WaypointTrajectoryExecutor`) uses a Goto setpoint (and thus is limited to multicopters). +The default can be replaced with a custom implementation. + +## 用法 + +The following provides a small example. +It defines a custom action and a mission that uses it. + +```c++ +class CustomAction : public px4_ros2::ActionInterface { +public: + CustomAction(px4_ros2::ModeBase & mode) : _node(mode.node()) { } + + std::string name() const override {return "customAction";} + + void run( + const std::shared_ptr & handler, + const px4_ros2::ActionArguments & arguments, + const std::function & on_completed) override + { + RCLCPP_INFO(_node.get_logger(), "Running custom action"); + // Do something... + + on_completed(); + } +private: + rclcpp::Node & _node; +}; + +class MyMission { +public: + MyMission(const std::shared_ptr & node) : _node(node) + { + const auto mission = px4_ros2::Mission(nlohmann::json::parse(R"( + { + "version": 1, + "mission": { + "items": [ + { + "type": "takeoff" + }, + { + "type": "navigation", + "navigationType": "waypoint", + "x": 47.3977419, + "y": 8.5455939, + "z": 500, + "frame": "global" + }, + { + "type": "navigation", + "navigationType": "waypoint", + "x": 47.39791657, + "y": 8.54595214, + "z": 500, + "frame": "global" + }, + { + "type": "customAction" + }, + { + "type": "rtl" + } + ] + } + } +)")); + _mission_executor = std::make_unique("My Mission", + px4_ros2::MissionExecutor::Configuration().addCustomAction(), *node); + + if (!_mission_executor->doRegister()) { + throw std::runtime_error("Failed to register mission executor"); + } + _mission_executor->setMission(mission); + + _mission_executor->onProgressUpdate([&](int current_index) { + RCLCPP_INFO(_node->get_logger(), "Current mission index: %i", current_index); + }); + _mission_executor->onCompleted([&] { + RCLCPP_INFO(_node->get_logger(), "Mission completed callback"); + }); + } + +private: + std::shared_ptr _node; + std::unique_ptr _mission_executor; +}; +``` + +A full example with a few custom actions can be found under [github.com/Auterion/px4-ros2-interface-lib/tree/main/examples/cpp/modes/mission/include](https://github.com/Auterion/px4-ros2-interface-lib/tree/main/examples/cpp/modes/mission/include). + +## Mission Definition + +The mission JSON file can contain mission defaults and a list of mission items, including user-defined types with custom arguments. +Waypoint coordinates currently need to be defined in global frame, and other frame types might be added in future. + +The schema can be found under [github.com/Auterion/px4-ros2-interface-lib/blob/main/mission/schema.yaml](https://github.com/Auterion/px4-ros2-interface-lib/blob/main/mission/schema.yaml). +It provides more details and can be used to validate a JSON file. diff --git a/docs/zh/ros2/user_guide.md b/docs/zh/ros2/user_guide.md index 4fe01ae40d..61f68b440f 100644 --- a/docs/zh/ros2/user_guide.md +++ b/docs/zh/ros2/user_guide.md @@ -376,7 +376,7 @@ accelerometer_integral_dt: 4739 #### (可选) 启动转化节点 -<0/> <1/> + 此示例由 PX4 和ROS 2 版本构建,它们使用相同的消息定义。 若你要使用不兼容的 [message versions](../middleware/uorb.md#message-versioning),则在运行示例之前,还需要安装并运行[Message Translation Node](./px4_ros2_msg_translation_node.md): @@ -448,60 +448,60 @@ See [REP105: Coordinate Frames for Mobile Platforms](https://www.ros.org/reps/re ![Reference frames](../../assets/lpe/ref_frames.png) -The FRD (NED) conventions are adopted on **all** PX4 topics unless explicitly specified in the associated message definition. -Therefore, ROS 2 nodes that want to interface with PX4 must take care of the frames conventions. +除非在相关消息定义中明确指定,否则所有PX4 话题均采用 FRD(即 NED)坐标系约定。 +因此,想要与 PX4 进行交互的 ROS 2 节点,必须妥善处理坐标系约定问题。 -- To rotate a vector from ENU to NED two basic rotations must be performed: - - first a pi/2 rotation around the `Z`-axis (up), - - then a pi rotation around the `X`-axis (old East/new North). +- 要将一个向量从ENU坐标系旋转到NED坐标系,必须执行两个基本旋转操作: + - 首先是绕 Z 轴(朝上方向)旋转 π/2 弧度。 + - 然后是绕 X 轴(原东向 / 新北向)旋转 π 弧度 -- To rotate a vector from NED to ENU two basic rotations must be performed: +- 要将一个向量从NED坐标系旋转到ENU坐标系,必须执行两个基本旋转操作: -- - first a pi/2 rotation around the `Z`-axis (down), - - then a pi rotation around the `X`-axis (old North/new East). Note that the two resulting operations are mathematically equivalent. +- - 首先是绕 Z 轴(朝下方向)旋转 π/2 弧度。 + - 然后是绕 X 轴(原北向 / 新东向)旋转 π 弧度。 需注意,这两种最终得到的操作在数学上是等效的 -- To rotate a vector from FLU to FRD a pi rotation around the `X`-axis (front) is sufficient. +- 将向量从 FLU坐标系旋转到 FRD坐标系,仅需绕 X 轴(朝前方向)旋转 π 弧度即可。 -- To rotate a vector from FRD to FLU a pi rotation around the `X`-axis (front) is sufficient. +- 将向量从 FRD坐标系旋转到 FLU坐标系,仅需绕 X 轴(朝前方向)旋转 π 弧度即可。 -Examples of vectors that require rotation are: +需要进行旋转处理的向量示例包括: -- all fields in [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) message; ENU to NED conversion is required before sending them. -- all fields in [VehicleThrustSetpoint](../msg_docs/VehicleThrustSetpoint.md) message; FLU to FRD conversion is required before sending them. +- [TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md)消息中的所有字段;发送这些字段前,需先将其从 ENU坐标系转换为 NED坐标系。 +- [VehicleThrustSetpoint](../msg_docs/VehicleThrustSetpoint.md)消息中的所有字段;发送这些字段前,需先将其从 FLU坐标系转换为 FRD坐标系。 -Similarly to vectors, also quaternions representing the attitude of the vehicle (body frame) w.r.t. the world frame require conversion. +与向量类似,用于表示飞行器(机体坐标系)相对于(w.r.t.)姿态的四元数也是如此。 (相对于)世界坐标系(的四元数)需要进行转换。 -[PX4/px4_ros_com](https://github.com/PX4/px4_ros_com) provides the shared library [frame_transforms](https://github.com/PX4/px4_ros_com/blob/main/include/px4_ros_com/frame_transforms.h) to easily perform such conversions. +[PX4/px4_ros_com](https://github.com/PX4/px4_ros_com) 提供了名为 [frame_transforms](https://github.com/PX4/px4_ros_com/blob/main/include/px4_ros_com/frame_transforms.h)的共享库,可便捷地执行此类转换操作。 -### ROS, Gazebo and PX4 time synchronization +### ROS, Gazebo 和 PX4 时间同步 -By default, time synchronization between ROS 2 and PX4 is automatically managed by the [uXRCE-DDS middleware](https://micro-xrce-dds.docs.eprosima.com/en/latest/time_sync.html) and time synchronization statistics are available listening to the bridged topic `/fmu/out/timesync_status`. -When the uXRCE-DDS client runs on a flight controller and the agent runs on a companion computer this is the desired behavior as time offsets, time drift, and communication latency, are computed and automatically compensated. +默认情况下,ROS 2 与 PX4 之间的时间同步由[uXRCE-DDS middleware](https://micro-xrce-dds.docs.eprosima.com/en/latest/time_sync.html) 自动管理;若需查看时间同步统计信息,可监听已桥接的话题 /fmu/out/timesync_status。 +当 uXRCE-DDS 客户端运行在飞控器上,且代理运行在机载计算机上时,这便是理想的运行状态 —— 此时时间偏移、时间漂移以及通信延迟会被自动计算并补偿。 -For Gazebo simulations the GZBridge sets the PX4 time on every sim step (see [Change simulation speed](../sim_gazebo_gz/index.md#change-simulation-speed)). -Note that this is different from the [simulation lockstep](../sim_gazebo_classic/index.md#lockstep) procedure adopted with Gazebo Classic. +在 Gazebo 仿真中,GZBridge 会在每个仿真步长(sim step)为 PX4 设置时间[Change simulation speed](../sim_gazebo_gz/index.md#change-simulation-speed)。 +需注意,这与 Gazebo Classic所采用的仿真锁步[simulation lockstep](../sim_gazebo_classic/index.md#lockstep)流程不同。 -ROS2 users have then two possibilities regarding the [time source](https://design.ros2.org/articles/clock_and_time.html) of their nodes. +对于 ROS 2 用户而言,其节点的[time source](https://design.ros2.org/articles/clock_and_time.html)有两种选择。 -#### ROS2 nodes use the OS clock as time source +#### ROS2 节点使用操作系统时钟作为时间源 -This scenario, which is the one considered in this page and in the [offboard_control](./offboard_control.md) guide, is also the standard behaviour of the ROS2 nodes. -The OS clock acts as time source and therefore it can be used only when the simulation real time factor is very close to one. -The time synchronizer of the uXRCE-DDS client then bridges the OS clock on the ROS2 side with the Gazebo clock on the PX4 side. -No further action is required by the user. +本文档以及[offboard_control](./offboard_control.md)指南中所采用的便是此场景,同时,该场景也是 ROS 2 节点的标准行为 +操作系统时钟作为时间来源,因此它只能在模拟实时系数非常接近时才能使用。 +uXRCE-DDS 客户端的时间同步器随后会将 ROS 2 端的操作系统时钟(OS clock)与 PX4 端的 Gazebo 时钟进行桥接同步。 +用户不需要进一步操作。 -#### ROS2 nodes use the Gazebo clock as time source +#### ROS2 节点使用 Gazebo 时钟作为时间源 -In this scenario, ROS2 also uses the Gazebo `/clock` topic as time source. -This approach makes sense if the Gazebo simulation is running with real time factor different from one, or if ROS2 needs to directly interact with Gazebo. -On the ROS2 side, direct interaction with Gazebo is achieved by the [ros_gz_bridge](https://github.com/gazebosim/ros_gz) package of the [ros_gz](https://github.com/gazebosim/ros_gz) repository. +在这种情况下,ROS2还使用Gazebo\`/时钟主题作为时间来源。 +若 Gazebo 仿真的实时因子(real time factor)不为 1,或 ROS 2 需直接与 Gazebo 交互,则该方法具有合理性。 +在 ROS 2 端,可通过[ros_gz](https://github.com/gazebosim/ros_gz)代码仓库中的[ros_gz_bridge](https://github.com/gazebosim/ros_gz) 功能包,实现与 Gazebo 的直接交互。 -Use the following commands to install the correct ROS 2/gz interface packages (not just the bridge) for the ROS2 and Gazebo version(s) supported by PX4. +请使用以下命令,为 PX4 所支持的 ROS 2 和 Gazebo 版本安装正确的 ROS 2/gz 接口功能包(不仅限于桥接功能包)。 :::: tabs :::tab humble -To install the bridge for use with ROS 2 "Humble" and Gazebo Harmonic (on Ubuntu 22.04): +在 Ubuntu 22.04 系统上,若需安装用于搭配 ROS 2 “Humble”与 Gazebo Harmonic的桥接功能包,可执行以下操作: ```sh sudo apt install ros-humble-ros-gzharmonic @@ -510,9 +510,9 @@ sudo apt install ros-humble-ros-gzharmonic ::: :::tab foxy -First you will need to [install Gazebo Garden](../sim_gazebo_gz/index.md#installation-ubuntu-linux), as by default Foxy comes with Gazebo Classic 11. +首先,您需要 [install Gazebo Garden](../sim_gazebo_gz/index.md#installation-ubuntu-linux),因为默认情况下,Foxy预装的是 Gazebo Classic 11 -Then to install the interface packages for use with ROS 2 "Foxy" and Gazebo (Ubuntu 20.04): +接下来,若要在 Ubuntu 20.04 系统上安装用于搭配 ROS 2 "Foxy"与 Gazebo的接口功能包,操作如下: ```sh sudo apt install ros-foxy-ros-gzgarden @@ -523,40 +523,40 @@ sudo apt install ros-foxy-ros-gzgarden :::: :::info -The [repo](https://github.com/gazebosim/ros_gz#readme) and [package](https://github.com/gazebosim/ros_gz/tree/ros2/ros_gz_bridge#readme) READMEs show the package versions that need to be installed depending on your ROS2 and Gazebo versions. +[repo](https://github.com/gazebosim/ros_gz#readme) 和 [package](https://github.com/gazebosim/ros_gz/tree/ros2/ros_gz_bridge#readme) README显示了需要安装的软件包版本,取决于您的 ROS2 和 Gazebo 版本。 ::: -Once the packages are installed and sourced, the node `parameter_bridge` provides the bridging capabilities and can be used to create an unidirectional `/clock` bridge: +功能包安装并完成环境配置后,parameter_bridge节点会提供桥接能力,可用于创建一个单向的/clock桥接。 ```sh ros2 run ros_gz_bridge parameter_bridge /clock@rosgraph_msgs/msg/Clock[gz.msgs.Clock ``` -At this point, every ROS2 node must be instructed to use the newly bridged `/clock` topic as time source instead of the OS one, this is done by setting the parameter `use_sim_time` (of _each_ node) to `true` (see [ROS clock and Time design](https://design.ros2.org/articles/clock_and_time.html)). +此时,必须指示每个 ROS 2 节点使用新桥接的/clock话题作为时间源,而非操作系统时钟(OS clock);要实现这一点,需将(每个节点的)use_sim_time参数设置为true(详见[ROS clock and Time design](https://design.ros2.org/articles/clock_and_time.html))。 -This concludes the modifications required on the ROS2 side. On the PX4 side, you are only required to stop the uXRCE-DDS time synchronization, setting the parameter [UXRCE_DDS_SYNCT](../advanced_config/parameter_reference.md#UXRCE_DDS_SYNCT) to `false`. -By doing so, Gazebo will act as main and only time source for both ROS2 and PX4. +至此,ROS 2 端所需的修改已全部完成。 在 PX4 端,你只需停止 uXRCE-DDS 时间同步功能,将参数[UXRCE_DDS_SYNCT](../advanced_config/parameter_reference.md#UXRCE_DDS_SYNCT)设置为false即可。 +通过此操作,Gazebo 将成为 ROS 2 和 PX4 两者共同的、唯一的主时间源。 -## ROS 2 Example Applications +## ROS 2 示例应用程序 ### ROS 2 Listener -The ROS 2 [listener examples](https://github.com/PX4/px4_ros_com/tree/main/src/examples/listeners) in the [px4_ros_com](https://github.com/PX4/px4_ros_com) repo demonstrate how to write ROS nodes to listen to topics published by PX4. +[px4_ros_com](https://github.com/PX4/px4_ros_com中的 ROS 2 [listener examples](https://github.com/PX4/px4_ros_com/tree/main/src/examples/listeners) repo展示了如何编写 ROS 节点,以监听由 PX4 发布的话题 -Here we consider the [sensor_combined_listener.cpp](https://github.com/PX4/px4_ros_com/blob/main/src/examples/listeners/sensor_combined_listener.cpp) node under `px4_ros_com/src/examples/listeners`, which subscribes to the [SensorCombined](../msg_docs/SensorCombined.md) message. +此处我们以 px4_ros_com/src/examples/listeners 路径下的 [sensor_combined_listener.cpp](https://github.com/PX4/px4_ros_com/blob/main/src/examples/listeners/sensor_combined_listener.cpp) 节点为例,该节点会订阅 [SensorCombined](../msg_docs/SensorCombined.md) 消息。 :::info -[Build ROS 2 Workspace](#build-ros-2-workspace) shows how to build and run this example. +[Build ROS 2 Workspace](#build-ros-2-workspace) 显示如何构建和运行这个例子。 ::: -The code first imports the C++ libraries needed to interface with the ROS 2 middleware and the header file for the `SensorCombined` message to which the node subscribes: +代码首先导入了与 ROS 2 中间件进行交互所需的 C++ 库,以及该节点所订阅的SensorCombined消息对应的头部文件: ```cpp -#include -#include +#include <0> +#include <1> ``` -Then it creates a `SensorCombinedListener` class that subclasses the generic `rclcpp::Node` base class. +随后,代码创建了一个 SensorCombinedListener 类,该类继承自通用的 rclcpp::Node 基类。 ```cpp /** @@ -566,7 +566,7 @@ class SensorCombinedListener : public rclcpp::Node { ``` -This creates a callback function for when the `SensorCombined` uORB messages are received (now as micro XRCE-DDS messages), and outputs the content of the message fields each time the message is received. +这会创建一个回调函数,用于处理SensorCombined uORB 消息(当前以微型 XRCE-DDS 消息格式传输)的接收事件;每当接收到该消息时,该函数会输出消息字段的内容 ```cpp public: @@ -595,12 +595,12 @@ public: ``` :::info -The subscription sets a QoS profile based on `rmw_qos_profile_sensor_data`. -This is needed because the default ROS 2 QoS profile for subscribers is incompatible with the PX4 profile for publishers. -For more information see: [ROS 2 Subscriber QoS Settings](#ros-2-subscriber-qos-settings), +该订阅会基于 rmw_qos_profile_sensor_data 设置一个 QoS 配置文件。 +之所以需要这样做,是因为 ROS 2 订阅者的默认 QoS(服务质量)配置文件,与 PX4 发布者的配置文件不兼容。 +欲了解更多信息,请参阅:[ROS 2 Subscriber QoS Settings](#ros-2-subscriber-qos-settings), ::: -The lines below create a publisher to the `SensorCombined` uORB topic, which can be matched with one or more compatible ROS 2 subscribers to the `fmu/sensor_combined/out` ROS 2 topic. +以下代码行创建了一个发布者,用于向 SensorCombined uORB 话题发布数据;该发布者可与一个或多个兼容的 ROS 2 订阅者匹配,这些订阅者监听的是 fmu/sensor_combined/out ROS 2 话题。 ````cpp private: @@ -623,14 +623,14 @@ int main(int argc, char *argv[]) } ```` -This particular example has an associated launch file at [launch/sensor_combined_listener.launch.py](https://github.com/PX4/px4_ros_com/blob/main/launch/sensor_combined_listener.launch.py). -This allows it to be launched using the [`ros2 launch`](#ros2-launch) command. +此特殊示例在[launch/sensor_combined_listener.launch.py](https://github.com/PX4/px4_ros_com/blob/main/launch/sensor_combined_listener.launch.py).有一个相关的启动文件。 +这使得它可以通过 [`ros2 launch`](#ros2-launch) 命令启动 -### ROS 2 Advertiser +### ROS 2 发布者 -A ROS 2 advertiser node publishes data into the DDS/RTPS network (and hence to the PX4 Autopilot). +一个 ROS 2 发布者节点会将数据发布到 DDS/RTPS 网络中(进而传递给 PX4 自动驾驶仪)。 -Taking as an example the `debug_vect_advertiser.cpp` under `px4_ros_com/src/advertisers`, first we import required headers, including the `debug_vect` msg header. +以 px4_ros_com/src/advertisers 路径下的 debug_vect_advertiser.cpp(文件)为例,首先我们会导入所需的headers,其中包括 `debug_vect` msg header。 ```cpp #include @@ -640,15 +640,15 @@ Taking as an example the `debug_vect_advertiser.cpp` under `px4_ros_com/src/adve using namespace std::chrono_literals; ``` -Then the code creates a `DebugVectAdvertiser` class that subclasses the generic `rclcpp::Node` base class. +随后,代码创建了一个 DebugVectAdvertiser 类,该类继承自通用的 rclcpp::Node 基类。 ```cpp class DebugVectAdvertiser : public rclcpp::Node { ``` -The code below creates a function for when messages are to be sent. -The messages are sent based on a timed callback, which sends two messages per second based on a timer. +这段代码创建了一个用来发送消息的回调函数。 +发送消息的回调函数由定时器触发的,每秒钟发送两次消息。 ```cpp public: @@ -676,7 +676,7 @@ private: }; ``` -The instantiation of the `DebugVectAdvertiser` class as a ROS node is done on the `main` function. +这段代码在 main 函数中将 DebugVectAdvertiser 类实例化成一个ROS节点。 ```cpp int main(int argc, char *argv[]) @@ -693,31 +693,31 @@ int main(int argc, char *argv[]) ### Offboard控制 -[ROS 2 Offboard control example](../ros2/offboard_control.md) provides a complete C++ reference example of how to use [offboard control](../flight_modes/offboard.md) of PX4 with ROS2. +[ROS 2 Offboard control example](../ros2/offboard_control.md)提供了一个完整的 C++ 参考示例,说明如何使用 PX4 的 [offboard control](../flight_modes/offboard.md) 与 ROS 2。 -[Python ROS2 offboard examples with PX4](https://github.com/Jaeyoung-Lim/px4-offboard) (Jaeyoung-Lim/px4-offboard) provides a similar example for Python, and includes the scripts: +[Python ROS2 offboard examples with PX4](https://github.com/Jaeyoung-Lim/px4-offboard) (Jaeyoung-Lim/px4-offboard) 为Python 提供了一个类似的示例,并包含脚本: -- `offboard_control.py`: Example of offboard position control using position setpoints -- `visualizer.py`: Used for visualizing vehicle states in Rviz +- `offboard_control.py`: 使用位置设定值进行离板位置控制的示例 +- “visualizer.py\`:用于可视化载体状态的 Rviz -## Using Flight Controller Hardware +## 使用飞行控制器硬件 -ROS 2 with PX4 running on a flight controller is almost the same as working with PX4 on the simulator. -The only difference is that you need to start both the agent _and the client_, with settings appropriate for the communication channel. +在飞行控制器上运行的 PX4 号ROS2与在模拟器上运行的 PX4 几乎相同。 +唯一的区别是您需要同时启动agent _and the client_,并设置适合通信频道。 -For more information see [Starting uXRCE-DDS](../middleware/uxrce_dds.md#starting-agent-and-client). +更多信息详见[Starting uXRCE-DDS](../middleware/uxrce_dds.md#starting-agent-and-client) -## Custom uORB Topics +## 自定义 uORB 主题 -ROS 2 needs to have the _same_ message definitions that were used to create the uXRCE-DDS client module in the PX4 Firmware in order to interpret the messages. -The definition are stored in the ROS 2 interface package [PX4/px4_msgs](https://github.com/PX4/px4_msgs) and they are automatically synchronized by CI on the `main` and release branches. -Note that all the messages from PX4 source code are present in the repository, but only those listed in `dds_topics.yaml` will be available as ROS 2 topics. -Therefore, +ROS 2需要有用于在 PX4 固件中创建 uXRCE-DDS客户端模块的 _sam_message 定义,以便解释消息。 +这些定义存储在 ROS 2 接口包[PX4/px4_msgs](https://github.com/PX4/px4_msgs)中,并且会通过CI在 main(主)分支和发布分支上自动同步。 +需要注意的是,PX4 源代码中的所有消息均存在于该代码仓库中,但只有在dds_topics.yaml文件中列出的消息,才会作为 ROS 2 话题可用。 +因此 -- If you're using a main or release version of PX4 you can get the message definitions by cloning the interface package [PX4/px4_msgs](https://github.com/PX4/px4_msgs) into your workspace. -- If you're creating or modifying uORB messages you must manually update the messages in your workspace from your PX4 source tree. - Generally this means that you would update [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml), clone the interface package, and then manually synchronize it by copying the new/modified message definitions from [PX4-Autopilot/msg](https://github.com/PX4/PX4-Autopilot/tree/main/msg) to its `msg` folders. - Assuming that PX4-Autopilot is in your home directory `~`, while `px4_msgs` is in `~/ros2_ws/src/`, then the command might be: +- 如果您正在使用 PX4 的主要版本或发布版本,您可以通过克隆接口包[PX4/px4_msgs](https://github.com/PX4/px4_msgs)获得消息定义。 +- 如果您要创建或修改 uORB 消息,必须从 PX4 源代码树中手动更新工作空间中的消息。 + 一般来说,这意味着您将更新 [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml),克隆接口包。 然后手动同步,将新的/修改的消息定义从 [PX4-Autopilot/msg](https://github.com/PX4/PX4-Autopilot/tree/main/msg)复制到它的 `msg` 文件夹。 + 假定PX4-Autopilot在你的主目录`~`中,而`px4_msgs`则在`~/ros2_ws/src/`中,命令可能是: ```sh rm ~/ros2_ws/src/px4_msgs/msg/*.msg @@ -725,22 +725,22 @@ Therefore, ``` ::: info - Technically, [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) completely defines the relationship between PX4 uORB topics and ROS 2 messages. - For more information see [uXRCE-DDS > DDS Topics YAML](../middleware/uxrce_dds.md#dds-topics-yaml). + 从技术角度而言,[dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) 这个文件完整定义了 PX4 uORB 话题与 ROS 2 消息之间的对应关系。 + 欲了解更多信息,请参阅[uXRCE-DDS > DDS Topics YAML](../middleware/uxrce_dds.md#dds-topics-yaml)。 ::: ## Customizing the Namespace -Custom topic and service namespaces can be applied at build time (changing [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml)) or at runtime (useful for multi vehicle operations): +自定义主题和服务命名空间可以在构建时间(更改 [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml))或运行时间(对多载体操作有用): -- One possibility is to use the `-n` option when starting the [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) from command line. - This technique can be used both in simulation and real vehicles. -- A custom namespace can be provided for simulations (only) by setting the environment variable `PX4_UXRCE_DDS_NS` before starting the simulation. +- 一种可能性是在从命令行启动[uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client)时使用 "-n" 选项。 + 这种技术既可用于模拟,也可用于实际机体。 +- 在开始模拟前,可以通过设置环境变量 `PX4_UXRCE_DDS_NS`来提供自定义命名空间 (仅限) :::info -Changing the namespace at runtime will append the desired namespace as a prefix to all `topic` fields in [dds_topics.yaml](../middleware/dds_topics.md) and all [service servers](#px4-ros-2-service-servers). -Therefore, commands like: +更改运行时的命名空间将会将所需的命名空间作为一个前缀附加到 [dds_topics.yaml](../middleware/dds_topics.md) 中所有的 "topic " 字段和所有 [service servers](#px4-ros-2-service-servers)。 +因此,命令如下: ```sh uxrce_dds_client start -n uav_1 @@ -752,7 +752,7 @@ uxrce_dds_client start -n uav_1 PX4_UXRCE_DDS_NS=uav_1 make px4_sitl gz_x500 ``` -will generate topics under the namespaces: +将在以下命名空间下生成话题: ```sh /uav_1/fmu/in/ # for subscribers @@ -766,27 +766,27 @@ will generate topics under the namespaces: PX4 uXRCE-DDS middleware supports [ROS 2 services](https://docs.ros.org/en/jazzy/Concepts/Basic/About-Services.html). -Services are remote procedure calls, from one node to another, that return a result. +服务(Services)是一种远程过程调用(remote procedure calls),由一个节点发起,向另一个节点请求调用,最终会返回一个结果。 A service server is the entity that will accept a remote procedure request, perform some computation on it, and return the result. They simplify communication between ROS 2 nodes and PX4 by grouping the request and response behaviour, and ensuring that replies are only returned to the specific requesting user. -This is much easier that publishing the request, subscribing to the reply, and filtering out any unwanted responses. +这比发布请求、订阅回复并过滤掉所有不需要的响应要容易得多。 -The service servers that are built into the PX4 [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) module include: +构建在 PX4 [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) 模块中的服务服务器包括: - `/fmu/vehicle_command` (definition: [`px4_msgs::srv::VehicleCommand`](https://github.com/PX4/px4_msgs/blob/main/srv/VehicleCommand.srv).) - This service can be called by ROS 2 applications to send PX4 [VehicleCommand](../msg_docs/VehicleCommand.md) uORB messages and receive PX4 [VehicleCommandAck](../msg_docs/VehicleCommandAck.md) uORB messages in response. + 此服务可以被 ROS 2 应用程序调用来发送 PX4[VehicleCommand](../msg_docs/VehicleCommand.md) uORB 消息,并相应接收 PX4 [VehicleCommandAck](../msg_docs/VehicleCommandAck.md)uORB 消息。 -All PX4 service names follow the convention `{extra_namespace}/fmu/{server_specific_name}` where `{extra_namespace}` is the same [custom namespace](#customizing-the-namespace) that can be given to the PX4 topics. +所有 PX4 服务名称均遵循 `{extra_namespace}/fmu/{server_specific_name}` 这一约定,其中 {extra_namespace} 与可分配给 PX4 话题的 [custom namespace](#customizing-the-namespace)相同。 -Details and specific examples are provided in the following sections. +具体细节和示例将在以下章节中提供。 -### VehicleCommand service +### 载体指挥服务 -This can be used to send commands to the vehicle, such as "take off", "land", change mode, and "orbit", and receive a response. +这可用于向飞行器发送指令(例如 “起飞”“着陆”“切换模式” 和 “盘旋”),并接收响应。 -The service type is defined in [`px4_msgs::srv::VehicleCommand`](https://github.com/PX4/px4_msgs/blob/main/srv/VehicleCommand.srv) as: +服务类型在 [`px4_msgs::srv::VehicleCommand`](https://github.com/PX4/px4_msgs/blob/main/srv/VehicleCommand.srv) 中定义如下: ```txt VehicleCommand request @@ -794,30 +794,30 @@ VehicleCommand request VehicleCommandAck reply ``` -Users can make service requests by sending [VehicleCommand](../msg_docs/VehicleCommand.md) messages, and receive a [VehicleCommandAck](../msg_docs/VehicleCommandAck.md) message in response. -The service ensures that only the `VehicleCommandAck` reply generated for the specific request made by the user is sent back. +用户可通过发送 [VehicleCommand](../msg_docs/VehicleCommand.md)消息发起服务请求,并会收到一条[VehicleCommandAck](../msg_docs/VehicleCommandAck.md) 消息作为响应。 +该服务可确保仅将针对用户发起的特定请求所生成的 VehicleCommandAck回复返回。 -#### VehicleCommand Service Offboard Control Example +#### 载体指挥服务离板控制示例 -A complete _offboard control_ example using the VehicleCommand service is provided by the [offboard_control_srv](https://github.com/PX4/px4_ros_com/blob/main/src/examples/offboard/offboard_control_srv.cpp) node available in the `px4_ros_com` package. +在 px4_ros_com 功能包中,有一个[offboard_control_srv](https://github.com/PX4/px4_ros_com/blob/main/src/examples/offboard/offboard_control_srv.cpp) 节点,该节点提供了一个完整的、使用 VehicleCommand 服务实现离板控制的示例。 -The example closely follows the _offboard control_ example described in [ROS 2 Offboard Control Example](../ros2/offboard_control.md) but uses the `VehicleCommand` service to request mode changes, vehicle arming and vehicle disarming. +该示例与[ROS 2 Offboard Control Example](../ros2/offboard_control.md) 中描述的离板控制示例高度相似,但使用 VehicleCommand 服务来请求模式切换、飞行器上锁和飞行器解锁。 -First the ROS 2 application declares a service client of type `px4_msgs::srv::VehicleCommand` using `rclcpp::Client()` as shown (this is the same approach used for all ROS2 service clients): +首先,ROS 2 应用程序会使用 rclcpp::Client() 声明一个类型为 px4_msgs::srv::VehicleCommand 的服务客户端,具体如下(所有 ROS 2 服务客户端均采用此方法) ```cpp -rclcpp::Client::SharedPtr vehicle_command_client_; +rclcpp::Client<0>::SharedPtr vehicle_command_client_; ``` -Then the client is initialized to the right ROS 2 service (`/fmu/vehicle_command`). -As the application assumes the standard PX4 namespace is used, the code to do this looks like this: +然后客户端初始化到正确的 ROS 2 服务 (`/fmu/vehicle_command` )。 +当应用程序假设使用标准的 PX4 命名空间时,这样做的代码看起来就像这样: ```cpp vehicle_command_client_{this->create_client("/fmu/vehicle_command")} ``` -After that, the client can be used to send any vehicle command request. -For example, the `arm()` function is used to request the vehicle to arm: +此后,客户可以用来发送任何机体命令请求。 +例如,`arm()`函数用于请求机体放置: ```cpp void OffboardControl::arm() @@ -827,7 +827,7 @@ void OffboardControl::arm() } ``` -where `request_vehicle_command` handles formatting the request and sending it over in _asynchronous_ [mode](https://docs.ros.org/en/humble/How-To-Guides/Sync-Vs-Async.html#asynchronous-calls): +`request_vehicle_command`处理请求格式化并在_asynchronous_ [mode](https://docs.ros.org/en/humble/How-To-Guides/Sync-Vs-Async.html#asynchronous-calls): ```cpp void OffboardControl::request_vehicle_command(uint16_t command, float param1, float param2) @@ -853,7 +853,7 @@ void OffboardControl::request_vehicle_command(uint16_t command, float param1, fl } ``` -The response is finally captured asynchronously by the `response_callback` method which checks for the request result: +最终,响应由 response_callback 方法以异步方式捕获,该方法会检查请求结果: ```cpp void OffboardControl::response_callback( @@ -872,20 +872,20 @@ void OffboardControl::response_callback( ## ros2 CLI -The [ros2 CLI](https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools.html) is a useful tool for working with ROS. -You can use it, for example, to quickly check whether topics are being published, and also inspect them in detail if you have `px4_msg` in the workspace. -The command also lets you launch more complex ROS systems via a launch file. -A few possibilities are demonstrated below. +[ros2 CLI](https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools.html)是一个有用的工具来处理ROS。 +例如,您可以使用它快速检查话题是否正在发布;如果您的工作空间中包含 px4_msg,还可以详细查看这些话题的内容。 +该命令还允许您通过启动文件(launch file)启动更复杂的 ROS 系统。 +下文显示了几种可能性。 -### ros2 topic list +### ros2 topic list(ROS 2 话题列表命令) -Use `ros2 topic list` to list the topics visible to ROS 2: +使用 ros2 topic list 命令列出 ROS 2 可识别的话题: ```sh -ros2 topic list +ros2 topic list(ROS 2 话题列表命令) ``` -If PX4 is connected to the agent, the result will be a list of topic types: +若 PX4 已连接至代理,输出结果将是一份话题类型列表: ```sh /fmu/in/obstacle_distance @@ -894,19 +894,19 @@ If PX4 is connected to the agent, the result will be a list of topic types: ... ``` -Note that the workspace does not need to build with `px4_msgs` for this to succeed; topic type information is part of the message payload. +请注意,工作区不需要使用 px4_msgs 构建才能成功;主题类型信息是消息有效载荷的一部分。 ### ros2 topic echo -Use `ros2 topic echo` to show the details of a particular topic. +使用 `ros2 topic echo`"来显示特定主题的详细信息。 -Unlike with `ros2 topic list`, for this to work you must be in a workspace has built the `px4_msgs` and sourced `local_setup.bash` so that ROS can interpret the messages. +与 ros2 topic list 命令不同,要让该功能正常工作,你必须处于一个已编译 px4_msgs且已执行 local_setup.bash 脚本的工作空间中,这样 ROS 才能解析相关消息 ```sh ros2 topic echo /fmu/out/vehicle_status ``` -The command will echo the topic details as they update. +该命令将在主题细节更新时响应它们的详细信息。 ```sh --- @@ -927,14 +927,14 @@ hil_state: 0 ### ros2 topic hz -You can get statistics about the rates of messages using `ros2 topic hz`. -For example, to get the rates for `SensorCombined`: +你可以使用 ros2 topic hz 命令获取消息速率相关的统计信息。 +例如,获取`SensorCombined`速率: ```sh ros2 topic hz /fmu/out/sensor_combined ``` -The output will look something like: +输出会看起来像这样: ```sh average rate: 248.187 @@ -953,30 +953,30 @@ min: 0.000s max: 0.012s std dev: 0.00148s window: 3960 ### ros2 launch -The `ros2 launch` command is used to start a ROS 2 launch file. -For example, above we used `ros2 launch px4_ros_com sensor_combined_listener.launch.py` to start the listener example. +ros2 launch 命令用于启动一个 ROS 2 启动文件 +例如,前面我们使用 ros2 launch px4_ros_com sensor_combined_listener.launch.py 命令启动了监听器示例。 -You don't need to have a launch file, but they are very useful if you have a complex ROS 2 system that needs to start several components. +你并非必须使用启动文件,但如果你的 ROS 2 系统较为复杂,需要启动多个组件,那么启动文件会非常实用。 -For information about launch files see [ROS 2 Tutorials > Creating launch files](https://docs.ros.org/en/humble/Tutorials/Intermediate/Launch/Creating-Launch-Files.html) +关于启动文件的信息,请参阅 [ROS 2 Tutorials > Creating launch files](https://docs.ros.org/en/humble/Tutorials/Intermediate/Launch/Creating-Launch-Files.html) ## 故障处理 -### Missing dependencies +### 缺少依赖项 -The standard installation should include all the tools needed by ROS 2. +标准安装应包含 ROS 2 所需的所有工具。 -If any are missing, they can be added separately: +如果有任何缺失,可以单独添加: -- **`colcon`** build tools should be in the development tools. - It can be installed using: +- **`colcon`** 构建工具应该在开发工具中。 + 可以使用以下方式安装它: ```sh sudo apt install python3-colcon-common-extensions ``` -- The Eigen3 library used by the transforms library should be in the both the desktop and base packages. - It should be installed as shown: +- 变换库(transforms library)所使用的 Eigen3 库,应同时存在于桌面版(desktop)功能包和基础版(base)功能包中。 + 它应该安装在显示中: :::: tabs @@ -1002,10 +1002,10 @@ If any are missing, they can be added separately: ### ros_gz_bridge not publishing on the \clock topic -If your [ROS2 nodes use the Gazebo clock as time source](../ros2/user_guide.md#ros2-nodes-use-the-gazebo-clock-as-time-source) but the `ros_gz_bridge` node doesn't publish anything on the `/clock` topic, you may have the wrong version installed. -This might happen if you install ROS 2 Humble with the default "Ignition Fortress" packages, rather than using those for PX4, which uses "Gazebo Harmonic". +如果你的[ROS2 nodes use the Gazebo clock as time source](../ros2/user_guide.md#ros2-nodes-use-the-gazebo-clock-as-time-source) 但`ros_gz_bridge` 节点没有发布任何关于\`/时钟' 主题的内容。 您可能安装了错误的版本。 +若你在安装 ROS 2 Humble 时,使用的是默认的 “Ignition Fortress” 功能包,而非 PX4 所使用的、适配 “Gazebo Harmonic” 的功能包,就可能出现这种情况。 -The following commands uninstall the default Ignition Fortress topics and install the correct bridge and other interface topics for **Gazebo Harmonic** with ROS2 **Humble**: +以下命令会卸载默认的 Ignition Fortress 功能包,并为搭配 ROS 2 Humble 版本的 Gazebo Harmonic 安装正确的桥接功能包及其他接口功能包: ```bash # Remove the wrong version (for Ignition Fortress) @@ -1015,7 +1015,7 @@ sudo apt remove ros-humble-ros-gz sudo apt install ros-humble-ros-gzharmonic ``` -## Additional information +## 更多信息 - [ROS 2 in PX4: Technical Details of a Seamless Transition to XRCE-DDS](https://www.youtube.com/watch?v=F5oelooT67E) - Pablo Garrido & Nuno Marques (youtube) - [DDS and ROS middleware implementations](https://github.com/ros2/ros2/wiki/DDS-and-ROS-middleware-implementations) diff --git a/docs/zh/sim_gazebo_gz/index.md b/docs/zh/sim_gazebo_gz/index.md index 127701dc05..f9dfc91f12 100644 --- a/docs/zh/sim_gazebo_gz/index.md +++ b/docs/zh/sim_gazebo_gz/index.md @@ -20,6 +20,8 @@ See [Simulation](../simulation/index.md) for general information about simulator Gazebo Harmonic is installed by default on Ubuntu 22.04 as part of the normal [development environment setup](../dev_setup/dev_env_linux_ubuntu.md#simulation-and-nuttx-pixhawk-targets). +Gazebo versions Harmonic, Ionic, and Jetty are supported on Ubuntu 24.04. The latest installed Gazebo release is used by default. + :::info The PX4 installation scripts are based on the instructions: [Binary Installation on Ubuntu](https://gazebosim.org/docs/harmonic/install_ubuntu/) (gazebosim.org). ::: @@ -48,22 +50,23 @@ This runs both the PX4 SITL instance and the Gazebo client. The supported vehicles and `make` commands are listed below. Note that all gazebo make targets have the prefix `gz_`. -| Vehicle | 通信 | `PX4_SYS_AUTOSTART` | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------- | ------------------- | -| [Quadrotor (x500)](../sim_gazebo_gz/vehicles.md#x500-quadrotor) | `make px4_sitl gz_x500` | 4011 | -| [X500 Quadrotor with Depth Camera (Front-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-depth-camera-front-facing) | `make px4_sitl gz_x500_depth` | 4002 | -| [Quadrotor(x500) with Vision Odometry](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-visual-odometry) | `make px4_sitl gz_x500_vision` | 4005 | -| [Quadrotor(x500) with 1D LIDAR (Down-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-1d-lidar-down-facing) | `make px4_sitl gz_x500_lidar_down` | 4016 | -| [Quadrotor(x500) with 2D LIDAR](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-2d-lidar) | `make px4_sitl gz_x500_lidar_2d` | 4013 | -| [Quadrotor(x500) with 1D LIDAR (Front-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-1d-lidar-front-facing) | `make px4_sitl gz_x500_lidar_front` | 4017 | -| [Quadrotor(x500) with gimbal (Front-facing) in Gazebo](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-gimbal-front-facing) | `make px4_sitl gz_x500_gimbal` | 4019 | -| [VTOL](../sim_gazebo_gz/vehicles.md#standard-vtol) | `make px4_sitl gz_standard_vtol` | 4004 | -| [Plane](../sim_gazebo_gz/vehicles.md#standard-plane) | `make px4_sitl gz_rc_cessna` | 4003 | -| [Advanced Plane](../sim_gazebo_gz/vehicles.md#advanced-plane) | `make px4_sitl gz_advanced_plane` | 4008 | -| [Differential Rover](../sim_gazebo_gz/vehicles.md#differential-rover) | `make px4_sitl gz_r1_rover` | 4009 | -| [Ackermann Rover](../sim_gazebo_gz/vehicles.md#ackermann-rover) | `make px4_sitl gz_rover_ackermann` | 4012 | -| [Quad Tailsitter VTOL](../sim_gazebo_gz/vehicles.md#quad-tailsitter-vtol) | `make px4_sitl gz_quadtailsitter` | 4018 | -| [Tiltrotor VTOL](../sim_gazebo_gz/vehicles.md#tiltrotor-vtol) | `make px4_sitl gz_tiltrotor` | 4020 | +| Vehicle | 通信 | `PX4_SYS_AUTOSTART` | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------- | ------------------- | +| [Quadrotor (x500)](../sim_gazebo_gz/vehicles.md#x500-quadrotor) | `make px4_sitl gz_x500` | 4011 | +| [X500 Quadrotor with Depth Camera (Front-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-depth-camera-front-facing) | `make px4_sitl gz_x500_depth` | 4002 | +| [Quadrotor(x500) with Vision Odometry](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-visual-odometry) | `make px4_sitl gz_x500_vision` | 4005 | +| [Quadrotor(x500) with 1D LIDAR (Down-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-1d-lidar-down-facing) | `make px4_sitl gz_x500_lidar_down` | 4016 | +| [Quadrotor(x500) with 2D LIDAR](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-2d-lidar) | `make px4_sitl gz_x500_lidar_2d` | 4013 | +| [Quadrotor(x500) with 1D LIDAR (Front-facing)](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-1d-lidar-front-facing) | `make px4_sitl gz_x500_lidar_front` | 4017 | +| [Quadrotor(x500) with gimbal (Front-facing) in Gazebo](../sim_gazebo_gz/vehicles.md#x500-quadrotor-with-gimbal-front-facing) | `make px4_sitl gz_x500_gimbal` | 4019 | +| [VTOL](../sim_gazebo_gz/vehicles.md#standard-vtol) | `make px4_sitl gz_standard_vtol` | 4004 | +| [Plane](../sim_gazebo_gz/vehicles.md#standard-plane) | `make px4_sitl gz_rc_cessna` | 4003 | +| [Advanced Plane](../sim_gazebo_gz/vehicles.md#advanced-plane) | `make px4_sitl gz_advanced_plane` | 4008 | +| [Quad Tailsitter VTOL](../sim_gazebo_gz/vehicles.md#quad-tailsitter-vtol) | `make px4_sitl gz_quadtailsitter` | 4018 | +| [Tiltrotor VTOL](../sim_gazebo_gz/vehicles.md#tiltrotor-vtol) | `make px4_sitl gz_tiltrotor` | 4020 | +| [Differential Rover](../sim_gazebo_gz/vehicles.md#differential-rover) | `make px4_sitl gz_rover_differential` | 50000 | +| [Ackermann Rover](../sim_gazebo_gz/vehicles.md#ackermann-rover) | `make px4_sitl gz_rover_ackermann` | 51000 | +| [Mecanum Rover](../sim_gazebo_gz/vehicles.md#mecanum-rover) | `make px4_sitl gz_rover_mecanum` | 52000 | All [vehicle models](../sim_gazebo_gz/vehicles.md) (and [worlds](#specify-world)) are included as a submodule from the [Gazebo Models Repository](../sim_gazebo_gz/gazebo_models.md) repository. diff --git a/docs/zh/sim_gazebo_gz/vehicles.md b/docs/zh/sim_gazebo_gz/vehicles.md index a449199159..ba9b16be4a 100644 --- a/docs/zh/sim_gazebo_gz/vehicles.md +++ b/docs/zh/sim_gazebo_gz/vehicles.md @@ -185,7 +185,7 @@ make px4_sitl gz_tiltrotor [Differential Rover](../frames_rover/index.md#differential) uses the [rover world](../sim_gazebo_gz/worlds.md#rover) by default. ```sh -make px4_sitl gz_r1_rover +make px4_sitl gz_rover_differential ``` ![Differential Rover in Gazebo](../../assets/simulation/gazebo/vehicles/rover_differential.png) @@ -199,3 +199,13 @@ make px4_sitl gz_rover_ackermann ``` ![Ackermann Rover in Gazebo](../../assets/simulation/gazebo/vehicles/rover_ackermann.png) + +### Mecanum Rover + +[Mecanum Rover](../frames_rover/index.md#mecanum) uses the [rover world](../sim_gazebo_gz/worlds.md#rover) by default. + +```sh +make px4_sitl gz_rover_mecanum +``` + +![Mecanum Rover in Gazebo](../../assets/simulation/gazebo/vehicles/rover_mecanum.png) diff --git a/docs/zh/telemetry/telemetry_wifi.md b/docs/zh/telemetry/telemetry_wifi.md index b1f435c36d..84d13ddd32 100644 --- a/docs/zh/telemetry/telemetry_wifi.md +++ b/docs/zh/telemetry/telemetry_wifi.md @@ -1,6 +1,6 @@ # WiFi 数传电台 -WiFi telemetry enables MAVLink communication between a WiFi radio on a vehicle and a GCS.\ +WiFi telemetry enables MAVLink communication between a WiFi radio on a vehicle and a GCS. WiFi typically offers shorter range than a normal telemetry radio, but supports higher data rates, and makes it easier to support FPV/video feeds. Usually only a single radio unit for the vehicle is needed (assuming the ground station already has WiFi). From 60dd34315227150bc6cd7ed873541af28d81052a Mon Sep 17 00:00:00 2001 From: Andrew Wilkins Date: Wed, 8 Oct 2025 14:02:03 -0500 Subject: [PATCH 03/71] updated test cards for optical flow flights (#25676) * updated test cards for optical flow flights * Update docs/en/test_cards/mc_07_optical_flow_failure.md Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> * updated docs * fixed mis-type in url * subedit * Update docs/en/test_cards/mc_06_optical_flow.md Co-authored-by: Hamish Willee * updated test card * changes to file name and some instructions --------- Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> Co-authored-by: Hamish Willee --- docs/en/SUMMARY.md | 4 +- docs/en/_sidebar.md | 4 +- docs/en/test_and_ci/test_flights.md | 4 +- docs/en/test_cards/mc_06_optical_flow.md | 29 +++++--- .../mc_07_optical_flow_low_mount.md | 45 +++++++++++ docs/en/test_cards/mc_08_dshot.md | 10 +-- .../test_cards/{mc_07_vio.md => mc_09_vio.md} | 14 ++-- .../mc_10_optical_flow_gps_mixed.md | 74 +++++++++++++++++++ 8 files changed, 159 insertions(+), 25 deletions(-) create mode 100644 docs/en/test_cards/mc_07_optical_flow_low_mount.md rename docs/en/test_cards/{mc_07_vio.md => mc_09_vio.md} (75%) create mode 100644 docs/en/test_cards/mc_10_optical_flow_gps_mixed.md diff --git a/docs/en/SUMMARY.md b/docs/en/SUMMARY.md index c1913bf6f2..1285360522 100644 --- a/docs/en/SUMMARY.md +++ b/docs/en/SUMMARY.md @@ -831,8 +831,10 @@ - [Test MC_04 - Failsafe Testing](test_cards/mc_04_failsafe_testing.md) - [Test MC_05 - Manual Modes (Inside)](test_cards/mc_05_indoor_flight_manual_modes.md) - [Test MC_06 - Optical Flow (Inside)](test_cards/mc_06_optical_flow.md) - - [Test MC_07 - VIO (Inside)](test_cards/mc_07_vio.md) + - [Test MC_07 - Optical Flow Low Mount](test_cards/mc_07_optical_flow_low_mount.md) - [Test MC_08 - DSHOT ESC](test_cards/mc_08_dshot.md) + - [Test MC_09 - VIO (Visual-Inertial Odometry)](test_cards/mc_09_vio.md) + - [Test MC_10 - Optical Flow / GPS Mixed](test_cards/mc_10_optical_flow_gps_mixed.md) - [Unit Tests](test_and_ci/unit_tests.md) - [Fuzz Tests](test_and_ci/fuzz_tests.md) - [Continuous Integration](test_and_ci/continous_integration.md) diff --git a/docs/en/_sidebar.md b/docs/en/_sidebar.md index 2d1ed64e69..949c3bc253 100644 --- a/docs/en/_sidebar.md +++ b/docs/en/_sidebar.md @@ -829,8 +829,10 @@ - [Test MC_04 - Failsafe Testing](/test_cards/mc_04_failsafe_testing.md) - [Test MC_05 - Manual Modes (Inside)](/test_cards/mc_05_indoor_flight_manual_modes.md) - [Test MC_06 - Optical Flow (Inside)](/test_cards/mc_06_optical_flow.md) - - [Test MC_07 - VIO (Inside)](/test_cards/mc_07_vio.md) + - [Test MC_07 - Optical Flow Low Mount](/test_cards/mc_07_optical_flow_low_mount.md) - [Test MC_08 - DSHOT ESC](/test_cards/mc_08_dshot.md) + - [Test MC_09 - VIO (Visual-Inertial Odometry)](/test_cards/mc_09_vio.md) + - [Test MC_10 - Optical Flow / GPS Mixed](/test_cards/mc_10_optical_flow_gps_mixed.md) - [Unit Tests](/test_and_ci/unit_tests.md) - [Fuzz Tests](/test_and_ci/fuzz_tests.md) - [Continuous Integration](/test_and_ci/continous_integration.md) diff --git a/docs/en/test_and_ci/test_flights.md b/docs/en/test_and_ci/test_flights.md index f9579c1ccb..91a7681f97 100644 --- a/docs/en/test_and_ci/test_flights.md +++ b/docs/en/test_and_ci/test_flights.md @@ -28,5 +28,7 @@ These are run by the test team as part of release testing, and for more signific - [MC_04 - Failsafe Testing](../test_cards/mc_04_failsafe_testing.md) - [MC_05 - Indoor Flight (Manual Modes)](../test_cards/mc_05_indoor_flight_manual_modes.md) - [MC_06 - Indoor Flight (Optical Flow)](../test_cards/mc_06_optical_flow.md) -- [MC_07 - VIO (Visual-Inertial Odometry)](../test_cards/mc_07_vio.md) +- [MC_07 - Optical Flow Low Mount](../test_cards/mc_07_optical_flow_low_mount.md) - [MC_08 - DSHOT ESC](../test_cards/mc_08_dshot.md) +- [MC_09 - VIO (Visual-Inertial Odometry)](../test_cards/mc_09_vio.md) +- [MC_10 - Optical Flow / GPS Mixed](../test_cards/mc_10_optical_flow_gps_mixed.md) diff --git a/docs/en/test_cards/mc_06_optical_flow.md b/docs/en/test_cards/mc_06_optical_flow.md index 8a7eb71211..22877115e6 100644 --- a/docs/en/test_cards/mc_06_optical_flow.md +++ b/docs/en/test_cards/mc_06_optical_flow.md @@ -2,25 +2,23 @@ ## Objective -To test that optical flow works as expected +Test that optical flow works as expected ## Preflight -Disconnect all GPS / compasses and ensure vehicle is using optical flow for navigation -([Setup Information here](../sensor/optical_flow.md)) +Disconnect all GPS / compasses and ensure vehicle is using optical flow for navigation ([setup information here](../sensor/optical_flow.md)) -Ensure there are no other sources of positioning besides optical flow +Ensure there are no other sources of positioning besides optical flow: - [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `1` - [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `0` - [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `0` -- [SYS_HAS_MAG](../advanced_config/parameter_reference.md#SYS_HAS_MAG): `0` -Ensure that the drone can go into Altitude / Position flight mode while still on the ground +Ensure that the drone can go into Altitude / Position mode while still on the ground ## Flight Tests -❏ Altitude flight mode +❏ [Altitude mode](../flight_modes_mc/altitude.md)     ❏ Vertical position should hold current value with stick centered @@ -28,7 +26,7 @@ Ensure that the drone can go into Altitude / Position flight mode while still on     ❏ Throttle response set to climb/descent rate -❏ Position flight mode +❏ [Position mode](../flight_modes_mc/position.md)     ❏ Horizontal position should hold current value with stick centered @@ -38,6 +36,16 @@ Ensure that the drone can go into Altitude / Position flight mode while still on     ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates +❏ Varying height terrain + +    ❏ Put boxes on the ground to create varying heights in terrain + +    ❏ Take off in position mode and fly over the boxes such that the downward facing rangefinder varies in value + +    ❏ Do a few passes with varying amounts of time over the boxes (1-30 seconds if possible) + +    ❏ Drone should not raise in height when flying over boxes + ## Landing ❏ Land in either Position or Altitude mode with the throttle below 40% @@ -47,7 +55,8 @@ Ensure that the drone can go into Altitude / Position flight mode while still on ## Expected Results - Take-off should be smooth as throttle is raised -- Drone should hold altitude in Altitude Flight mode without wandering -- Drone should hold position within 1 meter in Position Flight mode without pilot moving sticks +- Drone should hold altitude in Altitude mode without wandering (over surface with many features) +- Drone should hold position within 1 meter in Position mode without pilot moving sticks - No oscillations should present in any of the above flight modes +- Drone should not raise in height when flying over boxes - Upon landing, copter should not bounce on the ground diff --git a/docs/en/test_cards/mc_07_optical_flow_low_mount.md b/docs/en/test_cards/mc_07_optical_flow_low_mount.md new file mode 100644 index 0000000000..73c06f4e4a --- /dev/null +++ b/docs/en/test_cards/mc_07_optical_flow_low_mount.md @@ -0,0 +1,45 @@ +# Test MC_07 - Optical Flow Low Sensor + +## Objective + +Test that optical flow works as expected with a low mounted optical flow sensor + +## Preflight + +Ensure that the drone's optical flow sensor is mounted more than an inch off of the ground + +Ensure that [MPC_THR_MIN](../advanced_config/parameter_reference.md#MPC_THR_MIN) is tuned correctly for landing + +Disconnect all GPS / compasses and ensure vehicle is using optical flow for navigation +([Setup Information here](../sensor/optical_flow.md)) + +Ensure there are no other sources of positioning besides optical flow + +- [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `1` +- [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `0` +- [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `0` + +Ensure that the drone can go into [Position mode](../flight_modes_mc/position.md) while still on the ground + +## Flight Tests + +❏ [Position mode](../flight_modes_mc/position.md) + +    ❏ Horizontal position should hold current value with stick centered + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Throttle response set to climb/descent rate + +    ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates + +## Landing + +❏ Land in Position mode with the throttle below 40% + +❏ Upon touching ground, copter should disarm automatically within 2 seconds (default: see [COM_DISARM_LAND](../advanced_config/parameter_reference.md#COM_DISARM_LAND)) + +## Expected Results + +- Take-off should be smooth as throttle is raised +- Drone should stay in Position mode, NOT fall into [altitude](../flight_modes_mc/altitude.md) mode diff --git a/docs/en/test_cards/mc_08_dshot.md b/docs/en/test_cards/mc_08_dshot.md index 1ce413b34f..d2012aabd5 100644 --- a/docs/en/test_cards/mc_08_dshot.md +++ b/docs/en/test_cards/mc_08_dshot.md @@ -6,22 +6,22 @@ Regression test for DSHOT working with PX4 ## Preflight -- Ensure vehicle is using a DSHOT ESC. +- Ensure vehicle is using a DSHOT ESC - Parameter [DSHOT_BIDIR_EN](../advanced_config/parameter_reference.md#DSHOT_BIDIR_EN) is enabled - Parameter [DSHOT_TEL_CFG](../advanced_config/parameter_reference.md#DSHOT_TEL_CFG) is configured (if ESC supports telemetry) - Parameter [SDLOG_PROFILE](../advanced_config/parameter_reference.md#SDLOG_PROFILE) has Debug (`5`) checked ## Flight Tests -❏ Stabilized Flight mode +❏ [Stabilized mode](../flight_modes_mc/manual_stabilized.md) -    ❏ Takeoff in stabilized flight mode to ensure correct motor spin +    ❏ Takeoff in stabilized mode to ensure correct motor spin     ❏ Pitch/Roll/Yaw response 1:1     ❏ Throttle response 1:1 -❏ Position flight mode +❏ [Position mode](../flight_modes_mc/position.md)     ❏ Horizontal position should hold current value with stick centered @@ -41,6 +41,6 @@ Regression test for DSHOT working with PX4 - Download flight logs - Load into Data Plot Juggler -- Ensure data is logged for esc_status/esc.0x/esc_rpm +- Ensure data is logged for `esc_status`/`esc.0x`/`esc_rpm` ![Reference frames](../../assets/test_cards/dshot_log_output.png) diff --git a/docs/en/test_cards/mc_07_vio.md b/docs/en/test_cards/mc_09_vio.md similarity index 75% rename from docs/en/test_cards/mc_07_vio.md rename to docs/en/test_cards/mc_09_vio.md index 24743eaf7e..994fa9e4cf 100644 --- a/docs/en/test_cards/mc_07_vio.md +++ b/docs/en/test_cards/mc_09_vio.md @@ -1,14 +1,14 @@ -# Test MC_07 - VIO (Visual-Inertial Odometry) +# Test MC_09 - VIO (Visual-Inertial Odometry) ## Objective -To test that external vision (VIO) works as expected +Test that external vision (VIO) works as expected ## Preflight Disconnect all GPS / compasses and ensure vehicle is using VIO for navigation -Ensure that the drone can go into Altitude / Position flight mode while still on the ground +Ensure that the drone can go into [Altitude](../flight_modes_mc/altitude.md) / [Position](../flight_modes_mc/position.md) mode while still on the ground Ensure there are no other sources of positioning besides VIO: @@ -19,7 +19,7 @@ Ensure there are no other sources of positioning besides VIO: ## Flight Tests -❏ Altitude flight mode +❏ [Altitude mode](../flight_modes_mc/altitude.md)     ❏ Vertical position should hold current value with stick centered @@ -27,7 +27,7 @@ Ensure there are no other sources of positioning besides VIO:     ❏ Throttle response set to climb/descent rate -❏ Position flight mode +❏ [Position mode](../flight_modes_mc/position.md)     ❏ Horizontal position should hold current value with stick centered @@ -46,7 +46,7 @@ Ensure there are no other sources of positioning besides VIO: ## Expected Results - Take-off should be smooth as throttle is raised -- Drone should hold altitude in Altitude Flight mode without wandering -- Drone should hold position within 1 meter in Position Flight mode without pilot moving sticks +- Drone should hold altitude in Altitude mode without wandering +- Drone should hold position within 1 meter in Position mode without pilot moving sticks - No oscillations should present in any of the above flight modes - Upon landing, copter should not bounce on the ground diff --git a/docs/en/test_cards/mc_10_optical_flow_gps_mixed.md b/docs/en/test_cards/mc_10_optical_flow_gps_mixed.md new file mode 100644 index 0000000000..740900f911 --- /dev/null +++ b/docs/en/test_cards/mc_10_optical_flow_gps_mixed.md @@ -0,0 +1,74 @@ +# Test MC_10 - Optical Flow / GPS Mixed + +## Objective + +Test that optical flow mixed with GPS works as expected + +## Preflight + +[Setup optical flow and GPS](../sensor/optical_flow.md) + +Ensure there are no other sources of positioning besides optical flow + +- [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `1` +- [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `7` +- [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `0` +- [SYS_HAS_MAG](../advanced_config/parameter_reference.md#SYS_HAS_MAG): `1` +- [EKF2_HGT_REF](../advanced_config/parameter_reference.md#EKF2_HGT_REF): `1` (GPS) + +Ensure that the drone can go into [Altitude](../flight_modes_mc/altitude.md) / [Position](../flight_modes_mc/position.md) mode while still on the ground + +## Flight Tests + +❏ [Altitude mode](../flight_modes_mc/altitude.md) + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Pitch/Roll/Yaw response 1:1 + +    ❏ Throttle response set to climb/descent rate + +❏ [Position mode](../flight_modes_mc/position.md) + +    ❏ Horizontal position should hold current value with stick centered + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Throttle response set to climb/descent rate + +    ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates + +❏ GPS Cutout + +    ❏ Takeoff in position mode in GPS rich environment (outdoors) + +    ❏ Open QGC and navigate to MAVLink Console + +    ❏ Type `gps off` to disable GPS + +    ❏ Drone should maintain position hold via optical flow + +❏ GPS Degredation + +    ❏ Takeoff in position mode in GPS rich environment (outdoors) + +    ❏ Fly under a metal surface (or other GPS blocking structure) + +    ❏ Ensure drone does not lose position hold or start drifting + +    ❏ Fly out of metal structure to regain GPS + +❏ GPS Acquisition + +    ❏ Takeoff in position mode in non-GPS environment + +    ❏ Fly into a GPS rich environment (outdoors) + +    ❏ Ensure drone acquires GPS position + +## Expected Results + +- Take-off should be smooth as throttle is raised +- Drone should hold position within 1 meter in Position mode without pilot moving sticks +- Drone should hold position in GPS rich environment as well as non-GPS environment +- No oscillations should present in any of the above flight modes From d85994b521d5e9da7d376b2f8d71260c42cee9e2 Mon Sep 17 00:00:00 2001 From: Hamish Willee Date: Wed, 8 Oct 2025 16:32:19 +1100 Subject: [PATCH 04/71] Make Github docs-deploy workflow only run manually --- .github/workflows/docs_deploy.yml | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/.github/workflows/docs_deploy.yml b/.github/workflows/docs_deploy.yml index 13a0df6f6d..b8991e38c9 100644 --- a/.github/workflows/docs_deploy.yml +++ b/.github/workflows/docs_deploy.yml @@ -1,23 +1,6 @@ -name: Docs - Deploy PX4 User Guide +name: Docs - Deploy PX4 User Guide to Github pages (Manual) on: - push: - branches: - - 'main' - - 'release/**' - paths: - - 'docs/en/**' - - 'docs/uk/**' - - 'docs/zh/**' - pull_request: - branches: - - '**' - paths: - - 'docs/en/**' - - 'docs/uk/**' - - 'docs/zh/**' - - # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages From 2eac99cd20cb7962e92896f9513ec767ef8c68f5 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Fri, 12 Sep 2025 10:04:31 -0700 Subject: [PATCH 05/71] ci: AWS instance review and improved build caching * Tone down the performance of some runners from 8cpu+ down to 4cpu+ * Improve and document caching on PX4 builds with an improved ccache key strategy * Review and document artifact upload logic for binaries uploaded to S3 and github releases * Future Improvement, introduce runners configuration file so we can control more precesily which instances are allocated. Signed-off-by: Ramon Roche --- .github/runs-on.yml | 24 ++++ .github/workflows/build_all_targets.yml | 119 +++++++++++++++----- .github/workflows/compile_ubuntu.yml | 2 +- .github/workflows/dev_container.yml | 6 +- .github/workflows/docs_deploy.yml | 4 +- .github/workflows/docs_deploy_aws.yml | 2 +- .github/workflows/flash_analysis.yml | 4 +- .github/workflows/itcm_check.yml | 2 +- .github/workflows/ros_integration_tests.yml | 2 +- .github/workflows/ros_translation_node.yml | 2 +- .github/workflows/sitl_tests.yml | 2 +- 11 files changed, 127 insertions(+), 42 deletions(-) create mode 100644 .github/runs-on.yml diff --git a/.github/runs-on.yml b/.github/runs-on.yml new file mode 100644 index 0000000000..f68d406c8a --- /dev/null +++ b/.github/runs-on.yml @@ -0,0 +1,24 @@ +runners: + x86-small-runner: + cpu: [1, 2] + ram: [1, 4] + disk: default + spot: price-capacity-optimized + image: ubuntu24-full-x64 + extras: s3-cache + x86-firmware-builder: + cpu: [4, 8] + ram: [8, 16] + disk: default + family: ["c7i", "m7i", "r7i"] + spot: price-capacity-optimized + image: ubuntu24-full-x64 + extras: s3-cache + arm64-firmware-builder: + cpu: [4, 8] + ram: [8, 16] + disk: default + family: ["c7g", "m7g", "r7g"] + spot: price-capacity-optimized + image: ubuntu24-full-arm64 + extras: s3-cache diff --git a/.github/workflows/build_all_targets.yml b/.github/workflows/build_all_targets.yml index ef3b4d1470..e2646be336 100644 --- a/.github/workflows/build_all_targets.yml +++ b/.github/workflows/build_all_targets.yml @@ -26,6 +26,10 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +permissions: + contents: write + actions: read + jobs: group_targets: name: Scan for Board Targets @@ -48,12 +52,15 @@ jobs: path: "./Tools/setup/requirements.txt" - id: set-matrix - run: echo "::set-output name=matrix::$(./Tools/ci/generate_board_targets_json.py --group)" + name: Generate Build Matrix + run: echo "matrix=$(./Tools/ci/generate_board_targets_json.py --group)" >> $GITHUB_OUTPUT - id: set-timestamp - run: echo "::set-output name=timestamp::$(date +"%Y%m%d%H%M%S")" + name: Save Current Timestamp + run: echo "timestamp=$(date +"%Y%m%d%H%M%S")" >> $GITHUB_OUTPUT - id: set-branch + name: Save Current Branch Name run: | echo "branchname=${{ github.event_name == 'pull_request' && @@ -70,7 +77,7 @@ jobs: echo "$(./Tools/ci/generate_board_targets_json.py --group --verbose)" setup: - name: Build Group [${{ matrix.group }}][${{ matrix.arch == 'nuttx' && 'x86' || 'arm64' }}] + name: Build [${{ matrix.runner }}][${{ matrix.group }}] # runs-on: ubuntu-latest runs-on: [runs-on,"runner=8cpu-linux-${{ matrix.runner }}","image=ubuntu24-full-${{ matrix.runner }}","run-id=${{ github.run_id }}",spot=false] needs: group_targets @@ -80,6 +87,7 @@ jobs: container: image: ${{ matrix.container }} steps: + - uses: runs-on/action@v2 - uses: actions/checkout@v4 with: fetch-depth: 0 @@ -87,14 +95,24 @@ jobs: - name: Git ownership workaround run: git config --system --add safe.directory '*' - - name: Setup ccache - uses: actions/cache@v4 + # ccache key breakdown: + # ccache---- + # ccache---- + # ccache---- + - name: Restore ccache from key + id: cc_restore + uses: actions/cache/restore@v4 with: path: ~/.ccache - key: ${{ matrix.group }}-ccache-${{ needs.group_targets.outputs.timestamp }} - restore-keys: ${{ matrix.group }}-ccache-${{ needs.group_targets.outputs.timestamp }} + key: ${{ format('ccache-{0}-{1}-{2}', runner.os, matrix.runner, matrix.group) }} + restore-keys: | + ccache-${{ runner.os }}-${{ matrix.runner }}-${{ matrix.group }}- + ccache-${{ runner.os }}-${{ matrix.runner }}- + ccache-${{ runner.os }}-${{ matrix.runner }}- + ccache-${{ runner.os }}- + ccache- - - name: Configure ccache + - name: Set ccache defaults and show stats run: | mkdir -p ~/.ccache echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf @@ -102,10 +120,11 @@ jobs: echo "compression_level = 6" >> ~/.ccache/ccache.conf echo "max_size = 120M" >> ~/.ccache/ccache.conf echo "hash_dir = false" >> ~/.ccache/ccache.conf + echo "compiler_check = content" >> ~/.ccache/ccache.conf ccache -s ccache -z - - name: Building [${{ matrix.group }}] + - name: Building [${{ matrix.targets }}] run: | ./Tools/ci/build_all_runner.sh ${{matrix.targets}} ${{matrix.arch}} @@ -119,15 +138,27 @@ jobs: name: px4_${{matrix.group}}_build_artifacts path: artifacts/ + - name: Post Build Cache Stats + if: always() + run: | + ccache -s + ccache -z + - name: Cache Save - run: ccache -s + if: always() + uses: actions/cache/save@v4 + with: + path: ~/.ccache + key: ${{ steps.cc_restore.outputs.cache-primary-key }} artifacts: - name: Upload Artifacts to S3 + name: Upload Artifacts # runs-on: ubuntu-latest runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false] needs: [setup, group_targets] - if: contains(fromJSON('["main", "stable", "beta"]'), needs.group_targets.outputs.branchname) + if: startsWith(github.ref, 'refs/tags/v') || contains(fromJSON('["main","stable","beta"]'), needs.group_targets.outputs.branchname) + outputs: + uploadlocation: ${{ steps.upload-location.outputs.uploadlocation }} steps: - name: Download Artifacts uses: actions/download-artifact@v4 @@ -135,11 +166,36 @@ jobs: path: artifacts/ merge-multiple: true - - name: Branch Name + - name: Upload Location + id: upload-location run: | - echo "${{ needs.group_targets.outputs.branchname }}" + # Determine upload location based on branch or tag with the following considerations: + # Destination: AWS S3 bucket px4-travis in folder Firmware/ + # - If branch is main -> upload to master/ + # - Older versions of QGC are hardocded to look for master/ + # - If branch is stable or beta -> upload to stable/ or beta/ + # - If a tag vX.Y.Z -> upload to vX.Y.Z/ + # - Also update stable/ to point to the same version + #. - Older versions of QGC are hardocded to look for stable/ + # - If a pull request -> do not upload + set -euo pipefail - - name: Uploading Artifacts to S3 [${{ needs.group_targets.outputs.branchname == 'main' && 'master' || needs.group_targets.outputs.branchname }}] + ref="${GITHUB_REF}" + branch=${{ needs.group_targets.outputs.branchname }} + location="$branch" + + if [[ "$branch" == "main" ]]; then + location="master" + fi + + if [[ "$ref" == refs/tags/v[0-9]* ]]; then + tag="${ref#refs/tags/}" + location="$tag" + fi + + echo "uploadlocation=$location" >> $GITHUB_OUTPUT + + - name: Uploading Artifacts to S3 [${{ steps.upload-location.outputs.uploadlocation }}] uses: jakejarvis/s3-sync-action@master with: args: --acl public-read @@ -149,25 +205,30 @@ jobs: AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: 'us-west-1' SOURCE_DIR: artifacts/ - DEST_DIR: Firmware/${{ needs.group_targets.outputs.branchname == 'main' && 'master' || needs.group_targets.outputs.branchname }}/ + DEST_DIR: Firmware/${{ steps.upload-location.outputs.uploadlocation }}/ - release: - name: Create Release and Upload Artifacts - permissions: - contents: write - # runs-on: ubuntu-latest - runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false] - needs: [setup, group_targets] - if: startsWith(github.ref, 'refs/tags/') - steps: - - name: Download Artifacts - uses: actions/download-artifact@v4 + # if we are uploading artifacts to a versioned folder + # we should also update the stable folder in the s3 bucket + - name: Uploading Artifacts to S3 [stable] + uses: jakejarvis/s3-sync-action@master + if: startsWith(github.ref, 'refs/tags/v') with: - path: artifacts/ - merge-multiple: true + args: --acl public-read + env: + AWS_S3_BUCKET: 'px4-travis' + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: 'us-west-1' + SOURCE_DIR: artifacts/ + DEST_DIR: Firmware/stable/ + # if build is a release triggered by a versioned tag then create a github release + # and upload the build artifacts. A draft release is created so that the release + # can be reviewed before publishing - name: Upload Binaries to Release uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/v') with: draft: true files: artifacts/*.px4 + name: ${{ steps.upload-location.outputs.uploadlocation }} diff --git a/.github/workflows/compile_ubuntu.yml b/.github/workflows/compile_ubuntu.yml index b213a5beaa..019081b9f6 100644 --- a/.github/workflows/compile_ubuntu.yml +++ b/.github/workflows/compile_ubuntu.yml @@ -29,7 +29,7 @@ jobs: fail-fast: false matrix: version: ['ubuntu:22.04', 'ubuntu:24.04'] - runs-on: [runs-on,runner=8cpu-linux-x64,"image=ubuntu24-full-x64","run-id=${{ github.run_id }}",spot=false] + runs-on: [runs-on,runner=4cpu-linux-x64,"image=ubuntu24-full-x64","run-id=${{ github.run_id }}",spot=false] container: image: ${{ matrix.version }} volumes: diff --git a/.github/workflows/dev_container.yml b/.github/workflows/dev_container.yml index a8dd32388e..ee61d80c3c 100644 --- a/.github/workflows/dev_container.yml +++ b/.github/workflows/dev_container.yml @@ -39,7 +39,7 @@ jobs: name: Set Tags and Variables permissions: contents: read - runs-on: [runs-on,"runner=1cpu-linux-x64","image=ubuntu24-full-x64","run-id=${{ github.run_id }}",spot=false,extras=s3-cache] + runs-on: [runs-on,"runner=1cpu-linux-x64","image=ubuntu24-full-x64","run-id=${{ github.run_id }}",extras=s3-cache,spot=false] outputs: px4_version: ${{ steps.px4_version.outputs.px4_version }} meta_tags: ${{ steps.meta.outputs.tags }} @@ -87,7 +87,7 @@ jobs: - platform: linux/amd64 arch: amd64 runner: x64 - runs-on: [runs-on,"runner=8cpu-linux-${{ matrix.runner }}","image=ubuntu24-full-${{ matrix.runner }}","run-id=${{ github.run_id }}",spot=false,extras=s3-cache] + runs-on: [runs-on,"runner=4cpu-linux-${{ matrix.runner }}","image=ubuntu24-full-${{ matrix.runner }}","run-id=${{ github.run_id }}",extras=s3-cache,spot=false] steps: - uses: runs-on/action@v1 - uses: actions/checkout@v4 @@ -138,7 +138,7 @@ jobs: permissions: contents: read packages: write - runs-on: [runs-on,"runner=8cpu-linux-x64","image=ubuntu24-full-x64","run-id=${{ github.run_id }}",spot=false,extras=s3-cache] + runs-on: [runs-on,"runner=4cpu-linux-x64","image=ubuntu24-full-x64","run-id=${{ github.run_id }}",extras=s3-cache,spot=false] needs: [build, setup] if: ${{ startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_to_registry) }} steps: diff --git a/.github/workflows/docs_deploy.yml b/.github/workflows/docs_deploy.yml index b8991e38c9..bdf729b2b3 100644 --- a/.github/workflows/docs_deploy.yml +++ b/.github/workflows/docs_deploy.yml @@ -20,7 +20,7 @@ env: jobs: build: - runs-on: [runs-on,runner=8cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false,extras=s3-cache] + runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",extras=s3-cache,spot=false] steps: - uses: runs-on/action@v1 - name: Checkout @@ -55,7 +55,7 @@ jobs: deploy: if: ${{ github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.pull_request.merged) || github.event_name == 'workflow_dispatch' }} needs: build - runs-on: [runs-on,runner=8cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false] + runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false] steps: - name: Download Artifact diff --git a/.github/workflows/docs_deploy_aws.yml b/.github/workflows/docs_deploy_aws.yml index 304100fd81..788a303d5e 100644 --- a/.github/workflows/docs_deploy_aws.yml +++ b/.github/workflows/docs_deploy_aws.yml @@ -30,7 +30,7 @@ concurrency: jobs: build: - runs-on: [runs-on,runner=8cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false,extras=s3-cache] + runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false,extras=s3-cache] outputs: branchname: ${{ steps.set-branch.outputs.branchname }} releaseversion: ${{ steps.set-version.outputs.releaseversion }} diff --git a/.github/workflows/flash_analysis.yml b/.github/workflows/flash_analysis.yml index e909e24822..143d54790c 100644 --- a/.github/workflows/flash_analysis.yml +++ b/.github/workflows/flash_analysis.yml @@ -24,7 +24,7 @@ env: jobs: analyze_flash: name: Analyzing ${{ matrix.target }} - runs-on: [runs-on,runner=8cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false] + runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false] container: image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556 strategy: @@ -97,7 +97,7 @@ jobs: # Track this issue https://github.com/PX4/PX4-Autopilot/issues/24408 post_pr_comment: name: Publish Results - runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false] + runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}"] needs: [analyze_flash] env: V5X-SUMMARY-MAP-ABS: ${{ fromJSON(fromJSON(needs.analyze_flash.outputs.px4_fmu-v5x-bloaty-summary-map).vm-absolute) }} diff --git a/.github/workflows/itcm_check.yml b/.github/workflows/itcm_check.yml index f6d5c4fd8c..5a1b0ecddc 100644 --- a/.github/workflows/itcm_check.yml +++ b/.github/workflows/itcm_check.yml @@ -22,7 +22,7 @@ concurrency: jobs: check_itcm: name: Checking ${{ matrix.target }} - runs-on: [runs-on,runner=8cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false] + runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false] container: image: px4io/px4-dev:v1.16.0-rc1-258-g0369abd556 strategy: diff --git a/.github/workflows/ros_integration_tests.yml b/.github/workflows/ros_integration_tests.yml index e15aa081e7..022b46fb10 100644 --- a/.github/workflows/ros_integration_tests.yml +++ b/.github/workflows/ros_integration_tests.yml @@ -23,7 +23,7 @@ concurrency: jobs: build: - runs-on: [runs-on,runner=16cpu-linux-x64,image=ubuntu22-full-x64,"run-id=${{ github.run_id }}",spot=false] + runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu22-full-x64,"run-id=${{ github.run_id }}",spot=false] container: image: px4io/px4-dev-ros2-galactic:2021-09-08 options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined diff --git a/.github/workflows/ros_translation_node.yml b/.github/workflows/ros_translation_node.yml index 9b161dae90..64bae13f83 100644 --- a/.github/workflows/ros_translation_node.yml +++ b/.github/workflows/ros_translation_node.yml @@ -21,7 +21,7 @@ concurrency: jobs: build_and_test: name: Build and test - runs-on: [runs-on,runner=8cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false] + runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false] strategy: fail-fast: false matrix: diff --git a/.github/workflows/sitl_tests.yml b/.github/workflows/sitl_tests.yml index 6dc6eccd2d..68e16bed71 100644 --- a/.github/workflows/sitl_tests.yml +++ b/.github/workflows/sitl_tests.yml @@ -24,7 +24,7 @@ concurrency: jobs: build: name: Testing PX4 ${{ matrix.config.model }} - runs-on: [runs-on,runner=16cpu-linux-x64,image=ubuntu22-full-x64,"run-id=${{ github.run_id }}",spot=false] + runs-on: [runs-on,runner=4cpu-linux-x64,image=ubuntu22-full-x64,"run-id=${{ github.run_id }}",spot=false] container: image: px4io/px4-dev-simulation-focal:2021-09-08 options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined From d6f7519df0c9b7528abe8c98916c519a09385a6d Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Wed, 8 Oct 2025 15:14:05 -0700 Subject: [PATCH 06/71] ci: builds all cache pip Signed-off-by: Ramon Roche --- .github/workflows/build_all_targets.yml | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build_all_targets.yml b/.github/workflows/build_all_targets.yml index e2646be336..56e6a6ee1a 100644 --- a/.github/workflows/build_all_targets.yml +++ b/.github/workflows/build_all_targets.yml @@ -34,7 +34,7 @@ jobs: group_targets: name: Scan for Board Targets # runs-on: ubuntu-latest - runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu22-full-x64,"run-id=${{ github.run_id }}",spot=false] + runs-on: [runs-on,runner=1cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false] outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} timestamp: ${{ steps.set-timestamp.outputs.timestamp }} @@ -42,6 +42,14 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Cache Python pip + uses: actions/cache@v4 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**./Tools/setup/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + - name: Update python packaging to avoid canonicalize_version() error run: | pip3 install -U packaging @@ -99,7 +107,7 @@ jobs: # ccache---- # ccache---- # ccache---- - - name: Restore ccache from key + - name: Cache Restore from Key id: cc_restore uses: actions/cache/restore@v4 with: @@ -112,7 +120,7 @@ jobs: ccache-${{ runner.os }}- ccache- - - name: Set ccache defaults and show stats + - name: Cache Config and Stats run: | mkdir -p ~/.ccache echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf @@ -124,7 +132,7 @@ jobs: ccache -s ccache -z - - name: Building [${{ matrix.targets }}] + - name: Building Artifacts for [${{ matrix.targets }}] run: | ./Tools/ci/build_all_runner.sh ${{matrix.targets}} ${{matrix.arch}} @@ -138,7 +146,7 @@ jobs: name: px4_${{matrix.group}}_build_artifacts path: artifacts/ - - name: Post Build Cache Stats + - name: Cache Post Build Stats if: always() run: | ccache -s @@ -166,7 +174,7 @@ jobs: path: artifacts/ merge-multiple: true - - name: Upload Location + - name: Choose Upload Location id: upload-location run: | # Determine upload location based on branch or tag with the following considerations: @@ -225,7 +233,7 @@ jobs: # if build is a release triggered by a versioned tag then create a github release # and upload the build artifacts. A draft release is created so that the release # can be reviewed before publishing - - name: Upload Binaries to Release + - name: Upload Artifacts to GitHub Release uses: softprops/action-gh-release@v2 if: startsWith(github.ref, 'refs/tags/v') with: From 2f48cb4ef2373ee4a36b4f1bdb53be9404c7e5a2 Mon Sep 17 00:00:00 2001 From: Peter van der Perk <57130844+PetervdPerk-NXP@users.noreply.github.com> Date: Fri, 10 Oct 2025 09:28:43 +0200 Subject: [PATCH 07/71] MR-CANHUBK344 NXP B3RB Rover support (#23897) * s32k3xx: EMIOS allow independent frequencies for each channel * mr-canhubk3: update config * mr-canhubk344: Fix adap board detect * mr-canhubk344: Use LPSPI1 (Port P1A) for SD card * airframes: Add B3RB Ackermann rover config See https://nxp.gitbook.io/mr-b3rb for more information about the NXP B3RB platform. PX4 Support basic control for now --- .../init.d/airframes/51002_nxp_b3rb | 31 ++++++++++ .../init.d/airframes/CMakeLists.txt | 1 + boards/nxp/mr-canhubk3/fmu.px4board | 10 ++- .../mr-canhubk3/nuttx-config/nsh/defconfig | 15 +++++ boards/nxp/mr-canhubk3/src/board_config.h | 2 +- boards/nxp/mr-canhubk3/src/init.c | 10 +-- boards/nxp/mr-canhubk3/src/timer_config.cpp | 25 +++++--- .../s32k3xx/include/px4_arch/hw_description.h | 62 +++++++++++++++++-- .../nxp/s32k3xx/include/px4_arch/io_timer.h | 3 +- .../px4_arch/io_timer_hw_description.h | 41 ++++++++---- .../src/px4/nxp/s32k3xx/io_pins/io_timer.c | 5 ++ .../src/px4/nxp/s32k3xx/io_pins/pwm_servo.c | 4 +- 12 files changed, 170 insertions(+), 39 deletions(-) create mode 100644 ROMFS/px4fmu_common/init.d/airframes/51002_nxp_b3rb diff --git a/ROMFS/px4fmu_common/init.d/airframes/51002_nxp_b3rb b/ROMFS/px4fmu_common/init.d/airframes/51002_nxp_b3rb new file mode 100644 index 0000000000..09cf32a72e --- /dev/null +++ b/ROMFS/px4fmu_common/init.d/airframes/51002_nxp_b3rb @@ -0,0 +1,31 @@ +#!/bin/sh +# +# @name NXP B3RB Rover Ackermann +# +# @type Rover +# @class Rover +# +# @board px4_fmu-v2 exclude +# @board bitcraze_crazyflie exclude +# + +. ${R}etc/init.d/rc.rover_ackermann_defaults + +param set-default BAT1_N_CELLS 3 + +# Set geometry & output configration +param set-default PWM_MAIN_FUNC1 201 +param set-default PWM_MAIN_FUNC2 101 +param set-default PWM_MAIN_FUNC3 101 +param set-default PWM_MAIN_DIS1 1500 +param set-default PWM_MAIN_DIS2 0 +param set-default PWM_MAIN_DIS3 1500 +param set-default PWM_MAIN_MIN1 1000 +param set-default PWM_MAIN_MIN2 2500 +param set-default PWM_MAIN_MIN3 0 +param set-default PWM_MAIN_MAX1 2000 +param set-default PWM_MAIN_MAX2 2500 +param set-default PWM_MAIN_MAX3 50 +param set-default PWM_MAIN_TIM0 400 +param set-default PWM_MAIN_TIM1 400 +param set-default PWM_MAIN_TIM2 20000 diff --git a/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt b/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt index 6728f842ce..8f13aa55b1 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt +++ b/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt @@ -153,6 +153,7 @@ if(CONFIG_MODULES_ROVER_ACKERMANN) # [51000, 51999] Ackermann rovers 51000_generic_rover_ackermann 51001_axial_scx10_2_trail_honcho + 51002_nxp_b3rb ) endif() diff --git a/boards/nxp/mr-canhubk3/fmu.px4board b/boards/nxp/mr-canhubk3/fmu.px4board index 366fac4e09..7f7e146fd2 100644 --- a/boards/nxp/mr-canhubk3/fmu.px4board +++ b/boards/nxp/mr-canhubk3/fmu.px4board @@ -1,6 +1,8 @@ # CONFIG_BOARD_ROMFSROOT is not set CONFIG_DRIVERS_BAROMETER_BMP388=n CONFIG_DRIVERS_MAGNETOMETER_BOSCH_BMM150=n +CONFIG_ARCH_CHIP_S32K3XX=y +CONFIG_BOARD_PWM_FREQ=1000000 CONFIG_BOARD_SERIAL_GPS1="/dev/ttyS1" CONFIG_BOARD_SERIAL_GPS2="/dev/ttyS4" CONFIG_BOARD_SERIAL_RC="/dev/ttyS5" @@ -20,6 +22,7 @@ CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_SF45_SERIAL=y CONFIG_DRIVERS_GPS=y CONFIG_DRIVERS_IRLOCK=y CONFIG_DRIVERS_RC_INPUT=y +CONFIG_DRIVERS_ROBOCLAW=y CONFIG_DRIVERS_SAFETY_BUTTON=y CONFIG_DRIVERS_UAVCAN=y CONFIG_EXAMPLES_FAKE_GPS=y @@ -33,9 +36,10 @@ CONFIG_MODULES_EVENTS=y CONFIG_MODULES_FLIGHT_MODE_MANAGER=y CONFIG_MODULES_FW_ATT_CONTROL=y CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=y -CONFIG_MODULES_FW_MODE_MANAGER=y CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=y +CONFIG_MODULES_FW_MODE_MANAGER=y CONFIG_MODULES_FW_RATE_CONTROL=y +CONFIG_MODULES_GIMBAL=y CONFIG_MODULES_GYRO_CALIBRATION=y CONFIG_MODULES_GYRO_FFT=y CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=y @@ -50,8 +54,10 @@ CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y CONFIG_MODULES_MC_POS_CONTROL=y CONFIG_MODULES_MC_RATE_CONTROL=y -CONFIG_MODULES_NAVIGATOR=y CONFIG_MODULES_RC_UPDATE=y +CONFIG_MODULES_ROVER_ACKERMANN=y +CONFIG_MODULES_ROVER_DIFFERENTIAL=y +CONFIG_MODULES_ROVER_MECANUM=y CONFIG_MODULES_TEMPERATURE_COMPENSATION=y CONFIG_MODULES_UXRCE_DDS_CLIENT=y CONFIG_MODULES_VTOL_ATT_CONTROL=y diff --git a/boards/nxp/mr-canhubk3/nuttx-config/nsh/defconfig b/boards/nxp/mr-canhubk3/nuttx-config/nsh/defconfig index 45821d6c6f..c397305d7e 100644 --- a/boards/nxp/mr-canhubk3/nuttx-config/nsh/defconfig +++ b/boards/nxp/mr-canhubk3/nuttx-config/nsh/defconfig @@ -94,6 +94,7 @@ CONFIG_FAT_LFN_ALIAS_HASH=y CONFIG_FDCLONE_STDIO=y CONFIG_FS26_SPI_FREQUENCY=5000000 CONFIG_FSUTILS_IPCFG=y +CONFIG_FS_BINFS=y CONFIG_FS_CROMFS=y CONFIG_FS_FAT=y CONFIG_FS_FATTIME=y @@ -126,16 +127,24 @@ CONFIG_LPUART0_IFLOWCONTROL=y CONFIG_LPUART0_OFLOWCONTROL=y CONFIG_LPUART0_RXBUFSIZE=640 CONFIG_LPUART0_RXDMA=y +CONFIG_LPUART0_TXBUFSIZE=1100 CONFIG_LPUART0_TXDMA=y CONFIG_LPUART13_RXDMA=y CONFIG_LPUART13_TXDMA=y CONFIG_LPUART14_RXDMA=y CONFIG_LPUART14_TXDMA=y +CONFIG_LPUART1_RXBUFSIZE=600 CONFIG_LPUART1_RXDMA=y +CONFIG_LPUART1_TXBUFSIZE=1100 CONFIG_LPUART1_TXDMA=y CONFIG_LPUART2_RXDMA=y CONFIG_LPUART2_SERIAL_CONSOLE=y CONFIG_LPUART2_TXDMA=y +CONFIG_LPUART4_RXBUFSIZE=600 +CONFIG_LPUART4_TXBUFSIZE=600 +CONFIG_LPUART7_RXDMA=y +CONFIG_LPUART7_TXBUFSIZE=1500 +CONFIG_LPUART7_TXDMA=y CONFIG_MEMSET_64BIT=y CONFIG_MEMSET_OPTSPEED=y CONFIG_MMCSD=y @@ -197,6 +206,7 @@ CONFIG_NSH_LINELEN=128 CONFIG_NSH_MAXARGUMENTS=15 CONFIG_NSH_MMCSDSPIPORTNO=1 CONFIG_NSH_NESTDEPTH=8 +CONFIG_NSH_READLINE=y CONFIG_NSH_QUOTE=y CONFIG_NSH_ROMFSETC=y CONFIG_NSH_ROMFSSECTSIZE=128 @@ -213,6 +223,8 @@ CONFIG_PTHREAD_STACK_MIN=512 CONFIG_RAM_SIZE=272000 CONFIG_RAM_START=0x20400000 CONFIG_RAW_BINARY=y +CONFIG_READLINE_CMD_HISTORY=y +CONFIG_READLINE_TABCOMPLETION=y CONFIG_S32K3XX_DTCM_HEAP=y CONFIG_S32K3XX_EDMA=y CONFIG_S32K3XX_EDMA_EDBG=y @@ -280,7 +292,10 @@ CONFIG_STACK_COLORATION=y CONFIG_START_DAY=30 CONFIG_START_MONTH=11 CONFIG_STDIO_BUFFER_SIZE=256 +CONFIG_SYSTEM_CLE=y CONFIG_SYSTEM_DHCPC_RENEW=y CONFIG_SYSTEM_NSH=y CONFIG_SYSTEM_PING=y +CONFIG_SYSTEM_SYSTEM=y CONFIG_TASK_NAME_SIZE=24 +CONFIG_USEC_PER_TICK=1000 diff --git a/boards/nxp/mr-canhubk3/src/board_config.h b/boards/nxp/mr-canhubk3/src/board_config.h index 7ea2a91e8b..47f1ca3c36 100644 --- a/boards/nxp/mr-canhubk3/src/board_config.h +++ b/boards/nxp/mr-canhubk3/src/board_config.h @@ -112,7 +112,7 @@ __BEGIN_DECLS /* To detect MR-CANHUBK3-ADAP board */ #define BOARD_HAS_HW_VERSIONING 1 -#define CANHUBK3_ADAP_DETECT (PIN_PTA12 | GPIO_INPUT | GPIO_PULLUP) +#define CANHUBK3_ADAP_DETECT (PIN_PTA11 | GPIO_INPUT | GPIO_PULLUP) /* diff --git a/boards/nxp/mr-canhubk3/src/init.c b/boards/nxp/mr-canhubk3/src/init.c index 97a41f8430..15148c7845 100644 --- a/boards/nxp/mr-canhubk3/src/init.c +++ b/boards/nxp/mr-canhubk3/src/init.c @@ -105,18 +105,18 @@ __EXPORT int board_app_initialize(uintptr_t arg) /* Configure LPSPI1 peripheral chip select */ - s32k3xx_pinconfig(PIN_LPSPI2_PCS); + s32k3xx_pinconfig(PIN_LPSPI1_PCS); /* Initialize the SPI driver for LPSPI1 */ - struct spi_dev_s *g_lpspi2 = s32k3xx_lpspibus_initialize(2); + struct spi_dev_s *g_lpspi1 = s32k3xx_lpspibus_initialize(1); - if (g_lpspi2 == NULL) { - spierr("ERROR: FAILED to initialize LPSPI2\n"); + if (g_lpspi1 == NULL) { + spierr("ERROR: FAILED to initialize LPSPI1\n"); return -ENODEV; } - rv = mmcsd_spislotinitialize(0, 0, g_lpspi2); + rv = mmcsd_spislotinitialize(0, 0, g_lpspi1); if (rv < 0) { mcerr("ERROR: Failed to bind SPI port %d to SD slot %d\n", diff --git a/boards/nxp/mr-canhubk3/src/timer_config.cpp b/boards/nxp/mr-canhubk3/src/timer_config.cpp index 607917f614..24b29ca071 100644 --- a/boards/nxp/mr-canhubk3/src/timer_config.cpp +++ b/boards/nxp/mr-canhubk3/src/timer_config.cpp @@ -51,18 +51,25 @@ constexpr io_timers_t io_timers[MAX_IO_TIMERS] = { - initIOTimer(Timer::EMIOS0) + initIOTimer(Timer::EMIOS0_Channel0, Timer::Channel0), + initIOTimer(Timer::EMIOS0_Channel1, Timer::Channel1), + initIOTimer(Timer::EMIOS0_Channel2, Timer::Channel2), + initIOTimer(Timer::EMIOS0_Channel3, Timer::Channel3), + initIOTimer(Timer::EMIOS0_Channel4, Timer::Channel4), + initIOTimer(Timer::EMIOS0_Channel5, Timer::Channel5), + initIOTimer(Timer::EMIOS0_Channel6, Timer::Channel6), + initIOTimer(Timer::EMIOS0_Channel7, Timer::Channel7), }; constexpr timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = { - initIOTimerChannel(io_timers, {Timer::EMIOS0, Timer::Channel0}, PIN_EMIOS0_CH0_1), - initIOTimerChannel(io_timers, {Timer::EMIOS0, Timer::Channel1}, PIN_EMIOS0_CH1_1), - initIOTimerChannel(io_timers, {Timer::EMIOS0, Timer::Channel2}, PIN_EMIOS0_CH2_1), - initIOTimerChannel(io_timers, {Timer::EMIOS0, Timer::Channel3}, PIN_EMIOS0_CH3_2), - initIOTimerChannel(io_timers, {Timer::EMIOS0, Timer::Channel4}, PIN_EMIOS0_CH4_2), - initIOTimerChannel(io_timers, {Timer::EMIOS0, Timer::Channel5}, PIN_EMIOS0_CH5_2), - initIOTimerChannel(io_timers, {Timer::EMIOS0, Timer::Channel6}, PIN_EMIOS0_CH6_1), - initIOTimerChannel(io_timers, {Timer::EMIOS0, Timer::Channel7}, PIN_EMIOS0_CH7_2), + initIOTimerChannel(io_timers, {Timer::EMIOS0_Channel0, Timer::Channel0}, PIN_EMIOS0_CH0_1), + initIOTimerChannel(io_timers, {Timer::EMIOS0_Channel1, Timer::Channel1}, PIN_EMIOS0_CH1_1), + initIOTimerChannel(io_timers, {Timer::EMIOS0_Channel2, Timer::Channel2}, PIN_EMIOS0_CH2_1), + initIOTimerChannel(io_timers, {Timer::EMIOS0_Channel3, Timer::Channel3}, PIN_EMIOS0_CH3_2), + initIOTimerChannel(io_timers, {Timer::EMIOS0_Channel4, Timer::Channel4}, PIN_EMIOS0_CH4_2), + initIOTimerChannel(io_timers, {Timer::EMIOS0_Channel5, Timer::Channel5}, PIN_EMIOS0_CH5_2), + initIOTimerChannel(io_timers, {Timer::EMIOS0_Channel6, Timer::Channel6}, PIN_EMIOS0_CH6_1), + initIOTimerChannel(io_timers, {Timer::EMIOS0_Channel7, Timer::Channel7}, PIN_EMIOS0_CH7_2), }; constexpr io_timers_channel_mapping_t io_timers_channel_mapping = diff --git a/platforms/nuttx/src/px4/nxp/s32k3xx/include/px4_arch/hw_description.h b/platforms/nuttx/src/px4/nxp/s32k3xx/include/px4_arch/hw_description.h index e6d854bef3..09559f950b 100644 --- a/platforms/nuttx/src/px4/nxp/s32k3xx/include/px4_arch/hw_description.h +++ b/platforms/nuttx/src/px4/nxp/s32k3xx/include/px4_arch/hw_description.h @@ -46,10 +46,34 @@ namespace Timer { + + +// Just to keep def extract_timer(line): happy enum Timer { - EMIOS0 = 0, - EMIOS1, - EMIOS2, + EMIOS0_Channel0, + EMIOS0_Channel1, + EMIOS0_Channel2, + EMIOS0_Channel3, + EMIOS0_Channel4, + EMIOS0_Channel5, + EMIOS0_Channel6, + EMIOS0_Channel7, + EMIOS1_Channel0, + EMIOS1_Channel1, + EMIOS1_Channel2, + EMIOS1_Channel3, + EMIOS1_Channel4, + EMIOS1_Channel5, + EMIOS1_Channel6, + EMIOS1_Channel7, + EMIOS2_Channel0, + EMIOS2_Channel1, + EMIOS2_Channel2, + EMIOS2_Channel3, + EMIOS2_Channel4, + EMIOS2_Channel5, + EMIOS2_Channel6, + EMIOS2_Channel7, }; enum Channel { Channel0 = 0, @@ -70,11 +94,37 @@ struct TimerChannel { static inline constexpr uint32_t timerBaseRegister(Timer::Timer timer) { switch (timer) { - case Timer::EMIOS0: return S32K3XX_EMIOS0_BASE; + case Timer::EMIOS0_Channel0: + case Timer::EMIOS0_Channel1: + case Timer::EMIOS0_Channel2: + case Timer::EMIOS0_Channel3: + case Timer::EMIOS0_Channel4: + case Timer::EMIOS0_Channel5: + case Timer::EMIOS0_Channel6: + case Timer::EMIOS0_Channel7: + return S32K3XX_EMIOS0_BASE; - case Timer::EMIOS1: return S32K3XX_EMIOS1_BASE; - case Timer::EMIOS2: return S32K3XX_EMIOS2_BASE; + + case Timer::EMIOS1_Channel0: + case Timer::EMIOS1_Channel1: + case Timer::EMIOS1_Channel2: + case Timer::EMIOS1_Channel3: + case Timer::EMIOS1_Channel4: + case Timer::EMIOS1_Channel5: + case Timer::EMIOS1_Channel6: + case Timer::EMIOS1_Channel7: + return S32K3XX_EMIOS1_BASE; + + case Timer::EMIOS2_Channel0: + case Timer::EMIOS2_Channel1: + case Timer::EMIOS2_Channel2: + case Timer::EMIOS2_Channel3: + case Timer::EMIOS2_Channel4: + case Timer::EMIOS2_Channel5: + case Timer::EMIOS2_Channel6: + case Timer::EMIOS2_Channel7: + return S32K3XX_EMIOS2_BASE; } return 0; diff --git a/platforms/nuttx/src/px4/nxp/s32k3xx/include/px4_arch/io_timer.h b/platforms/nuttx/src/px4/nxp/s32k3xx/include/px4_arch/io_timer.h index d6e0ad6eb5..e569349dd5 100644 --- a/platforms/nuttx/src/px4/nxp/s32k3xx/include/px4_arch/io_timer.h +++ b/platforms/nuttx/src/px4/nxp/s32k3xx/include/px4_arch/io_timer.h @@ -45,7 +45,7 @@ #pragma once __BEGIN_DECLS /* configuration limits */ -#define MAX_IO_TIMERS 1 +#define MAX_IO_TIMERS 8 #define MAX_TIMER_IO_CHANNELS 8 #define MAX_LED_TIMERS 2 @@ -88,6 +88,7 @@ typedef struct io_timers_t { uint32_t vectorno_12_15; /* IRQ number */ uint32_t vectorno_16_19; /* IRQ number */ uint32_t vectorno_20_23; /* IRQ number */ + uint32_t channel; } io_timers_t; typedef struct io_timers_channel_mapping_element_t { diff --git a/platforms/nuttx/src/px4/nxp/s32k3xx/include/px4_arch/io_timer_hw_description.h b/platforms/nuttx/src/px4/nxp/s32k3xx/include/px4_arch/io_timer_hw_description.h index b689593a53..724d944792 100644 --- a/platforms/nuttx/src/px4/nxp/s32k3xx/include/px4_arch/io_timer_hw_description.h +++ b/platforms/nuttx/src/px4/nxp/s32k3xx/include/px4_arch/io_timer_hw_description.h @@ -55,15 +55,7 @@ static inline constexpr timer_io_channels_t initIOTimerChannel(const io_timers_t ret.timer_channel = (int)timer.channel + 1; // find timer index - ret.timer_index = 0xff; - const uint32_t timer_base = timerBaseRegister(timer.timer); - - for (int i = 0; i < MAX_IO_TIMERS; ++i) { - if (io_timers_conf[i].base == timer_base) { - ret.timer_index = i; - break; - } - } + ret.timer_index = timer.channel; constexpr_assert(ret.timer_index != 0xff, "Timer not found"); @@ -80,13 +72,20 @@ static inline constexpr timer_io_channels_t initIOTimerChannel(const io_timers_t * Ch20 - Ch23 = vectorno - 5 */ -static inline constexpr io_timers_t initIOTimer(Timer::Timer timer) +static inline constexpr io_timers_t initIOTimer(Timer::Timer timer, Timer::Channel channel) { bool nuttx_config_timer_enabled = false; io_timers_t ret{}; switch (timer) { - case Timer::EMIOS0: + case Timer::EMIOS0_Channel0: + case Timer::EMIOS0_Channel1: + case Timer::EMIOS0_Channel2: + case Timer::EMIOS0_Channel3: + case Timer::EMIOS0_Channel4: + case Timer::EMIOS0_Channel5: + case Timer::EMIOS0_Channel6: + case Timer::EMIOS0_Channel7: ret.base = S32K3XX_EMIOS0_BASE; ret.clock_register = 0; ret.clock_bit = 0; @@ -96,12 +95,20 @@ static inline constexpr io_timers_t initIOTimer(Timer::Timer timer) ret.vectorno_12_15 = S32K3XX_IRQ_EMIOS0_12_15; ret.vectorno_16_19 = S32K3XX_IRQ_EMIOS0_16_19; ret.vectorno_20_23 = S32K3XX_IRQ_EMIOS0_20_23; + ret.channel = channel; #ifdef CONFIG_S32K3XX_EMIOS0 nuttx_config_timer_enabled = true; #endif break; - case Timer::EMIOS1: + case Timer::EMIOS1_Channel0: + case Timer::EMIOS1_Channel1: + case Timer::EMIOS1_Channel2: + case Timer::EMIOS1_Channel3: + case Timer::EMIOS1_Channel4: + case Timer::EMIOS1_Channel5: + case Timer::EMIOS1_Channel6: + case Timer::EMIOS1_Channel7: ret.base = S32K3XX_EMIOS1_BASE; ret.clock_register = 0; ret.clock_bit = 0; @@ -116,7 +123,15 @@ static inline constexpr io_timers_t initIOTimer(Timer::Timer timer) #endif break; - case Timer::EMIOS2: + + case Timer::EMIOS2_Channel0: + case Timer::EMIOS2_Channel1: + case Timer::EMIOS2_Channel2: + case Timer::EMIOS2_Channel3: + case Timer::EMIOS2_Channel4: + case Timer::EMIOS2_Channel5: + case Timer::EMIOS2_Channel6: + case Timer::EMIOS2_Channel7: ret.base = S32K3XX_EMIOS2_BASE; ret.clock_register = 0; ret.clock_bit = 0; diff --git a/platforms/nuttx/src/px4/nxp/s32k3xx/io_pins/io_timer.c b/platforms/nuttx/src/px4/nxp/s32k3xx/io_pins/io_timer.c index 2a3a0afce5..1a56a5338a 100644 --- a/platforms/nuttx/src/px4/nxp/s32k3xx/io_pins/io_timer.c +++ b/platforms/nuttx/src/px4/nxp/s32k3xx/io_pins/io_timer.c @@ -868,6 +868,11 @@ int io_timer_set_ccr(unsigned channel, uint16_t value) } else { //FIXME why multiple by 2 + + if ((rC(channels_timer(channel), channel) & EMIOS_C_UCPRE_MASK) == 0) { + value = value * 4; + } + /* configure the channel */ irqstate_t flags = px4_enter_critical_section(); rA(channels_timer(channel), timer_io_channels[channel].timer_channel - 1) = EMIOS_A(value * 2); diff --git a/platforms/nuttx/src/px4/nxp/s32k3xx/io_pins/pwm_servo.c b/platforms/nuttx/src/px4/nxp/s32k3xx/io_pins/pwm_servo.c index 6f613b2149..6178c86c64 100644 --- a/platforms/nuttx/src/px4/nxp/s32k3xx/io_pins/pwm_servo.c +++ b/platforms/nuttx/src/px4/nxp/s32k3xx/io_pins/pwm_servo.c @@ -128,13 +128,13 @@ int up_pwm_servo_set_rate_group_update(unsigned channel, unsigned rate) if (rate != 0) { - /* limit update rate to 1..10000Hz; somewhat arbitrary but safe */ + /* limit update rate to 1..20000Hz; somewhat arbitrary but safe */ if (rate < 1) { return -ERANGE; } - if (rate > 10000) { + if (rate > 20000) { return -ERANGE; } } From b95784e8042176b15a082ad8b5e4ddf841d7c77e Mon Sep 17 00:00:00 2001 From: Jaeyoung Lim Date: Fri, 10 Oct 2025 10:00:43 -0700 Subject: [PATCH 08/71] Consume speedweight from FW longitudinal config (#25709) * Consume speedweight from longitudinal config * Constrain speed weight --- .../FwLateralLongitudinalControl.cpp | 6 ++++++ .../FwLateralLongitudinalControl.hpp | 1 + 2 files changed, 7 insertions(+) diff --git a/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.cpp b/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.cpp index 73df2a8683..9c5647f1a5 100644 --- a/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.cpp +++ b/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.cpp @@ -827,6 +827,12 @@ void FwLateralLongitudinalControl::updateLongitudinalControlConfiguration(const } else { _long_configuration.sink_rate_target = _param_sinkrate_target.get(); } + + if (PX4_ISFINITE(configuration_in.speed_weight)) { + _long_configuration.speed_weight = math::constrain(configuration_in.speed_weight, 0.f, 2.f); + } else { + _long_configuration.speed_weight = _param_t_spdweight.get(); + } } float FwLateralLongitudinalControl::getLoadFactor() const diff --git a/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.hpp b/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.hpp index 590054ae89..87b94b1bf3 100644 --- a/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.hpp +++ b/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.hpp @@ -157,6 +157,7 @@ private: (ParamFloat) _param_fw_t_vert_acc, (ParamFloat) _param_ste_rate_time_const, (ParamFloat) _param_seb_rate_ff, + (ParamFloat) _param_t_spdweight, (ParamFloat) _param_speed_standard_dev, (ParamFloat) _param_speed_rate_standard_dev, (ParamFloat) _param_process_noise_standard_dev, From 12f6005c5cea42a8c8135d17cfa5db8eb2fc0327 Mon Sep 17 00:00:00 2001 From: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> Date: Fri, 10 Oct 2025 09:29:27 -0800 Subject: [PATCH 09/71] romfs: allow target level airframe selection (#25677) --- ROMFS/CMakeLists.txt | 22 ++++++++++++++++++++++ boards/ark/pi6x/init/rc.board_airframes | 2 ++ 2 files changed, 24 insertions(+) create mode 100644 boards/ark/pi6x/init/rc.board_airframes diff --git a/ROMFS/CMakeLists.txt b/ROMFS/CMakeLists.txt index e1b08d078b..9b282339fd 100644 --- a/ROMFS/CMakeLists.txt +++ b/ROMFS/CMakeLists.txt @@ -85,10 +85,32 @@ endif() if(PX4_ETHERNET) set(added_arguments ${added_arguments} --ethernet) endif() +# Check if board has an rc.board_airframes file to filter airframes +set(board_airframes_file "${PX4_BOARD_DIR}/init/rc.board_airframes") +set(airframes_whitelist "") +if(EXISTS "${board_airframes_file}") + message(STATUS "ROMFS: Using board-specific airframes list: ${board_airframes_file}") + file(STRINGS "${board_airframes_file}" airframes_whitelist) + # Remove comments and empty lines + list(FILTER airframes_whitelist EXCLUDE REGEX "^[ \t]*#") + list(FILTER airframes_whitelist EXCLUDE REGEX "^[ \t]*$") +endif() + # create list of relative romfs file names set(romfs_copy_files_relative) foreach(romfs_file IN LISTS romfs_copy_files) string(REPLACE "${romfs_src_dir}/" "" romfs_file_rel ${romfs_file}) + + # If we have an airframes whitelist, filter airframe files + if(airframes_whitelist AND romfs_file_rel MATCHES "^init.d/airframes/") + # Extract just the filename + get_filename_component(airframe_name "${romfs_file_rel}" NAME) + # Check if it's in the whitelist + if(NOT "${airframe_name}" IN_LIST airframes_whitelist) + continue() + endif() + endif() + list(APPEND romfs_copy_files_relative ${romfs_file_rel}) endforeach() # copy the ROMFS files by creating a tar and extracting it to the build diff --git a/boards/ark/pi6x/init/rc.board_airframes b/boards/ark/pi6x/init/rc.board_airframes new file mode 100644 index 0000000000..4468c66ee4 --- /dev/null +++ b/boards/ark/pi6x/init/rc.board_airframes @@ -0,0 +1,2 @@ +4001_quad_x +4601_droneblocks_dexi_5 From 2fba5b4c1a16a39868245b0fa90860094ed5ae26 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Fri, 10 Oct 2025 10:43:20 -0700 Subject: [PATCH 10/71] ci: pull emscripten v4.0.15 to avoid c++17 errors (#25739) https://github.com/emscripten-core/emscripten/issues/24850 Signed-off-by: Ramon Roche --- .github/workflows/failsafe_sim.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/failsafe_sim.yml b/.github/workflows/failsafe_sim.yml index edf3d1cd67..24cdb49550 100644 --- a/.github/workflows/failsafe_sim.yml +++ b/.github/workflows/failsafe_sim.yml @@ -48,6 +48,7 @@ jobs: run: | git clone https://github.com/emscripten-core/emsdk.git _emscripten_sdk cd _emscripten_sdk + git checkout 4.0.15 ./emsdk install latest ./emsdk activate latest From edc7a2bb80656f64fa44baf63dfb57e106070a13 Mon Sep 17 00:00:00 2001 From: Peter van der Perk <57130844+PetervdPerk-NXP@users.noreply.github.com> Date: Fri, 10 Oct 2025 19:46:26 +0200 Subject: [PATCH 11/71] fmu-v6xrt: Add DTCM to heap (#25733) Move ramvectors from DTCM to ITCM, this seems to better in general. Also ITCM is marked as RO so is safer anyhow, now that DTCM is fully unused we add DTCM region of 256kB to memory allocator. Increases usable memory from 1536kB to 1792kB and decrease system load a bit since DTCM is faster --- boards/px4/fmu-v6xrt/nuttx-config/nsh/defconfig | 6 ++++-- boards/px4/fmu-v6xrt/nuttx-config/scripts/script.ld | 9 ++------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/boards/px4/fmu-v6xrt/nuttx-config/nsh/defconfig b/boards/px4/fmu-v6xrt/nuttx-config/nsh/defconfig index 0ab458bed6..855c435833 100644 --- a/boards/px4/fmu-v6xrt/nuttx-config/nsh/defconfig +++ b/boards/px4/fmu-v6xrt/nuttx-config/nsh/defconfig @@ -78,7 +78,8 @@ CONFIG_HAVE_CXXINITIALIZE=y CONFIG_I2C=y CONFIG_I2C_RESET=y CONFIG_IDLETHREAD_STACKSIZE=2048 -CONFIG_IMXRT_DTCM=0 +CONFIG_IMXRT_DTCM=256 +CONFIG_IMXRT_DTCM_HEAP=y CONFIG_IMXRT_EDMA=y CONFIG_IMXRT_EDMA_EDBG=y CONFIG_IMXRT_EDMA_ELINK=y @@ -104,7 +105,7 @@ CONFIG_IMXRT_GPIO6_0_15_IRQ=y CONFIG_IMXRT_GPIO6_16_31_IRQ=y CONFIG_IMXRT_GPIO_IRQ=y CONFIG_IMXRT_INIT_FLEXRAM=y -CONFIG_IMXRT_ITCM=0 +CONFIG_IMXRT_ITCM=256 CONFIG_IMXRT_LPI2C1=y CONFIG_IMXRT_LPI2C2=y CONFIG_IMXRT_LPI2C3=y @@ -190,6 +191,7 @@ CONFIG_MEMSET_64BIT=y CONFIG_MEMSET_OPTSPEED=y CONFIG_MMCSD=y CONFIG_MMCSD_SDIO=y +CONFIG_MM_REGIONS=2 CONFIG_MTD=y CONFIG_MTD_BYTE_WRITE=y CONFIG_MTD_PARTITION=y diff --git a/boards/px4/fmu-v6xrt/nuttx-config/scripts/script.ld b/boards/px4/fmu-v6xrt/nuttx-config/scripts/script.ld index 70d861f30a..f9eb6915d0 100644 --- a/boards/px4/fmu-v6xrt/nuttx-config/scripts/script.ld +++ b/boards/px4/fmu-v6xrt/nuttx-config/scripts/script.ld @@ -35,7 +35,7 @@ MEMORY { flash (rx) : ORIGIN = 0x30020000, LENGTH = 4M-128K /* We have 64M but we do not want to wait to program it all */ - sram (rwx) : ORIGIN = 0x20240000, LENGTH = 2M-256k-512k + sram (rwx) : ORIGIN = 0x20240000, LENGTH = 2M-256k itcm (rwx) : ORIGIN = 0x00000000, LENGTH = 256K /* TODO FlexRAM partition */ dtcm (rwx) : ORIGIN = 0x20000000, LENGTH = 256K } @@ -83,6 +83,7 @@ SECTIONS _sitcmfuncs = ABSOLUTE(.); FILL(0xFF) . = 0x40 ; + *(.ram_vectors) INCLUDE "itcm_static_functions.ld" INCLUDE "itcm_functions_includes.ld" . = ALIGN(8); @@ -91,12 +92,6 @@ SECTIONS _fitcmfuncs = LOADADDR(.itcmfunc); - /* The RAM vector table (if present) should lie at the beginning of SRAM */ - - .ram_vectors (COPY) : { - *(.ram_vectors) - } > dtcm - .text : ALIGN(4) { _stext = ABSOLUTE(.); From 96904636f3dd288d39963b547fcbbf3892e703af Mon Sep 17 00:00:00 2001 From: Mahima Yoga Date: Fri, 10 Oct 2025 19:59:26 +0200 Subject: [PATCH 12/71] commander: prevent setting nav_state to takeoff after disarming (#25735) * commander: prevent setting nav_state after disarming to takeoff * wrap in function --- src/modules/commander/UserModeIntention.cpp | 3 ++- src/modules/commander/UserModeIntention.hpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/commander/UserModeIntention.cpp b/src/modules/commander/UserModeIntention.cpp index 556bddbd18..2085995d6c 100644 --- a/src/modules/commander/UserModeIntention.cpp +++ b/src/modules/commander/UserModeIntention.cpp @@ -77,7 +77,8 @@ bool UserModeIntention::change(uint8_t user_intended_nav_state, ModeChangeSource // Special case termination state: even though this mode prevents arming, // still don't switch out of it after disarm and thus store it in _nav_state_after_disarming. - if (!_health_and_arming_checks.modePreventsArming(user_intended_nav_state) + if ((!_health_and_arming_checks.modePreventsArming(user_intended_nav_state) + && !isTakeOffIntended(user_intended_nav_state)) || user_intended_nav_state == vehicle_status_s::NAVIGATION_STATE_TERMINATION) { _nav_state_after_disarming = user_intended_nav_state; } diff --git a/src/modules/commander/UserModeIntention.hpp b/src/modules/commander/UserModeIntention.hpp index cfb4e3998b..e37bf467b1 100644 --- a/src/modules/commander/UserModeIntention.hpp +++ b/src/modules/commander/UserModeIntention.hpp @@ -91,6 +91,7 @@ public: private: bool isArmed() const { return _vehicle_status.arming_state == vehicle_status_s::ARMING_STATE_ARMED; } + bool isTakeOffIntended(uint8_t user_intented_nav_state) const {return user_intented_nav_state == vehicle_status_s::NAVIGATION_STATE_AUTO_TAKEOFF || user_intented_nav_state == vehicle_status_s::NAVIGATION_STATE_AUTO_VTOL_TAKEOFF;} const vehicle_status_s &_vehicle_status; const HealthAndArmingChecks &_health_and_arming_checks; From 3336050f844a6c417178c373b4fe4a22d5b6f90d Mon Sep 17 00:00:00 2001 From: Farhang <46557204+farhangnaderi@users.noreply.github.com> Date: Fri, 10 Oct 2025 13:57:24 -0400 Subject: [PATCH 13/71] First commit --- Tools/setup/requirements.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Tools/setup/requirements.txt b/Tools/setup/requirements.txt index a15da9b9e9..b9d83da852 100644 --- a/Tools/setup/requirements.txt +++ b/Tools/setup/requirements.txt @@ -6,6 +6,7 @@ future jinja2>=2.8 jsonschema kconfiglib +lark lxml matplotlib>=3.0 numpy>=1.13 @@ -14,8 +15,8 @@ packaging pandas>=0.21 pkgconfig psutil +pycryptodome pygments -wheel>=0.31.1 pymavlink pyros-genmsg pyserial @@ -24,7 +25,6 @@ pyyaml requests setuptools>=39.2.0 six>=1.12.0 -toml>=0.9 sympy>=1.10.1 -pycryptodome -lark +toml>=0.9 +wheel>=0.31.1 From d6fc448a36e900a7979d516d5b595091ac907d59 Mon Sep 17 00:00:00 2001 From: Connor Denihan <188690869+cdenihan@users.noreply.github.com> Date: Sat, 11 Oct 2025 16:54:32 -0400 Subject: [PATCH 14/71] Update supported Ubuntu versions in dev environment docs (#25743) --- docs/en/dev_setup/dev_env.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/dev_setup/dev_env.md b/docs/en/dev_setup/dev_env.md index fddacba0cc..7a6db718af 100644 --- a/docs/en/dev_setup/dev_env.md +++ b/docs/en/dev_setup/dev_env.md @@ -2,7 +2,7 @@ The _supported platforms_ for PX4 development are: -- [Ubuntu Linux (22.04/20.04/18.04)](../dev_setup/dev_env_linux_ubuntu.md) — Recommended +- [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md) — Recommended - [Windows (10/11)](../dev_setup/dev_env_windows_wsl.md) — via WSL2 - [Mac OS](../dev_setup/dev_env_mac.md) From 9a6e4b5ace0140f4f02269395025861d0e8c392f Mon Sep 17 00:00:00 2001 From: Connor Denihan <188690869+cdenihan@users.noreply.github.com> Date: Sat, 11 Oct 2025 18:23:55 -0400 Subject: [PATCH 15/71] docs: Fix capitalization of macOS (#25744) * Fix formatting and capitalization in dev_env_mac.md Updated formatting and capitalization for consistency in the macOS development environment documentation. * Correct 'Mac OS' to 'macOS' in documentation * Fix capitalization of 'macOS' in documentation --- docs/en/concept/system_startup.md | 4 ++-- docs/en/dev_setup/dev_env.md | 4 ++-- docs/en/dev_setup/dev_env_mac.md | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/en/concept/system_startup.md b/docs/en/concept/system_startup.md index 4ef80d0de1..d425d35173 100644 --- a/docs/en/concept/system_startup.md +++ b/docs/en/concept/system_startup.md @@ -1,7 +1,7 @@ # System Startup The PX4 startup is controlled by shell scripts. -On NuttX they reside in the [ROMFS/px4fmu_common/init.d](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d) folder - some of these are also used on Posix (Linux/MacOS). +On NuttX they reside in the [ROMFS/px4fmu_common/init.d](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d) folder - some of these are also used on Posix (Linux/macOS). The scripts that are only used on Posix are located in [ROMFS/px4fmu_common/init.d-posix](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d-posix). All files starting with a number and underscore (e.g. `10000_airplane`) are predefined airframe configurations. @@ -13,7 +13,7 @@ The first executed file is the [init.d/rcS](https://github.com/PX4/PX4-Autopilot The following sections are split according to the operating system that PX4 runs on. -## POSIX (Linux/MacOS) +## POSIX (Linux/macOS) On POSIX, the system shell is used as script interpreter (e.g. /bin/sh, being symlinked to dash on Ubuntu). For that to work, a few things are required: diff --git a/docs/en/dev_setup/dev_env.md b/docs/en/dev_setup/dev_env.md index 7a6db718af..33069072c6 100644 --- a/docs/en/dev_setup/dev_env.md +++ b/docs/en/dev_setup/dev_env.md @@ -4,13 +4,13 @@ The _supported platforms_ for PX4 development are: - [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md) — Recommended - [Windows (10/11)](../dev_setup/dev_env_windows_wsl.md) — via WSL2 -- [Mac OS](../dev_setup/dev_env_mac.md) +- [macOS](../dev_setup/dev_env_mac.md) ## Supported Targets The table below shows what PX4 targets you can build on each OS. -| Target | Linux (Ubuntu) | Mac | Windows | +| Target | Linux (Ubuntu) | macOS | Windows | | -------------------------------------------------------------------------------------------------------------------------------------- | :------------: | :-: | :-----: | | **NuttX based hardware:** [Pixhawk Series](../flight_controller/pixhawk_series.md), [Crazyflie](../complete_vehicles_mc/crazyflie2.md) | ✓ | ✓ | ✓ | | **Linux-based hardware:** [Raspberry Pi 2/3](../flight_controller/raspberry_pi_navio2.md) | ✓ | | | diff --git a/docs/en/dev_setup/dev_env_mac.md b/docs/en/dev_setup/dev_env_mac.md index a77be14982..fee66f554e 100644 --- a/docs/en/dev_setup/dev_env_mac.md +++ b/docs/en/dev_setup/dev_env_mac.md @@ -1,4 +1,4 @@ -# MacOS Development Environment +# macOS Development Environment The following instructions set up a PX4 development environment for macOS. This environment can be used to build PX4 for: @@ -21,8 +21,8 @@ The "base" macOS setup installs the tools needed for building firmware, and incl ### Environment Setup -:::details Apple Silicon Macbook users! -If you have an Apple M1, M2 etc. Macbook, make sure to run the terminal as x86 by setting up an x86 terminal: +:::details Apple Silicon MacBook users! +If you have an Apple M1, M2 etc. MacBook, make sure to run the terminal as x86 by setting up an x86 terminal: 1. Locate the Terminal application within the Utilities folder (**Finder > Go menu > Utilities**) 2. Select _Terminal.app_ and right-click on it, then choose **Duplicate**. @@ -47,7 +47,7 @@ First set up the environment 1. Enforce Python 3 by appending the following lines to `~/.zshenv` ```sh - # Point pip3 to MacOS system python 3 pip + # Point pip3 to macOS system python 3 pip alias pip3=/usr/bin/pip3 ``` From 54679f11d091d0cf015fbd5777aa817dba08b719 Mon Sep 17 00:00:00 2001 From: Alexander Sherikov Date: Sun, 12 Oct 2025 02:24:30 +0400 Subject: [PATCH 16/71] px_update_git_header: fix nuttx version detection (#25742) use fake nuttx version tag when the real one cannot be detected --- src/lib/version/px_update_git_header.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lib/version/px_update_git_header.py b/src/lib/version/px_update_git_header.py index bd1836fb03..024563b598 100755 --- a/src/lib/version/px_update_git_header.py +++ b/src/lib/version/px_update_git_header.py @@ -129,8 +129,12 @@ if (os.path.exists('src/modules/mavlink/mavlink/.git')): if (os.path.exists('platforms/nuttx/NuttX/nuttx/.git')): nuttx_git_tags = subprocess.check_output('git -c versionsort.suffix=- tag --sort=v:refname'.split(), cwd='platforms/nuttx/NuttX/nuttx', stderr=subprocess.STDOUT).decode('utf-8').strip() - nuttx_git_tag = re.findall(r'nuttx-[0-9]+\.[0-9]+\.[0-9]+', nuttx_git_tags)[-1].replace("nuttx-", "v") - nuttx_git_tag = re.sub('-.*', '.0', nuttx_git_tag) + # may be empty if shallow clone + if (len(nuttx_git_tags) > 0): + nuttx_git_tag = re.findall(r'nuttx-[0-9]+\.[0-9]+\.[0-9]+', nuttx_git_tags)[-1].replace("nuttx-", "v") + nuttx_git_tag = re.sub('-.*', '.0', nuttx_git_tag) + else: + nuttx_git_tag = "v0.0.0" nuttx_git_version = subprocess.check_output('git rev-parse --verify HEAD'.split(), cwd='platforms/nuttx/NuttX/nuttx', stderr=subprocess.STDOUT).decode('utf-8').strip() nuttx_git_version_short = nuttx_git_version[0:16] From dc500c4d0440d61ee26e62dca49c72a86693ce93 Mon Sep 17 00:00:00 2001 From: PX4 Build Bot Date: Mon, 13 Oct 2025 09:08:00 +1100 Subject: [PATCH 17/71] New Crowdin translations - ko (#25745) Co-authored-by: Crowdin Bot --- docs/ko/SUMMARY.md | 4 +- docs/ko/concept/system_startup.md | 4 +- docs/ko/dev_log/ulog_file_format.md | 1 + docs/ko/dev_setup/dev_env.md | 20 ++--- docs/ko/dev_setup/dev_env_mac.md | 84 +++++++++---------- docs/ko/test_and_ci/test_flights.md | 4 +- docs/ko/test_cards/mc_06_optical_flow.md | 29 ++++--- .../mc_07_optical_flow_low_mount.md | 45 ++++++++++ docs/ko/test_cards/mc_08_dshot.md | 10 +-- docs/ko/test_cards/mc_09_vio.md | 52 ++++++++++++ .../mc_10_optical_flow_gps_mixed.md | 74 ++++++++++++++++ 11 files changed, 256 insertions(+), 71 deletions(-) create mode 100644 docs/ko/test_cards/mc_07_optical_flow_low_mount.md create mode 100644 docs/ko/test_cards/mc_09_vio.md create mode 100644 docs/ko/test_cards/mc_10_optical_flow_gps_mixed.md diff --git a/docs/ko/SUMMARY.md b/docs/ko/SUMMARY.md index d0a8f566c2..3d24afef3c 100644 --- a/docs/ko/SUMMARY.md +++ b/docs/ko/SUMMARY.md @@ -851,8 +851,10 @@ - [시험 MC_04 - 안전 장치 시험](test_cards/mc_04_failsafe_testing.md) - [Test MC_05 - Manual Modes (Inside)](test_cards/mc_05_indoor_flight_manual_modes.md) - [Test MC_06 - Optical Flow (Inside)](test_cards/mc_06_optical_flow.md) - - [Test MC_07 - VIO (Inside)](test_cards/mc_07_vio.md) + - [Test MC_07 - Optical Flow Low Mount](test_cards/mc_07_optical_flow_low_mount.md) - [Test MC_08 - DSHOT ESC](test_cards/mc_08_dshot.md) + - [Test MC_09 - VIO (Visual-Inertial Odometry)](test_cards/mc_09_vio.md) + - [Test MC_10 - Optical Flow / GPS Mixed](test_cards/mc_10_optical_flow_gps_mixed.md) - [단위 테스트](test_and_ci/unit_tests.md) - [Fuzz Tests](test_and_ci/fuzz_tests.md) - [지속 통합](test_and_ci/continous_integration.md) diff --git a/docs/ko/concept/system_startup.md b/docs/ko/concept/system_startup.md index 79fd6cb79b..058b7577c7 100644 --- a/docs/ko/concept/system_startup.md +++ b/docs/ko/concept/system_startup.md @@ -1,7 +1,7 @@ # 시스템 시작 PX4 시작은 쉘 스크립트에 의해 제어됩니다. -On NuttX they reside in the [ROMFS/px4fmu_common/init.d](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d) folder - some of these are also used on Posix (Linux/MacOS). +On NuttX they reside in the [ROMFS/px4fmu_common/init.d](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d) folder - some of these are also used on Posix (Linux/macOS). The scripts that are only used on Posix are located in [ROMFS/px4fmu_common/init.d-posix](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d-posix). All files starting with a number and underscore (e.g. `10000_airplane`) are predefined airframe configurations. @@ -13,7 +13,7 @@ The first executed file is the [init.d/rcS](https://github.com/PX4/PX4-Autopilot 다음 섹션은 PX4가 실행되는 운영 체제에 따라 달라집니다. -## POSIX (Linux/MacOS) +## POSIX (Linux/macOS) On POSIX, the system shell is used as script interpreter (e.g. /bin/sh, being symlinked to dash on Ubuntu). 동작하기 위한 몇가지 조건이 있습니다. diff --git a/docs/ko/dev_log/ulog_file_format.md b/docs/ko/dev_log/ulog_file_format.md index 70e1ac0510..9e8a29b7e7 100644 --- a/docs/ko/dev_log/ulog_file_format.md +++ b/docs/ko/dev_log/ulog_file_format.md @@ -502,6 +502,7 @@ Since the Definitions and Data Sections use the same message header format, they - [ulogreader](https://github.com/maxsun/ulogreader): Javascript, ULog reader and parser outputs log in JSON object format. - [Foxglove](https://foxglove.dev): an integrated visualization and diagnosis tool for robotics data that supports ULog files. - [TypeScript ULog parser](https://github.com/foxglove/ulog): TypeScript, ULog reader that outputs JS objects. +- [yule_log](https://crates.io/crates/yule_log): A streaming ULog parser written in Rust. ## 파일 형식 버전 이력 diff --git a/docs/ko/dev_setup/dev_env.md b/docs/ko/dev_setup/dev_env.md index 427f28d302..9ed3e0cfd8 100644 --- a/docs/ko/dev_setup/dev_env.md +++ b/docs/ko/dev_setup/dev_env.md @@ -2,22 +2,22 @@ The _supported platforms_ for PX4 development are: -- [Ubuntu Linux (22.04/20.04/18.04)](../dev_setup/dev_env_linux_ubuntu.md) — Recommended +- [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md) — Recommended - [Windows (10/11)](../dev_setup/dev_env_windows_wsl.md) — via WSL2 -- [Mac OS](../dev_setup/dev_env_mac.md) +- [macOS](../dev_setup/dev_env_mac.md) ## 지원 대상 아래 표는 각 OS에서 구축 가능한 PX 대상을 보여줍니다. -| 대상 | Linux (Ubuntu) | Mac | 윈도우 | -| ------------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------: | :-: | :-: | -| **NuttX based hardware:** [Pixhawk Series](../flight_controller/pixhawk_series.md), [Crazyflie](../complete_vehicles_mc/crazyflie2.md) | ✓ | ✓ | ✓ | -| **Linux-based hardware:** [Raspberry Pi 2/3](../flight_controller/raspberry_pi_navio2.md) | ✓ | | | -| **Simulation:** [Gazebo SITL](../sim_gazebo_gz/index.md) | ✓ | ✓ | ✓ | -| **Simulation:** [Gazebo Classic SITL](../sim_gazebo_classic/index.md) | ✓ | ✓ | ✓ | -| **Simulation:** [ROS with Gazebo Classic](../simulation/ros_interface.md) | ✓ | | ✓ | -| **Simulation:** ROS 2 with Gazebo | ✓ | | ✓ | +| 대상 | Linux (Ubuntu) | macOS | 윈도우 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------: | :---: | :-: | +| **NuttX based hardware:** [Pixhawk Series](../flight_controller/pixhawk_series.md), [Crazyflie](../complete_vehicles_mc/crazyflie2.md) | ✓ | ✓ | ✓ | +| **Linux-based hardware:** [Raspberry Pi 2/3](../flight_controller/raspberry_pi_navio2.md) | ✓ | | | +| **Simulation:** [Gazebo SITL](../sim_gazebo_gz/index.md) | ✓ | ✓ | ✓ | +| **Simulation:** [Gazebo Classic SITL](../sim_gazebo_classic/index.md) | ✓ | ✓ | ✓ | +| **Simulation:** [ROS with Gazebo Classic](../simulation/ros_interface.md) | ✓ | | ✓ | +| **Simulation:** ROS 2 with Gazebo | ✓ | | ✓ | Experienced Docker users can also build with the containers used by our continuous integration system: [Docker Containers](../test_and_ci/docker.md) diff --git a/docs/ko/dev_setup/dev_env_mac.md b/docs/ko/dev_setup/dev_env_mac.md index 5b31516462..63e8e3ca38 100644 --- a/docs/ko/dev_setup/dev_env_mac.md +++ b/docs/ko/dev_setup/dev_env_mac.md @@ -1,4 +1,4 @@ -# MacOS 개발 환경 +# macOS Development Environment 아래에서 macOS용 PX4 개발 환경 설정 방법을 설명합니다. PX4 빌드에 사용되어 집니다. @@ -22,8 +22,8 @@ The "base" macOS setup installs the tools needed for building firmware, and incl ### Environment Setup :::details -Apple Silicon Macbook users! -If you have an Apple M1, M2 etc. Macbook, make sure to run the terminal as x86 by setting up an x86 terminal: +Apple Silicon MacBook users! +If you have an Apple M1, M2 etc. MacBook, make sure to run the terminal as x86 by setting up an x86 terminal: 1. Locate the Terminal application within the Utilities folder (**Finder > Go menu > Utilities**) 2. Select _Terminal.app_ and right-click on it, then choose **Duplicate**. @@ -38,21 +38,21 @@ First set up the environment 1. Enable more open files by appending the following line to the `~/.zshenv` file (creating it if necessary): - ```sh - echo ulimit -S -n 2048 >> ~/.zshenv - ``` + ```sh + echo ulimit -S -n 2048 >> ~/.zshenv + ``` - ::: info - If you don't do this, the build toolchain may report the error: `"LD: too many open files"` + ::: info + If you don't do this, the build toolchain may report the error: `"LD: too many open files"` ::: 2. Enforce Python 3 by appending the following lines to `~/.zshenv` - ```sh - # Point pip3 to MacOS system python 3 pip - alias pip3=/usr/bin/pip3 - ``` + ```sh + # Point pip3 to macOS system python 3 pip + alias pip3=/usr/bin/pip3 + ``` ### 공통 도구 @@ -62,19 +62,19 @@ To setup the environment to be able to build for Pixhawk/NuttX hardware (and ins 2. Run these commands in your shell to install the common tools: - ```sh - brew tap PX4/px4 - brew install px4-dev - ``` + ```sh + brew tap PX4/px4 + brew install px4-dev + ``` 3. Install the required Python packages: - ```sh - # install required packages using pip3 - python3 -m pip install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging kconfiglib future jsonschema - # if this fails with a permissions error, your Python install is in a system path - use this command instead: - sudo -H python3 -m pip install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging kconfiglib future jsonschema - ``` + ```sh + # install required packages using pip3 + python3 -m pip install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging kconfiglib future jsonschema + # if this fails with a permissions error, your Python install is in a system path - use this command instead: + sudo -H python3 -m pip install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging kconfiglib future jsonschema + ``` ## Gazebo Classic Simulation @@ -82,35 +82,35 @@ To setup the environment for [Gazebo Classic](../sim_gazebo_classic/index.md) si 1. Run the following commands in your shell: - ```sh - brew unlink tbb - sed -i.bak '/disable! date:/s/^/ /; /disable! date:/s/./#/3' $(brew --prefix)/Library/Taps/homebrew/homebrew-core/Formula/tbb@2020.rb - brew install tbb@2020 - brew link tbb@2020 - ``` + ```sh + brew unlink tbb + sed -i.bak '/disable! date:/s/^/ /; /disable! date:/s/./#/3' $(brew --prefix)/Library/Taps/homebrew/homebrew-core/Formula/tbb@2020.rb + brew install tbb@2020 + brew link tbb@2020 + ``` - ::: info - September 2021: The commands above are a workaround to this bug: [PX4-Autopilot#17644](https://github.com/PX4/PX4-Autopilot/issues/17644). - They can be removed once it is fixed (along with this note). + ::: info + September 2021: The commands above are a workaround to this bug: [PX4-Autopilot#17644](https://github.com/PX4/PX4-Autopilot/issues/17644). + They can be removed once it is fixed (along with this note). ::: 2. To install SITL simulation with Gazebo Classic: - ```sh - brew install --cask temurin - brew install --cask xquartz - brew install px4-sim-gazebo - ``` + ```sh + brew install --cask temurin + brew install --cask xquartz + brew install px4-sim-gazebo + ``` 3. Run the macOS setup script: `PX4-Autopilot/Tools/setup/macos.sh` - The easiest way to do this is to clone the PX4 source, and then run the script from the directory, as shown: + The easiest way to do this is to clone the PX4 source, and then run the script from the directory, as shown: - ```sh - git clone https://github.com/PX4/PX4-Autopilot.git --recursive - cd PX4-Autopilot/Tools/setup - sh macos.sh - ``` + ```sh + git clone https://github.com/PX4/PX4-Autopilot.git --recursive + cd PX4-Autopilot/Tools/setup + sh macos.sh + ``` ## 다음 단계 diff --git a/docs/ko/test_and_ci/test_flights.md b/docs/ko/test_and_ci/test_flights.md index eabc3c3176..b0c65c3a6d 100644 --- a/docs/ko/test_and_ci/test_flights.md +++ b/docs/ko/test_and_ci/test_flights.md @@ -28,5 +28,7 @@ These are run by the test team as part of release testing, and for more signific - [MC_04 - Failsafe Testing](../test_cards/mc_04_failsafe_testing.md) - [MC_05 - Indoor Flight (Manual Modes)](../test_cards/mc_05_indoor_flight_manual_modes.md) - [MC_06 - Indoor Flight (Optical Flow)](../test_cards/mc_06_optical_flow.md) -- [MC_07 - VIO (Visual-Inertial Odometry)](../test_cards/mc_07_vio.md) +- [MC_07 - Optical Flow Low Mount](../test_cards/mc_07_optical_flow_low_mount.md) - [MC_08 - DSHOT ESC](../test_cards/mc_08_dshot.md) +- [MC_09 - VIO (Visual-Inertial Odometry)](../test_cards/mc_09_vio.md) +- [MC_10 - Optical Flow / GPS Mixed](../test_cards/mc_10_optical_flow_gps_mixed.md) diff --git a/docs/ko/test_cards/mc_06_optical_flow.md b/docs/ko/test_cards/mc_06_optical_flow.md index 901e113218..9378bf2e4d 100644 --- a/docs/ko/test_cards/mc_06_optical_flow.md +++ b/docs/ko/test_cards/mc_06_optical_flow.md @@ -2,25 +2,23 @@ ## Objective -To test that optical flow works as expected +Test that optical flow works as expected ## Preflight -Disconnect all GPS / compasses and ensure vehicle is using optical flow for navigation -([Setup Information here](../sensor/optical_flow.md)) +Disconnect all GPS / compasses and ensure vehicle is using optical flow for navigation ([setup information here](../sensor/optical_flow.md)) -Ensure there are no other sources of positioning besides optical flow +Ensure there are no other sources of positioning besides optical flow: - [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `1` - [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `0` - [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `0` -- [SYS_HAS_MAG](../advanced_config/parameter_reference.md#SYS_HAS_MAG): `0` -Ensure that the drone can go into Altitude / Position flight mode while still on the ground +Ensure that the drone can go into Altitude / Position mode while still on the ground ## Flight Tests -❏ Altitude flight mode +❏ [Altitude mode](../flight_modes_mc/altitude.md)     ❏ Vertical position should hold current value with stick centered @@ -28,7 +26,7 @@ Ensure that the drone can go into Altitude / Position flight mode while still on     ❏ Throttle response set to climb/descent rate -❏ Position flight mode +❏ [Position mode](../flight_modes_mc/position.md)     ❏ Horizontal position should hold current value with stick centered @@ -38,6 +36,16 @@ Ensure that the drone can go into Altitude / Position flight mode while still on     ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates +❏ Varying height terrain + +    ❏ Put boxes on the ground to create varying heights in terrain + +    ❏ Take off in position mode and fly over the boxes such that the downward facing rangefinder varies in value + +    ❏ Do a few passes with varying amounts of time over the boxes (1-30 seconds if possible) + +    ❏ Drone should not raise in height when flying over boxes + ## 착륙 ❏ Land in either Position or Altitude mode with the throttle below 40% @@ -47,7 +55,8 @@ Ensure that the drone can go into Altitude / Position flight mode while still on ## 예상 결과 - 추력을 올릴 때 서서히 이륙한다 -- Drone should hold altitude in Altitude Flight mode without wandering -- Drone should hold position within 1 meter in Position Flight mode without pilot moving sticks +- Drone should hold altitude in Altitude mode without wandering (over surface with many features) +- Drone should hold position within 1 meter in Position mode without pilot moving sticks - 위에 언급한 어떤 비행 모드에서도 떨림이 나타나서는 안됨 +- Drone should not raise in height when flying over boxes - 지면에 착륙시, 콥터가 지면에서 튀면 안됨 diff --git a/docs/ko/test_cards/mc_07_optical_flow_low_mount.md b/docs/ko/test_cards/mc_07_optical_flow_low_mount.md new file mode 100644 index 0000000000..5ac887e804 --- /dev/null +++ b/docs/ko/test_cards/mc_07_optical_flow_low_mount.md @@ -0,0 +1,45 @@ +# Test MC_07 - Optical Flow Low Sensor + +## Objective + +Test that optical flow works as expected with a low mounted optical flow sensor + +## Preflight + +Ensure that the drone's optical flow sensor is mounted more than an inch off of the ground + +Ensure that [MPC_THR_MIN](../advanced_config/parameter_reference.md#MPC_THR_MIN) is tuned correctly for landing + +Disconnect all GPS / compasses and ensure vehicle is using optical flow for navigation +([Setup Information here](../sensor/optical_flow.md)) + +Ensure there are no other sources of positioning besides optical flow + +- [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `1` +- [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `0` +- [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `0` + +Ensure that the drone can go into [Position mode](../flight_modes_mc/position.md) while still on the ground + +## Flight Tests + +❏ [Position mode](../flight_modes_mc/position.md) + +    ❏ Horizontal position should hold current value with stick centered + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Throttle response set to climb/descent rate + +    ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates + +## 착륙 + +❏ Land in Position mode with the throttle below 40% + +❏ Upon touching ground, copter should disarm automatically within 2 seconds (default: see [COM_DISARM_LAND](../advanced_config/parameter_reference.md#COM_DISARM_LAND)) + +## 예상 결과 + +- 추력을 올릴 때 서서히 이륙한다 +- Drone should stay in Position mode, NOT fall into [altitude](../flight_modes_mc/altitude.md) mode diff --git a/docs/ko/test_cards/mc_08_dshot.md b/docs/ko/test_cards/mc_08_dshot.md index e5b7f8f073..0df821802b 100644 --- a/docs/ko/test_cards/mc_08_dshot.md +++ b/docs/ko/test_cards/mc_08_dshot.md @@ -6,22 +6,22 @@ Regression test for DSHOT working with PX4 ## Preflight -- Ensure vehicle is using a DSHOT ESC. +- Ensure vehicle is using a DSHOT ESC - Parameter [DSHOT_BIDIR_EN](../advanced_config/parameter_reference.md#DSHOT_BIDIR_EN) is enabled - Parameter [DSHOT_TEL_CFG](../advanced_config/parameter_reference.md#DSHOT_TEL_CFG) is configured (if ESC supports telemetry) - Parameter [SDLOG_PROFILE](../advanced_config/parameter_reference.md#SDLOG_PROFILE) has Debug (`5`) checked ## Flight Tests -❏ Stabilized Flight mode +❏ [Stabilized mode](../flight_modes_mc/manual_stabilized.md) -    ❏ Takeoff in stabilized flight mode to ensure correct motor spin +    ❏ Takeoff in stabilized mode to ensure correct motor spin     ❏ Pitch/Roll/Yaw response 1:1     ❏ Throttle response 1:1 -❏ Position flight mode +❏ [Position mode](../flight_modes_mc/position.md)     ❏ Horizontal position should hold current value with stick centered @@ -41,6 +41,6 @@ Regression test for DSHOT working with PX4 - Download flight logs - Load into Data Plot Juggler -- Ensure data is logged for esc_status/esc.0x/esc_rpm +- Ensure data is logged for `esc_status`/`esc.0x`/`esc_rpm` ![Reference frames](../../assets/test_cards/dshot_log_output.png) diff --git a/docs/ko/test_cards/mc_09_vio.md b/docs/ko/test_cards/mc_09_vio.md new file mode 100644 index 0000000000..966073fafd --- /dev/null +++ b/docs/ko/test_cards/mc_09_vio.md @@ -0,0 +1,52 @@ +# Test MC_09 - VIO (Visual-Inertial Odometry) + +## Objective + +Test that external vision (VIO) works as expected + +## Preflight + +Disconnect all GPS / compasses and ensure vehicle is using VIO for navigation + +Ensure that the drone can go into [Altitude](../flight_modes_mc/altitude.md) / [Position](../flight_modes_mc/position.md) mode while still on the ground + +Ensure there are no other sources of positioning besides VIO: + +- [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `0` +- [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `0` +- [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `15` +- [SYS_HAS_MAG](../advanced_config/parameter_reference.md#SYS_HAS_MAG): `0` + +## Flight Tests + +❏ [Altitude mode](../flight_modes_mc/altitude.md) + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Pitch/Roll/Yaw response 1:1 + +    ❏ Throttle response set to climb/descent rate + +❏ [Position mode](../flight_modes_mc/position.md) + +    ❏ Horizontal position should hold current value with stick centered + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Throttle response set to climb/descent rate + +    ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates + +## 착륙 + +❏ Land in either Position or Altitude mode with the throttle below 40% + +❏ Upon touching ground, copter should disarm automatically within 2 seconds (default: see [COM_DISARM_LAND](../advanced_config/parameter_reference.md#COM_DISARM_LAND)) + +## 예상 결과 + +- 추력을 올릴 때 서서히 이륙한다 +- Drone should hold altitude in Altitude mode without wandering +- Drone should hold position within 1 meter in Position mode without pilot moving sticks +- 위에 언급한 어떤 비행 모드에서도 떨림이 나타나서는 안됨 +- 지면에 착륙시, 콥터가 지면에서 튀면 안됨 diff --git a/docs/ko/test_cards/mc_10_optical_flow_gps_mixed.md b/docs/ko/test_cards/mc_10_optical_flow_gps_mixed.md new file mode 100644 index 0000000000..0f53829de9 --- /dev/null +++ b/docs/ko/test_cards/mc_10_optical_flow_gps_mixed.md @@ -0,0 +1,74 @@ +# Test MC_10 - Optical Flow / GPS Mixed + +## Objective + +Test that optical flow mixed with GPS works as expected + +## Preflight + +[Setup optical flow and GPS](../sensor/optical_flow.md) + +Ensure there are no other sources of positioning besides optical flow + +- [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `1` +- [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `7` +- [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `0` +- [SYS_HAS_MAG](../advanced_config/parameter_reference.md#SYS_HAS_MAG): `1` +- [EKF2_HGT_REF](../advanced_config/parameter_reference.md#EKF2_HGT_REF): `1` (GPS) + +Ensure that the drone can go into [Altitude](../flight_modes_mc/altitude.md) / [Position](../flight_modes_mc/position.md) mode while still on the ground + +## Flight Tests + +❏ [Altitude mode](../flight_modes_mc/altitude.md) + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Pitch/Roll/Yaw response 1:1 + +    ❏ Throttle response set to climb/descent rate + +❏ [Position mode](../flight_modes_mc/position.md) + +    ❏ Horizontal position should hold current value with stick centered + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Throttle response set to climb/descent rate + +    ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates + +❏ GPS Cutout + +    ❏ Takeoff in position mode in GPS rich environment (outdoors) + +    ❏ Open QGC and navigate to MAVLink Console + +    ❏ Type `gps off` to disable GPS + +    ❏ Drone should maintain position hold via optical flow + +❏ GPS Degredation + +    ❏ Takeoff in position mode in GPS rich environment (outdoors) + +    ❏ Fly under a metal surface (or other GPS blocking structure) + +    ❏ Ensure drone does not lose position hold or start drifting + +    ❏ Fly out of metal structure to regain GPS + +❏ GPS Acquisition + +    ❏ Takeoff in position mode in non-GPS environment + +    ❏ Fly into a GPS rich environment (outdoors) + +    ❏ Ensure drone acquires GPS position + +## 예상 결과 + +- 추력을 올릴 때 서서히 이륙한다 +- Drone should hold position within 1 meter in Position mode without pilot moving sticks +- Drone should hold position in GPS rich environment as well as non-GPS environment +- 위에 언급한 어떤 비행 모드에서도 떨림이 나타나서는 안됨 From 7fb8ea051f29d803ab0f11caefec829db696a521 Mon Sep 17 00:00:00 2001 From: PX4 Build Bot Date: Mon, 13 Oct 2025 09:08:14 +1100 Subject: [PATCH 18/71] New Crowdin translations - uk (#25746) Co-authored-by: Crowdin Bot --- docs/uk/SUMMARY.md | 4 +- docs/uk/concept/system_startup.md | 4 +- docs/uk/dev_log/ulog_file_format.md | 1 + docs/uk/dev_setup/dev_env.md | 20 ++--- docs/uk/dev_setup/dev_env_mac.md | 8 +- docs/uk/test_and_ci/test_flights.md | 4 +- docs/uk/test_cards/mc_06_optical_flow.md | 29 +++++--- .../mc_07_optical_flow_low_mount.md | 45 +++++++++++ docs/uk/test_cards/mc_08_dshot.md | 10 +-- docs/uk/test_cards/mc_09_vio.md | 52 +++++++++++++ .../mc_10_optical_flow_gps_mixed.md | 74 +++++++++++++++++++ 11 files changed, 218 insertions(+), 33 deletions(-) create mode 100644 docs/uk/test_cards/mc_07_optical_flow_low_mount.md create mode 100644 docs/uk/test_cards/mc_09_vio.md create mode 100644 docs/uk/test_cards/mc_10_optical_flow_gps_mixed.md diff --git a/docs/uk/SUMMARY.md b/docs/uk/SUMMARY.md index accfcd8598..10aa436752 100644 --- a/docs/uk/SUMMARY.md +++ b/docs/uk/SUMMARY.md @@ -851,8 +851,10 @@ - [Тест MC_04 - Тестування відмовостійкості](test_cards/mc_04_failsafe_testing.md) - [Test MC_05 - Manual Modes (Inside)](test_cards/mc_05_indoor_flight_manual_modes.md) - [Test MC_06 - Optical Flow (Inside)](test_cards/mc_06_optical_flow.md) - - [Test MC_07 - VIO (Inside)](test_cards/mc_07_vio.md) + - [Test MC_07 - Optical Flow Low Mount](test_cards/mc_07_optical_flow_low_mount.md) - [Test MC_08 - DSHOT ESC](test_cards/mc_08_dshot.md) + - [Test MC_09 - VIO (Visual-Inertial Odometry)](test_cards/mc_09_vio.md) + - [Test MC_10 - Optical Flow / GPS Mixed](test_cards/mc_10_optical_flow_gps_mixed.md) - [Модульні Тести](test_and_ci/unit_tests.md) - [Fuzz Tests](test_and_ci/fuzz_tests.md) - [Безперервна інтеграція](test_and_ci/continous_integration.md) diff --git a/docs/uk/concept/system_startup.md b/docs/uk/concept/system_startup.md index e1cc0abd18..f94b70aa7c 100644 --- a/docs/uk/concept/system_startup.md +++ b/docs/uk/concept/system_startup.md @@ -1,7 +1,7 @@ # Запуск системи Запуск PX4 контрольований скриптами оболонки. -На NuttX вони знаходяться у директорії [ROMFS/px4fmu_common/init.d](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d), деякі з них також використовуються на Posix системах (Linux/MacOS). +On NuttX they reside in the [ROMFS/px4fmu_common/init.d](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d) folder - some of these are also used on Posix (Linux/macOS). Скрипти які використовуються тільки на Posix системах знаходяться у [ROMFS/px4fmu_common/init.d-posix](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d-posix). Усі файли, які починаються з числа і підкреслення (наприклад, `10000_airaipl`) є попередньо визначеними конфігураціями планерів. @@ -13,7 +13,7 @@ They are exported at build-time into an `airframes.xml` file which is parsed by Наступні секції розділені відповідно до операційної системи, на яких виконується PX4. -## POSIX (Linux/MacOS) +## POSIX (Linux/macOS) On POSIX, the system shell is used as script interpreter (e.g. /bin/sh, being symlinked to dash on Ubuntu). Щоб це працювало потрібно кілька речей: diff --git a/docs/uk/dev_log/ulog_file_format.md b/docs/uk/dev_log/ulog_file_format.md index 12df33315d..4e15845983 100644 --- a/docs/uk/dev_log/ulog_file_format.md +++ b/docs/uk/dev_log/ulog_file_format.md @@ -502,6 +502,7 @@ struct message_dropout_s { - [ulogreader](https://github.com/maxsun/ulogreader): Javascript, ULog reader and parser outputs log in JSON object format. - [Foxglove](https://foxglove.dev): an integrated visualization and diagnosis tool for robotics data that supports ULog files. - [TypeScript ULog parser](https://github.com/foxglove/ulog): TypeScript, ULog reader that outputs JS objects. +- [yule_log](https://crates.io/crates/yule_log): A streaming ULog parser written in Rust. ## Історія версій формату файлу diff --git a/docs/uk/dev_setup/dev_env.md b/docs/uk/dev_setup/dev_env.md index 46bcc54138..6a23af23fa 100644 --- a/docs/uk/dev_setup/dev_env.md +++ b/docs/uk/dev_setup/dev_env.md @@ -2,22 +2,22 @@ The _supported platforms_ for PX4 development are: -- [Ubuntu Linux (22.04/20.04/18.04)](../dev_setup/dev_env_linux_ubuntu.md) — Recommended +- [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md) — Recommended - [Windows (10/11)](../dev_setup/dev_env_windows_wsl.md) — via WSL2 -- [Mac OS](../dev_setup/dev_env_mac.md) +- [macOS](../dev_setup/dev_env_mac.md) ## Цільові платформи що підтримуються Таблиця нижче показує, які цільові платформи PX4 можна побудувати на кожній ОС. -| Цільова платформа | Linux (Ubuntu) | Mac | Windows | -| ------------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------: | :-: | :-----: | -| **NuttX based hardware:** [Pixhawk Series](../flight_controller/pixhawk_series.md), [Crazyflie](../complete_vehicles_mc/crazyflie2.md) | ✓ | ✓ | ✓ | -| **Linux-based hardware:** [Raspberry Pi 2/3](../flight_controller/raspberry_pi_navio2.md) | ✓ | | | -| **Simulation:** [Gazebo SITL](../sim_gazebo_gz/index.md) | ✓ | ✓ | ✓ | -| **Simulation:** [Gazebo Classic SITL](../sim_gazebo_classic/index.md) | ✓ | ✓ | ✓ | -| **Simulation:** [ROS with Gazebo Classic](../simulation/ros_interface.md) | ✓ | | ✓ | -| **Simulation:** ROS 2 with Gazebo | ✓ | | ✓ | +| Цільова платформа | Linux (Ubuntu) | macOS | Windows | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------: | :---: | :-----: | +| **NuttX based hardware:** [Pixhawk Series](../flight_controller/pixhawk_series.md), [Crazyflie](../complete_vehicles_mc/crazyflie2.md) | ✓ | ✓ | ✓ | +| **Linux-based hardware:** [Raspberry Pi 2/3](../flight_controller/raspberry_pi_navio2.md) | ✓ | | | +| **Simulation:** [Gazebo SITL](../sim_gazebo_gz/index.md) | ✓ | ✓ | ✓ | +| **Simulation:** [Gazebo Classic SITL](../sim_gazebo_classic/index.md) | ✓ | ✓ | ✓ | +| **Simulation:** [ROS with Gazebo Classic](../simulation/ros_interface.md) | ✓ | | ✓ | +| **Simulation:** ROS 2 with Gazebo | ✓ | | ✓ | Experienced Docker users can also build with the containers used by our continuous integration system: [Docker Containers](../test_and_ci/docker.md) diff --git a/docs/uk/dev_setup/dev_env_mac.md b/docs/uk/dev_setup/dev_env_mac.md index 65f1453411..214f44b7f3 100644 --- a/docs/uk/dev_setup/dev_env_mac.md +++ b/docs/uk/dev_setup/dev_env_mac.md @@ -1,4 +1,4 @@ -# Середовище розробки MacOS +# macOS Development Environment Наступні інструкції для встановлення середовища розробки PX4 для macOS. Це середовище може бути використане для збірки PX4 для: @@ -22,8 +22,8 @@ To build other targets you will need to use a [different OS](../dev_setup/dev_en ### Налаштування середовища :::details -Apple Silicon Macbook users! -If you have an Apple M1, M2 etc. Macbook, make sure to run the terminal as x86 by setting up an x86 terminal: +Apple Silicon MacBook users! +If you have an Apple M1, M2 etc. MacBook, make sure to run the terminal as x86 by setting up an x86 terminal: 1. Locate the Terminal application within the Utilities folder (**Finder > Go menu > Utilities**) 2. Select _Terminal.app_ and right-click on it, then choose **Duplicate**. @@ -50,7 +50,7 @@ If you have an Apple M1, M2 etc. Macbook, make sure to run the terminal as x86 b 2. Enforce Python 3 by appending the following lines to `~/.zshenv` ```sh - # Point pip3 to MacOS system python 3 pip + # Point pip3 to macOS system python 3 pip alias pip3=/usr/bin/pip3 ``` diff --git a/docs/uk/test_and_ci/test_flights.md b/docs/uk/test_and_ci/test_flights.md index 6771beac6e..103549e361 100644 --- a/docs/uk/test_and_ci/test_flights.md +++ b/docs/uk/test_and_ci/test_flights.md @@ -28,5 +28,7 @@ When submitting [Pull Requests](../contribute/code.md#pull-requests) for new fun - [MC_04 - Failsafe Testing](../test_cards/mc_04_failsafe_testing.md) - [MC_05 - Indoor Flight (Manual Modes)](../test_cards/mc_05_indoor_flight_manual_modes.md) - [MC_06 - Indoor Flight (Optical Flow)](../test_cards/mc_06_optical_flow.md) -- [MC_07 - VIO (Visual-Inertial Odometry)](../test_cards/mc_07_vio.md) +- [MC_07 - Optical Flow Low Mount](../test_cards/mc_07_optical_flow_low_mount.md) - [MC_08 - DSHOT ESC](../test_cards/mc_08_dshot.md) +- [MC_09 - VIO (Visual-Inertial Odometry)](../test_cards/mc_09_vio.md) +- [MC_10 - Optical Flow / GPS Mixed](../test_cards/mc_10_optical_flow_gps_mixed.md) diff --git a/docs/uk/test_cards/mc_06_optical_flow.md b/docs/uk/test_cards/mc_06_optical_flow.md index 6a10870404..3ade1bd015 100644 --- a/docs/uk/test_cards/mc_06_optical_flow.md +++ b/docs/uk/test_cards/mc_06_optical_flow.md @@ -2,25 +2,23 @@ ## Objective -To test that optical flow works as expected +Test that optical flow works as expected ## Preflight -Disconnect all GPS / compasses and ensure vehicle is using optical flow for navigation -([Setup Information here](../sensor/optical_flow.md)) +Disconnect all GPS / compasses and ensure vehicle is using optical flow for navigation ([setup information here](../sensor/optical_flow.md)) -Ensure there are no other sources of positioning besides optical flow +Ensure there are no other sources of positioning besides optical flow: - [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `1` - [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `0` - [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `0` -- [SYS_HAS_MAG](../advanced_config/parameter_reference.md#SYS_HAS_MAG): `0` -Ensure that the drone can go into Altitude / Position flight mode while still on the ground +Ensure that the drone can go into Altitude / Position mode while still on the ground ## Flight Tests -❏ Altitude flight mode +❏ [Altitude mode](../flight_modes_mc/altitude.md)     ❏ Vertical position should hold current value with stick centered @@ -28,7 +26,7 @@ Ensure that the drone can go into Altitude / Position flight mode while still on     ❏ Throttle response set to climb/descent rate -❏ Position flight mode +❏ [Position mode](../flight_modes_mc/position.md)     ❏ Horizontal position should hold current value with stick centered @@ -38,6 +36,16 @@ Ensure that the drone can go into Altitude / Position flight mode while still on     ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates +❏ Varying height terrain + +    ❏ Put boxes on the ground to create varying heights in terrain + +    ❏ Take off in position mode and fly over the boxes such that the downward facing rangefinder varies in value + +    ❏ Do a few passes with varying amounts of time over the boxes (1-30 seconds if possible) + +    ❏ Drone should not raise in height when flying over boxes + ## Посадка ❏ Land in either Position or Altitude mode with the throttle below 40% @@ -47,7 +55,8 @@ Ensure that the drone can go into Altitude / Position flight mode while still on ## Очікувані результати - Зліт повинен бути плавним, коли газ піднято -- Drone should hold altitude in Altitude Flight mode without wandering -- Drone should hold position within 1 meter in Position Flight mode without pilot moving sticks +- Drone should hold altitude in Altitude mode without wandering (over surface with many features) +- Drone should hold position within 1 meter in Position mode without pilot moving sticks - Немає коливання в жодному з перерахованих режимів польоту +- Drone should not raise in height when flying over boxes - Після посадки, коптер не повинен підскакувати на землі diff --git a/docs/uk/test_cards/mc_07_optical_flow_low_mount.md b/docs/uk/test_cards/mc_07_optical_flow_low_mount.md new file mode 100644 index 0000000000..1679a2c8d4 --- /dev/null +++ b/docs/uk/test_cards/mc_07_optical_flow_low_mount.md @@ -0,0 +1,45 @@ +# Test MC_07 - Optical Flow Low Sensor + +## Objective + +Test that optical flow works as expected with a low mounted optical flow sensor + +## Preflight + +Ensure that the drone's optical flow sensor is mounted more than an inch off of the ground + +Ensure that [MPC_THR_MIN](../advanced_config/parameter_reference.md#MPC_THR_MIN) is tuned correctly for landing + +Disconnect all GPS / compasses and ensure vehicle is using optical flow for navigation +([Setup Information here](../sensor/optical_flow.md)) + +Ensure there are no other sources of positioning besides optical flow + +- [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `1` +- [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `0` +- [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `0` + +Ensure that the drone can go into [Position mode](../flight_modes_mc/position.md) while still on the ground + +## Flight Tests + +❏ [Position mode](../flight_modes_mc/position.md) + +    ❏ Horizontal position should hold current value with stick centered + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Throttle response set to climb/descent rate + +    ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates + +## Посадка + +❏ Land in Position mode with the throttle below 40% + +❏ Upon touching ground, copter should disarm automatically within 2 seconds (default: see [COM_DISARM_LAND](../advanced_config/parameter_reference.md#COM_DISARM_LAND)) + +## Очікувані результати + +- Зліт повинен бути плавним, коли газ піднято +- Drone should stay in Position mode, NOT fall into [altitude](../flight_modes_mc/altitude.md) mode diff --git a/docs/uk/test_cards/mc_08_dshot.md b/docs/uk/test_cards/mc_08_dshot.md index 422482bbc9..148534cae8 100644 --- a/docs/uk/test_cards/mc_08_dshot.md +++ b/docs/uk/test_cards/mc_08_dshot.md @@ -6,22 +6,22 @@ Regression test for DSHOT working with PX4 ## Preflight -- Ensure vehicle is using a DSHOT ESC. +- Ensure vehicle is using a DSHOT ESC - Parameter [DSHOT_BIDIR_EN](../advanced_config/parameter_reference.md#DSHOT_BIDIR_EN) is enabled - Parameter [DSHOT_TEL_CFG](../advanced_config/parameter_reference.md#DSHOT_TEL_CFG) is configured (if ESC supports telemetry) - Parameter [SDLOG_PROFILE](../advanced_config/parameter_reference.md#SDLOG_PROFILE) has Debug (`5`) checked ## Flight Tests -❏ Stabilized Flight mode +❏ [Stabilized mode](../flight_modes_mc/manual_stabilized.md) -    ❏ Takeoff in stabilized flight mode to ensure correct motor spin +    ❏ Takeoff in stabilized mode to ensure correct motor spin     ❏ Pitch/Roll/Yaw response 1:1     ❏ Throttle response 1:1 -❏ Position flight mode +❏ [Position mode](../flight_modes_mc/position.md)     ❏ Horizontal position should hold current value with stick centered @@ -41,6 +41,6 @@ Regression test for DSHOT working with PX4 - Download flight logs - Load into Data Plot Juggler -- Ensure data is logged for esc_status/esc.0x/esc_rpm +- Ensure data is logged for `esc_status`/`esc.0x`/`esc_rpm` ![Reference frames](../../assets/test_cards/dshot_log_output.png) diff --git a/docs/uk/test_cards/mc_09_vio.md b/docs/uk/test_cards/mc_09_vio.md new file mode 100644 index 0000000000..29ab4a0253 --- /dev/null +++ b/docs/uk/test_cards/mc_09_vio.md @@ -0,0 +1,52 @@ +# Test MC_09 - VIO (Visual-Inertial Odometry) + +## Objective + +Test that external vision (VIO) works as expected + +## Preflight + +Disconnect all GPS / compasses and ensure vehicle is using VIO for navigation + +Ensure that the drone can go into [Altitude](../flight_modes_mc/altitude.md) / [Position](../flight_modes_mc/position.md) mode while still on the ground + +Ensure there are no other sources of positioning besides VIO: + +- [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `0` +- [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `0` +- [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `15` +- [SYS_HAS_MAG](../advanced_config/parameter_reference.md#SYS_HAS_MAG): `0` + +## Flight Tests + +❏ [Altitude mode](../flight_modes_mc/altitude.md) + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Pitch/Roll/Yaw response 1:1 + +    ❏ Throttle response set to climb/descent rate + +❏ [Position mode](../flight_modes_mc/position.md) + +    ❏ Horizontal position should hold current value with stick centered + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Throttle response set to climb/descent rate + +    ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates + +## Посадка + +❏ Land in either Position or Altitude mode with the throttle below 40% + +❏ Upon touching ground, copter should disarm automatically within 2 seconds (default: see [COM_DISARM_LAND](../advanced_config/parameter_reference.md#COM_DISARM_LAND)) + +## Очікувані результати + +- Зліт повинен бути плавним, коли газ піднято +- Drone should hold altitude in Altitude mode without wandering +- Drone should hold position within 1 meter in Position mode without pilot moving sticks +- Немає коливання в жодному з перерахованих режимів польоту +- Після посадки, коптер не повинен підскакувати на землі diff --git a/docs/uk/test_cards/mc_10_optical_flow_gps_mixed.md b/docs/uk/test_cards/mc_10_optical_flow_gps_mixed.md new file mode 100644 index 0000000000..a1a165e322 --- /dev/null +++ b/docs/uk/test_cards/mc_10_optical_flow_gps_mixed.md @@ -0,0 +1,74 @@ +# Test MC_10 - Optical Flow / GPS Mixed + +## Objective + +Test that optical flow mixed with GPS works as expected + +## Preflight + +[Setup optical flow and GPS](../sensor/optical_flow.md) + +Ensure there are no other sources of positioning besides optical flow + +- [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `1` +- [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `7` +- [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `0` +- [SYS_HAS_MAG](../advanced_config/parameter_reference.md#SYS_HAS_MAG): `1` +- [EKF2_HGT_REF](../advanced_config/parameter_reference.md#EKF2_HGT_REF): `1` (GPS) + +Ensure that the drone can go into [Altitude](../flight_modes_mc/altitude.md) / [Position](../flight_modes_mc/position.md) mode while still on the ground + +## Flight Tests + +❏ [Altitude mode](../flight_modes_mc/altitude.md) + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Pitch/Roll/Yaw response 1:1 + +    ❏ Throttle response set to climb/descent rate + +❏ [Position mode](../flight_modes_mc/position.md) + +    ❏ Horizontal position should hold current value with stick centered + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Throttle response set to climb/descent rate + +    ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates + +❏ GPS Cutout + +    ❏ Takeoff in position mode in GPS rich environment (outdoors) + +    ❏ Open QGC and navigate to MAVLink Console + +    ❏ Type `gps off` to disable GPS + +    ❏ Drone should maintain position hold via optical flow + +❏ GPS Degredation + +    ❏ Takeoff in position mode in GPS rich environment (outdoors) + +    ❏ Fly under a metal surface (or other GPS blocking structure) + +    ❏ Ensure drone does not lose position hold or start drifting + +    ❏ Fly out of metal structure to regain GPS + +❏ GPS Acquisition + +    ❏ Takeoff in position mode in non-GPS environment + +    ❏ Fly into a GPS rich environment (outdoors) + +    ❏ Ensure drone acquires GPS position + +## Очікувані результати + +- Зліт повинен бути плавним, коли газ піднято +- Drone should hold position within 1 meter in Position mode without pilot moving sticks +- Drone should hold position in GPS rich environment as well as non-GPS environment +- Немає коливання в жодному з перерахованих режимів польоту From 87559f717be6e497b0e63fdbf640324c8dc60912 Mon Sep 17 00:00:00 2001 From: PX4 Build Bot Date: Mon, 13 Oct 2025 09:08:22 +1100 Subject: [PATCH 19/71] New Crowdin translations - zh-CN (#25747) Co-authored-by: Crowdin Bot --- docs/zh/SUMMARY.md | 4 +- docs/zh/concept/system_startup.md | 4 +- docs/zh/dev_log/ulog_file_format.md | 1 + docs/zh/dev_setup/dev_env.md | 6 +- docs/zh/dev_setup/dev_env_mac.md | 8 +- docs/zh/ros2/offboard_control.md | 20 ++--- docs/zh/ros2/px4_ros2_control_interface.md | 2 +- docs/zh/test_and_ci/test_flights.md | 4 +- docs/zh/test_cards/mc_06_optical_flow.md | 29 +++++--- .../mc_07_optical_flow_low_mount.md | 45 +++++++++++ docs/zh/test_cards/mc_08_dshot.md | 10 +-- docs/zh/test_cards/mc_09_vio.md | 52 +++++++++++++ .../mc_10_optical_flow_gps_mixed.md | 74 +++++++++++++++++++ 13 files changed, 222 insertions(+), 37 deletions(-) create mode 100644 docs/zh/test_cards/mc_07_optical_flow_low_mount.md create mode 100644 docs/zh/test_cards/mc_09_vio.md create mode 100644 docs/zh/test_cards/mc_10_optical_flow_gps_mixed.md diff --git a/docs/zh/SUMMARY.md b/docs/zh/SUMMARY.md index 1a4deb2d9c..0028ccf78b 100644 --- a/docs/zh/SUMMARY.md +++ b/docs/zh/SUMMARY.md @@ -851,8 +851,10 @@ - [测试 MC_04 -故障安全测试](test_cards/mc_04_failsafe_testing.md) - [Test MC_05 - Manual Modes (Inside)](test_cards/mc_05_indoor_flight_manual_modes.md) - [Test MC_06 - Optical Flow (Inside)](test_cards/mc_06_optical_flow.md) - - [Test MC_07 - VIO (Inside)](test_cards/mc_07_vio.md) + - [Test MC_07 - Optical Flow Low Mount](test_cards/mc_07_optical_flow_low_mount.md) - [Test MC_08 - DSHOT ESC](test_cards/mc_08_dshot.md) + - [Test MC_09 - VIO (Visual-Inertial Odometry)](test_cards/mc_09_vio.md) + - [Test MC_10 - Optical Flow / GPS Mixed](test_cards/mc_10_optical_flow_gps_mixed.md) - [单元测试](test_and_ci/unit_tests.md) - [Fuzz Tests](test_and_ci/fuzz_tests.md) - [持续集成](test_and_ci/continous_integration.md) diff --git a/docs/zh/concept/system_startup.md b/docs/zh/concept/system_startup.md index 3986658e97..28456ce738 100644 --- a/docs/zh/concept/system_startup.md +++ b/docs/zh/concept/system_startup.md @@ -1,7 +1,7 @@ # 系统启动 PX4 系统的启动由 shell 脚本文件控制。 -On NuttX they reside in the [ROMFS/px4fmu_common/init.d](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d) folder - some of these are also used on Posix (Linux/MacOS). +On NuttX they reside in the [ROMFS/px4fmu_common/init.d](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d) folder - some of these are also used on Posix (Linux/macOS). The scripts that are only used on Posix are located in [ROMFS/px4fmu_common/init.d-posix](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d-posix). All files starting with a number and underscore (e.g. `10000_airplane`) are predefined airframe configurations. @@ -13,7 +13,7 @@ The first executed file is the [init.d/rcS](https://github.com/PX4/PX4-Autopilot 根据 PX4 运行的操作系统将本文后续内容分成了如下各小节。 -## POSIX (Linux/MacOS) +## POSIX (Linux/macOS) On POSIX, the system shell is used as script interpreter (e.g. /bin/sh, being symlinked to dash on Ubuntu). 为了使 PX4 可以在 Posix 中正常运行,需要做到以下几点: diff --git a/docs/zh/dev_log/ulog_file_format.md b/docs/zh/dev_log/ulog_file_format.md index 177ebdfff4..80c4b720b9 100644 --- a/docs/zh/dev_log/ulog_file_format.md +++ b/docs/zh/dev_log/ulog_file_format.md @@ -502,6 +502,7 @@ Since the Definitions and Data Sections use the same message header format, they - [ulogreader](https://github.com/maxsun/ulogreader): Javascript, ULog reader and parser outputs log in JSON object format. - [Foxglove](https://foxglove.dev): an integrated visualization and diagnosis tool for robotics data that supports ULog files. - [TypeScript ULog parser](https://github.com/foxglove/ulog): TypeScript, ULog reader that outputs JS objects. +- [yule_log](https://crates.io/crates/yule_log): A streaming ULog parser written in Rust. ## 文件格式版本历史 diff --git a/docs/zh/dev_setup/dev_env.md b/docs/zh/dev_setup/dev_env.md index fadf7c8dca..b53b801540 100644 --- a/docs/zh/dev_setup/dev_env.md +++ b/docs/zh/dev_setup/dev_env.md @@ -2,15 +2,15 @@ The _supported platforms_ for PX4 development are: -- [Ubuntu Linux (22.04/20.04/18.04)](../dev_setup/dev_env_linux_ubuntu.md) — Recommended +- [Ubuntu Linux (24.04/22.04)](../dev_setup/dev_env_linux_ubuntu.md) — Recommended - [Windows (10/11)](../dev_setup/dev_env_windows_wsl.md) — via WSL2 -- [Mac OS](../dev_setup/dev_env_mac.md) +- [macOS](../dev_setup/dev_env_mac.md) ## 支持的编译目标 下表显示了您可以在每个操作系统上构建何种 PX平台的固件编译。 -| 平台 | Linux (Ubuntu) | Mac | Windows | +| 平台 | Linux (Ubuntu) | macOS | Windows | | ------------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------: | :-------------------------: | :-------------------------: | | **NuttX based hardware:** [Pixhawk Series](../flight_controller/pixhawk_series.md), [Crazyflie](../complete_vehicles_mc/crazyflie2.md) | ✓ | ✓ | ✓ | | **Linux-based hardware:** [Raspberry Pi 2/3](../flight_controller/raspberry_pi_navio2.md) | ✓ | | | diff --git a/docs/zh/dev_setup/dev_env_mac.md b/docs/zh/dev_setup/dev_env_mac.md index 8d1b5a0c74..4c52a89da8 100644 --- a/docs/zh/dev_setup/dev_env_mac.md +++ b/docs/zh/dev_setup/dev_env_mac.md @@ -1,4 +1,4 @@ -# Mac 上的开发环境 +# macOS Development Environment MacOS 是受支持的 PX4 开发平台。 根据本文的指示构建的开发环境可以用编译: @@ -22,8 +22,8 @@ The "base" macOS setup installs the tools needed for building firmware, and incl ### Environment Setup :::details -Apple Silicon Macbook users! -If you have an Apple M1, M2 etc. Macbook, make sure to run the terminal as x86 by setting up an x86 terminal: +Apple Silicon MacBook users! +If you have an Apple M1, M2 etc. MacBook, make sure to run the terminal as x86 by setting up an x86 terminal: 1. Locate the Terminal application within the Utilities folder (**Finder > Go menu > Utilities**) 2. Select _Terminal.app_ and right-click on it, then choose **Duplicate**. @@ -50,7 +50,7 @@ First set up the environment 2. Enforce Python 3 by appending the following lines to `~/.zshenv` ```sh - # Point pip3 to MacOS system python 3 pip + # Point pip3 to macOS system python 3 pip alias pip3=/usr/bin/pip3 ``` diff --git a/docs/zh/ros2/offboard_control.md b/docs/zh/ros2/offboard_control.md index 681d4bd155..5ae2e2973d 100644 --- a/docs/zh/ros2/offboard_control.md +++ b/docs/zh/ros2/offboard_control.md @@ -1,6 +1,6 @@ # ROS 2 Offboard 控制示例 -以下的 C++ 示例展示了如何在 [离板模式] (../flight_modes/offboard.md) 中从 ROS 2 节点进行多轴位置控制。 +以下的 C++ 示例展示了如何在[offboard mode](../flight_modes/offboard.md) 中从 ROS 2 节点进行多轴位置控制。 示例将首先发送设置点、进入offboard模式、解锁、起飞至5米,并悬停等待。 虽然简单,但它显示了如何使用offboard控制以及如何向无人机发送指令。 @@ -13,18 +13,18 @@ _Offboard_ control is dangerous. ::: :::info -ROS 与 PX4 存在若干不同的预设(假设),尤其是在坐标系约定([frame conventions])方面../ros/external_position_estimation.md#reference-frames-and-ros +ROS 与 PX4 存在若干不同的预设(假设),尤其是在 [frame conventions](../ros/external_position_estimation.md#reference-frames-and-ros) 当主题发布或订阅时,坐标系类型之间没有隐含转换! 这个例子按照 PX4 的预期在NED坐标系下发布位置。 -若要订阅来自在不同框架内发布的节点的数据(例如ENU, 这是ROS/ROS 2中的标准参考框架,使用 [frame_transforms](https://github.com/PX4/px4_ros_com/blob/main/src/lib/frame_transforms.cpp)库中的辅助函数。 +若要订阅来自在不同框架内发布的节点的数据(例如ENU, 这是ROS/ROS 2中的标准参考框架),使用[frame_transforms](https://github.com/PX4/px4_ros_com/blob/main/src/lib/frame_transforms.cpp)库中的辅助函数。 ::: -## 小試身手 +## 小试身手 -按照 [ROS 2 User Guide](../ros2/user_guide.md)中的说明来安装PX 并运行多轴模拟器,安装ROS 2, 并启动XRCE-DDS代理。 +按照 [ROS 2 用户指南](../ros2/user_guide.md)中的说明来安装PX 并运行多轴模拟器,安装ROS 2, 并启动XRCE-DDS代理。 -之后,我们可参照 ROS 2 用户指南 > 构建 ROS 2 工作空间 (../ros2/user_guide.md#build-ros-2-workspace)中的相似的步骤来运行这个例子。 +之后,我们可参照 [ROS 2 用户指南 > 构建 ROS 2 工作空间](../ros2/user_guide.md#build-ros-2-workspace)中的相似的步骤来运行这个例子。 :::tip 运行 ROS 2 节点前,请确保 QGC已连接到 PX4。 @@ -42,14 +42,14 @@ ROS 与 PX4 存在若干不同的预设(假设),尤其是在坐标系约 cd ~/ws_offboard_control/src/ ``` -3. 将 px4_msgs 代码仓库克隆到 /src 目录下(每个 ROS 2 PX4 工作空间都需要该仓库!): +3. 将[px4_msgs](https://github.com/PX4/px4_msgs)代码仓库克隆到 /src 目录下(每个 ROS 2 PX4 工作空间都需要该仓库!): ```sh git clone https://github.com/PX4/px4_msgs.git - #若未使用 PX4 的 main 分支,请切换到对应的发布分支 + # checkout the matching release branch if not using PX4 main. ``` -4. 将示例代码仓库 px4_ros_com (https://github.com/PX4/px4_ros_com)克隆到 /src 目录下: +4. 将示例代码仓库 [px4_ros_com](https://github.com/PX4/px4_ros_com)克隆到 /src 目录下: ```sh git clone https://github.com/PX4/px4_ros_com.git @@ -213,7 +213,7 @@ void OffboardControl::publish_vehicle_command(uint16_t command, float param1, fl ``` :::info -[VehicleCommand](../msg_docs/VehicleCommand.md是命令PX4的最简单和最高效的方式之一。 通过订阅 [VehicleCommandAck](../msg_docs/VehicleCommandAck.md),您也可以确认设置特定命令是否成功。 +[VehicleCommand](../msg_docs/VehicleCommand.md) 是命令PX4的最简单和最高效的方式之一。 通过订阅 [VehicleCommandAck](../msg_docs/VehicleCommandAck.md),您也可以确认设置特定命令是否成功。 参数字段和 指令字段对应于 [MAVLink commands](https://mavlink.io/en/messages/common.html#mav_commands)以及他们的参数值 ::: diff --git a/docs/zh/ros2/px4_ros2_control_interface.md b/docs/zh/ros2/px4_ros2_control_interface.md index 5be7fedde0..2f03f76e2a 100644 --- a/docs/zh/ros2/px4_ros2_control_interface.md +++ b/docs/zh/ros2/px4_ros2_control_interface.md @@ -24,7 +24,7 @@ Experimental 这些类对 PX4 所使用的内部设定点进行了抽象处理,因此可用于为未来的 PX4 和 ROS 版本提供统一的 ROS 2 接口。 PX4 ROS 2 模式相较于 PX4 内部模式,更易于实现和维护,并且在处理能力与既有代码库资源方面,能为开发者提供更丰富的支持。 -除非该模式属于安全关键型、对时序有严格要求或需要极高的更新速率,或者你的飞行器没有搭载伴随计算机,否则你应优先[考虑使用 PX4 ROS 2 模式,而非 PX4 内部模式](参考链接:../concept/flight_modes.md#internal-vs-external-modes)。 +除非该模式属于安全关键型、对时序有严格要求或需要极高的更新速率,或者你的飞行器没有搭载伴随计算机,否则你应优先[考虑使用 PX4 ROS 2 模式,而非 PX4 内部模式](../concept/flight_modes.md#internal-vs-external-modes)。 ## 综述 diff --git a/docs/zh/test_and_ci/test_flights.md b/docs/zh/test_and_ci/test_flights.md index 094b9cb45f..654ab39b1e 100644 --- a/docs/zh/test_and_ci/test_flights.md +++ b/docs/zh/test_and_ci/test_flights.md @@ -28,5 +28,7 @@ These are run by the test team as part of release testing, and for more signific - [MC_04 - Failsafe Testing](../test_cards/mc_04_failsafe_testing.md) - [MC_05 - Indoor Flight (Manual Modes)](../test_cards/mc_05_indoor_flight_manual_modes.md) - [MC_06 - Indoor Flight (Optical Flow)](../test_cards/mc_06_optical_flow.md) -- [MC_07 - VIO (Visual-Inertial Odometry)](../test_cards/mc_07_vio.md) +- [MC_07 - Optical Flow Low Mount](../test_cards/mc_07_optical_flow_low_mount.md) - [MC_08 - DSHOT ESC](../test_cards/mc_08_dshot.md) +- [MC_09 - VIO (Visual-Inertial Odometry)](../test_cards/mc_09_vio.md) +- [MC_10 - Optical Flow / GPS Mixed](../test_cards/mc_10_optical_flow_gps_mixed.md) diff --git a/docs/zh/test_cards/mc_06_optical_flow.md b/docs/zh/test_cards/mc_06_optical_flow.md index c63bebba16..a5c415366c 100644 --- a/docs/zh/test_cards/mc_06_optical_flow.md +++ b/docs/zh/test_cards/mc_06_optical_flow.md @@ -2,25 +2,23 @@ ## Objective -To test that optical flow works as expected +Test that optical flow works as expected ## Preflight -Disconnect all GPS / compasses and ensure vehicle is using optical flow for navigation -([Setup Information here](../sensor/optical_flow.md)) +Disconnect all GPS / compasses and ensure vehicle is using optical flow for navigation ([setup information here](../sensor/optical_flow.md)) -Ensure there are no other sources of positioning besides optical flow +Ensure there are no other sources of positioning besides optical flow: - [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `1` - [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `0` - [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `0` -- [SYS_HAS_MAG](../advanced_config/parameter_reference.md#SYS_HAS_MAG): `0` -Ensure that the drone can go into Altitude / Position flight mode while still on the ground +Ensure that the drone can go into Altitude / Position mode while still on the ground ## Flight Tests -❏ Altitude flight mode +❏ [Altitude mode](../flight_modes_mc/altitude.md)     ❏ Vertical position should hold current value with stick centered @@ -28,7 +26,7 @@ Ensure that the drone can go into Altitude / Position flight mode while still on     ❏ Throttle response set to climb/descent rate -❏ Position flight mode +❏ [Position mode](../flight_modes_mc/position.md)     ❏ Horizontal position should hold current value with stick centered @@ -38,6 +36,16 @@ Ensure that the drone can go into Altitude / Position flight mode while still on     ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates +❏ Varying height terrain + +    ❏ Put boxes on the ground to create varying heights in terrain + +    ❏ Take off in position mode and fly over the boxes such that the downward facing rangefinder varies in value + +    ❏ Do a few passes with varying amounts of time over the boxes (1-30 seconds if possible) + +    ❏ Drone should not raise in height when flying over boxes + ## 降落 ❏ Land in either Position or Altitude mode with the throttle below 40% @@ -47,7 +55,8 @@ Ensure that the drone can go into Altitude / Position flight mode while still on ## 预期成果 - 当油门升高时,起飞应该是平稳的 -- Drone should hold altitude in Altitude Flight mode without wandering -- Drone should hold position within 1 meter in Position Flight mode without pilot moving sticks +- Drone should hold altitude in Altitude mode without wandering (over surface with many features) +- Drone should hold position within 1 meter in Position mode without pilot moving sticks - 在上述任何飞行模式中都不应出现振荡 +- Drone should not raise in height when flying over boxes - 着陆时,直升机不应在地面上反弹 diff --git a/docs/zh/test_cards/mc_07_optical_flow_low_mount.md b/docs/zh/test_cards/mc_07_optical_flow_low_mount.md new file mode 100644 index 0000000000..d6458d7adc --- /dev/null +++ b/docs/zh/test_cards/mc_07_optical_flow_low_mount.md @@ -0,0 +1,45 @@ +# Test MC_07 - Optical Flow Low Sensor + +## Objective + +Test that optical flow works as expected with a low mounted optical flow sensor + +## Preflight + +Ensure that the drone's optical flow sensor is mounted more than an inch off of the ground + +Ensure that [MPC_THR_MIN](../advanced_config/parameter_reference.md#MPC_THR_MIN) is tuned correctly for landing + +Disconnect all GPS / compasses and ensure vehicle is using optical flow for navigation +([Setup Information here](../sensor/optical_flow.md)) + +Ensure there are no other sources of positioning besides optical flow + +- [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `1` +- [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `0` +- [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `0` + +Ensure that the drone can go into [Position mode](../flight_modes_mc/position.md) while still on the ground + +## Flight Tests + +❏ [Position mode](../flight_modes_mc/position.md) + +    ❏ Horizontal position should hold current value with stick centered + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Throttle response set to climb/descent rate + +    ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates + +## 降落 + +❏ Land in Position mode with the throttle below 40% + +❏ Upon touching ground, copter should disarm automatically within 2 seconds (default: see [COM_DISARM_LAND](../advanced_config/parameter_reference.md#COM_DISARM_LAND)) + +## 预期成果 + +- 当油门升高时,起飞应该是平稳的 +- Drone should stay in Position mode, NOT fall into [altitude](../flight_modes_mc/altitude.md) mode diff --git a/docs/zh/test_cards/mc_08_dshot.md b/docs/zh/test_cards/mc_08_dshot.md index 2f0ef74bdb..ca740ca877 100644 --- a/docs/zh/test_cards/mc_08_dshot.md +++ b/docs/zh/test_cards/mc_08_dshot.md @@ -6,22 +6,22 @@ Regression test for DSHOT working with PX4 ## Preflight -- Ensure vehicle is using a DSHOT ESC. +- Ensure vehicle is using a DSHOT ESC - Parameter [DSHOT_BIDIR_EN](../advanced_config/parameter_reference.md#DSHOT_BIDIR_EN) is enabled - Parameter [DSHOT_TEL_CFG](../advanced_config/parameter_reference.md#DSHOT_TEL_CFG) is configured (if ESC supports telemetry) - Parameter [SDLOG_PROFILE](../advanced_config/parameter_reference.md#SDLOG_PROFILE) has Debug (`5`) checked ## Flight Tests -❏ Stabilized Flight mode +❏ [Stabilized mode](../flight_modes_mc/manual_stabilized.md) -    ❏ Takeoff in stabilized flight mode to ensure correct motor spin +    ❏ Takeoff in stabilized mode to ensure correct motor spin     ❏ Pitch/Roll/Yaw response 1:1     ❏ Throttle response 1:1 -❏ Position flight mode +❏ [Position mode](../flight_modes_mc/position.md)     ❏ Horizontal position should hold current value with stick centered @@ -41,6 +41,6 @@ Regression test for DSHOT working with PX4 - Download flight logs - Load into Data Plot Juggler -- Ensure data is logged for esc_status/esc.0x/esc_rpm +- Ensure data is logged for `esc_status`/`esc.0x`/`esc_rpm` ![Reference frames](../../assets/test_cards/dshot_log_output.png) diff --git a/docs/zh/test_cards/mc_09_vio.md b/docs/zh/test_cards/mc_09_vio.md new file mode 100644 index 0000000000..a1438f8967 --- /dev/null +++ b/docs/zh/test_cards/mc_09_vio.md @@ -0,0 +1,52 @@ +# Test MC_09 - VIO (Visual-Inertial Odometry) + +## Objective + +Test that external vision (VIO) works as expected + +## Preflight + +Disconnect all GPS / compasses and ensure vehicle is using VIO for navigation + +Ensure that the drone can go into [Altitude](../flight_modes_mc/altitude.md) / [Position](../flight_modes_mc/position.md) mode while still on the ground + +Ensure there are no other sources of positioning besides VIO: + +- [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `0` +- [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `0` +- [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `15` +- [SYS_HAS_MAG](../advanced_config/parameter_reference.md#SYS_HAS_MAG): `0` + +## Flight Tests + +❏ [Altitude mode](../flight_modes_mc/altitude.md) + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Pitch/Roll/Yaw response 1:1 + +    ❏ Throttle response set to climb/descent rate + +❏ [Position mode](../flight_modes_mc/position.md) + +    ❏ Horizontal position should hold current value with stick centered + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Throttle response set to climb/descent rate + +    ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates + +## 降落 + +❏ Land in either Position or Altitude mode with the throttle below 40% + +❏ Upon touching ground, copter should disarm automatically within 2 seconds (default: see [COM_DISARM_LAND](../advanced_config/parameter_reference.md#COM_DISARM_LAND)) + +## 预期成果 + +- 当油门升高时,起飞应该是平稳的 +- Drone should hold altitude in Altitude mode without wandering +- Drone should hold position within 1 meter in Position mode without pilot moving sticks +- 在上述任何飞行模式中都不应出现振荡 +- 着陆时,直升机不应在地面上反弹 diff --git a/docs/zh/test_cards/mc_10_optical_flow_gps_mixed.md b/docs/zh/test_cards/mc_10_optical_flow_gps_mixed.md new file mode 100644 index 0000000000..61097c8568 --- /dev/null +++ b/docs/zh/test_cards/mc_10_optical_flow_gps_mixed.md @@ -0,0 +1,74 @@ +# Test MC_10 - Optical Flow / GPS Mixed + +## Objective + +Test that optical flow mixed with GPS works as expected + +## Preflight + +[Setup optical flow and GPS](../sensor/optical_flow.md) + +Ensure there are no other sources of positioning besides optical flow + +- [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `1` +- [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `7` +- [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `0` +- [SYS_HAS_MAG](../advanced_config/parameter_reference.md#SYS_HAS_MAG): `1` +- [EKF2_HGT_REF](../advanced_config/parameter_reference.md#EKF2_HGT_REF): `1` (GPS) + +Ensure that the drone can go into [Altitude](../flight_modes_mc/altitude.md) / [Position](../flight_modes_mc/position.md) mode while still on the ground + +## Flight Tests + +❏ [Altitude mode](../flight_modes_mc/altitude.md) + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Pitch/Roll/Yaw response 1:1 + +    ❏ Throttle response set to climb/descent rate + +❏ [Position mode](../flight_modes_mc/position.md) + +    ❏ Horizontal position should hold current value with stick centered + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Throttle response set to climb/descent rate + +    ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates + +❏ GPS Cutout + +    ❏ Takeoff in position mode in GPS rich environment (outdoors) + +    ❏ Open QGC and navigate to MAVLink Console + +    ❏ Type `gps off` to disable GPS + +    ❏ Drone should maintain position hold via optical flow + +❏ GPS Degredation + +    ❏ Takeoff in position mode in GPS rich environment (outdoors) + +    ❏ Fly under a metal surface (or other GPS blocking structure) + +    ❏ Ensure drone does not lose position hold or start drifting + +    ❏ Fly out of metal structure to regain GPS + +❏ GPS Acquisition + +    ❏ Takeoff in position mode in non-GPS environment + +    ❏ Fly into a GPS rich environment (outdoors) + +    ❏ Ensure drone acquires GPS position + +## 预期成果 + +- 当油门升高时,起飞应该是平稳的 +- Drone should hold position within 1 meter in Position mode without pilot moving sticks +- Drone should hold position in GPS rich environment as well as non-GPS environment +- 在上述任何飞行模式中都不应出现振荡 From 2c62caeb7dd3763b461fa953a03818add2791807 Mon Sep 17 00:00:00 2001 From: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> Date: Mon, 13 Oct 2025 19:56:23 -0800 Subject: [PATCH 20/71] flight task auto: fix offtrack mission landing bug (#25725) During a mission the last waypoint is often a LAND. If the previous waypoint is not directly above the land waypoint the offtrack calculation is incorrect. This regression was introduced when the offtrack calculation switched from 2D to 3D. --- src/modules/flight_mode_manager/tasks/Auto/FlightTaskAuto.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/flight_mode_manager/tasks/Auto/FlightTaskAuto.cpp b/src/modules/flight_mode_manager/tasks/Auto/FlightTaskAuto.cpp index 2eceae9353..47807bffb6 100644 --- a/src/modules/flight_mode_manager/tasks/Auto/FlightTaskAuto.cpp +++ b/src/modules/flight_mode_manager/tasks/Auto/FlightTaskAuto.cpp @@ -612,6 +612,7 @@ State FlightTaskAuto::_getCurrentState() const Vector3f u_prev_to_target = (_triplet_target - _triplet_prev_wp).unit_or_zero(); const Vector3f prev_to_pos = _position - _triplet_prev_wp; const Vector3f pos_to_target = _triplet_target - _position; + // Calculate the closest point to the vehicle position on the line prev_wp - target _closest_pt = _triplet_prev_wp + u_prev_to_target * (prev_to_pos * u_prev_to_target); @@ -629,10 +630,9 @@ State FlightTaskAuto::_getCurrentState() // Previous is in front return_state = State::previous_infront; - } else if ((_position - _closest_pt).longerThan(_target_acceptance_radius)) { + } else if (_type != WaypointType::land && (_position - _closest_pt).longerThan(_target_acceptance_radius)) { // Vehicle too far from the track return_state = State::offtrack; - } return return_state; From 2f06f037284fabbfafa1ed14bd3fb72b8ea118f5 Mon Sep 17 00:00:00 2001 From: Marco Hauswirth <58551738+haumarco@users.noreply.github.com> Date: Tue, 14 Oct 2025 06:51:25 +0200 Subject: [PATCH 21/71] calibration: mag: only allow mag calibration when at least one mag is available and enabled (i.e. not prio=0) (#25714) --- src/modules/commander/mag_calibration.cpp | 35 +++++++++++++++++++++-- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/src/modules/commander/mag_calibration.cpp b/src/modules/commander/mag_calibration.cpp index 7aeadeab55..fb6dfa0282 100644 --- a/src/modules/commander/mag_calibration.cpp +++ b/src/modules/commander/mag_calibration.cpp @@ -520,12 +520,36 @@ calibrate_return mag_calibrate_all(orb_advert_t *mavlink_log_pub, int32_t cal_ma const unsigned int calibration_points_maxcount = worker_data.calibration_sides * worker_data.calibration_points_perside; + uORB::SubscriptionMultiArray mag_sub{ORB_ID::sensor_mag}; + int mag_available_enabled_count = 0; + for (uint8_t cur_mag = 0; cur_mag < MAX_MAGS; cur_mag++) { - uORB::SubscriptionData mag_sub{ORB_ID(sensor_mag), cur_mag}; + if (!mag_sub[cur_mag].advertised()) { + continue; + } - if (mag_sub.advertised() && (mag_sub.get().device_id != 0) && (mag_sub.get().timestamp > 0)) { - worker_data.calibration[cur_mag].set_device_id(mag_sub.get().device_id); + sensor_mag_s mag_data; + + if (!mag_sub[cur_mag].copy(&mag_data) || mag_data.device_id == 0) { + continue; + } + + int calibration_index = calibration::FindCurrentCalibrationIndex("MAG", mag_data.device_id); + + if (calibration_index >= 0) { + int priority = calibration::GetCalibrationParamInt32("MAG", "PRIO", calibration_index); + + if (priority != 0) { + ++mag_available_enabled_count; + } + + } else { + ++mag_available_enabled_count; + } + + if ((mag_data.device_id != 0) && (mag_data.timestamp > 0)) { + worker_data.calibration[cur_mag].set_device_id(mag_data.device_id); } // reset calibration index to match uORB numbering @@ -547,6 +571,11 @@ calibrate_return mag_calibrate_all(orb_advert_t *mavlink_log_pub, int32_t cal_ma } } + if (mag_available_enabled_count <= 0) { + calibration_log_critical(mavlink_log_pub, "Failed: No magnetometer available or enabled"); + return calibrate_return_error; + } + if (result == calibrate_return_ok) { result = calibrate_from_orientation(mavlink_log_pub, // uORB handle to write output worker_data.side_data_collected, // Sides to calibrate From aa0668663aa2aa34745f3866ef921ca765b9f95a Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Mon, 13 Oct 2025 21:52:41 -0700 Subject: [PATCH 22/71] docs: clean urls for vitepress builds (#25718) Signed-off-by: Ramon Roche --- docs/.vitepress/config.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/.vitepress/config.mjs b/docs/.vitepress/config.mjs index 95831b347a..e9190be018 100644 --- a/docs/.vitepress/config.mjs +++ b/docs/.vitepress/config.mjs @@ -31,6 +31,7 @@ export default defineConfig({ tabsPlugin(md); //https://github.com/Red-Asuka/vitepress-plugin-tabs }, }, + cleanUrls: true, vite: { plugins: [ From 33301764e4fd6fd03246ca4654c8541b429600dc Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Tue, 14 Oct 2025 06:56:27 +0200 Subject: [PATCH 23/71] Handle `SYS_AUTOSTART` 0 the same as no valid airframe being available (#25645) * ROMFS: do not exit airframe loading if SYS_AUTOSTART is 0 Do not treat 0 as a magic value that skips the aiframe loading. Instead leave it tot he rc.autostart to load an airframe that if finds appropriate (can be defined in external aiframe). Signed-off-by: Silvan * ROMFS: adjust airframe load spacing and message/comment wording --------- Signed-off-by: Silvan Co-authored-by: Silvan --- ROMFS/px4fmu_common/init.d/rcS | 36 +++++++++++++++------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/ROMFS/px4fmu_common/init.d/rcS b/ROMFS/px4fmu_common/init.d/rcS index f747966e03..1337a777c8 100644 --- a/ROMFS/px4fmu_common/init.d/rcS +++ b/ROMFS/px4fmu_common/init.d/rcS @@ -228,30 +228,26 @@ else fi unset BOARD_RC_ADDITIONAL_INIT - # Load airframe configuration based on SYS_AUTOSTART parameter - if ! param compare SYS_AUTOSTART 0 + # Load airframe configuration based on SYS_AUTOSTART parameter if successful VEHICLE_TYPE gets set + # Run autogenerated ROMFS airframe script + . ${R}etc/init.d/rc.autostart + + if [ ${VEHICLE_TYPE} = none ] then - # rc.autostart directly run the right airframe script which sets the VEHICLE_TYPE - # Look for airframe in ROMFS - . ${R}etc/init.d/rc.autostart - - if [ ${VEHICLE_TYPE} = none ] + # Run external airframe script on SD card + if [ $STORAGE_AVAILABLE = yes ] then - # Use external startup file - if [ $STORAGE_AVAILABLE = yes ] - then - . ${R}etc/init.d/rc.autostart_ext - else - echo "ERROR [init] SD card not mounted - can't load external airframe" - fi + . ${R}etc/init.d/rc.autostart_ext + else + echo "ERROR [init] SD not mounted, skipping external airframe" fi + fi - if [ ${VEHICLE_TYPE} = none ] - then - echo "ERROR [init] No airframe file found for SYS_AUTOSTART value" - param set SYS_AUTOSTART 0 - tune_control play error - fi + if [ ${VEHICLE_TYPE} = none ] + then + echo "ERROR [init] No airframe file found for SYS_AUTOSTART value" + param set SYS_AUTOSTART 0 + tune_control play error fi # Check parameter version and reset upon airframe configuration version mismatch. From 12035682d79fc71872a0570a7d04c40c9ce737d9 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Tue, 14 Oct 2025 06:58:34 +0200 Subject: [PATCH 24/71] Use MAVLink v1 only as opt-in (#25583) * Remove support for MAVLink 1 * Add back support for MAVLink 1 but don't default to it * Update src/modules/mavlink/mavlink_params.c Co-authored-by: Hamish Willee --------- Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> Co-authored-by: Hamish Willee --- .../6011_gazebo-classic_typhoon_h480 | 1 - ROMFS/px4fmu_common/init.d-posix/rcS | 1 - boards/ark/dist/init/rc.board_sensors | 1 - .../amovlabf410_drone_v1.15.4.params | 1 - docs/en/dev_log/logging.md | 2 +- docs/en/gps_compass/rtk_gps.md | 2 +- src/modules/mavlink/mavlink_main.cpp | 22 ++++--------------- src/modules/mavlink/mavlink_main.h | 12 ++-------- src/modules/mavlink/mavlink_params.c | 7 +++--- src/modules/mavlink/mavlink_receiver.cpp | 6 ++--- 10 files changed, 14 insertions(+), 41 deletions(-) diff --git a/ROMFS/px4fmu_common/init.d-posix/airframes/6011_gazebo-classic_typhoon_h480 b/ROMFS/px4fmu_common/init.d-posix/airframes/6011_gazebo-classic_typhoon_h480 index f75374b15c..1904832613 100644 --- a/ROMFS/px4fmu_common/init.d-posix/airframes/6011_gazebo-classic_typhoon_h480 +++ b/ROMFS/px4fmu_common/init.d-posix/airframes/6011_gazebo-classic_typhoon_h480 @@ -26,7 +26,6 @@ param set-default TRIG_INTERFACE 3 param set-default TRIG_MODE 4 param set-default MNT_MODE_IN 4 param set-default MNT_MODE_OUT 2 -param set-default MAV_PROTO_VER 2 param set-default CA_AIRFRAME 0 param set-default CA_ROTOR_COUNT 6 diff --git a/ROMFS/px4fmu_common/init.d-posix/rcS b/ROMFS/px4fmu_common/init.d-posix/rcS index bbbc55930c..a2d331ba1e 100644 --- a/ROMFS/px4fmu_common/init.d-posix/rcS +++ b/ROMFS/px4fmu_common/init.d-posix/rcS @@ -173,7 +173,6 @@ param set-default COM_RC_IN_MODE 1 param set-default EKF2_REQ_GPS_H 0.5 param set-default IMU_GYRO_FFT_EN 1 -param set-default MAV_PROTO_VER 2 # Ensures QGC does not drop the first few packets after a SITL restart due to MAVLINK 1 packets param set-default -s MC_AT_EN 1 diff --git a/boards/ark/dist/init/rc.board_sensors b/boards/ark/dist/init/rc.board_sensors index 0b7d52a6f1..16a809054c 100644 --- a/boards/ark/dist/init/rc.board_sensors +++ b/boards/ark/dist/init/rc.board_sensors @@ -11,7 +11,6 @@ param set-default SENS_AFBR_HYSTER 1 param set-default MAV_SYS_ID 158 param set-default MAV_COMP_ID 158 -param set-default MAV_PROTO_VER 2 param set-default MAV_0_MODE 14 param set-default MAV_0_FORWARD 0 diff --git a/docs/assets/airframes/multicopter/amovlab_f410/amovlabf410_drone_v1.15.4.params b/docs/assets/airframes/multicopter/amovlab_f410/amovlabf410_drone_v1.15.4.params index 2b611958b9..3a27322f74 100644 --- a/docs/assets/airframes/multicopter/amovlab_f410/amovlabf410_drone_v1.15.4.params +++ b/docs/assets/airframes/multicopter/amovlab_f410/amovlabf410_drone_v1.15.4.params @@ -571,7 +571,6 @@ 1 1 MAV_FWDEXTSP 1 6 1 1 MAV_HASH_CHK_EN 1 6 1 1 MAV_HB_FORW_EN 1 6 -1 1 MAV_PROTO_VER 0 6 1 1 MAV_RADIO_TOUT 5 6 1 1 MAV_SIK_RADIO_ID 0 6 1 1 MAV_SYS_ID 1 6 diff --git a/docs/en/dev_log/logging.md b/docs/en/dev_log/logging.md index e2c91e56d5..47d4d6f385 100644 --- a/docs/en/dev_log/logging.md +++ b/docs/en/dev_log/logging.md @@ -161,7 +161,7 @@ There are different clients that support ulog streaming: - If log streaming does not start, make sure the `logger` is running (see above), and inspect the console output while starting. - If it still does not work, make sure that MAVLink 2 is used. - Enforce it by setting `MAV_PROTO_VER` to 2. + `MAV_PROTO_VER` needs to be set to 2. - Log streaming uses a maximum of 70% of the configured MAVLink rate (`-r` parameter). If more is needed, messages are dropped. The currently used percentage can be inspected with `mavlink status` (1.8% is used in this example): diff --git a/docs/en/gps_compass/rtk_gps.md b/docs/en/gps_compass/rtk_gps.md index fcaea1c01b..b24cf96c77 100644 --- a/docs/en/gps_compass/rtk_gps.md +++ b/docs/en/gps_compass/rtk_gps.md @@ -203,7 +203,7 @@ This should be enabled by default on recent builds. To ensure MAVLink2 is used: - Update the telemetry module firmware to the latest version (see [QGroundControl > Setup > Firmware](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/setup_view/firmware.html)). -- Set [MAV_PROTO_VER](../advanced_config/parameter_reference.md#MAV_PROTO_VER) to 2 (see [QGroundControl Setup > Parameters](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/setup_view/parameters.html)) +- Ensure [MAV_PROTO_VER](../advanced_config/parameter_reference.md#MAV_PROTO_VER) is set to 2 (see [QGroundControl Setup > Parameters](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/setup_view/parameters.html)) #### Tuning diff --git a/src/modules/mavlink/mavlink_main.cpp b/src/modules/mavlink/mavlink_main.cpp index 3b4c39a73e..0312a0b6b2 100644 --- a/src/modules/mavlink/mavlink_main.cpp +++ b/src/modules/mavlink/mavlink_main.cpp @@ -187,12 +187,7 @@ Mavlink::mavlink_update_parameters() { updateParams(); - int32_t proto = _param_mav_proto_ver.get(); - - if (_protocol_version_switch != proto) { - _protocol_version_switch = proto; - set_proto_version(proto); - } + set_protocol_version(_param_mav_proto_ver.get()); if (_param_mav_type.get() < 0 || _param_mav_type.get() >= MAV_TYPE_ENUM_END) { _param_mav_type.set(0); @@ -277,16 +272,13 @@ Mavlink::set_instance_id() return false; } -void -Mavlink::set_proto_version(unsigned version) +void Mavlink::set_protocol_version(unsigned version) { - if ((version == 1 || version == 0) && - ((_protocol_version_switch == 0) || (_protocol_version_switch == 1))) { + if (version == 1) { get_status()->flags |= MAVLINK_STATUS_FLAG_OUT_MAVLINK1; _protocol_version = 1; - } else if (version == 2 && - ((_protocol_version_switch == 0) || (_protocol_version_switch == 2))) { + } else { get_status()->flags &= ~(MAVLINK_STATUS_FLAG_OUT_MAVLINK1); _protocol_version = 2; } @@ -1156,13 +1148,7 @@ Mavlink::send_protocol_version() //memcpy(&msg.spec_version_hash, &mavlink_spec_git_version_binary, sizeof(msg.spec_version_hash)); memcpy(&msg.library_version_hash, &mavlink_lib_git_version_binary, sizeof(msg.library_version_hash)); - // Switch to MAVLink 2 - int curr_proto_ver = _protocol_version; - set_proto_version(2); - // Send response - if it passes through the link its fine to use MAVLink 2 mavlink_msg_protocol_version_send_struct(get_channel(), &msg); - // Reset to previous value - set_proto_version(curr_proto_ver); } int diff --git a/src/modules/mavlink/mavlink_main.h b/src/modules/mavlink/mavlink_main.h index 0379bd2c11..18058bd54b 100644 --- a/src/modules/mavlink/mavlink_main.h +++ b/src/modules/mavlink/mavlink_main.h @@ -157,14 +157,7 @@ public: mavlink_status_t *get_status() { return &_mavlink_status; } - /** - * Set the MAVLink version - * - * Currently supporting v1 and v2 - * - * @param version MAVLink version - */ - void set_proto_version(unsigned version); + void set_protocol_version(unsigned version); static int destroy_all_instances(); @@ -620,8 +613,7 @@ private: uint64_t _last_write_success_time{0}; uint64_t _last_write_try_time{0}; uint64_t _mavlink_start_time{0}; - int32_t _protocol_version_switch{-1}; - int32_t _protocol_version{0}; + int32_t _protocol_version = 0; ///< after initialization the only values are 1 and 2 unsigned _bytes_tx{0}; unsigned _bytes_txerr{0}; diff --git a/src/modules/mavlink/mavlink_params.c b/src/modules/mavlink/mavlink_params.c index 8a793f5e5f..f616bd01d6 100644 --- a/src/modules/mavlink/mavlink_params.c +++ b/src/modules/mavlink/mavlink_params.c @@ -52,11 +52,10 @@ PARAM_DEFINE_INT32(MAV_COMP_ID, 1); /** * MAVLink protocol version * @group MAVLink - * @value 0 Default to 1, switch to 2 if GCS sends version 2 - * @value 1 Always use version 1 - * @value 2 Always use version 2 + * @value 1 Version 1 with auto-upgrade to v2 if detected + * @value 2 Version 2 */ -PARAM_DEFINE_INT32(MAV_PROTO_VER, 0); +PARAM_DEFINE_INT32(MAV_PROTO_VER, 2); /** * MAVLink SiK Radio ID diff --git a/src/modules/mavlink/mavlink_receiver.cpp b/src/modules/mavlink/mavlink_receiver.cpp index 4673ed6e72..2aaad09a19 100644 --- a/src/modules/mavlink/mavlink_receiver.cpp +++ b/src/modules/mavlink/mavlink_receiver.cpp @@ -3228,10 +3228,10 @@ MavlinkReceiver::run() for (ssize_t i = 0; i < nread; i++) { if (mavlink_parse_char(_mavlink.get_channel(), buf[i], &msg, &_status)) { - /* check if we received version 2 and request a switch. */ + // If we receive a complete MAVLink 2 packet, also switch the outgoing protocol version if (!(_mavlink.get_status()->flags & MAVLINK_STATUS_FLAG_IN_MAVLINK1)) { - /* this will only switch to proto version 2 if allowed in settings */ - _mavlink.set_proto_version(2); + PX4_INFO("Upgrade to MAVLink v2 because of incoming packet"); + _mavlink.set_protocol_version(2); } switch (_mavlink.get_mode()) { From 4842c542b80e7dcc433424984aed98907e054052 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Tue, 14 Oct 2025 07:41:11 +0200 Subject: [PATCH 25/71] rc_update: remove 1% deadzone for RC channels 1-8 (#25502) * rc_update: remove 1% deadzone for all channels this should be handled higher level. * Remove all references to the RC{n}_DZ parameters Regular expression: RC.{0,2}_DZ --------- Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> --- .../amovlabf410_drone_v1.15.4.params | 18 -- docs/en/flight_modes_mc/altitude.md | 1 - docs/en/flight_modes_mc/position.md | 1 - .../checks/rcCalibrationCheck.cpp | 29 +-- .../checks/rcCalibrationCheck.hpp | 4 +- src/modules/rc_update/params.c | 202 ------------------ src/modules/rc_update/rc_update.cpp | 19 +- src/modules/rc_update/rc_update.h | 2 - 8 files changed, 6 insertions(+), 270 deletions(-) diff --git a/docs/assets/airframes/multicopter/amovlab_f410/amovlabf410_drone_v1.15.4.params b/docs/assets/airframes/multicopter/amovlab_f410/amovlabf410_drone_v1.15.4.params index 3a27322f74..53b68cdeb4 100644 --- a/docs/assets/airframes/multicopter/amovlab_f410/amovlabf410_drone_v1.15.4.params +++ b/docs/assets/airframes/multicopter/amovlab_f410/amovlabf410_drone_v1.15.4.params @@ -803,92 +803,74 @@ 1 1 PWM_MAIN_TIM1 400 6 1 1 PWM_MAIN_TIM2 -1 6 1 1 PWM_SBUS_MODE 0 6 -1 1 RC10_DZ 0.000000000000000000 9 1 1 RC10_MAX 2000.000000000000000000 9 1 1 RC10_MIN 1000.000000000000000000 9 1 1 RC10_REV 1.000000000000000000 9 1 1 RC10_TRIM 1500.000000000000000000 9 -1 1 RC11_DZ 0.000000000000000000 9 1 1 RC11_MAX 2000.000000000000000000 9 1 1 RC11_MIN 1000.000000000000000000 9 1 1 RC11_REV 1.000000000000000000 9 1 1 RC11_TRIM 1500.000000000000000000 9 -1 1 RC12_DZ 0.000000000000000000 9 1 1 RC12_MAX 2000.000000000000000000 9 1 1 RC12_MIN 1000.000000000000000000 9 1 1 RC12_REV 1.000000000000000000 9 1 1 RC12_TRIM 1500.000000000000000000 9 -1 1 RC13_DZ 0.000000000000000000 9 1 1 RC13_MAX 2000.000000000000000000 9 1 1 RC13_MIN 1000.000000000000000000 9 1 1 RC13_REV 1.000000000000000000 9 1 1 RC13_TRIM 1500.000000000000000000 9 -1 1 RC14_DZ 0.000000000000000000 9 1 1 RC14_MAX 2000.000000000000000000 9 1 1 RC14_MIN 1000.000000000000000000 9 1 1 RC14_REV 1.000000000000000000 9 1 1 RC14_TRIM 1500.000000000000000000 9 -1 1 RC15_DZ 0.000000000000000000 9 1 1 RC15_MAX 2000.000000000000000000 9 1 1 RC15_MIN 1000.000000000000000000 9 1 1 RC15_REV 1.000000000000000000 9 1 1 RC15_TRIM 1500.000000000000000000 9 -1 1 RC16_DZ 0.000000000000000000 9 1 1 RC16_MAX 2000.000000000000000000 9 1 1 RC16_MIN 1000.000000000000000000 9 1 1 RC16_REV 1.000000000000000000 9 1 1 RC16_TRIM 1500.000000000000000000 9 -1 1 RC17_DZ 0.000000000000000000 9 1 1 RC17_MAX 2000.000000000000000000 9 1 1 RC17_MIN 1000.000000000000000000 9 1 1 RC17_REV 1.000000000000000000 9 1 1 RC17_TRIM 1500.000000000000000000 9 -1 1 RC18_DZ 0.000000000000000000 9 1 1 RC18_MAX 2000.000000000000000000 9 1 1 RC18_MIN 1000.000000000000000000 9 1 1 RC18_REV 1.000000000000000000 9 1 1 RC18_TRIM 1500.000000000000000000 9 -1 1 RC1_DZ 10.000000000000000000 9 1 1 RC1_MAX 1996.000000000000000000 9 1 1 RC1_MIN 999.000000000000000000 9 1 1 RC1_REV 1.000000000000000000 9 1 1 RC1_TRIM 1498.000000000000000000 9 -1 1 RC2_DZ 10.000000000000000000 9 1 1 RC2_MAX 1998.000000000000000000 9 1 1 RC2_MIN 1000.000000000000000000 9 1 1 RC2_REV 1.000000000000000000 9 1 1 RC2_TRIM 1499.000000000000000000 9 -1 1 RC3_DZ 10.000000000000000000 9 1 1 RC3_MAX 1997.000000000000000000 9 1 1 RC3_MIN 1000.000000000000000000 9 1 1 RC3_REV 1.000000000000000000 9 1 1 RC3_TRIM 1000.000000000000000000 9 -1 1 RC4_DZ 10.000000000000000000 9 1 1 RC4_MAX 1997.000000000000000000 9 1 1 RC4_MIN 1000.000000000000000000 9 1 1 RC4_REV 1.000000000000000000 9 1 1 RC4_TRIM 1498.000000000000000000 9 -1 1 RC5_DZ 10.000000000000000000 9 1 1 RC5_MAX 2000.000000000000000000 9 1 1 RC5_MIN 1000.000000000000000000 9 1 1 RC5_REV 1.000000000000000000 9 1 1 RC5_TRIM 1500.000000000000000000 9 -1 1 RC6_DZ 10.000000000000000000 9 1 1 RC6_MAX 2000.000000000000000000 9 1 1 RC6_MIN 1000.000000000000000000 9 1 1 RC6_REV 1.000000000000000000 9 1 1 RC6_TRIM 1500.000000000000000000 9 -1 1 RC7_DZ 10.000000000000000000 9 1 1 RC7_MAX 2000.000000000000000000 9 1 1 RC7_MIN 1000.000000000000000000 9 1 1 RC7_REV 1.000000000000000000 9 1 1 RC7_TRIM 1500.000000000000000000 9 -1 1 RC8_DZ 10.000000000000000000 9 1 1 RC8_MAX 2000.000000000000000000 9 1 1 RC8_MIN 1000.000000000000000000 9 1 1 RC8_REV 1.000000000000000000 9 1 1 RC8_TRIM 1500.000000000000000000 9 -1 1 RC9_DZ 0.000000000000000000 9 1 1 RC9_MAX 2000.000000000000000000 9 1 1 RC9_MIN 1000.000000000000000000 9 1 1 RC9_REV 1.000000000000000000 9 diff --git a/docs/en/flight_modes_mc/altitude.md b/docs/en/flight_modes_mc/altitude.md index fda7dde9bb..7d35590443 100644 --- a/docs/en/flight_modes_mc/altitude.md +++ b/docs/en/flight_modes_mc/altitude.md @@ -47,5 +47,4 @@ The mode is affected by the following parameters: | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [MPC_Z_VEL_MAX_UP](../advanced_config/parameter_reference.md#MPC_Z_VEL_MAX_UP) | Maximum vertical ascent velocity. Default: 3 m/s. | | [MPC_Z_VEL_MAX_DN](../advanced_config/parameter_reference.md#MPC_Z_VEL_MAX_DN) | Maximum vertical descent velocity. Default: 1 m/s. | -| `RCX_DZ` | RC dead zone for channel X. The value of X for throttle will depend on the value of [RC_MAP_THROTTLE](../advanced_config/parameter_reference.md#RC_MAP_THROTTLE). For example, if the throttle is channel 4 then [RC4_DZ](../advanced_config/parameter_reference.md#RC4_DZ) specifies the deadzone. | | `MPC_XXXX` | Most of the MPC_xxx parameters affect flight behaviour in this mode (at least to some extent). For example, [MPC_THR_HOVER](../advanced_config/parameter_reference.md#MPC_THR_HOVER) defines the thrust at which a vehicle will hover. | diff --git a/docs/en/flight_modes_mc/position.md b/docs/en/flight_modes_mc/position.md index 69367bc4b1..75fae4ab21 100644 --- a/docs/en/flight_modes_mc/position.md +++ b/docs/en/flight_modes_mc/position.md @@ -67,7 +67,6 @@ All the parameters in the [Multicopter Position Control](../advanced_config/para | [MPC_Z_VEL_MAX_DN](../advanced_config/parameter_reference.md#MPC_Z_VEL_MAX_DN) | Maximum vertical descent velocity. Default: 1 m/s. | | [MPC_LAND_ALT1](../advanced_config/parameter_reference.md#MPC_LAND_ALT1) | Altitude for triggering first phase of slow landing. Below this altitude descending velocity gets limited to a value between [MPC_Z_VEL_MAX_DN](#MPC_Z_VEL_MAX_DN) (or `MPC_Z_V_AUTO_DN`) and [MPC_LAND_SPEED](#MPC_LAND_SPEED). Value needs to be higher than [MPC_LAND_ALT2](#MPC_LAND_ALT2). Default 10m. | | [MPC_LAND_ALT2](../advanced_config/parameter_reference.md#MPC_LAND_ALT2) | Altitude for second phase of slow landing. Below this altitude descending velocity gets limited to [`MPC_LAND_SPEED`](#MPC_LAND_SPEED). Value needs to be lower than "MPC_LAND_ALT1". Default 5m. | -| `RCX_DZ` | RC dead zone for channel X. The value of X for throttle will depend on the value of [RC_MAP_THROTTLE](../advanced_config/parameter_reference.md#RC_MAP_THROTTLE). For example, if the throttle is channel 4 then [RC4_DZ](../advanced_config/parameter_reference.md#RC4_DZ) specifies the deadzone. | | `MPC_XXXX` | Most of the MPC_xxx parameters affect flight behaviour in this mode (at least to some extent). For example, [MPC_THR_HOVER](../advanced_config/parameter_reference.md#MPC_THR_HOVER) defines the thrust at which a vehicle will hover. | | [MPC_POS_MODE](../advanced_config/parameter_reference.md#MPC_POS_MODE) | Stick input to movement translation strategy. From PX4 v1.12 the default (`Acceleration based`) is that stick position controls acceleration (in a similar way to a car accelerator pedal). Other options allow stick deflection to directly control speed over ground, with and without smoothing and acceleration limits. | | [MPC_ACC_HOR_MAX](../advanced_config/parameter_reference.md#MPC_ACC_HOR_MAX) | Maximum horizontal acceleration. | diff --git a/src/modules/commander/HealthAndArmingChecks/checks/rcCalibrationCheck.cpp b/src/modules/commander/HealthAndArmingChecks/checks/rcCalibrationCheck.cpp index d1008d3253..f16505e4a2 100644 --- a/src/modules/commander/HealthAndArmingChecks/checks/rcCalibrationCheck.cpp +++ b/src/modules/commander/HealthAndArmingChecks/checks/rcCalibrationCheck.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (c) 2019 PX4 Development Team. All rights reserved. + * Copyright (c) 2025 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -33,11 +33,6 @@ #include "rcCalibrationCheck.hpp" -/** - * Maximum deadzone value - */ -#define RC_INPUT_MAX_DEADZONE_US 500 - /** * Minimum value */ @@ -61,9 +56,6 @@ RcCalibrationChecks::RcCalibrationChecks() snprintf(nbuf, sizeof(nbuf), "RC%d_MAX", i + 1); _param_handles[i].max = param_find(nbuf); - - snprintf(nbuf, sizeof(nbuf), "RC%d_DZ", i + 1); - _param_handles[i].dz = param_find(nbuf); } updateParams(); @@ -84,7 +76,6 @@ void RcCalibrationChecks::checkAndReport(const Context &context, Report &reporte float param_min = _param_values[i].min; float param_max = _param_values[i].max; float param_trim = _param_values[i].trim; - float param_dz = _param_values[i].dz; /* assert min..center..max ordering */ if (param_min < RC_INPUT_LOWEST_MIN_US) { @@ -148,22 +139,6 @@ void RcCalibrationChecks::checkAndReport(const Context &context, Report &reporte (int)param_trim, (int)param_max); } } - - /* assert deadzone is sane */ - if (param_dz > RC_INPUT_MAX_DEADZONE_US) { - /* EVENT - * @description - * Recalibrate the RC. - */ - reporter.armingCheckFailure(NavModes::All, health_component_t::remote_control, - events::ID("check_rc_dz_too_high"), - events::Log::Error, "RC calibration for channel {1} invalid: DZ greater than {2}", i + 1, RC_INPUT_MAX_DEADZONE_US); - - if (reporter.mavlink_log_pub()) { - mavlink_log_critical(reporter.mavlink_log_pub(), "Preflight Fail: RC ERROR: RC%d_DZ > %u", i + 1, - RC_INPUT_MAX_DEADZONE_US); - } - } } } @@ -176,11 +151,9 @@ void RcCalibrationChecks::updateParams() _param_values[i].min = 0.0f; _param_values[i].max = 0.0f; _param_values[i].trim = 0.0f; - _param_values[i].dz = RC_INPUT_MAX_DEADZONE_US * 2.0f; param_get(_param_handles[i].min, &_param_values[i].min); param_get(_param_handles[i].trim, &_param_values[i].trim); param_get(_param_handles[i].max, &_param_values[i].max); - param_get(_param_handles[i].dz, &_param_values[i].dz); } } diff --git a/src/modules/commander/HealthAndArmingChecks/checks/rcCalibrationCheck.hpp b/src/modules/commander/HealthAndArmingChecks/checks/rcCalibrationCheck.hpp index 6a2d30a83f..d0b4a80d8d 100644 --- a/src/modules/commander/HealthAndArmingChecks/checks/rcCalibrationCheck.hpp +++ b/src/modules/commander/HealthAndArmingChecks/checks/rcCalibrationCheck.hpp @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (c) 2022 PX4 Development Team. All rights reserved. + * Copyright (c) 2025 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -53,13 +53,11 @@ private: param_t min; param_t trim; param_t max; - param_t dz; }; struct ParamValues { float min; float trim; float max; - float dz; }; ParamHandles _param_handles[input_rc_s::RC_INPUT_MAX_CHANNELS]; diff --git a/src/modules/rc_update/params.c b/src/modules/rc_update/params.c index d764ae5d34..3709a3a841 100644 --- a/src/modules/rc_update/params.c +++ b/src/modules/rc_update/params.c @@ -87,18 +87,6 @@ PARAM_DEFINE_FLOAT(RC1_MAX, 2000.0f); */ PARAM_DEFINE_FLOAT(RC1_REV, 1.0f); -/** - * RC channel 1 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @unit us - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC1_DZ, 10.0f); - /** * RC channel 2 minimum * @@ -148,18 +136,6 @@ PARAM_DEFINE_FLOAT(RC2_MAX, 2000.0f); */ PARAM_DEFINE_FLOAT(RC2_REV, 1.0f); -/** - * RC channel 2 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @unit us - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC2_DZ, 10.0f); - /** * RC channel 3 minimum * @@ -209,18 +185,6 @@ PARAM_DEFINE_FLOAT(RC3_MAX, 2000); */ PARAM_DEFINE_FLOAT(RC3_REV, 1.0f); -/** - * RC channel 3 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @unit us - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC3_DZ, 10.0f); - /** * RC channel 4 minimum * @@ -270,18 +234,6 @@ PARAM_DEFINE_FLOAT(RC4_MAX, 2000); */ PARAM_DEFINE_FLOAT(RC4_REV, 1.0f); -/** - * RC channel 4 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @unit us - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC4_DZ, 10.0f); - /** * RC channel 5 minimum * @@ -331,17 +283,6 @@ PARAM_DEFINE_FLOAT(RC5_MAX, 2000); */ PARAM_DEFINE_FLOAT(RC5_REV, 1.0f); -/** - * RC channel 5 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC5_DZ, 10.0f); - /** * RC channel 6 minimum * @@ -391,17 +332,6 @@ PARAM_DEFINE_FLOAT(RC6_MAX, 2000); */ PARAM_DEFINE_FLOAT(RC6_REV, 1.0f); -/** - * RC channel 6 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC6_DZ, 10.0f); - /** * RC channel 7 minimum * @@ -451,17 +381,6 @@ PARAM_DEFINE_FLOAT(RC7_MAX, 2000); */ PARAM_DEFINE_FLOAT(RC7_REV, 1.0f); -/** - * RC channel 7 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC7_DZ, 10.0f); - /** * RC channel 8 minimum * @@ -511,17 +430,6 @@ PARAM_DEFINE_FLOAT(RC8_MAX, 2000); */ PARAM_DEFINE_FLOAT(RC8_REV, 1.0f); -/** - * RC channel 8 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC8_DZ, 10.0f); - /** * RC channel 9 minimum * @@ -571,17 +479,6 @@ PARAM_DEFINE_FLOAT(RC9_MAX, 2000); */ PARAM_DEFINE_FLOAT(RC9_REV, 1.0f); -/** - * RC channel 9 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC9_DZ, 0.0f); - /** * RC channel 10 minimum * @@ -631,17 +528,6 @@ PARAM_DEFINE_FLOAT(RC10_MAX, 2000); */ PARAM_DEFINE_FLOAT(RC10_REV, 1.0f); -/** - * RC channel 10 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC10_DZ, 0.0f); - /** * RC channel 11 minimum * @@ -691,17 +577,6 @@ PARAM_DEFINE_FLOAT(RC11_MAX, 2000); */ PARAM_DEFINE_FLOAT(RC11_REV, 1.0f); -/** - * RC channel 11 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC11_DZ, 0.0f); - /** * RC channel 12 minimum * @@ -751,17 +626,6 @@ PARAM_DEFINE_FLOAT(RC12_MAX, 2000); */ PARAM_DEFINE_FLOAT(RC12_REV, 1.0f); -/** - * RC channel 12 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC12_DZ, 0.0f); - /** * RC channel 13 minimum * @@ -811,17 +675,6 @@ PARAM_DEFINE_FLOAT(RC13_MAX, 2000); */ PARAM_DEFINE_FLOAT(RC13_REV, 1.0f); -/** - * RC channel 13 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC13_DZ, 0.0f); - /** * RC channel 14 minimum * @@ -871,17 +724,6 @@ PARAM_DEFINE_FLOAT(RC14_MAX, 2000); */ PARAM_DEFINE_FLOAT(RC14_REV, 1.0f); -/** - * RC channel 14 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC14_DZ, 0.0f); - /** * RC channel 15 minimum * @@ -931,17 +773,6 @@ PARAM_DEFINE_FLOAT(RC15_MAX, 2000); */ PARAM_DEFINE_FLOAT(RC15_REV, 1.0f); -/** - * RC channel 15 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC15_DZ, 0.0f); - /** * RC channel 16 minimum * @@ -991,17 +822,6 @@ PARAM_DEFINE_FLOAT(RC16_MAX, 2000); */ PARAM_DEFINE_FLOAT(RC16_REV, 1.0f); -/** - * RC channel 16 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC16_DZ, 0.0f); - /** * RC channel 17 minimum * @@ -1051,17 +871,6 @@ PARAM_DEFINE_FLOAT(RC17_MAX, 2000); */ PARAM_DEFINE_FLOAT(RC17_REV, 1.0f); -/** - * RC channel 17 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC17_DZ, 0.0f); - /** * RC channel 18 minimum * @@ -1111,17 +920,6 @@ PARAM_DEFINE_FLOAT(RC18_MAX, 2000); */ PARAM_DEFINE_FLOAT(RC18_REV, 1.0f); -/** - * RC channel 18 dead zone - * - * The +- range of this value around the trim value will be considered as zero. - * - * @min 0.0 - * @max 100.0 - * @group Radio Calibration - */ -PARAM_DEFINE_FLOAT(RC18_DZ, 0.0f); - /** * RC channel count * diff --git a/src/modules/rc_update/rc_update.cpp b/src/modules/rc_update/rc_update.cpp index 7c8960a357..52d65bf915 100644 --- a/src/modules/rc_update/rc_update.cpp +++ b/src/modules/rc_update/rc_update.cpp @@ -87,10 +87,6 @@ RCUpdate::RCUpdate() : /* channel reverse */ snprintf(nbuf, sizeof(nbuf), "RC%d_REV", i + 1); _parameter_handles.rev[i] = param_find(nbuf); - - /* channel deadzone */ - snprintf(nbuf, sizeof(nbuf), "RC%d_DZ", i + 1); - _parameter_handles.dz[i] = param_find(nbuf); } // RC to parameter mapping for changing parameters with RC @@ -145,10 +141,6 @@ void RCUpdate::updateParams() float rev = 0.f; param_get(_parameter_handles.rev[i], &rev); _parameters.rev[i] = (rev < 0.f); - - float dz = 0.f; - param_get(_parameter_handles.dz[i], &dz); - _parameters.dz[i] = dz; } for (int i = 0; i < rc_parameter_map_s::RC_PARAM_MAP_NCHAN; i++) { @@ -449,12 +441,9 @@ void RCUpdate::Run() const float min = _parameters.min[i]; const float trim = _parameters.trim[i]; const float max = _parameters.max[i]; - const float dz = _parameters.dz[i]; // piecewise linear function to apply RC calibration - _rc.channels[i] = math::interpolateNXY(value, - {min, trim - dz, trim + dz, max}, - {-1.f, 0.f, 0.f, 1.f}); + _rc.channels[i] = math::interpolateNXY(value, {min, trim, max}, {-1.f, 0.f, 1.f}); if (_parameters.rev[i]) { _rc.channels[i] = -_rc.channels[i]; @@ -725,11 +714,11 @@ int RCUpdate::print_status() PX4_INFO_RAW("Running\n"); if (_channel_count_max > 0) { - PX4_INFO_RAW(" # MIN MAX TRIM DZ REV\n"); + PX4_INFO_RAW(" # MIN MAX TRIM REV\n"); for (int i = 0; i < _channel_count_max; i++) { - PX4_INFO_RAW("%2d %4d %4d %4d %3d %3d\n", i, _parameters.min[i], _parameters.max[i], _parameters.trim[i], - _parameters.dz[i], _parameters.rev[i]); + PX4_INFO_RAW("%2d %4d %4d %4d %3d\n", + i, _parameters.min[i], _parameters.max[i], _parameters.trim[i], _parameters.rev[i]); } } diff --git a/src/modules/rc_update/rc_update.h b/src/modules/rc_update/rc_update.h index 812408debe..2ebdebb4c0 100644 --- a/src/modules/rc_update/rc_update.h +++ b/src/modules/rc_update/rc_update.h @@ -148,7 +148,6 @@ protected: uint16_t min[RC_MAX_CHAN_COUNT]; uint16_t trim[RC_MAX_CHAN_COUNT]; uint16_t max[RC_MAX_CHAN_COUNT]; - uint16_t dz[RC_MAX_CHAN_COUNT]; bool rev[RC_MAX_CHAN_COUNT]; int32_t rc_map_param[rc_parameter_map_s::RC_PARAM_MAP_NCHAN]; @@ -159,7 +158,6 @@ protected: param_t trim[RC_MAX_CHAN_COUNT]; param_t max[RC_MAX_CHAN_COUNT]; param_t rev[RC_MAX_CHAN_COUNT]; - param_t dz[RC_MAX_CHAN_COUNT]; param_t rc_map_param[rc_parameter_map_s::RC_PARAM_MAP_NCHAN]; param_t rc_param[rc_parameter_map_s::RC_PARAM_MAP_NCHAN]; /**< param handles for the parameters which are bound From 7706aae67dac477111c3ba7bb792779ce2ac7cfb Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Tue, 14 Oct 2025 17:36:48 +0200 Subject: [PATCH 26/71] mavlink_receiver: only switch outgoing MAVLink version to 2 if it was 1 before to avoid the message that comes with it being spammed. --- src/modules/mavlink/mavlink_receiver.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/mavlink/mavlink_receiver.cpp b/src/modules/mavlink/mavlink_receiver.cpp index 2aaad09a19..49ce052c01 100644 --- a/src/modules/mavlink/mavlink_receiver.cpp +++ b/src/modules/mavlink/mavlink_receiver.cpp @@ -3229,7 +3229,8 @@ MavlinkReceiver::run() if (mavlink_parse_char(_mavlink.get_channel(), buf[i], &msg, &_status)) { // If we receive a complete MAVLink 2 packet, also switch the outgoing protocol version - if (!(_mavlink.get_status()->flags & MAVLINK_STATUS_FLAG_IN_MAVLINK1)) { + if (!(_mavlink.get_status()->flags & MAVLINK_STATUS_FLAG_IN_MAVLINK1) + && (_mavlink.get_status()->flags & MAVLINK_STATUS_FLAG_OUT_MAVLINK1)) { PX4_INFO("Upgrade to MAVLink v2 because of incoming packet"); _mavlink.set_protocol_version(2); } From e8fbc30cf62ed64f76a6c5e2a49d2962cc2195cd Mon Sep 17 00:00:00 2001 From: Alexander Lerach Date: Wed, 8 Oct 2025 15:58:21 +0200 Subject: [PATCH 27/71] boards: add auterion v6x target --- Makefile | 2 + .../init.d/airframes/4017_nxp_hovergames | 1 + .../airframes/4020_holybro_px4vision_v1_5 | 1 + .../init.d/airframes/4041_beta75x | 1 + .../init.d/airframes/4061_atl_mantis_edu | 1 + ROMFS/px4fmu_common/init.d/airframes/4071_ifo | 1 + .../px4fmu_common/init.d/airframes/4073_ifo-s | 1 + .../init.d/airframes/4601_droneblocks_dexi_5 | 1 + .../init.d/airframes/4901_crazyflie21 | 1 + .../extras/auterion_fmu-v6s_bootloader.bin | Bin 32944 -> 32888 bytes boards/auterion/fmu-v6x/bootloader.px4board | 3 + boards/auterion/fmu-v6x/cmake/upload.cmake | 49 ++ boards/auterion/fmu-v6x/default.px4board | 101 ++++ .../extras/auterion_fmu-v6x_bootloader.bin | Bin 0 -> 46892 bytes .../fmu-v6x/extras/px4_io-v2_default.bin | Bin 0 -> 40160 bytes boards/auterion/fmu-v6x/firmware.prototype | 13 + .../auterion/fmu-v6x/flash-analysis.px4board | 1 + .../auterion/fmu-v6x/init/rc.board_defaults | 31 + boards/auterion/fmu-v6x/init/rc.board_mavlink | 10 + boards/auterion/fmu-v6x/init/rc.board_sensors | 93 +++ boards/auterion/fmu-v6x/multicopter.px4board | 13 + boards/auterion/fmu-v6x/nuttx-config/Kconfig | 17 + .../fmu-v6x/nuttx-config/bootloader/defconfig | 95 +++ .../fmu-v6x/nuttx-config/include/board.h | 566 ++++++++++++++++++ .../nuttx-config/include/board_dma_map.h | 87 +++ .../fmu-v6x/nuttx-config/nsh/defconfig | 332 ++++++++++ .../nuttx-config/scripts/bootloader_script.ld | 215 +++++++ .../scripts/flash-analysis-script.ld | 6 + .../fmu-v6x/nuttx-config/scripts/script.ld | 229 +++++++ .../fmu-v6x/performance-test.px4board | 31 + boards/auterion/fmu-v6x/rover.px4board | 17 + boards/auterion/fmu-v6x/spacecraft.px4board | 21 + boards/auterion/fmu-v6x/src/CMakeLists.txt | 76 +++ boards/auterion/fmu-v6x/src/board_config.h | 520 ++++++++++++++++ boards/auterion/fmu-v6x/src/bootloader_main.c | 62 ++ boards/auterion/fmu-v6x/src/can.c | 142 +++++ boards/auterion/fmu-v6x/src/hw_config.h | 128 ++++ boards/auterion/fmu-v6x/src/i2c.cpp | 41 ++ boards/auterion/fmu-v6x/src/init.cpp | 299 +++++++++ boards/auterion/fmu-v6x/src/led.c | 235 ++++++++ boards/auterion/fmu-v6x/src/mtd.cpp | 136 +++++ boards/auterion/fmu-v6x/src/sdio.c | 177 ++++++ boards/auterion/fmu-v6x/src/spi.cpp | 62 ++ boards/auterion/fmu-v6x/src/timer_config.cpp | 80 +++ boards/auterion/fmu-v6x/src/usb.c | 105 ++++ boards/auterion/fmu-v6x/uuv.px4board | 23 + boards/auterion/fmu-v6x/zenoh.px4board | 4 + boards/px4/fmu-v6x/default.px4board | 2 - boards/px4/fmu-v6x/init/rc.board_defaults | 38 +- boards/px4/fmu-v6x/init/rc.board_mavlink | 13 - boards/px4/fmu-v6x/init/rc.board_sensors | 55 +- boards/px4/fmu-v6x/nuttx-config/nsh/defconfig | 1 - boards/px4/fmu-v6x/src/CMakeLists.txt | 1 - boards/px4/fmu-v6x/src/board_config.h | 5 - boards/px4/fmu-v6x/src/init.cpp | 8 - boards/px4/fmu-v6xrt/default.px4board | 1 - boards/px4/fmu-v6xrt/init/rc.board_sensors | 16 +- 57 files changed, 4058 insertions(+), 112 deletions(-) create mode 100644 boards/auterion/fmu-v6x/bootloader.px4board create mode 100644 boards/auterion/fmu-v6x/cmake/upload.cmake create mode 100644 boards/auterion/fmu-v6x/default.px4board create mode 100755 boards/auterion/fmu-v6x/extras/auterion_fmu-v6x_bootloader.bin create mode 100755 boards/auterion/fmu-v6x/extras/px4_io-v2_default.bin create mode 100644 boards/auterion/fmu-v6x/firmware.prototype create mode 100644 boards/auterion/fmu-v6x/flash-analysis.px4board create mode 100644 boards/auterion/fmu-v6x/init/rc.board_defaults create mode 100644 boards/auterion/fmu-v6x/init/rc.board_mavlink create mode 100644 boards/auterion/fmu-v6x/init/rc.board_sensors create mode 100644 boards/auterion/fmu-v6x/multicopter.px4board create mode 100644 boards/auterion/fmu-v6x/nuttx-config/Kconfig create mode 100644 boards/auterion/fmu-v6x/nuttx-config/bootloader/defconfig create mode 100644 boards/auterion/fmu-v6x/nuttx-config/include/board.h create mode 100644 boards/auterion/fmu-v6x/nuttx-config/include/board_dma_map.h create mode 100644 boards/auterion/fmu-v6x/nuttx-config/nsh/defconfig create mode 100644 boards/auterion/fmu-v6x/nuttx-config/scripts/bootloader_script.ld create mode 100644 boards/auterion/fmu-v6x/nuttx-config/scripts/flash-analysis-script.ld create mode 100644 boards/auterion/fmu-v6x/nuttx-config/scripts/script.ld create mode 100644 boards/auterion/fmu-v6x/performance-test.px4board create mode 100644 boards/auterion/fmu-v6x/rover.px4board create mode 100644 boards/auterion/fmu-v6x/spacecraft.px4board create mode 100644 boards/auterion/fmu-v6x/src/CMakeLists.txt create mode 100644 boards/auterion/fmu-v6x/src/board_config.h create mode 100644 boards/auterion/fmu-v6x/src/bootloader_main.c create mode 100644 boards/auterion/fmu-v6x/src/can.c create mode 100644 boards/auterion/fmu-v6x/src/hw_config.h create mode 100644 boards/auterion/fmu-v6x/src/i2c.cpp create mode 100644 boards/auterion/fmu-v6x/src/init.cpp create mode 100644 boards/auterion/fmu-v6x/src/led.c create mode 100644 boards/auterion/fmu-v6x/src/mtd.cpp create mode 100644 boards/auterion/fmu-v6x/src/sdio.c create mode 100644 boards/auterion/fmu-v6x/src/spi.cpp create mode 100644 boards/auterion/fmu-v6x/src/timer_config.cpp create mode 100644 boards/auterion/fmu-v6x/src/usb.c create mode 100644 boards/auterion/fmu-v6x/uuv.px4board create mode 100644 boards/auterion/fmu-v6x/zenoh.px4board delete mode 100644 boards/px4/fmu-v6x/init/rc.board_mavlink diff --git a/Makefile b/Makefile index 996ffd47e5..80e0ee1f64 100644 --- a/Makefile +++ b/Makefile @@ -325,6 +325,8 @@ bootloaders_update: \ ark_fmu-v6x_bootloader \ ark_fpv_bootloader \ ark_pi6x_bootloader \ + auterion_fmu-v6s_bootloader \ + auterion_fmu-v6x_bootloader \ cuav_nora_bootloader \ cuav_x7pro_bootloader \ cuav_7-nano_bootloader \ diff --git a/ROMFS/px4fmu_common/init.d/airframes/4017_nxp_hovergames b/ROMFS/px4fmu_common/init.d/airframes/4017_nxp_hovergames index 150c7410d1..7830e5487e 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4017_nxp_hovergames +++ b/ROMFS/px4fmu_common/init.d/airframes/4017_nxp_hovergames @@ -9,6 +9,7 @@ # @board px4_fmu-v5x exclude # @board auterion_fmu-v6s exclude # @board ark_fmu-v6x exclude +# @board auterion_fmu-v6x exclude # @board px4_fmu-v6x exclude # @board bitcraze_crazyflie exclude # diff --git a/ROMFS/px4fmu_common/init.d/airframes/4020_holybro_px4vision_v1_5 b/ROMFS/px4fmu_common/init.d/airframes/4020_holybro_px4vision_v1_5 index c1b3c9a9ba..bc9ff44679 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4020_holybro_px4vision_v1_5 +++ b/ROMFS/px4fmu_common/init.d/airframes/4020_holybro_px4vision_v1_5 @@ -7,6 +7,7 @@ # # @board px4_fmu-v2 exclude # @board bitcraze_crazyflie exclude +# @board auterion_fmu-v6x exclude # @board px4_fmu-v6x exclude # diff --git a/ROMFS/px4fmu_common/init.d/airframes/4041_beta75x b/ROMFS/px4fmu_common/init.d/airframes/4041_beta75x index 0e9b9df654..5dbd5ea3ee 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4041_beta75x +++ b/ROMFS/px4fmu_common/init.d/airframes/4041_beta75x @@ -15,6 +15,7 @@ # @board px4_fmu-v5x exclude # @board auterion_fmu-v6s exclude # @board ark_fmu-v6x exclude +# @board auterion_fmu-v6x exclude # @board px4_fmu-v6x exclude # @board px4_fmu-v6xrt exclude # @board bitcraze_crazyflie exclude diff --git a/ROMFS/px4fmu_common/init.d/airframes/4061_atl_mantis_edu b/ROMFS/px4fmu_common/init.d/airframes/4061_atl_mantis_edu index fe40b95aa0..0d8ddaf2d8 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4061_atl_mantis_edu +++ b/ROMFS/px4fmu_common/init.d/airframes/4061_atl_mantis_edu @@ -10,6 +10,7 @@ # @board cuav_x7pro exclude # @board px4_fmu-v4pro exclude # @board px4_fmu-v5x exclude +# @board auterion_fmu-v6x exclude # @board px4_fmu-v6x exclude # diff --git a/ROMFS/px4fmu_common/init.d/airframes/4071_ifo b/ROMFS/px4fmu_common/init.d/airframes/4071_ifo index 141ca861c4..25353b2a4c 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4071_ifo +++ b/ROMFS/px4fmu_common/init.d/airframes/4071_ifo @@ -12,6 +12,7 @@ # @board px4_fmu-v4pro exclude # @board px4_fmu-v5 exclude # @board px4_fmu-v5x exclude +# @board auterion_fmu-v6x exclude # @board px4_fmu-v6x exclude # @board bitcraze_crazyflie exclude # @board cuav_x7pro exclude diff --git a/ROMFS/px4fmu_common/init.d/airframes/4073_ifo-s b/ROMFS/px4fmu_common/init.d/airframes/4073_ifo-s index 276e1b45db..ecc7ed5078 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4073_ifo-s +++ b/ROMFS/px4fmu_common/init.d/airframes/4073_ifo-s @@ -10,6 +10,7 @@ # @board px4_fmu-v4pro exclude # @board px4_fmu-v5 exclude # @board px4_fmu-v5x exclude +# @board auterion_fmu-v6x exclude # @board px4_fmu-v6x exclude # @board bitcraze_crazyflie exclude # @board cuav_x7pro exclude diff --git a/ROMFS/px4fmu_common/init.d/airframes/4601_droneblocks_dexi_5 b/ROMFS/px4fmu_common/init.d/airframes/4601_droneblocks_dexi_5 index 38ffa06896..1d5b47608d 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4601_droneblocks_dexi_5 +++ b/ROMFS/px4fmu_common/init.d/airframes/4601_droneblocks_dexi_5 @@ -14,6 +14,7 @@ # @board px4_fmu-v4pro exclude # @board px4_fmu-v5 exclude # @board px4_fmu-v5x exclude +# @board auterion_fmu-v6x exclude # @board px4_fmu-v6x exclude # @board bitcraze_crazyflie exclude # @board diatone_mamba-f405-mk2 exclude diff --git a/ROMFS/px4fmu_common/init.d/airframes/4901_crazyflie21 b/ROMFS/px4fmu_common/init.d/airframes/4901_crazyflie21 index 85b045e84a..3a69a846af 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/4901_crazyflie21 +++ b/ROMFS/px4fmu_common/init.d/airframes/4901_crazyflie21 @@ -13,6 +13,7 @@ # @board px4_fmu-v4pro exclude # @board px4_fmu-v5 exclude # @board px4_fmu-v5x exclude +# @board auterion_fmu-v6x exclude # @board px4_fmu-v6x exclude # @board diatone_mamba-f405-mk2 exclude # diff --git a/boards/auterion/fmu-v6s/extras/auterion_fmu-v6s_bootloader.bin b/boards/auterion/fmu-v6s/extras/auterion_fmu-v6s_bootloader.bin index ab4a99d348b866fbab23f634dc01159b2422e2ea..2c79c4b1bab5367e36ca229181ada79f098e7877 100755 GIT binary patch delta 21450 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 delta 21505 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

hqA2S@&>c4*J=x9*-48i7W=IQiZ5)j zTh>$h%|Leo+?e}@)vPI+Z^&Y=S;!uICM#=AK}dCH@ip&>L{o|jjrxs1abolK0Z-9- z|IWhbG&Dcc^G={MhVb$;Iav#>elMD1zsX^TKd|=cEt;xz3|Z`Di#V%-Io6j$q{V|A zXD4z1gd(4rKfmBI%tfH0UKy1}4#FtJw)UU0Vog`mCrT4BxLJQ$&{X&bY zBq(I%hmnvsN}pGvXTlxPwcGxkh+;dWQV>gFB_ZZDfUYkBmDK!Wv~nFs>c<(;Q>^!= z07_%-6er+3ooVvc^vHV6kj3UQNICCMahErn{9q9%4h&Hxjjjj@1i<}+E1JcYvyl4K z+@5XH_vkmmO963RNJsWA1xnVbtcRhCH;CYbgpoAkIULX)M9^p zEFF++Y{4zQ%g$wy=rWbsEA1w+)*ra6g`yT)ew=qBfu3MgZI=yvrQUKna-3*%rR49B zj_d_L;p`V&9FK(mvLC+auAnBFZ$E~pKS)Q0%3JzB_iH0ITjCs-HH%Hy%NSg@UFQxB zR6T*|6I^OMs+Br9n=q&5tBesIv2`pv%kenQC2ioIs7bC;JNG%>sP*qmkL0yecAe*J zV?W+)xrfjsH>Y=s(%cIVc?D55t%;W;R`HsNH@9>exrPar^|2XrTI2Z$}hOIn3Fg z&B2Rzh|jFN^t(psq^y^Og`Ec@l|6fGFJ`%9=_WjoU{_XM+?i#^%ug=W7}K~g2Z6#C zC5nr#_`{sZj}(>0@_fenQ%b5qtXTO@_-3Ff{^3h+1>6bJsJf-B*toX6Bvr0<-K)~$ zBe&|zKu<=gXh`g=?hiY@S(~`=5;<5A7q?UiZT%Y`h$VlbCafGkp9$3GR3IfqQsnV*apaqHTC)VlX^BbMD3Ax%0EFqh@U3 z$YDfZ5CA|VhWr(Y{xp#Bh;ACN{KJC&L0+2W3%4zD^?s0PN{CVIT z_zN+#9|3yk2p|){4o3=U{TR^ayMaD+6lkI=Up{;sXn7&+=>dun8`T$N(}lLC3&1zt z?*sZmFVHvjeED0wKn)!#zC6kJAlN^X;we-)i-Kf2?D)v%S52 zv~w6_0CQ>K>1MuhA5Y>~b}S3vSVqReH;xuB1LTQoI0OEp<7KATP$fHY)~GXYEk@+! zO>PkLn&C3zSLAB{p8T`|HY@@6t5z_KT?B* AwEzGB diff --git a/boards/auterion/fmu-v6x/bootloader.px4board b/boards/auterion/fmu-v6x/bootloader.px4board new file mode 100644 index 0000000000..19b6e662be --- /dev/null +++ b/boards/auterion/fmu-v6x/bootloader.px4board @@ -0,0 +1,3 @@ +CONFIG_BOARD_TOOLCHAIN="arm-none-eabi" +CONFIG_BOARD_ARCHITECTURE="cortex-m7" +CONFIG_BOARD_ROMFSROOT="" diff --git a/boards/auterion/fmu-v6x/cmake/upload.cmake b/boards/auterion/fmu-v6x/cmake/upload.cmake new file mode 100644 index 0000000000..7319b46df3 --- /dev/null +++ b/boards/auterion/fmu-v6x/cmake/upload.cmake @@ -0,0 +1,49 @@ +############################################################################ +# +# Copyright (c) 2023 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + + +set(PX4_FW_NAME ${PX4_BINARY_DIR}/${PX4_BOARD_VENDOR}_${PX4_BOARD_MODEL}_${PX4_BOARD_LABEL}.px4) + +add_custom_target(upload_skynode_usb + COMMAND ${PX4_SOURCE_DIR}/Tools/auterion/upload_skynode.sh --file=${PX4_FW_NAME} + DEPENDS ${PX4_FW_NAME} + COMMENT "Uploading PX4" + USES_TERMINAL +) + +add_custom_target(upload_skynode_wifi + COMMAND ${PX4_SOURCE_DIR}/Tools/auterion/upload_skynode.sh --file=${PX4_FW_NAME} --wifi + DEPENDS ${PX4_FW_NAME} + COMMENT "Uploading PX4" + USES_TERMINAL +) diff --git a/boards/auterion/fmu-v6x/default.px4board b/boards/auterion/fmu-v6x/default.px4board new file mode 100644 index 0000000000..dc58fb1c88 --- /dev/null +++ b/boards/auterion/fmu-v6x/default.px4board @@ -0,0 +1,101 @@ +CONFIG_BOARD_TOOLCHAIN="arm-none-eabi" +CONFIG_BOARD_ARCHITECTURE="cortex-m7" +CONFIG_BOARD_ETHERNET=y +CONFIG_BOARD_SERIAL_GPS1="/dev/ttyS0" +CONFIG_BOARD_SERIAL_GPS2="/dev/ttyS7" +CONFIG_BOARD_SERIAL_TEL1="/dev/ttyS6" +CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS4" +CONFIG_BOARD_SERIAL_TEL3="/dev/ttyS1" +CONFIG_BOARD_SERIAL_EXT2="/dev/ttyS3" +CONFIG_BOARD_SERIAL_RC="/dev/ttyS5" +CONFIG_DRIVERS_ADC_ADS1115=y +CONFIG_DRIVERS_ADC_BOARD_ADC=y +CONFIG_DRIVERS_BAROMETER_BMP388=y +CONFIG_DRIVERS_CAMERA_CAPTURE=y +CONFIG_DRIVERS_CAMERA_TRIGGER=y +CONFIG_DRIVERS_CDCACM_AUTOSTART=y +CONFIG_COMMON_DIFFERENTIAL_PRESSURE=y +CONFIG_DRIVERS_DIFFERENTIAL_PRESSURE_AUAV=y +CONFIG_COMMON_DISTANCE_SENSOR=y +CONFIG_DRIVERS_DSHOT=y +CONFIG_DRIVERS_GNSS_SEPTENTRIO=y +CONFIG_DRIVERS_GPIO_MCP23009=y +CONFIG_DRIVERS_GPS=y +CONFIG_DRIVERS_HEATER=y +CONFIG_DRIVERS_IMU_BOSCH_BMI088=y +CONFIG_DRIVERS_IMU_INVENSENSE_ICM20602=y +CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P=y +CONFIG_COMMON_LIGHT=y +CONFIG_COMMON_MAGNETOMETER=y +CONFIG_DRIVERS_OSD_MSP_OSD=y +CONFIG_DRIVERS_POWER_MONITOR_INA226=y +CONFIG_DRIVERS_POWER_MONITOR_INA228=y +CONFIG_DRIVERS_POWER_MONITOR_INA238=y +CONFIG_DRIVERS_POWER_MONITOR_PM_SELECTOR_AUTERION=y +CONFIG_DRIVERS_PWM_INPUT=y +CONFIG_DRIVERS_PWM_OUT=y +CONFIG_DRIVERS_PX4IO=y +CONFIG_COMMON_RC=y +CONFIG_DRIVERS_SAFETY_BUTTON=y +CONFIG_DRIVERS_TONE_ALARM=y +CONFIG_DRIVERS_UAVCAN=y +CONFIG_BOARD_UAVCAN_TIMER_OVERRIDE=2 +CONFIG_MODULES_AIRSPEED_SELECTOR=y +CONFIG_MODULES_BATTERY_STATUS=y +CONFIG_MODULES_CAMERA_FEEDBACK=y +CONFIG_MODULES_COMMANDER=y +CONFIG_MODULES_CONTROL_ALLOCATOR=y +CONFIG_MODULES_DATAMAN=y +CONFIG_MODULES_EKF2=y +CONFIG_MODULES_ESC_BATTERY=y +CONFIG_MODULES_EVENTS=y +CONFIG_MODULES_FLIGHT_MODE_MANAGER=y +CONFIG_MODULES_FW_ATT_CONTROL=y +CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=y +CONFIG_MODULES_FW_MODE_MANAGER=y +CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=y +CONFIG_MODULES_FW_RATE_CONTROL=y +CONFIG_MODULES_GIMBAL=y +CONFIG_MODULES_GYRO_CALIBRATION=y +CONFIG_MODULES_HARDFAULT_STREAM=y +CONFIG_MODULES_LAND_DETECTOR=y +CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=y +CONFIG_MODULES_LOAD_MON=y +CONFIG_MODULES_LOGGER=y +CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y +CONFIG_MODULES_MANUAL_CONTROL=y +CONFIG_MODULES_MAVLINK=y +CONFIG_MAVLINK_DIALECT="development" +CONFIG_MODULES_MC_ATT_CONTROL=y +CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y +CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y +CONFIG_MODULES_MC_POS_CONTROL=y +CONFIG_MODULES_MC_RATE_CONTROL=y +CONFIG_MODULES_NAVIGATOR=y +CONFIG_MODE_NAVIGATOR_VTOL_TAKEOFF=y +CONFIG_NUM_MISSION_ITMES_SUPPORTED=1000 +CONFIG_MODULES_RC_UPDATE=y +CONFIG_MODULES_SENSORS=y +CONFIG_MODULES_TEMPERATURE_COMPENSATION=y +CONFIG_MODULES_UXRCE_DDS_CLIENT=y +CONFIG_MODULES_VTOL_ATT_CONTROL=y +CONFIG_SYSTEMCMDS_ACTUATOR_TEST=y +CONFIG_SYSTEMCMDS_BSONDUMP=y +CONFIG_SYSTEMCMDS_DMESG=y +CONFIG_SYSTEMCMDS_HARDFAULT_LOG=y +CONFIG_SYSTEMCMDS_I2CDETECT=y +CONFIG_SYSTEMCMDS_LED_CONTROL=y +CONFIG_SYSTEMCMDS_MFT=y +CONFIG_SYSTEMCMDS_MTD=y +CONFIG_SYSTEMCMDS_NETMAN=y +CONFIG_SYSTEMCMDS_NSHTERM=y +CONFIG_SYSTEMCMDS_PARAM=y +CONFIG_SYSTEMCMDS_PERF=y +CONFIG_SYSTEMCMDS_REBOOT=y +CONFIG_SYSTEMCMDS_SYSTEM_TIME=y +CONFIG_SYSTEMCMDS_TOP=y +CONFIG_SYSTEMCMDS_TOPIC_LISTENER=y +CONFIG_SYSTEMCMDS_TUNE_CONTROL=y +CONFIG_SYSTEMCMDS_UORB=y +CONFIG_SYSTEMCMDS_VER=y +CONFIG_SYSTEMCMDS_WORK_QUEUE=y diff --git a/boards/auterion/fmu-v6x/extras/auterion_fmu-v6x_bootloader.bin b/boards/auterion/fmu-v6x/extras/auterion_fmu-v6x_bootloader.bin new file mode 100755 index 0000000000000000000000000000000000000000..c48956fc9e34e53237080061365a4f7f60335131 GIT binary patch literal 46892 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

Dyxoqw$V+NkROM% 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%0Dr&j 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 literal 0 HcmV?d00001 diff --git a/boards/auterion/fmu-v6x/firmware.prototype b/boards/auterion/fmu-v6x/firmware.prototype new file mode 100644 index 0000000000..644953a9e1 --- /dev/null +++ b/boards/auterion/fmu-v6x/firmware.prototype @@ -0,0 +1,13 @@ +{ + "board_id": 53, + "magic": "AutFWv1", + "description": "Firmware for the AutFMUv6X board", + "image": "", + "build_time": 0, + "summary": "AutFMUv6X", + "version": "0.1", + "image_size": 0, + "image_maxsize": 1966080, + "git_identity": "", + "board_revision": 0 +} diff --git a/boards/auterion/fmu-v6x/flash-analysis.px4board b/boards/auterion/fmu-v6x/flash-analysis.px4board new file mode 100644 index 0000000000..30717ad93c --- /dev/null +++ b/boards/auterion/fmu-v6x/flash-analysis.px4board @@ -0,0 +1 @@ +CONFIG_BOARD_LINKER_PREFIX="flash-analysis" diff --git a/boards/auterion/fmu-v6x/init/rc.board_defaults b/boards/auterion/fmu-v6x/init/rc.board_defaults new file mode 100644 index 0000000000..f371bbee78 --- /dev/null +++ b/boards/auterion/fmu-v6x/init/rc.board_defaults @@ -0,0 +1,31 @@ +#!/bin/sh +# +# board specific defaults +#------------------------------------------------------------------------------ + +# By disabling all 3 INA modules, we use the +# i2c_launcher instead. +param set-default SENS_EN_INA238 0 +param set-default SENS_EN_INA228 0 +param set-default SENS_EN_INA226 0 + +# Skynode: use the "custom participant", IP=10.41.10.1 config for uxrce_dds_client +param set-default UXRCE_DDS_PTCFG 2 +param set-default UXRCE_DDS_AG_IP 170461697 +param set-default UXRCE_DDS_CFG 1000 + +# The buzzer draws too much power (0.2A) on the GPS power rail (limit 0.45A). +param set-default CBRK_BUZZER 782097 + +safety_button start + +# GPIO Expander driver on external I2C3 +if ver hwbasecmp 009 010 011 +then + # No USB + mcp23009 start -b 3 -X -D 0xf0 -O 0xf0 -P 0x0f -U 10 +fi +if ver hwbasecmp 00a 008 +then + mcp23009 start -b 3 -X -D 0xf1 -O 0xf0 -P 0x0f -U 10 +fi diff --git a/boards/auterion/fmu-v6x/init/rc.board_mavlink b/boards/auterion/fmu-v6x/init/rc.board_mavlink new file mode 100644 index 0000000000..4952825bc4 --- /dev/null +++ b/boards/auterion/fmu-v6x/init/rc.board_mavlink @@ -0,0 +1,10 @@ +#!/bin/sh +# +# Auterion FMUv6X specific board MAVLink startup script. +#------------------------------------------------------------------------------ + +# start Mavlink on Telem2 +mavlink start -d /dev/ttyS4 -b 3000000 -r 290000 -m onboard_low_bandwidth -x -z + +# Ensure nothing else starts on TEL2 (ttyS4) +set PRT_TEL2_ 1 diff --git a/boards/auterion/fmu-v6x/init/rc.board_sensors b/boards/auterion/fmu-v6x/init/rc.board_sensors new file mode 100644 index 0000000000..162a0615ae --- /dev/null +++ b/boards/auterion/fmu-v6x/init/rc.board_sensors @@ -0,0 +1,93 @@ +#!/bin/sh +# +# Auterion FMUv6X specific board sensors init +#------------------------------------------------------------------------------ +set HAVE_PM2 yes +set INA_CONFIGURED no + +if mft query -q -k MFT -s MFT_PM2 -v 0 +then + set HAVE_PM2 no +fi +if param compare -s ADC_ADS1115_EN 1 +then + ads1115 start -X + board_adc start -n +else + board_adc start +fi + + +if param compare SENS_EN_INA226 1 +then + # Start Digital power monitors + ina226 -X -b 1 -t 1 -k start + + if [ $HAVE_PM2 = yes ] + then + ina226 -X -b 2 -t 2 -k start + fi + + set INA_CONFIGURED yes +fi + +if param compare SENS_EN_INA228 1 +then + # Start Digital power monitors + ina228 -X -b 1 -t 1 -k start + if [ $HAVE_PM2 = yes ] + then + ina228 -X -b 2 -t 2 -k start + fi + + set INA_CONFIGURED yes +fi + +if param compare SENS_EN_INA238 1 +then + # Start Digital power monitors + ina238 -X -b 1 -t 1 -k start + if [ $HAVE_PM2 = yes ] + then + ina238 -X -b 2 -t 2 -k start + fi + + set INA_CONFIGURED yes +fi + +#Start Auterion Power Module selector for Skynode boards +pm_selector_auterion start + +# Auterion's INA238 uses a shunt value of 0.0003 instead of 0.0005. +param set-default INA238_SHUNT 0.0003 + +# Internal SPI BMI088 +bmi088 -A -R 6 -s start +bmi088 -G -R 6 -s start + +# Internal SPI bus ICM42688p +icm42688p -R 12 -s start + +# Internal SPI bus ICM20602 +icm20602 -R 6 -s start + +# Internal magnetometer on I2C +bmm150 -I -R 0 start + +# External compass on GPS1/I2C1 (the 3rd external bus): standard Holybro Pixhawk 4 or CUAV V5 GPS/compass puck (with lights, safety button, and buzzer) +ist8310 -X -b 1 -R 10 start + +# Possible internal Baro +if param compare SENS_INT_BARO_EN 1 +then + bmp388 -I -a 0x77 start +fi + +#external baro +bmp388 -X start + +# Don't try to start external baro on I2C3 as it can conflict with the MS5525DSO airspeed sensor. +#ms5611 -X start + +unset INA_CONFIGURED +unset HAVE_PM2 diff --git a/boards/auterion/fmu-v6x/multicopter.px4board b/boards/auterion/fmu-v6x/multicopter.px4board new file mode 100644 index 0000000000..147297d55e --- /dev/null +++ b/boards/auterion/fmu-v6x/multicopter.px4board @@ -0,0 +1,13 @@ +CONFIG_COMMON_DIFFERENTIAL_PRESSURE=n +CONFIG_MODE_NAVIGATOR_VTOL_TAKEOFF=n +CONFIG_MODULES_AIRSPEED_SELECTOR=n +CONFIG_MODULES_FW_ATT_CONTROL=n +CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n +CONFIG_MODULES_FW_MODE_MANAGER=n +CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=n +CONFIG_MODULES_FW_RATE_CONTROL=n +CONFIG_MODULES_VTOL_ATT_CONTROL=n +CONFIG_COMMON_RC=y +# CONFIG_EKF2_SIDESLIP is not set +CONFIG_MODULES_SIMULATION_SIMULATOR_SIH=y +# CONFIG_SENSORS_VEHICLE_AIRSPEED is not set diff --git a/boards/auterion/fmu-v6x/nuttx-config/Kconfig b/boards/auterion/fmu-v6x/nuttx-config/Kconfig new file mode 100644 index 0000000000..bb33d3cfda --- /dev/null +++ b/boards/auterion/fmu-v6x/nuttx-config/Kconfig @@ -0,0 +1,17 @@ +# +# For a description of the syntax of this configuration file, +# see misc/tools/kconfig-language.txt. +# +config BOARD_HAS_PROBES + bool "Board provides GPIO or other Hardware for signaling to timing analyze." + default y + ---help--- + This board provides GPIO FMU-CH1-5, CAP1-6 as PROBE_1-11 to provide timing signals from selected drivers. + +config BOARD_USE_PROBES + bool "Enable the use the board provided FMU-CH1-5, CAP1-6 as PROBE_1-11" + default n + depends on BOARD_HAS_PROBES + + ---help--- + Select to use GPIO FMU-CH1-5, CAP1-6 to provide timing signals from selected drivers. diff --git a/boards/auterion/fmu-v6x/nuttx-config/bootloader/defconfig b/boards/auterion/fmu-v6x/nuttx-config/bootloader/defconfig new file mode 100644 index 0000000000..2c0231e294 --- /dev/null +++ b/boards/auterion/fmu-v6x/nuttx-config/bootloader/defconfig @@ -0,0 +1,95 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_DEV_CONSOLE is not set +# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set +# CONFIG_DISABLE_PTHREAD is not set +# CONFIG_SPI_EXCHANGE is not set +# CONFIG_STM32H7_SYSCFG is not set +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD_CUSTOM=y +CONFIG_ARCH_BOARD_CUSTOM_DIR="../../../../boards/auterion/fmu-v6x/nuttx-config" +CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y +CONFIG_ARCH_BOARD_CUSTOM_NAME="auterion" +CONFIG_ARCH_CHIP="stm32h7" +CONFIG_ARCH_CHIP_STM32H753II=y +CONFIG_ARCH_CHIP_STM32H7=y +CONFIG_ARCH_INTERRUPTSTACK=768 +CONFIG_ARMV7M_BASEPRI_WAR=y +CONFIG_ARMV7M_ICACHE=y +CONFIG_ARMV7M_MEMCPY=y +CONFIG_ARMV7M_USEBASEPRI=y +CONFIG_BOARDCTL=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_ASSERT_RESET_VALUE=0 +CONFIG_BOARD_INITTHREAD_PRIORITY=254 +CONFIG_BOARD_LATE_INITIALIZE=y +CONFIG_BOARD_LOOPSPERMSEC=95150 +CONFIG_BOARD_RESET_ON_ASSERT=2 +CONFIG_CDCACM=y +CONFIG_CDCACM_IFLOWCONTROL=y +CONFIG_CDCACM_PRODUCTID=0x0035 +CONFIG_CDCACM_PRODUCTSTR="Auterion BL FMU v6X.x" +CONFIG_CDCACM_RXBUFSIZE=600 +CONFIG_CDCACM_TXBUFSIZE=12000 +CONFIG_CDCACM_VENDORID=0x3185 +CONFIG_CDCACM_VENDORSTR="Auterion" +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEBUG_TCBINFO=y +CONFIG_DEFAULT_SMALL=y +CONFIG_EXPERIMENTAL=y +CONFIG_FDCLONE_DISABLE=y +CONFIG_FDCLONE_STDIO=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_IDLETHREAD_STACKSIZE=750 +CONFIG_INIT_ENTRYPOINT="bootloader_main" +CONFIG_INIT_STACKSIZE=3194 +CONFIG_LIBC_FLOATINGPOINT=y +CONFIG_LIBC_LONG_LONG=y +CONFIG_LIBC_STRERROR=y +CONFIG_MEMSET_64BIT=y +CONFIG_MEMSET_OPTSPEED=y +CONFIG_PREALLOC_TIMERS=50 +CONFIG_PTHREAD_MUTEX_ROBUST=y +CONFIG_PTHREAD_STACK_MIN=512 +CONFIG_RAM_SIZE=245760 +CONFIG_RAM_START=0x20010000 +CONFIG_RAW_BINARY=y +CONFIG_SERIAL_TERMIOS=y +CONFIG_SIG_DEFAULT=y +CONFIG_SIG_SIGALRM_ACTION=y +CONFIG_SIG_SIGUSR1_ACTION=y +CONFIG_SIG_SIGUSR2_ACTION=y +CONFIG_SPI=y +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=30 +CONFIG_START_MONTH=11 +CONFIG_STDIO_BUFFER_SIZE=32 +CONFIG_STM32H7_BKPSRAM=y +CONFIG_STM32H7_DMA1=y +CONFIG_STM32H7_DMA2=y +CONFIG_STM32H7_OTGFS=y +CONFIG_STM32H7_PROGMEM=y +CONFIG_STM32H7_SERIAL_DISABLE_REORDERING=y +CONFIG_STM32H7_TIM1=y +CONFIG_STM32H7_UART5=y +CONFIG_SYSTEMTICK_HOOK=y +CONFIG_SYSTEM_CDCACM=y +CONFIG_TASK_NAME_SIZE=24 +CONFIG_TTY_SIGINT=y +CONFIG_TTY_SIGINT_CHAR=0x03 +CONFIG_TTY_SIGTSTP=y +CONFIG_UART5_RXBUFSIZE=512 +CONFIG_UART5_RXDMA=y +CONFIG_UART5_TXBUFSIZE=512 +CONFIG_UART5_TXDMA=y +CONFIG_USBDEV=y +CONFIG_USBDEV_BUSPOWERED=y +CONFIG_USBDEV_MAXPOWER=500 +CONFIG_USEC_PER_TICK=1000 diff --git a/boards/auterion/fmu-v6x/nuttx-config/include/board.h b/boards/auterion/fmu-v6x/nuttx-config/include/board.h new file mode 100644 index 0000000000..7907eafad1 --- /dev/null +++ b/boards/auterion/fmu-v6x/nuttx-config/include/board.h @@ -0,0 +1,566 @@ +/************************************************************************************ + * nuttx-configs/px4_fmu-v6x/include/board.h + * + * Copyright (C) 2016-2019 Gregory Nutt. All rights reserved. + * Authors: David Sidrane + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ************************************************************************************/ +#ifndef __NUTTX_CONFIG_PX4_FMU_V6X_INCLUDE_BOARD_H +#define __NUTTX_CONFIG_PX4_FMU_V6X_INCLUDE_BOARD_H + +/************************************************************************************ + * Included Files + ************************************************************************************/ + +#include "board_dma_map.h" + +#include + +#ifndef __ASSEMBLY__ +# include +#endif + +#include "stm32_rcc.h" +#include "stm32_sdmmc.h" + +/************************************************************************************ + * Pre-processor Definitions + ************************************************************************************/ + +/* Clocking *************************************************************************/ +/* The px4_fmu-v6X board provides the following clock sources: + * + * X1: 16 MHz crystal for HSE + * + * So we have these clock source available within the STM32 + * + * HSI: 16 MHz RC factory-trimmed + * HSE: 16 MHz crystal for HSE + */ + +#define STM32_BOARD_XTAL 16000000ul + +#define STM32_HSI_FREQUENCY 16000000ul +#define STM32_LSI_FREQUENCY 32000 +#define STM32_HSE_FREQUENCY STM32_BOARD_XTAL +#define STM32_LSE_FREQUENCY 32768 + +/* Main PLL Configuration. + * + * PLL source is HSE = 16,000,000 + * + * PLL_VCOx = (STM32_HSE_FREQUENCY / PLLM) * PLLN + * Subject to: + * + * 1 <= PLLM <= 63 + * 4 <= PLLN <= 512 + * 150 MHz <= PLL_VCOL <= 420MHz + * 192 MHz <= PLL_VCOH <= 836MHz + * + * SYSCLK = PLL_VCO / PLLP + * CPUCLK = SYSCLK / D1CPRE + * Subject to + * + * PLLP1 = {2, 4, 6, 8, ..., 128} + * PLLP2,3 = {2, 3, 4, ..., 128} + * CPUCLK <= 480 MHz + */ + +#define STM32_BOARD_USEHSE + +#define STM32_PLLCFG_PLLSRC RCC_PLLCKSELR_PLLSRC_HSE + +/* PLL1, wide 4 - 8 MHz input, enable DIVP, DIVQ, DIVR + * + * PLL1_VCO = (16,000,000 / 1) * 60 = 960 MHz + * + * PLL1P = PLL1_VCO/2 = 960 MHz / 2 = 480 MHz + * PLL1Q = PLL1_VCO/4 = 960 MHz / 4 = 240 MHz + * PLL1R = PLL1_VCO/8 = 960 MHz / 8 = 120 MHz + */ + +#define STM32_PLLCFG_PLL1CFG (RCC_PLLCFGR_PLL1VCOSEL_WIDE | \ + RCC_PLLCFGR_PLL1RGE_4_8_MHZ | \ + RCC_PLLCFGR_DIVP1EN | \ + RCC_PLLCFGR_DIVQ1EN | \ + RCC_PLLCFGR_DIVR1EN) +#define STM32_PLLCFG_PLL1M RCC_PLLCKSELR_DIVM1(1) +#define STM32_PLLCFG_PLL1N RCC_PLL1DIVR_N1(60) +#define STM32_PLLCFG_PLL1P RCC_PLL1DIVR_P1(2) +#define STM32_PLLCFG_PLL1Q RCC_PLL1DIVR_Q1(4) +#define STM32_PLLCFG_PLL1R RCC_PLL1DIVR_R1(8) + +#define STM32_VCO1_FREQUENCY ((STM32_HSE_FREQUENCY / 1) * 60) +#define STM32_PLL1P_FREQUENCY (STM32_VCO1_FREQUENCY / 2) +#define STM32_PLL1Q_FREQUENCY (STM32_VCO1_FREQUENCY / 4) +#define STM32_PLL1R_FREQUENCY (STM32_VCO1_FREQUENCY / 8) + +/* PLL2 */ + +#define STM32_PLLCFG_PLL2CFG (RCC_PLLCFGR_PLL2VCOSEL_WIDE | \ + RCC_PLLCFGR_PLL2RGE_4_8_MHZ | \ + RCC_PLLCFGR_DIVP2EN | \ + RCC_PLLCFGR_DIVQ2EN | \ + RCC_PLLCFGR_DIVR2EN) +#define STM32_PLLCFG_PLL2M RCC_PLLCKSELR_DIVM2(4) +#define STM32_PLLCFG_PLL2N RCC_PLL2DIVR_N2(48) +#define STM32_PLLCFG_PLL2P RCC_PLL2DIVR_P2(2) +#define STM32_PLLCFG_PLL2Q RCC_PLL2DIVR_Q2(2) +#define STM32_PLLCFG_PLL2R RCC_PLL2DIVR_R2(2) + +#define STM32_VCO2_FREQUENCY ((STM32_HSE_FREQUENCY / 4) * 48) +#define STM32_PLL2P_FREQUENCY (STM32_VCO2_FREQUENCY / 2) +#define STM32_PLL2Q_FREQUENCY (STM32_VCO2_FREQUENCY / 2) +#define STM32_PLL2R_FREQUENCY (STM32_VCO2_FREQUENCY / 2) + +/* PLL3 */ + +#define STM32_PLLCFG_PLL3CFG (RCC_PLLCFGR_PLL3VCOSEL_WIDE | \ + RCC_PLLCFGR_PLL3RGE_4_8_MHZ | \ + RCC_PLLCFGR_DIVQ3EN) +#define STM32_PLLCFG_PLL3M RCC_PLLCKSELR_DIVM3(4) +#define STM32_PLLCFG_PLL3N RCC_PLL3DIVR_N3(48) +#define STM32_PLLCFG_PLL3P RCC_PLL3DIVR_P3(2) +#define STM32_PLLCFG_PLL3Q RCC_PLL3DIVR_Q3(4) +#define STM32_PLLCFG_PLL3R RCC_PLL3DIVR_R3(2) + +#define STM32_VCO3_FREQUENCY ((STM32_HSE_FREQUENCY / 4) * 48) +#define STM32_PLL3P_FREQUENCY (STM32_VCO3_FREQUENCY / 2) +#define STM32_PLL3Q_FREQUENCY (STM32_VCO3_FREQUENCY / 4) +#define STM32_PLL3R_FREQUENCY (STM32_VCO3_FREQUENCY / 2) + +/* SYSCLK = PLL1P = 480MHz + * CPUCLK = SYSCLK / 1 = 480 MHz + */ + +#define STM32_RCC_D1CFGR_D1CPRE (RCC_D1CFGR_D1CPRE_SYSCLK) +#define STM32_SYSCLK_FREQUENCY (STM32_PLL1P_FREQUENCY) +#define STM32_CPUCLK_FREQUENCY (STM32_SYSCLK_FREQUENCY / 1) + +/* Configure Clock Assignments */ + +/* AHB clock (HCLK) is SYSCLK/2 (240 MHz max) + * HCLK1 = HCLK2 = HCLK3 = HCLK4 = 240 + */ + +#define STM32_RCC_D1CFGR_HPRE RCC_D1CFGR_HPRE_SYSCLKd2 /* HCLK = SYSCLK / 2 */ +#define STM32_ACLK_FREQUENCY (STM32_CPUCLK_FREQUENCY / 2) /* ACLK in D1, HCLK3 in D1 */ +#define STM32_HCLK_FREQUENCY (STM32_CPUCLK_FREQUENCY / 2) /* HCLK in D2, HCLK4 in D3 */ +#define STM32_BOARD_HCLK STM32_HCLK_FREQUENCY /* same as above, to satisfy compiler */ + +/* APB1 clock (PCLK1) is HCLK/2 (120 MHz) */ + +#define STM32_RCC_D2CFGR_D2PPRE1 RCC_D2CFGR_D2PPRE1_HCLKd2 /* PCLK1 = HCLK / 2 */ +#define STM32_PCLK1_FREQUENCY (STM32_HCLK_FREQUENCY/2) + +/* APB2 clock (PCLK2) is HCLK/2 (120 MHz) */ + +#define STM32_RCC_D2CFGR_D2PPRE2 RCC_D2CFGR_D2PPRE2_HCLKd2 /* PCLK2 = HCLK / 2 */ +#define STM32_PCLK2_FREQUENCY (STM32_HCLK_FREQUENCY/2) + +/* APB3 clock (PCLK3) is HCLK/2 (120 MHz) */ + +#define STM32_RCC_D1CFGR_D1PPRE RCC_D1CFGR_D1PPRE_HCLKd2 /* PCLK3 = HCLK / 2 */ +#define STM32_PCLK3_FREQUENCY (STM32_HCLK_FREQUENCY/2) + +/* APB4 clock (PCLK4) is HCLK/4 (120 MHz) */ + +#define STM32_RCC_D3CFGR_D3PPRE RCC_D3CFGR_D3PPRE_HCLKd2 /* PCLK4 = HCLK / 2 */ +#define STM32_PCLK4_FREQUENCY (STM32_HCLK_FREQUENCY/2) + +/* Timer clock frequencies */ + +/* Timers driven from APB1 will be twice PCLK1 */ + +#define STM32_APB1_TIM2_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM3_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM4_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM5_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM6_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM7_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM12_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM13_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM14_CLKIN (2*STM32_PCLK1_FREQUENCY) + +/* Timers driven from APB2 will be twice PCLK2 */ + +#define STM32_APB2_TIM1_CLKIN (2*STM32_PCLK2_FREQUENCY) +#define STM32_APB2_TIM8_CLKIN (2*STM32_PCLK2_FREQUENCY) +#define STM32_APB2_TIM15_CLKIN (2*STM32_PCLK2_FREQUENCY) +#define STM32_APB2_TIM16_CLKIN (2*STM32_PCLK2_FREQUENCY) +#define STM32_APB2_TIM17_CLKIN (2*STM32_PCLK2_FREQUENCY) + +/* Kernel Clock Configuration + * + * Note: look at Table 54 in ST Manual + */ + +/* I2C123 clock source */ + +#define STM32_RCC_D2CCIP2R_I2C123SRC RCC_D2CCIP2R_I2C123SEL_HSI + +/* I2C4 clock source */ + +#define STM32_RCC_D3CCIPR_I2C4SRC RCC_D3CCIPR_I2C4SEL_HSI + +/* SPI123 clock source */ + +#define STM32_RCC_D2CCIP1R_SPI123SRC RCC_D2CCIP1R_SPI123SEL_PLL2 + +/* SPI45 clock source */ + +#define STM32_RCC_D2CCIP1R_SPI45SRC RCC_D2CCIP1R_SPI45SEL_PLL2 + +/* SPI6 clock source */ + +#define STM32_RCC_D3CCIPR_SPI6SRC RCC_D3CCIPR_SPI6SEL_PLL2 + +/* USB 1 and 2 clock source */ + +#define STM32_RCC_D2CCIP2R_USBSRC RCC_D2CCIP2R_USBSEL_PLL3 + +/* ADC 1 2 3 clock source */ + +#define STM32_RCC_D3CCIPR_ADCSRC RCC_D3CCIPR_ADCSEL_PLL2 + +/* UART clock selection */ +/* reset to default to overwrite any changes done by any bootloader */ + +#define STM32_RCC_D2CCIP2R_USART234578_SEL RCC_D2CCIP2R_USART234578SEL_RCC +#define STM32_RCC_D2CCIP2R_USART16_SEL RCC_D2CCIP2R_USART16SEL_RCC + +/* FDCAN 1 2 clock source */ + +#define STM32_RCC_D2CCIP1R_FDCANSEL RCC_D2CCIP1R_FDCANSEL_HSE /* FDCAN 1 2 clock source */ + +#define STM32_FDCANCLK STM32_HSE_FREQUENCY + +/* FLASH wait states + * + * ------------ ---------- ----------- + * Vcore MAX ACLK WAIT STATES + * ------------ ---------- ----------- + * 1.15-1.26 V 70 MHz 0 + * (VOS1 level) 140 MHz 1 + * 210 MHz 2 + * 1.05-1.15 V 55 MHz 0 + * (VOS2 level) 110 MHz 1 + * 165 MHz 2 + * 220 MHz 3 + * 0.95-1.05 V 45 MHz 0 + * (VOS3 level) 90 MHz 1 + * 135 MHz 2 + * 180 MHz 3 + * 225 MHz 4 + * ------------ ---------- ----------- + */ + +#define BOARD_FLASH_WAITSTATES 2 + +/* SDMMC definitions ********************************************************/ + +/* Init 400kHz, freq = PLL1Q/(2*div) div = PLL1Q/(2*freq) */ + +#define STM32_SDMMC_INIT_CLKDIV (300 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) + +/* 25 MHz Max for now, 25 mHZ = PLL1Q/(2*div), div = PLL1Q/(2*freq) + * div = 4.8 = 240 / 50, So round up to 5 for default speed 24 MB/s + */ + +#if defined(CONFIG_STM32H7_SDMMC_XDMA) || defined(CONFIG_STM32H7_SDMMC_IDMA) +# define STM32_SDMMC_MMCXFR_CLKDIV (5 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) +#else +# define STM32_SDMMC_MMCXFR_CLKDIV (100 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) +#endif +#if defined(CONFIG_STM32H7_SDMMC_XDMA) || defined(CONFIG_STM32H7_SDMMC_IDMA) +# define STM32_SDMMC_SDXFR_CLKDIV (5 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) +#else +# define STM32_SDMMC_SDXFR_CLKDIV (100 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) +#endif + +#define STM32_SDMMC_CLKCR_EDGE STM32_SDMMC_CLKCR_NEGEDGE + +/* LED definitions ******************************************************************/ +/* The PX4 FMUV6X board has three, LED_GREEN a Green LED, LED_BLUE a Blue LED and + * LED_RED a Red LED, that can be controlled by software. + * + * If CONFIG_ARCH_LEDS is not defined, then the user can control the LEDs in any way. + * The following definitions are used to access individual LEDs. + */ + +/* LED index values for use with board_userled() */ + +/* LED definitions ******************************************************************/ +/* The px4_fmu-v6x board has three, LED_GREEN a Green LED, LED_BLUE a Blue LED and + * LED_RED a Red LED, that can be controlled by software. + * + * If CONFIG_ARCH_LEDS is not defined, then the user can control the LEDs in any way. + * The following definitions are used to access individual LEDs. + */ + +/* LED index values for use with board_userled() */ + +#define BOARD_LED1 0 +#define BOARD_LED2 1 +#define BOARD_LED3 2 +#define BOARD_NLEDS 3 + +#define BOARD_LED_RED BOARD_LED1 +#define BOARD_LED_GREEN BOARD_LED2 +#define BOARD_LED_BLUE BOARD_LED3 + +/* LED bits for use with board_userled_all() */ + +#define BOARD_LED1_BIT (1 << BOARD_LED1) +#define BOARD_LED2_BIT (1 << BOARD_LED2) +#define BOARD_LED3_BIT (1 << BOARD_LED3) + +/* If CONFIG_ARCH_LEDS is defined, the usage by the board port is defined in + * include/board.h and src/stm32_leds.c. The LEDs are used to encode OS-related + * events as follows: + * + * + * SYMBOL Meaning LED state + * Red Green Blue + * ---------------------- -------------------------- ------ ------ ----*/ + +#define LED_STARTED 0 /* NuttX has been started OFF OFF OFF */ +#define LED_HEAPALLOCATE 1 /* Heap has been allocated OFF OFF ON */ +#define LED_IRQSENABLED 2 /* Interrupts enabled OFF ON OFF */ +#define LED_STACKCREATED 3 /* Idle stack created OFF ON ON */ +#define LED_INIRQ 4 /* In an interrupt N/C N/C GLOW */ +#define LED_SIGNAL 5 /* In a signal handler N/C GLOW N/C */ +#define LED_ASSERTION 6 /* An assertion failed GLOW N/C GLOW */ +#define LED_PANIC 7 /* The system has crashed Blink OFF N/C */ +#define LED_IDLE 8 /* MCU is is sleep mode ON OFF OFF */ + +/* Thus if the Green LED is statically on, NuttX has successfully booted and + * is, apparently, running normally. If the Red LED is flashing at + * approximately 2Hz, then a fatal error has been detected and the system + * has halted. + */ + +/* Alternate function pin selections ************************************************/ + +#define GPIO_USART1_RX GPIO_USART1_RX_3 /* PB7 */ +#define GPIO_USART1_TX GPIO_USART1_TX_3 /* PB6 */ + +#define GPIO_USART2_RX GPIO_USART2_RX_1 /* PA3 */ +#define GPIO_USART2_TX GPIO_USART2_TX_2 /* PD5 */ +#define GPIO_USART2_RTS GPIO_USART2_RTS_2 /* PD4 */ +#define GPIO_USART2_CTS GPIO_USART2_CTS_NSS_2 /* PD3 */ + +#define GPIO_USART3_RX GPIO_USART3_RX_3 /* PD9 */ +#define GPIO_USART3_TX GPIO_USART3_TX_3 /* PD8 */ + +#define GPIO_UART4_RX GPIO_UART4_RX_6 /* PH14 */ +#define GPIO_UART4_TX GPIO_UART4_TX_6 /* PH13 */ + +#define GPIO_UART5_RX GPIO_UART5_RX_3 /* PD2 */ +#define GPIO_UART5_TX GPIO_UART5_TX_3 /* PC12 */ +// GPIO_UART5_RTS no remap /* PC8 */ +#undef GPIO_UART5_CTS +#define GPIO_UART5_CTS ((GPIO_ALT|GPIO_AF8|GPIO_PORTC|GPIO_PIN9) | GPIO_PULLDOWN) /* PC9 */ + + +#define GPIO_USART6_RX GPIO_USART6_RX_1 /* PC7 */ +#define GPIO_USART6_TX GPIO_USART6_TX_1 /* PC6 */ + +#define GPIO_UART7_RX GPIO_UART7_RX_4 /* PF6 */ +#define GPIO_UART7_TX GPIO_UART7_TX_3 /* PE8 */ +#define GPIO_UART7_RTS GPIO_UART7_RTS_2 /* PF8 */ +#define GPIO_UART7_CTS (GPIO_UART7_CTS_1 | GPIO_PULLDOWN) /* PE10 */ + +#define GPIO_UART8_RX GPIO_UART8_RX_1 /* PE0 */ +#define GPIO_UART8_TX GPIO_UART8_TX_1 /* PE1 */ + + +/* CAN + * + * CAN1 is routed to transceiver. + * CAN2 is routed to transceiver. + */ +#define GPIO_CAN1_RX GPIO_CAN1_RX_3 /* PD0 */ +#define GPIO_CAN1_TX GPIO_CAN1_TX_3 /* PD1 */ +#define GPIO_CAN2_RX GPIO_CAN2_RX_1 /* PB12 */ +#define GPIO_CAN2_TX GPIO_CAN2_TX_1 /* PB13 */ + +/* SPI + * SPI1 is sensors1 + * SPI2 is sensors2 + * SPI3 is sensors3 + * SPI4 is Not Used + * SPI5 is FRAM + * SPI6 is EXTERNAL1 + * + */ + +#define ADJ_SLEW_RATE(p) (((p) & ~GPIO_SPEED_MASK) | (GPIO_SPEED_2MHz)) + +#define GPIO_SPI1_MISO GPIO_SPI1_MISO_3 /* PG9 */ +#define GPIO_SPI1_MOSI GPIO_SPI1_MOSI_2 /* PB5 */ +#define GPIO_SPI1_SCK ADJ_SLEW_RATE(GPIO_SPI1_SCK_1) /* PA5 */ + +#define GPIO_SPI2_MISO GPIO_SPI2_MISO_3 /* PI2 */ +#define GPIO_SPI2_MOSI GPIO_SPI2_MOSI_4 /* PI3 */ +#define GPIO_SPI2_SCK ADJ_SLEW_RATE(GPIO_SPI2_SCK_6) /* PI1 */ + +#define GPIO_SPI3_MISO GPIO_SPI3_MISO_2 /* PC11 */ +#define GPIO_SPI3_MOSI GPIO_SPI3_MOSI_3 /* PB2 */ +#define GPIO_SPI3_SCK ADJ_SLEW_RATE(GPIO_SPI3_SCK_2) /* PC10 */ + +#define GPIO_SPI5_MISO GPIO_SPI5_MISO_2 /* PH7 */ +#define GPIO_SPI5_MOSI GPIO_SPI5_MOSI_1 /* PF11 */ +#define GPIO_SPI5_SCK ADJ_SLEW_RATE(GPIO_SPI5_SCK_1) /* PF7 */ + +#define GPIO_SPI6_MISO GPIO_SPI6_MISO_2 /* PA6 */ +#define GPIO_SPI6_MOSI GPIO_SPI6_MOSI_1 /* PG14 */ +#define GPIO_SPI6_SCK ADJ_SLEW_RATE(GPIO_SPI6_SCK_3) /* PB3 */ + +/* I2C + * + * The optional _GPIO configurations allow the I2C driver to manually + * reset the bus to clear stuck slaves. They match the pin configuration, + * but are normally-high GPIOs. + * + */ + +#define GPIO_I2C1_SCL GPIO_I2C1_SCL_2 /* PB8 */ +#define GPIO_I2C1_SDA GPIO_I2C1_SDA_2 /* PB9 */ + +#define GPIO_I2C1_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN8) +#define GPIO_I2C1_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN9) + +#define GPIO_I2C2_SCL GPIO_I2C2_SCL_2 /* PF1 */ +#define GPIO_I2C2_SDA GPIO_I2C2_SDA_2 /* PF0 */ + +#define GPIO_I2C2_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTF | GPIO_PIN1) +#define GPIO_I2C2_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTF | GPIO_PIN0) + +#define GPIO_I2C3_SCL GPIO_I2C3_SCL_1 /* PA8 */ +#define GPIO_I2C3_SDA GPIO_I2C3_SDA_2 /* PH8 */ + +#define GPIO_I2C3_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTA | GPIO_PIN8) +#define GPIO_I2C3_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTH | GPIO_PIN8) + +#define GPIO_I2C4_SCL GPIO_I2C4_SCL_2 /* PF14 */ +#define GPIO_I2C4_SDA GPIO_I2C4_SDA_2 /* PF15 */ + +#define GPIO_I2C4_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTF | GPIO_PIN14) +#define GPIO_I2C4_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTF | GPIO_PIN15) + +/* SDMMC2 + * + * VDD 3.3 + * GND + * SDMMC2_CK PD6 + * SDMMC2_CMD PD7 + * SDMMC2_D0 PB14 + * SDMMC2_D1 PB15 + * SDMMC2_D2 PG11 + * SDMMC2_D3 PB4 + */ + +#define GPIO_SDMMC2_CK GPIO_SDMMC2_CK_1 /* PD6 */ +#define GPIO_SDMMC2_CMD GPIO_SDMMC2_CMD_1 /* PD7 */ +// GPIO_SDMMC2_D0 No Remap /* PB14 */ +// GPIO_SDMMC2_D1 No Remap /* PB15 */ +#define GPIO_SDMMC2_D2 GPIO_SDMMC2_D2_1 /* PG11 */ +// GPIO_SDMMC2_D3 No Remap /* PB4 */ + +/* The STM32 H7 connects to a TI DP83848TSQ/NOPB + * using RMII + * + * STM32 H7 BOARD DP83848TSQ/NOPB + * GPIO SIGNAL PIN NAME + * -------- ------------ ------------- + * PA7 ETH_CRS_DV CRS_DV + * PC1 ETH_MDC MDC + * PA2 ETH_MDIO MDIO + * PA1 ETH_REF_CL X1 + * PC4 ETH_RXD0 RX_D0 + * PC5 ETH_RXD1 RX_D1 + * PB11 ETH_TX_EN TX_EN + * PG13 ETH_TXD0 TX_D0 + * PG12 ETH_TXD1 TX_D1 + * + * The PHY address is 1, since COL/PHYAD0 features a pull up. + */ + +#define GPIO_ETH_RMII_TX_EN GPIO_ETH_RMII_TX_EN_1 /* PB11 */ +#define GPIO_ETH_RMII_TXD0 GPIO_ETH_RMII_TXD0_2 /* PG13 */ +#define GPIO_ETH_RMII_TXD1 GPIO_ETH_RMII_TXD1_2 /* PG12 */ + + +/* USB + * + * OTG_FS_DM PA11 + * OTG_FS_DP PA12 + * VBUS PA9 + */ + + +/* Board provides GPIO or other Hardware for signaling to timing analyzer */ + +#if defined(CONFIG_BOARD_USE_PROBES) +# include "stm32_gpio.h" +# define PROBE_N(n) (1<<((n)-1)) +# define PROBE_1 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTI|GPIO_PIN0) /* PI0 AUX1 */ +# define PROBE_2 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN12) /* PH12 AUX2 */ +# define PROBE_3 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN11) /* PH11 AUX3 */ +# define PROBE_4 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN10) /* PH10 AUX4 */ +# define PROBE_5 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN13) /* PD13 AUX5 */ +# define PROBE_6 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN14) /* PD14 AUX6 */ +# define PROBE_7 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN6) /* PH6 AUX7 */ +# define PROBE_8 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN9) /* PH9 AUX8 */ +# define PROBE_9 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN11) /* PE11 CAP1 */ + +# define PROBE_INIT(mask) \ + do { \ + if ((mask)& PROBE_N(1)) { stm32_configgpio(PROBE_1); } \ + if ((mask)& PROBE_N(2)) { stm32_configgpio(PROBE_2); } \ + if ((mask)& PROBE_N(3)) { stm32_configgpio(PROBE_3); } \ + if ((mask)& PROBE_N(4)) { stm32_configgpio(PROBE_4); } \ + if ((mask)& PROBE_N(5)) { stm32_configgpio(PROBE_5); } \ + if ((mask)& PROBE_N(6)) { stm32_configgpio(PROBE_6); } \ + if ((mask)& PROBE_N(7)) { stm32_configgpio(PROBE_7); } \ + if ((mask)& PROBE_N(8)) { stm32_configgpio(PROBE_8); } \ + if ((mask)& PROBE_N(9)) { stm32_configgpio(PROBE_9); } \ + } while(0) + +# define PROBE(n,s) do {stm32_gpiowrite(PROBE_##n,(s));}while(0) +# define PROBE_MARK(n) PROBE(n,false);PROBE(n,true) +#else +# define PROBE_INIT(mask) +# define PROBE(n,s) +# define PROBE_MARK(n) +#endif + +#endif /*__NUTTX_CONFIG_PX4_FMU_V6X_INCLUDE_BOARD_H */ diff --git a/boards/auterion/fmu-v6x/nuttx-config/include/board_dma_map.h b/boards/auterion/fmu-v6x/nuttx-config/include/board_dma_map.h new file mode 100644 index 0000000000..1f45efc569 --- /dev/null +++ b/boards/auterion/fmu-v6x/nuttx-config/include/board_dma_map.h @@ -0,0 +1,87 @@ +/**************************************************************************** + * + * Copyright (c) 2020 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#pragma once + +// DMAMUX1 Using at most 8 Channels on DMA1 -------- Assigned +// V + +#define DMAMAP_SPI1_RX DMAMAP_DMA12_SPI1RX_0 /* 1 DMA1:37 ICM-20649 */ +#define DMAMAP_SPI1_TX DMAMAP_DMA12_SPI1TX_0 /* 2 DMA1:38 ICM-20649 */ + +#define DMAMAP_SPI2_RX DMAMAP_DMA12_SPI2RX_0 /* 3 DMA1:39 ICM-42688-P */ +#define DMAMAP_SPI2_TX DMAMAP_DMA12_SPI2TX_0 /* 4 DMA1:40 ICM-42688-P */ + +//#define DMAMAP_USART1_RX DMAMAP_DMA12_USART1RX_0 /* DMA1:41 GPS1 */ +//#define DMAMAP_USART1_TX DMAMAP_DMA12_USART1TX_0 /* DMA1:42 GPS1 */ + +//#define DMAMAP_USART2_RX DMAMAP_DMA12_USART2RX_0 /* DMA1:43 Telem3 */ +//#define DMAMAP_USART2_TX DMAMAP_DMA12_USART2TX_0 /* DMA1:44 Telem3 */ + +//#define DMAMAP_USART3_RX DMAMAP_DMA12_USART3RX_0 /* DMA1:45 DEBUG */ +//#define DMAMAP_USART3_TX DMAMAP_DMA12_USART3TX_0 /* DMA1:46 DEBUG */ + +//#define DMAMAP_UART4_RX DMAMAP_DMA12_UART4RX_0 /* DMA1:63 EXT2 */ +//#define DMAMAP_UART4_TX DMAMAP_DMA12_UART4TX_0 /* DMA1:64 EXT2 */ + +#define DMAMAP_USART6_RX DMAMAP_DMA12_USART6RX_0 /* 5 DMA1:71 PX4IO */ +#define DMAMAP_USART6_TX DMAMAP_DMA12_USART6TX_0 /* 6 DMA1:72 PX4IO */ + +// Assigned in timer_config.cpp + +// Timer 4 /* 7 DMA1:32 TIM4UP */ +// Timer 5 /* 8 DMA1:50 TIM5UP */ + +// DMAMUX2 Using at most 8 Channels on DMA2 -------- Assigned +// V + +#define DMAMAP_SPI3_RX DMAMAP_DMA12_SPI3RX_1 /* 1 DMA2:61 BMI088 */ +#define DMAMAP_SPI3_TX DMAMAP_DMA12_SPI3TX_1 /* 2 DMA2:62 BMI088 */ + +#define DMAMAP_USART3_RX DMAMAP_DMA12_USART3RX_1 /* 3 DMA2:45 DEBUG */ +#define DMAMAP_USART3_TX DMAMAP_DMA12_USART3TX_1 /* 4 DMA2:46 DEBUG */ + +#define DMAMAP_UART5_RX DMAMAP_DMA12_UART5RX_1 /* 5 DMA2:65 TELEM2 */ +#define DMAMAP_UART5_TX DMAMAP_DMA12_UART5TX_1 /* 6 DMA2:66 TELEM2 */ + +#define DMAMAP_UART7_RX DMAMAP_DMA12_UART7RX_1 /* 7 DMA1:79 TELEM1 */ +#define DMAMAP_UART7_TX DMAMAP_DMA12_UART7TX_1 /* 8 DMA1:80 TELEM1 */ + +//#define DMAMAP_UART8_RX DMAMAP_DMA12_UART8RX_1 /* DMA1:81 GPS2 */ +//#define DMAMAP_UART8_TX DMAMAP_DMA12_UART8TX_1 /* DMA1:82 GPS2 */ + +// DMAMUX2 Using at most 8 Channels on BDMA -------- Assigned +// V + +#define DMAMAP_SPI6_RX DMAMAP_BDMA_SPI6_RX /* 1 BDMA:11 SPI J11 */ +#define DMAMAP_SPI6_TX DMAMAP_BDMA_SPI6_TX /* 2 BDMA:12 SPI J11 */ diff --git a/boards/auterion/fmu-v6x/nuttx-config/nsh/defconfig b/boards/auterion/fmu-v6x/nuttx-config/nsh/defconfig new file mode 100644 index 0000000000..4fbc7a3b94 --- /dev/null +++ b/boards/auterion/fmu-v6x/nuttx-config/nsh/defconfig @@ -0,0 +1,332 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_DISABLE_ENVIRON is not set +# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set +# CONFIG_DISABLE_PTHREAD is not set +# CONFIG_MMCSD_HAVE_CARDDETECT is not set +# CONFIG_MMCSD_HAVE_WRITEPROTECT is not set +# CONFIG_MMCSD_MMCSUPPORT is not set +# CONFIG_MMCSD_SPI is not set +# CONFIG_NSH_DISABLEBG is not set +# CONFIG_NSH_DISABLESCRIPT is not set +# CONFIG_NSH_DISABLE_ARP is not set +# CONFIG_NSH_DISABLE_CAT is not set +# CONFIG_NSH_DISABLE_CD is not set +# CONFIG_NSH_DISABLE_CP is not set +# CONFIG_NSH_DISABLE_DATE is not set +# CONFIG_NSH_DISABLE_DF is not set +# CONFIG_NSH_DISABLE_ECHO is not set +# CONFIG_NSH_DISABLE_ENV is not set +# CONFIG_NSH_DISABLE_EXEC is not set +# CONFIG_NSH_DISABLE_EXPORT is not set +# CONFIG_NSH_DISABLE_FREE is not set +# CONFIG_NSH_DISABLE_GET is not set +# CONFIG_NSH_DISABLE_HELP is not set +# CONFIG_NSH_DISABLE_IFCONFIG is not set +# CONFIG_NSH_DISABLE_IFUPDOWN is not set +# CONFIG_NSH_DISABLE_ITEF is not set +# CONFIG_NSH_DISABLE_KILL is not set +# CONFIG_NSH_DISABLE_LOOPS is not set +# CONFIG_NSH_DISABLE_LS is not set +# CONFIG_NSH_DISABLE_MKDIR is not set +# CONFIG_NSH_DISABLE_MKFATFS is not set +# CONFIG_NSH_DISABLE_MOUNT is not set +# CONFIG_NSH_DISABLE_MV is not set +# CONFIG_NSH_DISABLE_NSLOOKUP is not set +# CONFIG_NSH_DISABLE_PS is not set +# CONFIG_NSH_DISABLE_PSSTACKUSAGE is not set +# CONFIG_NSH_DISABLE_PWD is not set +# CONFIG_NSH_DISABLE_RM is not set +# CONFIG_NSH_DISABLE_RMDIR is not set +# CONFIG_NSH_DISABLE_SEMICOLON is not set +# CONFIG_NSH_DISABLE_SET is not set +# CONFIG_NSH_DISABLE_SLEEP is not set +# CONFIG_NSH_DISABLE_SOURCE is not set +# CONFIG_NSH_DISABLE_TELNETD is not set +# CONFIG_NSH_DISABLE_TEST is not set +# CONFIG_NSH_DISABLE_TIME is not set +# CONFIG_NSH_DISABLE_UMOUNT is not set +# CONFIG_NSH_DISABLE_UNSET is not set +# CONFIG_NSH_DISABLE_USLEEP is not set +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD_CUSTOM=y +CONFIG_ARCH_BOARD_CUSTOM_DIR="../../../../boards/auterion/fmu-v6x/nuttx-config" +CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y +CONFIG_ARCH_BOARD_CUSTOM_NAME="auterion" +CONFIG_ARCH_CHIP="stm32h7" +CONFIG_ARCH_CHIP_STM32H753II=y +CONFIG_ARCH_CHIP_STM32H7=y +CONFIG_ARCH_INTERRUPTSTACK=768 +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARMV7M_BASEPRI_WAR=y +CONFIG_ARMV7M_DCACHE=y +CONFIG_ARMV7M_DTCM=y +CONFIG_ARMV7M_ICACHE=y +CONFIG_ARMV7M_MEMCPY=y +CONFIG_ARMV7M_USEBASEPRI=y +CONFIG_ARM_MPU_EARLY_RESET=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_ASSERT_RESET_VALUE=0 +CONFIG_BOARD_CRASHDUMP=y +CONFIG_BOARD_LOOPSPERMSEC=95751 +CONFIG_BOARD_RESET_ON_ASSERT=2 +CONFIG_BUILTIN=y +CONFIG_CDCACM=y +CONFIG_CDCACM_IFLOWCONTROL=y +CONFIG_CDCACM_PRODUCTID=0x0035 +CONFIG_CDCACM_PRODUCTSTR="Auterion FMU v6X.x" +CONFIG_CDCACM_RXBUFSIZE=600 +CONFIG_CDCACM_TXBUFSIZE=12000 +CONFIG_CDCACM_VENDORID=0x3185 +CONFIG_CDCACM_VENDORSTR="Auterion" +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_HARDFAULT_ALERT=y +CONFIG_DEBUG_MEMFAULT=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEBUG_TCBINFO=y +CONFIG_DEFAULT_SMALL=y +CONFIG_DEV_FIFO_SIZE=0 +CONFIG_DEV_GPIO=y +CONFIG_DEV_PIPE_MAXSIZE=1024 +CONFIG_DEV_PIPE_SIZE=70 +CONFIG_DEV_URANDOM=y +CONFIG_ETH0_PHY_LAN8742A=y +CONFIG_EXPERIMENTAL=y +CONFIG_FAT_DMAMEMORY=y +CONFIG_FAT_LCNAMES=y +CONFIG_FAT_LFN=y +CONFIG_FAT_LFN_ALIAS_HASH=y +CONFIG_FDCLONE_STDIO=y +CONFIG_FSUTILS_IPCFG=y +CONFIG_FS_BINFS=y +CONFIG_FS_CROMFS=y +CONFIG_FS_FAT=y +CONFIG_FS_FATTIME=y +CONFIG_FS_PROCFS=y +CONFIG_FS_PROCFS_INCLUDE_PROGMEM=y +CONFIG_FS_PROCFS_MAX_TASKS=64 +CONFIG_FS_PROCFS_REGISTER=y +CONFIG_FS_ROMFS=y +CONFIG_GRAN=y +CONFIG_GRAN_INTR=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_I2C=y +CONFIG_I2C_RESET=y +CONFIG_IDLETHREAD_STACKSIZE=750 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_STACKSIZE=3194 +CONFIG_IOB_NBUFFERS=24 +CONFIG_IOB_THROTTLE=0 +CONFIG_IPCFG_BINARY=y +CONFIG_IPCFG_CHARDEV=y +CONFIG_IPCFG_PATH="/fs/mtd_net" +CONFIG_LIBC_FLOATINGPOINT=y +CONFIG_LIBC_LONG_LONG=y +CONFIG_LIBC_MAX_EXITFUNS=1 +CONFIG_LIBC_STRERROR=y +CONFIG_MEMSET_64BIT=y +CONFIG_MEMSET_OPTSPEED=y +CONFIG_MMCSD=y +CONFIG_MMCSD_SDIO=y +CONFIG_MMCSD_SDIOWAIT_WRCOMPLETE=y +CONFIG_MM_REGIONS=4 +CONFIG_MTD=y +CONFIG_MTD_BYTE_WRITE=y +CONFIG_MTD_PARTITION=y +CONFIG_MTD_PROGMEM=y +CONFIG_MTD_RAMTRON=y +CONFIG_NAME_MAX=40 +CONFIG_NET=y +CONFIG_NETDB_DNSCLIENT=y +CONFIG_NETDB_DNSCLIENT_ENTRIES=8 +CONFIG_NETDB_DNSSERVER_NOADDR=y +CONFIG_NETDEV_PHY_IOCTL=y +CONFIG_NETINIT_DHCPC=y +CONFIG_NETINIT_DNS=y +CONFIG_NETINIT_DNSIPADDR=0xA290AFE +CONFIG_NETINIT_DRIPADDR=0xA290AFE +CONFIG_NETINIT_MONITOR=y +CONFIG_NETINIT_THREAD=y +CONFIG_NETINIT_THREAD_PRIORITY=49 +CONFIG_NETUTILS_TELNETD=y +CONFIG_NET_ARP_IPIN=y +CONFIG_NET_ARP_SEND=y +CONFIG_NET_BROADCAST=y +CONFIG_NET_ETH_PKTSIZE=1518 +CONFIG_NET_ICMP=y +CONFIG_NET_ICMP_SOCKET=y +CONFIG_NET_NACTIVESOCKETS=16 +CONFIG_NET_SOLINGER=y +CONFIG_NET_TCP=y +CONFIG_NET_TCPBACKLOG=y +CONFIG_NET_TCP_DELAYED_ACK=y +CONFIG_NET_TCP_WRITE_BUFFERS=y +CONFIG_NET_UDP=y +CONFIG_NET_UDP_CHECKSUMS=y +CONFIG_NET_UDP_WRITE_BUFFERS=y +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_ARGCAT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_CMDPARMS=y +CONFIG_NSH_CROMFSETC=y +CONFIG_NSH_LINELEN=128 +CONFIG_NSH_MAXARGUMENTS=15 +CONFIG_NSH_NESTDEPTH=8 +CONFIG_NSH_QUOTE=y +CONFIG_NSH_ROMFSETC=y +CONFIG_NSH_ROMFSSECTSIZE=128 +CONFIG_NSH_STRERROR=y +CONFIG_NSH_TELNET=y +CONFIG_NSH_TELNET_LOGIN=y +CONFIG_NSH_VARS=y +CONFIG_OTG_ID_GPIO_DISABLE=y +CONFIG_PIPES=y +CONFIG_PREALLOC_TIMERS=50 +CONFIG_PRIORITY_INHERITANCE=y +CONFIG_PTHREAD_MUTEX_ROBUST=y +CONFIG_PTHREAD_STACK_MIN=512 +CONFIG_RAMTRON_EMULATE_PAGE_SHIFT=5 +CONFIG_RAMTRON_EMULATE_SECTOR_SHIFT=5 +CONFIG_RAMTRON_SETSPEED=y +CONFIG_RAM_SIZE=245760 +CONFIG_RAM_START=0x20010000 +CONFIG_RAW_BINARY=y +CONFIG_READLINE_CMD_HISTORY=y +CONFIG_READLINE_TABCOMPLETION=y +CONFIG_RTC_DATETIME=y +CONFIG_SCHED_HPWORK=y +CONFIG_SCHED_HPWORKPRIORITY=249 +CONFIG_SCHED_HPWORKSTACKSIZE=1280 +CONFIG_SCHED_INSTRUMENTATION=y +CONFIG_SCHED_INSTRUMENTATION_EXTERNAL=y +CONFIG_SCHED_INSTRUMENTATION_SWITCH=y +CONFIG_SCHED_LPWORK=y +CONFIG_SCHED_LPWORKPRIORITY=50 +CONFIG_SCHED_LPWORKSTACKSIZE=1632 +CONFIG_SDMMC2_SDIO_PULLUP=y +CONFIG_SEM_PREALLOCHOLDERS=32 +CONFIG_SERIAL_IFLOWCONTROL_WATERMARKS=y +CONFIG_SERIAL_TERMIOS=y +CONFIG_SIG_DEFAULT=y +CONFIG_SIG_SIGALRM_ACTION=y +CONFIG_SIG_SIGUSR1_ACTION=y +CONFIG_SIG_SIGUSR2_ACTION=y +CONFIG_SIG_SIGWORK=4 +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=30 +CONFIG_START_MONTH=11 +CONFIG_STDIO_BUFFER_SIZE=256 +CONFIG_STM32H7_ADC1=y +CONFIG_STM32H7_ADC3=y +CONFIG_STM32H7_BBSRAM=y +CONFIG_STM32H7_BBSRAM_FILES=5 +CONFIG_STM32H7_BDMA=y +CONFIG_STM32H7_BKPSRAM=y +CONFIG_STM32H7_DMA1=y +CONFIG_STM32H7_DMA2=y +CONFIG_STM32H7_DMACAPABLE=y +CONFIG_STM32H7_ETHMAC=y +CONFIG_STM32H7_FLASH_OVERRIDE_I=y +CONFIG_STM32H7_FLOWCONTROL_BROKEN=y +CONFIG_STM32H7_I2C1=y +CONFIG_STM32H7_I2C2=y +CONFIG_STM32H7_I2C3=y +CONFIG_STM32H7_I2C4=y +CONFIG_STM32H7_I2C_DYNTIMEO=y +CONFIG_STM32H7_I2C_DYNTIMEO_STARTSTOP=10 +CONFIG_STM32H7_OTGFS=y +CONFIG_STM32H7_PHYSR=31 +CONFIG_STM32H7_PHYSR_100MBPS=0x8 +CONFIG_STM32H7_PHYSR_FULLDUPLEX=0x10 +CONFIG_STM32H7_PHYSR_MODE=0x10 +CONFIG_STM32H7_PHYSR_SPEED=0x8 +CONFIG_STM32H7_PHY_POLLING=y +CONFIG_STM32H7_PROGMEM=y +CONFIG_STM32H7_RTC=y +CONFIG_STM32H7_RTC_AUTO_LSECLOCK_START_DRV_CAPABILITY=y +CONFIG_STM32H7_RTC_MAGIC_REG=1 +CONFIG_STM32H7_SAVE_CRASHDUMP=y +CONFIG_STM32H7_SDMMC2=y +CONFIG_STM32H7_SERIALBRK_BSDCOMPAT=y +CONFIG_STM32H7_SERIAL_DISABLE_REORDERING=y +CONFIG_STM32H7_SPI1=y +CONFIG_STM32H7_SPI1_DMA=y +CONFIG_STM32H7_SPI1_DMA_BUFFER=1024 +CONFIG_STM32H7_SPI2=y +CONFIG_STM32H7_SPI2_DMA=y +CONFIG_STM32H7_SPI2_DMA_BUFFER=4096 +CONFIG_STM32H7_SPI3=y +CONFIG_STM32H7_SPI3_DMA=y +CONFIG_STM32H7_SPI3_DMA_BUFFER=1024 +CONFIG_STM32H7_SPI5=y +CONFIG_STM32H7_SPI6=y +CONFIG_STM32H7_SPI6_DMA=y +CONFIG_STM32H7_SPI6_DMA_BUFFER=1024 +CONFIG_STM32H7_TIM12=y +CONFIG_STM32H7_TIM1=y +CONFIG_STM32H7_TIM4=y +CONFIG_STM32H7_TIM5=y +CONFIG_STM32H7_UART4=y +CONFIG_STM32H7_UART5=y +CONFIG_STM32H7_UART7=y +CONFIG_STM32H7_UART8=y +CONFIG_STM32H7_USART1=y +CONFIG_STM32H7_USART2=y +CONFIG_STM32H7_USART3=y +CONFIG_STM32H7_USART6=y +CONFIG_STM32H7_USART_BREAKS=y +CONFIG_STM32H7_USART_INVERT=y +CONFIG_STM32H7_USART_SINGLEWIRE=y +CONFIG_STM32H7_USART_SWAP=y +CONFIG_SYSTEM_CDCACM=y +CONFIG_SYSTEM_DHCPC_RENEW=y +CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_PING=y +CONFIG_SYSTEM_SYSTEM=y +CONFIG_TASK_NAME_SIZE=24 +CONFIG_UART4_BAUD=57600 +CONFIG_UART4_RXBUFSIZE=600 +CONFIG_UART4_TXBUFSIZE=1500 +CONFIG_UART5_IFLOWCONTROL=y +CONFIG_UART5_OFLOWCONTROL=y +CONFIG_UART5_RXDMA=y +CONFIG_UART5_TXBUFSIZE=10000 +CONFIG_UART5_TXDMA=y +CONFIG_UART7_BAUD=57600 +CONFIG_UART7_IFLOWCONTROL=y +CONFIG_UART7_OFLOWCONTROL=y +CONFIG_UART7_RXBUFSIZE=600 +CONFIG_UART7_RXDMA=y +CONFIG_UART7_TXBUFSIZE=3000 +CONFIG_UART7_TXDMA=y +CONFIG_UART8_BAUD=57600 +CONFIG_UART8_RXBUFSIZE=600 +CONFIG_UART8_TXBUFSIZE=1500 +CONFIG_USART1_BAUD=57600 +CONFIG_USART1_RXBUFSIZE=600 +CONFIG_USART1_TXBUFSIZE=1500 +CONFIG_USART2_BAUD=57600 +CONFIG_USART2_IFLOWCONTROL=y +CONFIG_USART2_OFLOWCONTROL=y +CONFIG_USART2_RXBUFSIZE=600 +CONFIG_USART2_TXBUFSIZE=3000 +CONFIG_USART3_BAUD=57600 +CONFIG_USART3_RXBUFSIZE=180 +CONFIG_USART3_RXDMA=y +CONFIG_USART3_SERIAL_CONSOLE=y +CONFIG_USART3_TXBUFSIZE=1500 +CONFIG_USART3_TXDMA=y +CONFIG_USART6_BAUD=57600 +CONFIG_USART6_RXBUFSIZE=600 +CONFIG_USART6_TXBUFSIZE=1500 +CONFIG_USBDEV=y +CONFIG_USBDEV_BUSPOWERED=y +CONFIG_USBDEV_MAXPOWER=500 +CONFIG_USEC_PER_TICK=1000 +CONFIG_WATCHDOG=y diff --git a/boards/auterion/fmu-v6x/nuttx-config/scripts/bootloader_script.ld b/boards/auterion/fmu-v6x/nuttx-config/scripts/bootloader_script.ld new file mode 100644 index 0000000000..037356efd3 --- /dev/null +++ b/boards/auterion/fmu-v6x/nuttx-config/scripts/bootloader_script.ld @@ -0,0 +1,215 @@ +/**************************************************************************** + * scripts/script.ld + * + * Copyright (C) 2016, 2019 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/* The Auterion FMUV6X uses an STM32H753II has 2048Kb of main FLASH memory. + * The flash memory is partitioned into a User Flash memory and a System + * Flash memory. Each of these memories has two banks: + * + * 1) User Flash memory: + * + * Bank 1: Start address 0x0800:0000 to 0x080F:FFFF with 8 sectors, 128Kb each + * Bank 2: Start address 0x0810:0000 to 0x081F:FFFF with 8 sectors, 128Kb each + * + * 2) System Flash memory: + * + * Bank 1: Start address 0x1FF0:0000 to 0x1FF1:FFFF with 1 x 128Kb sector + * Bank 1: Start address 0x1FF4:0000 to 0x1FF5:FFFF with 1 x 128Kb sector + * + * 3) User option bytes for user configuration, only in Bank 1. + * + * In the STM32H743II, two different boot spaces can be selected through + * the BOOT pin and the boot base address programmed in the BOOT_ADD0 and + * BOOT_ADD1 option bytes: + * + * 1) BOOT=0: Boot address defined by user option byte BOOT_ADD0[15:0]. + * ST programmed value: Flash memory at 0x0800:0000 + * 2) BOOT=1: Boot address defined by user option byte BOOT_ADD1[15:0]. + * ST programmed value: System bootloader at 0x1FF0:0000 + * + * The Auterion FMUV6X has a test point on board, the BOOT0 pin is at ground so by + * default, the STM32 will boot to address 0x0800:0000 in FLASH unless the test + * point is pulled to 3.3V.then the boot will be from 0x1FF0:0000 + * + * The STM32H743II also has 1024Kb of data SRAM. + * SRAM is split up into several blocks and into three power domains: + * + * 1) TCM SRAMs are dedicated to the Cortex-M7 and are accessible with + * 0 wait states by the Cortex-M7 and by MDMA through AHBS slave bus + * + * 1.1) 128Kb of DTCM-RAM beginning at address 0x2000:0000 + * + * The DTCM-RAM is organized as 2 x 64Kb DTCM-RAMs on 2 x 32 bit + * DTCM ports. The DTCM-RAM could be used for critical real-time + * data, such as interrupt service routines or stack / heap memory. + * Both DTCM-RAMs can be used in parallel (for load/store operations) + * thanks to the Cortex-M7 dual issue capability. + * + * 1.2) 64Kb of ITCM-RAM beginning at address 0x0000:0000 + * + * This RAM is connected to ITCM 64-bit interface designed for + * execution of critical real-times routines by the CPU. + * + * 2) AXI SRAM (D1 domain) accessible by all system masters except BDMA + * through D1 domain AXI bus matrix + * + * 2.1) 512Kb of SRAM beginning at address 0x2400:0000 + * + * 3) AHB SRAM (D2 domain) accessible by all system masters except BDMA + * through D2 domain AHB bus matrix + * + * 3.1) 128Kb of SRAM1 beginning at address 0x3000:0000 + * 3.2) 128Kb of SRAM2 beginning at address 0x3002:0000 + * 3.3) 32Kb of SRAM3 beginning at address 0x3004:0000 + * + * SRAM1 - SRAM3 are one contiguous block: 288Kb at address 0x3000:0000 + * + * 4) AHB SRAM (D3 domain) accessible by most of system masters + * through D3 domain AHB bus matrix + * + * 4.1) 64Kb of SRAM4 beginning at address 0x3800:0000 + * 4.1) 4Kb of backup RAM beginning at address 0x3880:0000 + * + * When booting from FLASH, FLASH memory is aliased to address 0x0000:0000 + * where the code expects to begin execution by jumping to the entry point in + * the 0x0800:0000 address range. + * + * The bootloader uses the first sector of the flash, which is 128K in length. + */ + +MEMORY +{ + itcm (rwx) : ORIGIN = 0x00000000, LENGTH = 64K + flash (rx) : ORIGIN = 0x08000000, LENGTH = 128K + dtcm1 (rwx) : ORIGIN = 0x20000000, LENGTH = 64K + dtcm2 (rwx) : ORIGIN = 0x20010000, LENGTH = 64K + sram (rwx) : ORIGIN = 0x24000000, LENGTH = 512K + sram1 (rwx) : ORIGIN = 0x30000000, LENGTH = 128K + sram2 (rwx) : ORIGIN = 0x30020000, LENGTH = 128K + sram3 (rwx) : ORIGIN = 0x30040000, LENGTH = 32K + sram4 (rwx) : ORIGIN = 0x38000000, LENGTH = 64K + bbram (rwx) : ORIGIN = 0x38800000, LENGTH = 4K +} + +OUTPUT_ARCH(arm) +EXTERN(_vectors) +ENTRY(_stext) + +/* + * Ensure that abort() is present in the final object. The exception handling + * code pulled in by libgcc.a requires it (and that code cannot be easily avoided). + */ +EXTERN(abort) +EXTERN(_bootdelay_signature) + +SECTIONS +{ + .text : { + _stext = ABSOLUTE(.); + *(.vectors) + . = ALIGN(32); + /* + This signature provides the bootloader with a way to delay booting + */ + _bootdelay_signature = ABSOLUTE(.); + FILL(0xffecc2925d7d05c5) + . += 8; + *(.text .text.*) + *(.fixup) + *(.gnu.warning) + *(.rodata .rodata.*) + *(.gnu.linkonce.t.*) + *(.glue_7) + *(.glue_7t) + *(.got) + *(.gcc_except_table) + *(.gnu.linkonce.r.*) + _etext = ABSOLUTE(.); + + } > flash + + /* + * Init functions (static constructors and the like) + */ + .init_section : { + _sinit = ABSOLUTE(.); + KEEP(*(.init_array .init_array.*)) + _einit = ABSOLUTE(.); + } > flash + + + .ARM.extab : { + *(.ARM.extab*) + } > flash + + __exidx_start = ABSOLUTE(.); + .ARM.exidx : { + *(.ARM.exidx*) + } > flash + __exidx_end = ABSOLUTE(.); + + _eronly = ABSOLUTE(.); + + .data : { + _sdata = ABSOLUTE(.); + *(.data .data.*) + *(.gnu.linkonce.d.*) + CONSTRUCTORS + _edata = ABSOLUTE(.); + } > sram AT > flash + + .bss : { + _sbss = ABSOLUTE(.); + *(.bss .bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + . = ALIGN(4); + _ebss = ABSOLUTE(.); + } > sram + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_info 0 : { *(.debug_info) } + .debug_line 0 : { *(.debug_line) } + .debug_pubnames 0 : { *(.debug_pubnames) } + .debug_aranges 0 : { *(.debug_aranges) } +} diff --git a/boards/auterion/fmu-v6x/nuttx-config/scripts/flash-analysis-script.ld b/boards/auterion/fmu-v6x/nuttx-config/scripts/flash-analysis-script.ld new file mode 100644 index 0000000000..5df2f5180a --- /dev/null +++ b/boards/auterion/fmu-v6x/nuttx-config/scripts/flash-analysis-script.ld @@ -0,0 +1,6 @@ +INCLUDE "script.ld" + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x08020000, LENGTH = 10080K +} diff --git a/boards/auterion/fmu-v6x/nuttx-config/scripts/script.ld b/boards/auterion/fmu-v6x/nuttx-config/scripts/script.ld new file mode 100644 index 0000000000..860eb2ddd9 --- /dev/null +++ b/boards/auterion/fmu-v6x/nuttx-config/scripts/script.ld @@ -0,0 +1,229 @@ +/**************************************************************************** + * scripts/script.ld + * + * Copyright (C) 2016, 2019 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/* The Auterion FMUV6X uses an STM32H753II has 2048Kb of main FLASH memory. + * The flash memory is partitioned into a User Flash memory and a System + * Flash memory. Each of these memories has two banks: + * + * 1) User Flash memory: + * + * Bank 1: Start address 0x0800:0000 to 0x080F:FFFF with 8 sectors, 128Kb each + * Bank 2: Start address 0x0810:0000 to 0x081F:FFFF with 8 sectors, 128Kb each + * + * 2) System Flash memory: + * + * Bank 1: Start address 0x1FF0:0000 to 0x1FF1:FFFF with 1 x 128Kb sector + * Bank 1: Start address 0x1FF4:0000 to 0x1FF5:FFFF with 1 x 128Kb sector + * + * 3) User option bytes for user configuration, only in Bank 1. + * + * In the STM32H743II, two different boot spaces can be selected through + * the BOOT pin and the boot base address programmed in the BOOT_ADD0 and + * BOOT_ADD1 option bytes: + * + * 1) BOOT=0: Boot address defined by user option byte BOOT_ADD0[15:0]. + * ST programmed value: Flash memory at 0x0800:0000 + * 2) BOOT=1: Boot address defined by user option byte BOOT_ADD1[15:0]. + * ST programmed value: System bootloader at 0x1FF0:0000 + * + * The Auterion FMUV6X has a test point on board, the BOOT0 pin is at ground so by + * default, the STM32 will boot to address 0x0800:0000 in FLASH unless the test + * point is pulled to 3.3V.then the boot will be from 0x1FF0:0000 + * + * The STM32H743II also has 1024Kb of data SRAM. + * SRAM is split up into several blocks and into three power domains: + * + * 1) TCM SRAMs are dedicated to the Cortex-M7 and are accessible with + * 0 wait states by the Cortex-M7 and by MDMA through AHBS slave bus + * + * 1.1) 128Kb of DTCM-RAM beginning at address 0x2000:0000 + * + * The DTCM-RAM is organized as 2 x 64Kb DTCM-RAMs on 2 x 32 bit + * DTCM ports. The DTCM-RAM could be used for critical real-time + * data, such as interrupt service routines or stack / heap memory. + * Both DTCM-RAMs can be used in parallel (for load/store operations) + * thanks to the Cortex-M7 dual issue capability. + * + * 1.2) 64Kb of ITCM-RAM beginning at address 0x0000:0000 + * + * This RAM is connected to ITCM 64-bit interface designed for + * execution of critical real-times routines by the CPU. + * + * 2) AXI SRAM (D1 domain) accessible by all system masters except BDMA + * through D1 domain AXI bus matrix + * + * 2.1) 512Kb of SRAM beginning at address 0x2400:0000 + * + * 3) AHB SRAM (D2 domain) accessible by all system masters except BDMA + * through D2 domain AHB bus matrix + * + * 3.1) 128Kb of SRAM1 beginning at address 0x3000:0000 + * 3.2) 128Kb of SRAM2 beginning at address 0x3002:0000 + * 3.3) 32Kb of SRAM3 beginning at address 0x3004:0000 + * + * SRAM1 - SRAM3 are one contiguous block: 288Kb at address 0x3000:0000 + * + * 4) AHB SRAM (D3 domain) accessible by most of system masters + * through D3 domain AHB bus matrix + * + * 4.1) 64Kb of SRAM4 beginning at address 0x3800:0000 + * 4.1) 4Kb of backup RAM beginning at address 0x3880:0000 + * + * When booting from FLASH, FLASH memory is aliased to address 0x0000:0000 + * where the code expects to begin execution by jumping to the entry point in + * the 0x0800:0000 address range. + */ + +MEMORY +{ + ITCM_RAM (rwx) : ORIGIN = 0x00000000, LENGTH = 64K + FLASH (rx) : ORIGIN = 0x08020000, LENGTH = 1920K + + DTCM1_RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K + DTCM2_RAM (rwx) : ORIGIN = 0x20010000, LENGTH = 64K + AXI_SRAM (rwx) : ORIGIN = 0x24000000, LENGTH = 512K /* D1 domain AXI bus */ + SRAM1 (rwx) : ORIGIN = 0x30000000, LENGTH = 128K /* D2 domain AHB bus */ + SRAM2 (rwx) : ORIGIN = 0x30020000, LENGTH = 128K /* D2 domain AHB bus */ + SRAM3 (rwx) : ORIGIN = 0x30040000, LENGTH = 32K /* D2 domain AHB bus */ + SRAM4 (rwx) : ORIGIN = 0x38000000, LENGTH = 64K /* D3 domain */ + BKPRAM (rwx) : ORIGIN = 0x38800000, LENGTH = 4K +} + +OUTPUT_ARCH(arm) +EXTERN(_vectors) +ENTRY(_stext) + +/* + * Ensure that abort() is present in the final object. The exception handling + * code pulled in by libgcc.a requires it (and that code cannot be easily avoided). + */ +EXTERN(abort) +EXTERN(_bootdelay_signature) +EXTERN(board_get_manifest) + +SECTIONS +{ + .text : { + _stext = ABSOLUTE(.); + *(.vectors) + . = ALIGN(32); + /* + This signature provides the bootloader with a way to delay booting + */ + _bootdelay_signature = ABSOLUTE(.); + FILL(0xffecc2925d7d05c5) + . += 8; + *(.text .text.*) + *(.fixup) + *(.gnu.warning) + *(.rodata .rodata.*) + *(.gnu.linkonce.t.*) + *(.glue_7) + *(.glue_7t) + *(.got) + *(.gcc_except_table) + *(.gnu.linkonce.r.*) + _etext = ABSOLUTE(.); + + } > FLASH + + /* + * Init functions (static constructors and the like) + */ + .init_section : { + _sinit = ABSOLUTE(.); + KEEP(*(.init_array .init_array.*)) + _einit = ABSOLUTE(.); + } > FLASH + + + .ARM.extab : { + *(.ARM.extab*) + } > FLASH + + __exidx_start = ABSOLUTE(.); + .ARM.exidx : { + *(.ARM.exidx*) + } > FLASH + __exidx_end = ABSOLUTE(.); + + _eronly = ABSOLUTE(.); + + .data : { + _sdata = ABSOLUTE(.); + *(.data .data.*) + *(.gnu.linkonce.d.*) + CONSTRUCTORS + _edata = ABSOLUTE(.); + + /* Pad out last section as the STM32H7 Flash write size is 256 bits. 32 bytes */ + . = ALIGN(16); + FILL(0xffff) + . += 16; + } > AXI_SRAM AT > FLASH = 0xffff + + .bss : { + _sbss = ABSOLUTE(.); + *(.bss .bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + . = ALIGN(4); + _ebss = ABSOLUTE(.); + } > AXI_SRAM + + /* Emit the the D3 power domain section for locating BDMA data */ + + .sram4_reserve (NOLOAD) : + { + *(.sram4) + . = ALIGN(4); + _sram4_heap_start = ABSOLUTE(.); + } > SRAM4 + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_info 0 : { *(.debug_info) } + .debug_line 0 : { *(.debug_line) } + .debug_pubnames 0 : { *(.debug_pubnames) } + .debug_aranges 0 : { *(.debug_aranges) } +} diff --git a/boards/auterion/fmu-v6x/performance-test.px4board b/boards/auterion/fmu-v6x/performance-test.px4board new file mode 100644 index 0000000000..5e69dd7ae3 --- /dev/null +++ b/boards/auterion/fmu-v6x/performance-test.px4board @@ -0,0 +1,31 @@ +CONFIG_BOARD_TOOLCHAIN="arm-none-eabi" +CONFIG_BOARD_ARCHITECTURE="cortex-m7" +CONFIG_BOARD_ETHERNET=y +CONFIG_BOARD_SERIAL_GPS1="/dev/ttyS0" +CONFIG_BOARD_SERIAL_GPS2="/dev/ttyS7" +CONFIG_BOARD_SERIAL_TEL1="/dev/ttyS6" +CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS4" +CONFIG_BOARD_SERIAL_TEL3="/dev/ttyS1" +CONFIG_BOARD_SERIAL_EXT2="/dev/ttyS3" +CONFIG_BOARD_ROMFSROOT="performance-test" +CONFIG_DRIVERS_ADC_BOARD_ADC=y +CONFIG_SYSTEMCMDS_DMESG=y +CONFIG_SYSTEMCMDS_GPIO=y +CONFIG_SYSTEMCMDS_HARDFAULT_LOG=y +CONFIG_SYSTEMCMDS_I2CDETECT=y +CONFIG_SYSTEMCMDS_LED_CONTROL=y +CONFIG_SYSTEMCMDS_MFT=y +CONFIG_SYSTEMCMDS_MTD=y +CONFIG_SYSTEMCMDS_MFT_CFG=y +CONFIG_SYSTEMCMDS_PARAM=y +CONFIG_SYSTEMCMDS_PERF=y +CONFIG_SYSTEMCMDS_REBOOT=y +CONFIG_SYSTEMCMDS_SD_BENCH=y +CONFIG_SYSTEMCMDS_SD_STRESS=y +CONFIG_SYSTEMCMDS_SERIAL_TEST=y +CONFIG_SYSTEMCMDS_SYSTEM_TIME=y +CONFIG_SYSTEMCMDS_TOP=y +CONFIG_SYSTEMCMDS_TOPIC_LISTENER=y +CONFIG_SYSTEMCMDS_UORB=y +CONFIG_SYSTEMCMDS_VER=y +CONFIG_SYSTEMCMDS_WORK_QUEUE=y diff --git a/boards/auterion/fmu-v6x/rover.px4board b/boards/auterion/fmu-v6x/rover.px4board new file mode 100644 index 0000000000..cd49a241b5 --- /dev/null +++ b/boards/auterion/fmu-v6x/rover.px4board @@ -0,0 +1,17 @@ +CONFIG_MODULES_AIRSPEED_SELECTOR=n +CONFIG_MODULES_FLIGHT_MODE_MANAGER=n +CONFIG_MODULES_FW_ATT_CONTROL=n +CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n +CONFIG_MODULES_FW_MODE_MANAGER=n +CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=n +CONFIG_MODULES_FW_RATE_CONTROL=n +CONFIG_MODULES_MC_ATT_CONTROL=n +CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=n +CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=n +CONFIG_MODULES_MC_POS_CONTROL=n +CONFIG_MODULES_MC_RATE_CONTROL=n +CONFIG_MODULES_VTOL_ATT_CONTROL=n +CONFIG_DRIVERS_ROBOCLAW=y +CONFIG_MODULES_ROVER_ACKERMANN=y +CONFIG_MODULES_ROVER_DIFFERENTIAL=y +CONFIG_MODULES_ROVER_MECANUM=y diff --git a/boards/auterion/fmu-v6x/spacecraft.px4board b/boards/auterion/fmu-v6x/spacecraft.px4board new file mode 100644 index 0000000000..997a9054a2 --- /dev/null +++ b/boards/auterion/fmu-v6x/spacecraft.px4board @@ -0,0 +1,21 @@ +CONFIG_BOARD_PWM_FREQ=100000 +CONFIG_MODULES_AIRSPEED_SELECTOR=n +CONFIG_MODULES_FLIGHT_MODE_MANAGER=n +CONFIG_MODULES_FW_ATT_CONTROL=n +CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n +CONFIG_MODULES_FW_MODE_MANAGER=n +CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=n +CONFIG_MODULES_FW_RATE_CONTROL=n +CONFIG_MODULES_LAND_DETECTOR=n +CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=n +CONFIG_MODULES_MC_ATT_CONTROL=n +CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=n +CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=n +CONFIG_MODULES_MC_POS_CONTROL=n +CONFIG_MODULES_MC_RATE_CONTROL=n +CONFIG_MODULES_VTOL_ATT_CONTROL=n +CONFIG_MODULES_ROVER_ACKERMANN=n +CONFIG_MODULES_ROVER_DIFFERENTIAL=n +CONFIG_MODULES_ROVER_MECANUM=n +CONFIG_MODULES_CONTROL_ALLOCATOR=y +CONFIG_MODULES_SPACECRAFT=y diff --git a/boards/auterion/fmu-v6x/src/CMakeLists.txt b/boards/auterion/fmu-v6x/src/CMakeLists.txt new file mode 100644 index 0000000000..39ec808e1e --- /dev/null +++ b/boards/auterion/fmu-v6x/src/CMakeLists.txt @@ -0,0 +1,76 @@ +############################################################################ +# +# Copyright (c) 2016 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ +if("${PX4_BOARD_LABEL}" STREQUAL "bootloader") + add_compile_definitions(BOOTLOADER) + add_library(drivers_board + bootloader_main.c + init.cpp + usb.c + timer_config.cpp + ) + target_link_libraries(drivers_board + PRIVATE + nuttx_arch # sdio + nuttx_drivers # sdio + px4_layer #gpio + arch_io_pins # iotimer + bootloader + ) + target_include_directories(drivers_board PRIVATE ${PX4_SOURCE_DIR}/platforms/nuttx/src/bootloader/common) + +else() + add_library(drivers_board + can.c + i2c.cpp + init.cpp + led.c + mtd.cpp + sdio.c + spi.cpp + timer_config.cpp + usb.c + ) + add_dependencies(drivers_board arch_board_hw_info) + + target_link_libraries(drivers_board + PRIVATE + arch_io_pins + arch_spi + arch_board_hw_info + drivers__led # drv_led_start + nuttx_arch # sdio + nuttx_drivers # sdio + px4_layer + platform_gpio_mcp23009 + ) +endif() diff --git a/boards/auterion/fmu-v6x/src/board_config.h b/boards/auterion/fmu-v6x/src/board_config.h new file mode 100644 index 0000000000..c50f0705f2 --- /dev/null +++ b/boards/auterion/fmu-v6x/src/board_config.h @@ -0,0 +1,520 @@ +/**************************************************************************** + * + * Copyright (c) 2016-2022 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file board_config.h + * + * AuterionFMU-v6x internal definitions + */ + +#pragma once + +/**************************************************************************************************** + * Included Files + ****************************************************************************************************/ + +#include +#include +#include + + +#include + +/**************************************************************************************************** + * Definitions + ****************************************************************************************************/ + +#undef TRACE_PINS + +/* PX4IO connection configuration */ + +#define BOARD_USES_PX4IO_VERSION 2 +#define PX4IO_SERIAL_DEVICE "/dev/ttyS5" +#define PX4IO_SERIAL_TX_GPIO GPIO_USART6_TX +#define PX4IO_SERIAL_RX_GPIO GPIO_USART6_RX +#define PX4IO_SERIAL_BASE STM32_USART6_BASE +#define PX4IO_SERIAL_VECTOR STM32_IRQ_USART6 +#define PX4IO_SERIAL_TX_DMAMAP DMAMAP_USART6_TX +#define PX4IO_SERIAL_RX_DMAMAP DMAMAP_USART6_RX +#define PX4IO_SERIAL_RCC_REG STM32_RCC_APB2ENR +#define PX4IO_SERIAL_RCC_EN RCC_APB2ENR_USART6EN +#define PX4IO_SERIAL_CLOCK STM32_PCLK2_FREQUENCY +#define PX4IO_SERIAL_BITRATE 1500000 /* 1.5Mbps -> max rate for IO */ + +/* Configuration ************************************************************************************/ + +#define BOARD_HAS_LTC44XX_VALIDS 2 // N Bricks +#define BOARD_HAS_USB_VALID 1 // LTC Has USB valid +#define BOARD_HAS_NBAT_V 2d // 2 Digital Voltage +#define BOARD_HAS_NBAT_I 2d // 2 Digital Current + +/* PX4FMU GPIOs ***********************************************************************************/ + +/* Trace Clock and D0-D3 are available on the trace connector + * + * TRACECLK PE2 - Dedicated - Trace Connector Pin 1 + * TRACED0 PE3 - nLED_RED - Trace Connector Pin 3 + * TRACED1 PE4 - nLED_GREEN - Trace Connector Pin 5 + * TRACED2 PE5 - nLED_BLUE - Trace Connector Pin 7 + * TRACED3 PE6 - nARMED - Trace Connector Pin 8 + + */ + +/* LEDs are driven with push open drain to support Anode to 5V or 3.3V or used as TRACE0-2 */ + +#if !defined(TRACE_PINS) +# define GPIO_nLED_RED /* PE3 */ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN3) +# define GPIO_nLED_GREEN /* PE4 */ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN4) +# define GPIO_nLED_BLUE /* PE5 */ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN5) + +# define BOARD_HAS_CONTROL_STATUS_LEDS 1 +# define BOARD_OVERLOAD_LED LED_RED +# define BOARD_ARMED_STATE_LED LED_BLUE + +#else + +# define GPIO_TRACECLK1 (GPIO_TRACECLK |GPIO_PULLUP|GPIO_SPEED_100MHz|GPIO_PUSHPULL) //(GPIO_ALT|GPIO_AF0|GPIO_PORTE|GPIO_PIN2) +# define GPIO_TRACED0 (GPIO_TRACED0_2|GPIO_PULLUP|GPIO_SPEED_100MHz|GPIO_PUSHPULL) //(GPIO_ALT|GPIO_AF0|GPIO_PORTE|GPIO_PIN3) +# define GPIO_TRACED1 (GPIO_TRACED1_2|GPIO_PULLUP|GPIO_SPEED_100MHz|GPIO_PUSHPULL) //(GPIO_ALT|GPIO_AF0|GPIO_PORTE|GPIO_PIN4) +# define GPIO_TRACED2 (GPIO_TRACED2_2|GPIO_PULLUP|GPIO_SPEED_100MHz|GPIO_PUSHPULL) //(GPIO_ALT|GPIO_AF0|GPIO_PORTE|GPIO_PIN5) +# define GPIO_TRACED3 (GPIO_TRACED3_2|GPIO_PULLUP|GPIO_SPEED_100MHz|GPIO_PUSHPULL) //(GPIO_ALT|GPIO_AF0|GPIO_PORTE|GPIO_PIN6) +//#define GPIO_TRACESWO //(GPIO_ALT|GPIO_AF0|GPIO_PORTB|GPIO_PIN3) + +# undef BOARD_HAS_CONTROL_STATUS_LEDS +# undef BOARD_OVERLOAD_LED +# undef BOARD_ARMED_STATE_LED + +# define GPIO_nLED_RED GPIO_TRACED0 +# define GPIO_nLED_GREEN GPIO_TRACED1 +# define GPIO_nLED_BLUE GPIO_TRACED2 +# define GPIO_nARMED GPIO_TRACED3 +# define GPIO_nARMED_INIT GPIO_TRACED3 +#endif + + +/* SPI */ + +#define SPI6_nRESET_EXTERNAL1 /* PF10 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTF|GPIO_PIN10) +#define GPIO_SYNC /* PE9 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_100MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN9) + +/* I2C busses */ + +/* Devices on the onboard buses. + * + * Note that these are unshifted addresses. + */ +#define BOARD_MTD_NUM_EEPROM 2 /* MTD: base_eeprom, imu_eeprom*/ + +#define PX4_I2C_OBDEV_SE050 0x48 + +#define GPIO_I2C2_DRDY1_BMP388 /* PG5 */ (GPIO_INPUT|GPIO_FLOAT|GPIO_EXTI|GPIO_PORTG|GPIO_PIN5) + +/* + * ADC channels + * + * These are the channel numbers of the ADCs of the microcontroller that + * can be used by the Px4 Firmware in the adc driver + */ + +/* ADC defines to be used in sensors.cpp to read from a particular channel */ + +#define ADC1_CH(n) (n) + +/* N.B. there is no offset mapping needed for ADC3 because */ +#define ADC3_CH(n) (n) + +/* We are only use ADC3 for REV/VER. + * ADC3_6V6 and ADC3_3V3 are mapped back to ADC1 + * To do this We are relying on PC2_C, PC3_C being connected to PC2, PC3 + * respectively by the SYSCFG_PMCR default of setting for PC3SO PC2SO PA1SO + * PA0SO of 0. + * + * 0 Analog switch closed (pads are connected through the analog switch) + * + * So ADC3_INP0 is GPIO_ADC123_INP12 + * ADC3_INP1 is GPIO_ADC12_INP13 + */ + +/* Define GPIO pins used as ADC N.B. Channel numbers must match below */ + +#define PX4_ADC_GPIO \ + /* PA0 */ GPIO_ADC1_INP16, \ + /* PA4 */ GPIO_ADC12_INP18, \ + /* PB0 */ GPIO_ADC12_INP9, \ + /* PB1 */ GPIO_ADC12_INP5, \ + /* PC2 */ GPIO_ADC123_INP12, \ + /* PC3 */ GPIO_ADC12_INP13, \ + /* PF12 */ GPIO_ADC1_INP6, \ + /* PH3 */ GPIO_ADC3_INP14, \ + /* PH4 */ GPIO_ADC3_INP15 + +/* Define Channel numbers must match above GPIO pin IN(n)*/ +#define ADC_SCALED_VDD_3V3_SENSORS1_CHANNEL /* PA0 */ ADC1_CH(16) +#define ADC_SCALED_VDD_3V3_SENSORS2_CHANNEL /* PA4 */ ADC1_CH(18) +#define ADC_SCALED_VDD_3V3_SENSORS3_CHANNEL /* PB0 */ ADC1_CH(9) +#define ADC_SCALED_V5_CHANNEL /* PB1 */ ADC1_CH(5) +#define ADC_ADC3_6V6_CHANNEL /* PC2 */ ADC3_CH(12) +#define ADC_ADC3_3V3_CHANNEL /* PC3 */ ADC3_CH(13) +#define ADC_SCALED_VDD_3V3_SENSORS4_CHANNEL /* PF12 */ ADC1_CH(6) +#define ADC_HW_VER_SENSE_CHANNEL /* PH3 */ ADC3_CH(14) +#define ADC_HW_REV_SENSE_CHANNEL /* PH4 */ ADC3_CH(15) + +#define ADC_CHANNELS \ + ((1 << ADC_SCALED_VDD_3V3_SENSORS1_CHANNEL) | \ + (1 << ADC_SCALED_VDD_3V3_SENSORS2_CHANNEL) | \ + (1 << ADC_SCALED_VDD_3V3_SENSORS3_CHANNEL) | \ + (1 << ADC_SCALED_V5_CHANNEL) | \ + (1 << ADC_ADC3_6V6_CHANNEL) | \ + (1 << ADC_ADC3_3V3_CHANNEL)) | \ + (1 << ADC_SCALED_VDD_3V3_SENSORS4_CHANNEL) + +/* HW has to large of R termination on ADC todo:change when HW value is chosen */ + +#define HW_REV_VER_ADC_BASE STM32_ADC3_BASE + +#define SYSTEM_ADC_BASE STM32_ADC1_BASE + +/* HW has to large of R termination on ADC todo:change when HW value is chosen */ +#define BOARD_ADC_OPEN_CIRCUIT_V (5.6f) + +/* HW Version and Revision drive signals Default to 1 to detect */ +#define BOARD_HAS_HW_SPLIT_VERSIONING + +#define GPIO_HW_VER_REV_DRIVE /* PG0 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTG|GPIO_PIN0) +#define GPIO_HW_REV_SENSE /* PH4 */ GPIO_ADC3_INP15 +#define GPIO_HW_VER_SENSE /* PH3 */ GPIO_ADC3_INP14 +#define HW_INFO_INIT_PREFIX "V6X" + +#define BOARD_NUM_SPI_CFG_HW_VERSIONS 1 +// Base/FMUM +#define V6X_16 HW_FMUM_ID(0x10) // FMUV6X, Auterion Sensor Set Rev 16 from EEPROM + +#define UAVCAN_NUM_IFACES_RUNTIME 1 + +/* HEATER + * PWM in future + */ +#define GPIO_HEATER_OUTPUT /* PB10 T2CH3 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN10) +#define HEATER_OUTPUT_EN(on_true) px4_arch_gpiowrite(GPIO_HEATER_OUTPUT, (on_true)) + +/* PE6 is nARMED + * The GPIO will be set as input while not armed HW will have external HW Pull UP. + * While armed it shall be configured at a GPIO OUT set LOW + */ +#if !defined(TRACE_PINS) +#define GPIO_nARMED_INIT /* PE6 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTE|GPIO_PIN6) +#define GPIO_nARMED /* PE6 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN6) +#define BOARD_INDICATE_EXTERNAL_LOCKOUT_STATE(enabled) px4_arch_configgpio((enabled) ? GPIO_nARMED : GPIO_nARMED_INIT) +#define BOARD_GET_EXTERNAL_LOCKOUT_STATE() px4_arch_gpioread(GPIO_nARMED) +#endif + + +/* PWM + */ +#define DIRECT_PWM_OUTPUT_CHANNELS 9 + + +/* Power supply control and monitoring GPIOs */ + +#define GPIO_nPOWER_IN_A /* PG1 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTG|GPIO_PIN1) +#define GPIO_nPOWER_IN_B /* PG2 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTG|GPIO_PIN2) +#define GPIO_nPOWER_IN_C /* PG3 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTG|GPIO_PIN3) + +#define GPIO_nVDD_BRICK1_VALID GPIO_nPOWER_IN_A /* Brick 1 Is Chosen */ +#define GPIO_nVDD_BRICK2_VALID GPIO_nPOWER_IN_B /* Brick 2 Is Chosen */ +#define BOARD_NUMBER_BRICKS 2 +#define BOARD_NUMBER_DIGITAL_BRICKS 2 +#define GPIO_nVDD_USB_VALID GPIO_nPOWER_IN_C /* USB Is Chosen */ + +#define GPIO_VDD_5V_PERIPH_nEN /* PG4 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTG|GPIO_PIN4) +#define GPIO_VDD_5V_PERIPH_nOC /* PE15 */ (GPIO_INPUT |GPIO_FLOAT|GPIO_PORTE|GPIO_PIN15) +#define GPIO_VDD_5V_HIPOWER_nEN /* PG10 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTG|GPIO_PIN10) +#define GPIO_VDD_5V_HIPOWER_nOC /* PF13 */ (GPIO_INPUT |GPIO_FLOAT|GPIO_PORTF|GPIO_PIN13) +#define GPIO_VDD_3V3_SENSORS4_EN /* PG8 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTG|GPIO_PIN8) +#define GPIO_VDD_3V3_SPEKTRUM_POWER_EN /* PH2 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN2) +#define GPIO_VDD_3V3_SD_CARD_EN /* PC13 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTC|GPIO_PIN13) + +/* MCP23009 GPIO expander */ +#define BOARD_GPIO_VDD_5V_COMP_VALID "/dev/gpio4" +#define BOARD_GPIO_VDD_5V_CAN1_GPS1_VALID "/dev/gpio5" + + +/* Spare GPIO */ + +#define GPIO_PG6 /* PG6 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTG|GPIO_PIN6) +#define GPIO_PD15 /* PD15 */ (GPIO_INPUT|GPIO_FLOAT|GPIO_PORTD|GPIO_PIN15) + +/* ETHERNET GPIO */ + +#define GPIO_ETH_POWER_EN /* PG15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTG|GPIO_PIN15) + +/* NFC GPIO */ + +#define GPIO_NFC_GPIO /* PC0 */ (GPIO_INPUT|GPIO_FLOAT|GPIO_EXTI|GPIO_PORTC|GPIO_PIN0) + + +/* Define True logic Power Control in arch agnostic form */ + +#define VDD_5V_PERIPH_EN(on_true) px4_arch_gpiowrite(GPIO_VDD_5V_PERIPH_nEN, !(on_true)) +#define VDD_5V_HIPOWER_EN(on_true) px4_arch_gpiowrite(GPIO_VDD_5V_HIPOWER_nEN, !(on_true)) +#define VDD_3V3_SENSORS4_EN(on_true) px4_arch_gpiowrite(GPIO_VDD_3V3_SENSORS4_EN, (on_true)) +#define VDD_3V3_SPEKTRUM_POWER_EN(on_true) px4_arch_gpiowrite(GPIO_VDD_3V3_SPEKTRUM_POWER_EN, (on_true)) +#define READ_VDD_3V3_SPEKTRUM_POWER_EN() px4_arch_gpioread(GPIO_VDD_3V3_SPEKTRUM_POWER_EN) +#define VDD_3V3_SD_CARD_EN(on_true) px4_arch_gpiowrite(GPIO_VDD_3V3_SD_CARD_EN, (on_true)) +#define VDD_3V3_ETH_POWER_EN(on_true) px4_arch_gpiowrite(GPIO_ETH_POWER_EN, (on_true)) + + +/* Tone alarm output */ + +#define TONE_ALARM_TIMER 14 /* Timer 14 */ +#define TONE_ALARM_CHANNEL 1 /* PF9 GPIO_TIM14_CH1OUT_2 */ + +#define GPIO_BUZZER_1 /* PF9 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTF|GPIO_PIN9) + +#define GPIO_TONE_ALARM_IDLE GPIO_BUZZER_1 +#define GPIO_TONE_ALARM GPIO_TIM14_CH1OUT_2 + +/* USB OTG FS + * + * PA9 OTG_FS_VBUS VBUS sensing + */ +#define GPIO_OTGFS_VBUS /* PA9 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_SPEED_100MHz|GPIO_PORTA|GPIO_PIN9) + +/* High-resolution timer */ +#define HRT_TIMER 8 /* use timer8 for the HRT */ +#define HRT_TIMER_CHANNEL 3 /* use capture/compare channel 3 */ + +#define HRT_PPM_CHANNEL /* T8C1 */ 1 /* use capture/compare channel 1 */ +#define GPIO_PPM_IN /* PI5 T8C1 */ GPIO_TIM8_CH1IN_2 + +/* Some RC protocols are bi-directional, therefore we need a half-duplex UART */ +#define RC_SERIAL_SINGLEWIRE +/* The STM32 UART by default wires half-duplex mode to the TX pin, but our + * signal in routed to the RX pin, so we need to swap the pins */ +#define RC_SERIAL_SWAP_RXTX + +/* Input Capture Channels. */ +#define INPUT_CAP1_TIMER 1 +#define INPUT_CAP1_CHANNEL /* T1C2 */ 2 +#define GPIO_INPUT_CAP1 /* PE11 */ GPIO_TIM1_CH2IN + +/* PWM input driver. Use FMU AUX5 pins attached to timer4 channel 2 */ +#define PWMIN_TIMER 4 +#define PWMIN_TIMER_CHANNEL /* T4C2 */ 2 +#define GPIO_PWM_IN /* PD13 */ GPIO_TIM4_CH2IN_2 + +/* Safety Switch is HW version dependent on having an PX4IO + * So we init to a benign state with the _INIT definition + * and provide the the non _INIT one for the driver to make a run time + * decision to use it. + */ +#define GPIO_nSAFETY_SWITCH_LED_OUT_INIT /* PD10 */ (GPIO_INPUT|GPIO_FLOAT|GPIO_PORTD|GPIO_PIN10) +#define GPIO_nSAFETY_SWITCH_LED_OUT /* PD10 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN10) + +/* Enable the FMU to control it if there is no px4io fixme:This should be BOARD_SAFETY_LED(__ontrue) */ +#define GPIO_LED_SAFETY GPIO_nSAFETY_SWITCH_LED_OUT + +#define GPIO_SAFETY_SWITCH_IN /* PF5 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTF|GPIO_PIN5) +/* Enable the FMU to use the switch it if there is no px4io fixme:This should be BOARD_SAFTY_BUTTON() */ +#define GPIO_BTN_SAFETY GPIO_SAFETY_SWITCH_IN /* Enable the FMU to control it if there is no px4io */ + +/* Power switch controls ******************************************************/ + +#define SPEKTRUM_POWER(_on_true) VDD_3V3_SPEKTRUM_POWER_EN(_on_true) + +/* + * FMUv6X has a separate RC_IN + * + * GPIO PPM_IN on PI5 T8CH1 + * SPEKTRUM_RX (it's TX or RX in Bind) on UART6 PC7 + * Inversion is possible in the UART and can drive GPIO PPM_IN as an output + */ + +#define GPIO_PPM_IN_AS_OUT (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTI|GPIO_PIN5) +#define SPEKTRUM_RX_AS_GPIO_OUTPUT() px4_arch_configgpio(GPIO_PPM_IN_AS_OUT) +#define SPEKTRUM_RX_AS_UART() /* Can be left as uart */ +#define SPEKTRUM_OUT(_one_true) px4_arch_gpiowrite(GPIO_PPM_IN_AS_OUT, (_one_true)) + +#define SDIO_SLOTNO 0 /* Only one slot */ +#define SDIO_MINOR 0 + +/* SD card bringup does not work if performed on the IDLE thread because it + * will cause waiting. Use either: + * + * CONFIG_BOARDCTL=y, OR + * CONFIG_BOARD_INITIALIZE=y && CONFIG_BOARD_INITTHREAD=y + */ + +#if defined(CONFIG_BOARD_INITIALIZE) && !defined(CONFIG_BOARDCTL) && \ + !defined(CONFIG_BOARD_INITTHREAD) +# warning SDIO initialization cannot be perfomed on the IDLE thread +#endif + +/* By Providing BOARD_ADC_USB_CONNECTED (using the px4_arch abstraction) + * this board support the ADC system_power interface, and therefore + * provides the true logic GPIO BOARD_ADC_xxxx macros. + */ +#define BOARD_ADC_USB_CONNECTED (px4_arch_gpioread(GPIO_OTGFS_VBUS)) +#define BOARD_ADC_USB_VALID (!px4_arch_gpioread(GPIO_nVDD_USB_VALID)) + +/* FMUv6X never powers off the Servo rail */ + +#define BOARD_ADC_SERVO_VALID (1) + +#if !defined(BOARD_HAS_LTC44XX_VALIDS) || BOARD_HAS_LTC44XX_VALIDS == 0 +# define BOARD_ADC_BRICK1_VALID (1) +# define BOARD_ADC_BRICK2_VALID (0) +#elif BOARD_HAS_LTC44XX_VALIDS == 1 +# define BOARD_ADC_BRICK1_VALID (!px4_arch_gpioread(GPIO_nVDD_BRICK1_VALID)) +# define BOARD_ADC_BRICK2_VALID (0) +#elif BOARD_HAS_LTC44XX_VALIDS == 2 +# define BOARD_ADC_BRICK1_VALID (!px4_arch_gpioread(GPIO_nVDD_BRICK1_VALID)) +# define BOARD_ADC_BRICK2_VALID (!px4_arch_gpioread(GPIO_nVDD_BRICK2_VALID)) +#elif BOARD_HAS_LTC44XX_VALIDS == 3 +# define BOARD_ADC_BRICK1_VALID (!px4_arch_gpioread(GPIO_nVDD_BRICK1_VALID)) +# define BOARD_ADC_BRICK2_VALID (!px4_arch_gpioread(GPIO_nVDD_BRICK2_VALID)) +# define BOARD_ADC_BRICK3_VALID (!px4_arch_gpioread(GPIO_nVDD_BRICK3_VALID)) +#elif BOARD_HAS_LTC44XX_VALIDS == 4 +# define BOARD_ADC_BRICK1_VALID (!px4_arch_gpioread(GPIO_nVDD_BRICK1_VALID)) +# define BOARD_ADC_BRICK2_VALID (!px4_arch_gpioread(GPIO_nVDD_BRICK2_VALID)) +# define BOARD_ADC_BRICK3_VALID (!px4_arch_gpioread(GPIO_nVDD_BRICK3_VALID)) +# define BOARD_ADC_BRICK4_VALID (!px4_arch_gpioread(GPIO_nVDD_BRICK4_VALID)) +#else +# error Unsupported BOARD_HAS_LTC44XX_VALIDS value +#endif + +#define BOARD_ADC_PERIPH_5V_OC (!px4_arch_gpioread(GPIO_VDD_5V_PERIPH_nOC)) +#define BOARD_ADC_HIPOWER_5V_OC (!px4_arch_gpioread(GPIO_VDD_5V_HIPOWER_nOC)) + + +/* This board provides a DMA pool and APIs */ +#define BOARD_DMA_ALLOC_POOL_SIZE 5120 + +/* This board provides the board_on_reset interface */ + +#define BOARD_HAS_ON_RESET 1 + +#if defined(TRACE_PINS) +#define GPIO_TRACE \ + GPIO_TRACECLK1, \ + GPIO_TRACED0, \ + GPIO_TRACED1, \ + GPIO_TRACED2, \ + GPIO_TRACED3 +#else +#define GPIO_TRACE (GPIO_OUTPUT|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN2) +#endif + +#define PX4_GPIO_INIT_LIST { \ + GPIO_TRACE, \ + PX4_ADC_GPIO, \ + GPIO_HW_VER_REV_DRIVE, \ + GPIO_CAN1_TX, \ + GPIO_CAN1_RX, \ + GPIO_CAN2_TX, \ + GPIO_CAN2_RX, \ + GPIO_HEATER_OUTPUT, \ + GPIO_nPOWER_IN_A, \ + GPIO_nPOWER_IN_B, \ + GPIO_nPOWER_IN_C, \ + GPIO_VDD_5V_PERIPH_nEN, \ + GPIO_VDD_5V_PERIPH_nOC, \ + GPIO_VDD_5V_HIPOWER_nEN, \ + GPIO_VDD_5V_HIPOWER_nOC, \ + GPIO_VDD_3V3_SENSORS4_EN, \ + GPIO_VDD_3V3_SPEKTRUM_POWER_EN, \ + GPIO_VDD_3V3_SD_CARD_EN, \ + GPIO_PD15, \ + GPIO_SYNC, \ + SPI6_nRESET_EXTERNAL1, \ + GPIO_ETH_POWER_EN, \ + GPIO_NFC_GPIO, \ + GPIO_TONE_ALARM_IDLE, \ + GPIO_nSAFETY_SWITCH_LED_OUT_INIT, \ + GPIO_SAFETY_SWITCH_IN, \ + GPIO_PG6, \ + GPIO_nARMED_INIT \ + } + +#define BOARD_ENABLE_CONSOLE_BUFFER + +#define PX4_I2C_BUS_MTD 4,5 + + +#define BOARD_NUM_IO_TIMERS 5 + +__BEGIN_DECLS + +/**************************************************************************************************** + * Public Types + ****************************************************************************************************/ + +/**************************************************************************************************** + * Public data + ****************************************************************************************************/ + +#ifndef __ASSEMBLY__ + +/**************************************************************************************************** + * Public Functions + ****************************************************************************************************/ + +/**************************************************************************** + * Name: stm32_sdio_initialize + * + * Description: + * Initialize SDIO-based MMC/SD card support + * + ****************************************************************************/ + +int stm32_sdio_initialize(void); + +/**************************************************************************************************** + * Name: stm32_spiinitialize + * + * Description: + * Called to configure SPI chip select GPIO pins for the PX4FMU board. + * + ****************************************************************************************************/ + +extern void stm32_spiinitialize(void); + +extern void stm32_usbinitialize(void); + +extern void board_peripheral_reset(int ms); + +#include + +#endif /* __ASSEMBLY__ */ + +__END_DECLS diff --git a/boards/auterion/fmu-v6x/src/bootloader_main.c b/boards/auterion/fmu-v6x/src/bootloader_main.c new file mode 100644 index 0000000000..77df9e78bc --- /dev/null +++ b/boards/auterion/fmu-v6x/src/bootloader_main.c @@ -0,0 +1,62 @@ +/**************************************************************************** + * + * Copyright (c) 2019-2021 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file bootloader_main.c + * + * FMU-specific early startup code for bootloader +*/ + +#include "board_config.h" +#include "bl.h" + +#include +#include +#include +#include +#include +#include "arm_internal.h" +#include + +extern int sercon_main(int c, char **argv); + +void board_late_initialize(void) +{ + sercon_main(0, NULL); +} + +extern void sys_tick_handler(void); +void board_timerhook(void) +{ + sys_tick_handler(); +} diff --git a/boards/auterion/fmu-v6x/src/can.c b/boards/auterion/fmu-v6x/src/can.c new file mode 100644 index 0000000000..cdebe7a3ad --- /dev/null +++ b/boards/auterion/fmu-v6x/src/can.c @@ -0,0 +1,142 @@ +/**************************************************************************** + * + * Copyright (C) 2012 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file can.c + * + * Board-specific CAN functions. + */ + +#if !defined(CONFIG_CAN) + +#include + +#include "board_config.h" + + +__EXPORT +uint16_t board_get_can_interfaces(void) +{ + uint16_t enabled_interfaces = 0x3; + + if (!PX4_MFT_HW_SUPPORTED(PX4_MFT_CAN2)) { + enabled_interfaces &= ~(1 << 1); + } + + return enabled_interfaces; +} + +#else + +#include +#include + +#include +#include + +#include "chip.h" +#include "arm_internal.h" + +#include "chip.h" +#include "stm32_can.h" +#include "board_config.h" + +/************************************************************************************ + * Pre-processor Definitions + ************************************************************************************/ +/* Configuration ********************************************************************/ + +#if defined(CONFIG_STM32_CAN1) && defined(CONFIG_STM32_CAN2) +# warning "Both CAN1 and CAN2 are enabled. Assuming only CAN1." +# undef CONFIG_STM32_CAN2 +#endif + +#ifdef CONFIG_STM32_CAN1 +# define CAN_PORT 1 +#else +# define CAN_PORT 2 +#endif + +/************************************************************************************ + * Private Functions + ************************************************************************************/ + +/************************************************************************************ + * Public Functions + ************************************************************************************/ +int can_devinit(void); + +/************************************************************************************ + * Name: can_devinit + * + * Description: + * All STM32 architectures must provide the following interface to work with + * examples/can. + * + ************************************************************************************/ + +int can_devinit(void) +{ + static bool initialized = false; + struct can_dev_s *can; + int ret; + + /* Check if we have already initialized */ + + if (!initialized) { + /* Call stm32_caninitialize() to get an instance of the CAN interface */ + + can = stm32_caninitialize(CAN_PORT); + + if (can == NULL) { + canerr("ERROR: Failed to get CAN interface\n"); + return -ENODEV; + } + + /* Register the CAN driver at "/dev/can0" */ + + ret = can_register("/dev/can0", can); + + if (ret < 0) { + canerr("ERROR: can_register failed: %d\n", ret); + return ret; + } + + /* Now we are initialized */ + + initialized = true; + } + + return OK; +} +#endif /* CONFIG_CAN */ diff --git a/boards/auterion/fmu-v6x/src/hw_config.h b/boards/auterion/fmu-v6x/src/hw_config.h new file mode 100644 index 0000000000..4ad1049fed --- /dev/null +++ b/boards/auterion/fmu-v6x/src/hw_config.h @@ -0,0 +1,128 @@ +/* + * hw_config.h + * + * Created on: May 17, 2015 + * Author: david_s5 + */ + +#ifndef HW_CONFIG_H_ +#define HW_CONFIG_H_ + +/**************************************************************************** + * 10-8--2016: + * To simplify the ripple effect on the tools, we will be using + * /dev/serial/by-id/PX4 to locate PX4 devices. Therefore + * moving forward all Bootloaders must contain the prefix "PX4 BL " + * in the USBDEVICESTRING + * This Change will be made in an upcoming BL release + ****************************************************************************/ +/* + * Define usage to configure a bootloader + * + * + * Constant example Usage + * APP_LOAD_ADDRESS 0x08004000 - The address in Linker Script, where the app fw is org-ed + * BOOTLOADER_DELAY 5000 - Ms to wait while under USB pwr or bootloader request + * BOARD_FMUV2 + * INTERFACE_USB 1 - (Optional) Scan and use the USB interface for bootloading + * INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading + * USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string + * USBPRODUCTID 0x0011 - PID Should match defconfig + * BOOT_DELAY_ADDRESS 0x000001a0 - (Optional) From the linker script from Linker Script to get a custom + * delay provided by an APP FW + * BOARD_TYPE 9 - Must match .prototype boad_id + * _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection + * BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector + * BOARD_FLASH_SECTORS 11 - Hard coded zero based last sector + * BOARD_FLASH_SIZE (_FLASH_KBYTES*1024)- Total Flash size of device, determined at run time. + * (1024 * 1024) - Hard coded Total Flash of device - The bootloader and app reserved will be deducted + * programmatically + * + * BOARD_FIRST_FLASH_SECTOR_TO_ERASE 2 - Optional sectors index in the flash_sectors table (F4 only), to begin erasing. + * This is to allow sectors to be reserved for app fw usage. That will NOT be erased + * during a FW upgrade. + * The default is 0, and selects the first sector to be erased, as the 0th entry in the + * flash_sectors table. Which is the second physical sector of FLASH in the device. + * The first physical sector of FLASH is used by the bootloader, and is not defined + * in the table. + * + * APP_RESERVATION_SIZE (BOARD_FIRST_FLASH_SECTOR_TO_ERASE * 16 * 1024) - Number of bytes reserved by the APP FW. This number plus + * BOOTLOADER_RESERVATION_SIZE will be deducted from + * BOARD_FLASH_SIZE to determine the size of the App FW + * and hence the address space of FLASH to erase and program. + * USBMFGSTRING "PX4 AP" - Optional USB MFG string (default is '3D Robotics' if not defined.) + * SERIAL_BREAK_DETECT_DISABLED - Optional prevent break selection on Serial port from entering or staying in BL + * + * * Other defines are somewhat self explanatory. + */ + +/* Boot device selection list*/ +#define USB0_DEV 0x01 +#define SERIAL0_DEV 0x02 +#define SERIAL1_DEV 0x04 + +#define APP_LOAD_ADDRESS 0x08020000 +#define BOOTLOADER_DELAY 5000 +#define INTERFACE_USB 1 +#define INTERFACE_USB_CONFIG "/dev/ttyACM0" +#define BOARD_VBUS MK_GPIO_INPUT(GPIO_OTGFS_VBUS) + +//#define USE_VBUS_PULL_DOWN +#define INTERFACE_USART 1 +#define INTERFACE_USART_CONFIG "/dev/ttyS0,1500000" +#define BOOT_DELAY_ADDRESS 0x000001a0 +#define BOARD_TYPE 53 +#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880) +#define BOARD_FLASH_SECTORS (15) +#define BOARD_FLASH_SIZE (_FLASH_KBYTES * 1024) + +#define OSC_FREQ 16 + +#define BOARD_PIN_LED_ACTIVITY GPIO_nLED_BLUE // BLUE +#define BOARD_PIN_LED_BOOTLOADER GPIO_nLED_GREEN // GREEN +#define BOARD_LED_ON 0 +#define BOARD_LED_OFF 1 + +#define SERIAL_BREAK_DETECT_DISABLED 1 + +/* + * Uncommenting this allows to force the bootloader through + * a PWM output pin. As this can accidentally initialize + * an ESC prematurely, it is not recommended. This feature + * has not been used and hence defaults now to off. + * + * # define BOARD_FORCE_BL_PIN_OUT (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN14) + * # define BOARD_FORCE_BL_PIN_IN (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTE|GPIO_PIN11) + * + * # define BOARD_POWER_PIN_OUT (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTA|GPIO_PIN4) + * # define BOARD_POWER_ON 1 + * # define BOARD_POWER_OFF 0 + * # undef BOARD_POWER_PIN_RELEASE // Leave pin enabling Power - un comment to release (disable power) + * +*/ + +#if !defined(ARCH_SN_MAX_LENGTH) +# define ARCH_SN_MAX_LENGTH 12 +#endif + +#if !defined(APP_RESERVATION_SIZE) +# define APP_RESERVATION_SIZE 0 +#endif + +#if !defined(BOARD_FIRST_FLASH_SECTOR_TO_ERASE) +# define BOARD_FIRST_FLASH_SECTOR_TO_ERASE 1 +#endif + +#if !defined(USB_DATA_ALIGN) +# define USB_DATA_ALIGN +#endif + +#ifndef BOOT_DEVICES_SELECTION +# define BOOT_DEVICES_SELECTION USB0_DEV|SERIAL0_DEV|SERIAL1_DEV +#endif + +#ifndef BOOT_DEVICES_FILTER_ONUSB +# define BOOT_DEVICES_FILTER_ONUSB USB0_DEV|SERIAL0_DEV|SERIAL1_DEV +#endif + +#endif /* HW_CONFIG_H_ */ diff --git a/boards/auterion/fmu-v6x/src/i2c.cpp b/boards/auterion/fmu-v6x/src/i2c.cpp new file mode 100644 index 0000000000..8a557078e0 --- /dev/null +++ b/boards/auterion/fmu-v6x/src/i2c.cpp @@ -0,0 +1,41 @@ +/**************************************************************************** + * + * Copyright (C) 2020 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include + +constexpr px4_i2c_bus_t px4_i2c_buses[I2C_BUS_MAX_BUS_ITEMS] = { + initI2CBusExternal(1), + initI2CBusExternal(2), + initI2CBusExternal(3), + initI2CBusInternal(4), +}; diff --git a/boards/auterion/fmu-v6x/src/init.cpp b/boards/auterion/fmu-v6x/src/init.cpp new file mode 100644 index 0000000000..88fe88126c --- /dev/null +++ b/boards/auterion/fmu-v6x/src/init.cpp @@ -0,0 +1,299 @@ +/**************************************************************************** + * + * Copyright (c) 2012-2022 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file init.cpp + * + * AuterionFMU-specific early startup code. This file implements the + * board_app_initialize() function that is called early by nsh during startup. + * + * Code here is run before the rcS script is invoked; it should start required + * subsystems and perform board-specific initialization. + */ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include "board_config.h" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "arm_internal.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/**************************************************************************** + * Pre-Processor Definitions + ****************************************************************************/ + +/* Configuration ************************************************************/ + +/* + * Ideally we'd be able to get these from arm_internal.h, + * but since we want to be able to disable the NuttX use + * of leds for system indication at will and there is no + * separate switch, we need to build independent of the + * CONFIG_ARCH_LEDS configuration switch. + */ +__BEGIN_DECLS +extern void led_init(void); +extern void led_on(int led); +extern void led_off(int led); +__END_DECLS + + +/************************************************************************************ + * Name: board_peripheral_reset + * + * Description: + * + ************************************************************************************/ +__EXPORT void board_peripheral_reset(int ms) +{ + /* set the peripheral rails off */ + + VDD_5V_PERIPH_EN(false); + board_control_spi_sensors_power(false, 0xffff); + VDD_3V3_SENSORS4_EN(false); + + bool last = READ_VDD_3V3_SPEKTRUM_POWER_EN(); + /* Keep Spektum on to discharge rail*/ + VDD_3V3_SPEKTRUM_POWER_EN(false); + + /* wait for the peripheral rail to reach GND */ + usleep(ms * 1000); + syslog(LOG_DEBUG, "reset done, %d ms\n", ms); + + /* re-enable power */ + + /* switch the peripheral rail back on */ + VDD_3V3_SPEKTRUM_POWER_EN(last); + board_control_spi_sensors_power(true, 0xffff); + VDD_3V3_SENSORS4_EN(true); + VDD_5V_PERIPH_EN(true); + +} + +/************************************************************************************ + * Name: board_on_reset + * + * Description: + * Optionally provided function called on entry to board_system_reset + * It should perform any house keeping prior to the rest. + * + * status - 1 if resetting to boot loader + * 0 if just resetting + * + ************************************************************************************/ +__EXPORT void board_on_reset(int status) +{ + for (int i = 0; i < DIRECT_PWM_OUTPUT_CHANNELS; ++i) { + px4_arch_configgpio(io_timer_channel_get_gpio_output(i)); + } + + /* + * On resets invoked from system (not boot) ensure we establish a low + * output state on PWM pins to disarm the ESC and prevent the reset from potentially + * spinning up the motors. + */ + if (status >= 0) { + up_mdelay(100); + } +} + +/************************************************************************************ + * Name: stm32_boardinitialize + * + * Description: + * All STM32 architectures must provide the following entry point. This entry point + * is called early in the initialization -- after all memory has been configured + * and mapped but before any devices have been initialized. + * + ************************************************************************************/ + +extern "C" __EXPORT void +stm32_boardinitialize(void) +{ + board_on_reset(-1); /* Reset PWM first thing */ + + /* configure LEDs */ + + board_autoled_initialize(); + + /* configure pins */ + + const uint32_t gpio[] = PX4_GPIO_INIT_LIST; + px4_gpio_init(gpio, arraySize(gpio)); + + /* configure USB interfaces */ + + stm32_usbinitialize(); + + VDD_3V3_ETH_POWER_EN(true); + +} + +/**************************************************************************** + * Name: board_app_initialize + * + * Description: + * Perform application specific initialization. This function is never + * called directly from application code, but only indirectly via the + * (non-standard) boardctl() interface using the command BOARDIOC_INIT. + * + * Input Parameters: + * arg - The boardctl() argument is passed to the board_app_initialize() + * implementation without modification. The argument has no + * meaning to NuttX; the meaning of the argument is a contract + * between the board-specific initalization logic and the the + * matching application logic. The value cold be such things as a + * mode enumeration value, a set of DIP switch switch settings, a + * pointer to configuration data read from a file or serial FLASH, + * or whatever you would like to do with it. Every implementation + * should accept zero/NULL as a default configuration. + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned on + * any failure to indicate the nature of the failure. + * + ****************************************************************************/ + +__EXPORT int board_app_initialize(uintptr_t arg) +{ +#if !defined(BOOTLOADER) + + /* Power on Interfaces */ + VDD_3V3_SD_CARD_EN(true); + VDD_5V_PERIPH_EN(true); + VDD_5V_HIPOWER_EN(true); + VDD_3V3_SENSORS4_EN(true); + VDD_3V3_SPEKTRUM_POWER_EN(true); + + /* Need hrt running before using the ADC */ + + px4_platform_init(); + + // Use the default HW_VER_REV(0x0,0x0) for Ramtron + + stm32_spiinitialize(); + + /* Configure the HW based on the manifest */ + + px4_platform_configure(); + + if (OK == board_determine_hw_info()) { + syslog(LOG_INFO, "[boot] Rev 0x%1x : Ver 0x%1x %s\n", board_get_hw_revision(), board_get_hw_version(), + board_get_hw_type_name()); + + } else { + syslog(LOG_ERR, "[boot] Failed to read HW revision and version\n"); + } + + /* Configure the Actual SPI interfaces (after we determined the HW version) */ + + stm32_spiinitialize(); + + board_spi_reset(10, 0xffff); + + /* Configure the DMA allocator */ + + if (board_dma_alloc_init() < 0) { + syslog(LOG_ERR, "[boot] DMA alloc FAILED\n"); + } + +# if defined(SERIAL_HAVE_RXDMA) + // set up the serial DMA polling at 1ms intervals for received bytes that have not triggered a DMA event. + static struct hrt_call serial_dma_call; + hrt_call_every(&serial_dma_call, 1000, 1000, (hrt_callout)stm32_serial_dma_poll, NULL); +# endif + + /* initial LED state */ + drv_led_start(); + led_off(LED_RED); + led_on(LED_GREEN); // Indicate Power. + led_off(LED_BLUE); + + if (board_hardfault_init(2, true) != 0) { + led_on(LED_RED); + } + + // Ensure Power is off for > 10 mS + usleep(15 * 1000); + VDD_3V3_SD_CARD_EN(true); + usleep(500 * 1000); + +# ifdef CONFIG_MMCSD + int ret = stm32_sdio_initialize(); + + if (ret != OK) { + led_on(LED_RED); + return ret; + } + +# endif /* CONFIG_MMCSD */ + + ret = mcp23009_register_gpios(3, 0x25); + + if (ret != OK) { + led_on(LED_RED); + return ret; + } + +#endif /* !defined(BOOTLOADER) */ + + return OK; +} diff --git a/boards/auterion/fmu-v6x/src/led.c b/boards/auterion/fmu-v6x/src/led.c new file mode 100644 index 0000000000..1e33dd1299 --- /dev/null +++ b/boards/auterion/fmu-v6x/src/led.c @@ -0,0 +1,235 @@ +/**************************************************************************** + * + * Copyright (c) 2013 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file led.c + * + * PX4FMU LED backend. + */ + +#include + +#include + +#include "chip.h" +#include "stm32_gpio.h" +#include "board_config.h" + +#include +#include + +/* + * Ideally we'd be able to get these from arm_internal.h, + * but since we want to be able to disable the NuttX use + * of leds for system indication at will and there is no + * separate switch, we need to build independent of the + * CONFIG_ARCH_LEDS configuration switch. + */ +__BEGIN_DECLS +extern void led_init(void); +extern void led_on(int led); +extern void led_off(int led); +extern void led_toggle(int led); +__END_DECLS + +#ifdef CONFIG_ARCH_LEDS +static bool nuttx_owns_leds = true; +// B R S G +// 0 1 2 3 +static const uint8_t xlatpx4[] = {1, 2, 4, 0}; +# define xlat(p) xlatpx4[(p)] +static uint32_t g_ledmap[] = { + GPIO_nLED_GREEN, // Indexed by BOARD_LED_GREEN + GPIO_nLED_BLUE, // Indexed by BOARD_LED_BLUE + GPIO_nLED_RED, // Indexed by BOARD_LED_RED + GPIO_nSAFETY_SWITCH_LED_OUT, // Indexed by LED_SAFETY by xlatpx4 +}; + +#else + +# define xlat(p) (p) +static uint32_t g_ledmap[] = { + GPIO_nLED_BLUE, // Indexed by LED_BLUE + GPIO_nLED_RED, // Indexed by LED_RED, LED_AMBER + 0, // Indexed by LED_SAFETY (defaulted to an input) + GPIO_nLED_GREEN, // Indexed by LED_GREEN +}; + +#endif + +__EXPORT void led_init(void) +{ + for (size_t l = 0; l < (sizeof(g_ledmap) / sizeof(g_ledmap[0])); l++) { + if (g_ledmap[l] != 0) { + stm32_configgpio(g_ledmap[l]); + } + } +} + +static void phy_set_led(int led, bool state) +{ + /* Drive Low to switch on */ + + if (g_ledmap[led] != 0) { + stm32_gpiowrite(g_ledmap[led], !state); + } +} + +static bool phy_get_led(int led) +{ + /* If Low it is on */ + if (g_ledmap[led] != 0) { + return !stm32_gpioread(g_ledmap[led]); + } + + return false; +} + +__EXPORT void led_on(int led) +{ + phy_set_led(xlat(led), true); +} + +__EXPORT void led_off(int led) +{ + phy_set_led(xlat(led), false); +} + +__EXPORT void led_toggle(int led) +{ + phy_set_led(xlat(led), !phy_get_led(xlat(led))); +} + +#ifdef CONFIG_ARCH_LEDS +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: board_autoled_initialize + ****************************************************************************/ + +void board_autoled_initialize(void) +{ + led_init(); +} + +/**************************************************************************** + * Name: board_autoled_on + ****************************************************************************/ + +void board_autoled_on(int led) +{ + if (!nuttx_owns_leds) { + return; + } + + switch (led) { + default: + break; + + case LED_HEAPALLOCATE: + phy_set_led(BOARD_LED_BLUE, true); + break; + + case LED_IRQSENABLED: + phy_set_led(BOARD_LED_BLUE, false); + phy_set_led(BOARD_LED_GREEN, true); + break; + + case LED_STACKCREATED: + phy_set_led(BOARD_LED_GREEN, true); + phy_set_led(BOARD_LED_BLUE, true); + break; + + case LED_INIRQ: + phy_set_led(BOARD_LED_BLUE, true); + break; + + case LED_SIGNAL: + phy_set_led(BOARD_LED_GREEN, true); + break; + + case LED_ASSERTION: + phy_set_led(BOARD_LED_RED, true); + phy_set_led(BOARD_LED_BLUE, true); + break; + + case LED_PANIC: + phy_set_led(BOARD_LED_RED, true); + break; + + case LED_IDLE : /* IDLE */ + phy_set_led(BOARD_LED_RED, true); + break; + } +} + +/**************************************************************************** + * Name: board_autoled_off + ****************************************************************************/ + +void board_autoled_off(int led) +{ + if (!nuttx_owns_leds) { + return; + } + + switch (led) { + default: + break; + + case LED_SIGNAL: + phy_set_led(BOARD_LED_GREEN, false); + break; + + case LED_INIRQ: + phy_set_led(BOARD_LED_BLUE, false); + break; + + case LED_ASSERTION: + phy_set_led(BOARD_LED_RED, false); + phy_set_led(BOARD_LED_BLUE, false); + break; + + case LED_PANIC: + phy_set_led(BOARD_LED_RED, false); + break; + + case LED_IDLE : /* IDLE */ + phy_set_led(BOARD_LED_RED, false); + break; + } +} + +#endif /* CONFIG_ARCH_LEDS */ diff --git a/boards/auterion/fmu-v6x/src/mtd.cpp b/boards/auterion/fmu-v6x/src/mtd.cpp new file mode 100644 index 0000000000..8e57555eac --- /dev/null +++ b/boards/auterion/fmu-v6x/src/mtd.cpp @@ -0,0 +1,136 @@ +/**************************************************************************** + * + * Copyright (C) 2020 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include +#include + +#include +#include +// KiB BS nB +static const px4_mft_device_t spi5 = { // FM25V02A on FMUM native: 32K X 8, emulated as (1024 Blocks of 32) + .bus_type = px4_mft_device_t::SPI, + .devid = SPIDEV_FLASH(0) +}; +static const px4_mft_device_t i2c3 = { // 24LC64T on Base 8K 32 X 256 + .bus_type = px4_mft_device_t::I2C, + .devid = PX4_MK_I2C_DEVID(3, 0x51) +}; +static const px4_mft_device_t i2c4 = { // 24LC64T on IMU 8K 32 X 256 + .bus_type = px4_mft_device_t::I2C, + .devid = PX4_MK_I2C_DEVID(4, 0x50) +}; + + +static const px4_mtd_entry_t fmum_fram = { + .device = &spi5, + .npart = 1, + .partd = { + { + .type = MTD_PARAMETERS, + .path = "/fs/mtd_params", + .nblocks = (32768 / (1 << CONFIG_RAMTRON_EMULATE_SECTOR_SHIFT)) + } + }, +}; + +static const px4_mtd_entry_t base_eeprom = { + .device = &i2c3, + .npart = 2, + .partd = { + { + .type = MTD_MFT_VER, + .path = "/fs/mtd_mft_ver", + .nblocks = 248 + }, + { + .type = MTD_NET, + .path = "/fs/mtd_net", + .nblocks = 8 // 256 = 32 * 8 + + } + }, +}; + +static const px4_mtd_entry_t imu_eeprom = { + .device = &i2c4, + .npart = 3, + .partd = { + { + .type = MTD_CALDATA, + .path = "/fs/mtd_caldata", + .nblocks = 240 + }, + { + .type = MTD_MFT_REV, + .path = "/fs/mtd_mft_rev", + .nblocks = 8 + }, + { + .type = MTD_ID, + .path = "/fs/mtd_id", + .nblocks = 8 // 256 = 32 * 8 + } + }, +}; + +static const px4_mtd_manifest_t board_mtd_config = { + .nconfigs = 3, + .entries = { + &fmum_fram, + &base_eeprom, + &imu_eeprom + } +}; + +static const px4_mft_entry_s mtd_mft = { + .type = MTD, + .pmft = (void *) &board_mtd_config, +}; + +static const px4_mft_entry_s mft_mft = { + .type = MFT, + .pmft = (void *) system_query_manifest, +}; + +static const px4_mft_s mft = { + .nmft = 2, + .mfts = { + &mtd_mft, + &mft_mft, + } +}; + +const px4_mft_s *board_get_manifest(void) +{ + return &mft; +} diff --git a/boards/auterion/fmu-v6x/src/sdio.c b/boards/auterion/fmu-v6x/src/sdio.c new file mode 100644 index 0000000000..869d757756 --- /dev/null +++ b/boards/auterion/fmu-v6x/src/sdio.c @@ -0,0 +1,177 @@ +/**************************************************************************** + * + * Copyright (C) 2014, 2016 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include "chip.h" +#include "board_config.h" +#include "stm32_gpio.h" +#include "stm32_sdmmc.h" + +#ifdef CONFIG_MMCSD + + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Card detections requires card support and a card detection GPIO */ + +#define HAVE_NCD 1 +#if !defined(GPIO_SDMMC1_NCD) +# undef HAVE_NCD +#endif + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static FAR struct sdio_dev_s *sdio_dev; +#ifdef HAVE_NCD +static bool g_sd_inserted = 0xff; /* Impossible value */ +#endif + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: stm32_ncd_interrupt + * + * Description: + * Card detect interrupt handler. + * + ****************************************************************************/ + +#ifdef HAVE_NCD +static int stm32_ncd_interrupt(int irq, FAR void *context) +{ + bool present; + + present = !stm32_gpioread(GPIO_SDMMC1_NCD); + + if (sdio_dev && present != g_sd_inserted) { + sdio_mediachange(sdio_dev, present); + g_sd_inserted = present; + } + + return OK; +} +#endif + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: stm32_sdio_initialize + * + * Description: + * Initialize SDIO-based MMC/SD card support + * + ****************************************************************************/ + +int stm32_sdio_initialize(void) +{ + int ret; + +#ifdef HAVE_NCD + /* Card detect */ + + bool cd_status; + + /* Configure the card detect GPIO */ + + stm32_configgpio(GPIO_SDMMC1_NCD); + + /* Register an interrupt handler for the card detect pin */ + + stm32_gpiosetevent(GPIO_SDMMC1_NCD, true, true, true, stm32_ncd_interrupt); +#endif + + /* Mount the SDIO-based MMC/SD block driver */ + /* First, get an instance of the SDIO interface */ + + finfo("Initializing SDIO slot %d\n", SDIO_SLOTNO); + + sdio_dev = sdio_initialize(SDIO_SLOTNO); + + if (!sdio_dev) { + syslog(LOG_ERR, "[boot] Failed to initialize SDIO slot %d\n", SDIO_SLOTNO); + return -ENODEV; + } + + /* Now bind the SDIO interface to the MMC/SD driver */ + + finfo("Bind SDIO to the MMC/SD driver, minor=%d\n", SDIO_MINOR); + + ret = mmcsd_slotinitialize(SDIO_MINOR, sdio_dev); + + if (ret != OK) { + syslog(LOG_ERR, "[boot] Failed to bind SDIO to the MMC/SD driver: %d\n", ret); + return ret; + } + + finfo("Successfully bound SDIO to the MMC/SD driver\n"); + +#ifdef HAVE_NCD + /* Use SD card detect pin to check if a card is g_sd_inserted */ + + cd_status = !stm32_gpioread(GPIO_SDMMC1_NCD); + finfo("Card detect : %d\n", cd_status); + + sdio_mediachange(sdio_dev, cd_status); +#else + /* Assume that the SD card is inserted. What choice do we have? */ + + sdio_mediachange(sdio_dev, true); +#endif + + return OK; +} + +#endif /* CONFIG_MMCSD */ diff --git a/boards/auterion/fmu-v6x/src/spi.cpp b/boards/auterion/fmu-v6x/src/spi.cpp new file mode 100644 index 0000000000..b1100edacf --- /dev/null +++ b/boards/auterion/fmu-v6x/src/spi.cpp @@ -0,0 +1,62 @@ +/**************************************************************************** + * + * Copyright (C) 2020, 2022 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include +#include +#include + +constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = { + initSPIBus(SPI::Bus::SPI1, { + initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortI, GPIO::Pin9}, SPI::DRDY{GPIO::PortF, GPIO::Pin2}), + }, {GPIO::PortI, GPIO::Pin11}), + initSPIBus(SPI::Bus::SPI2, { + initSPIDevice(DRV_IMU_DEVTYPE_ICM42688P, SPI::CS{GPIO::PortH, GPIO::Pin5}, SPI::DRDY{GPIO::PortA, GPIO::Pin10}), + }, {GPIO::PortF, GPIO::Pin4}), + initSPIBus(SPI::Bus::SPI3, { + initSPIDevice(DRV_GYR_DEVTYPE_BMI088, SPI::CS{GPIO::PortI, GPIO::Pin8}, SPI::DRDY{GPIO::PortI, GPIO::Pin7}), + initSPIDevice(DRV_ACC_DEVTYPE_BMI088, SPI::CS{GPIO::PortI, GPIO::Pin4}), + }, {GPIO::PortE, GPIO::Pin7}), + // initSPIBus(SPI::Bus::SPI4, { + // // no devices + // TODO: if enabled, remove GPIO_VDD_3V3_SENSORS4_EN from board_config.h + // }, {GPIO::PortG, GPIO::Pin8}), + initSPIBus(SPI::Bus::SPI5, { + initSPIDevice(SPIDEV_FLASH(0), SPI::CS{GPIO::PortG, GPIO::Pin7}) + }), + initSPIBusExternal(SPI::Bus::SPI6, { + initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin10}, SPI::DRDY{GPIO::PortD, GPIO::Pin11}), + initSPIConfigExternal(SPI::CS{GPIO::PortA, GPIO::Pin15}, SPI::DRDY{GPIO::PortD, GPIO::Pin12}), + }), +}; + +static constexpr bool unused = validateSPIConfig(px4_spi_buses); diff --git a/boards/auterion/fmu-v6x/src/timer_config.cpp b/boards/auterion/fmu-v6x/src/timer_config.cpp new file mode 100644 index 0000000000..928f4916f0 --- /dev/null +++ b/boards/auterion/fmu-v6x/src/timer_config.cpp @@ -0,0 +1,80 @@ +/**************************************************************************** + * + * Copyright (C) 2012 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include + +/* Timer allocation + * + * TIM5_CH4 T FMU_CH1 + * TIM5_CH3 T FMU_CH2 + * TIM5_CH2 T FMU_CH3 + * TIM5_CH1 T FMU_CH4 + * + * TIM4_CH2 T FMU_CH5 + * TIM4_CH3 T FMU_CH6 + * + * TIM12_CH1 T FMU_CH7 + * TIM12_CH2 T FMU_CH8 + * + * TIM1_CH2 T FMU_CAP1 < Capture + * TIM1_CH3 T SPI2_DRDY2_ISM330_INT2 < Capture or GPIO INT + * TIM1_CH1 T SPIX_SYNC > Pulse or GPIO strobe + * + * TIM2_CH3 T HEATER > PWM OUT or GPIO + * + * TIM14_CH1 T BUZZER_1 - Driven by other driver + * TIM8_CH1_IN T FMU_PPM_INPUT - Sampled byt HRT by other driver + */ + +constexpr io_timers_t io_timers[MAX_IO_TIMERS] = { + initIOTimer(Timer::Timer5, DMA{DMA::Index1}), + initIOTimer(Timer::Timer4, DMA{DMA::Index1}), + initIOTimer(Timer::Timer12), + initIOTimer(Timer::Timer1), + initIOTimer(Timer::Timer2), +}; + +constexpr timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = { + initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel4}, {GPIO::PortI, GPIO::Pin0}), + initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel3}, {GPIO::PortH, GPIO::Pin12}), + initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel2}, {GPIO::PortH, GPIO::Pin11}), + initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel1}, {GPIO::PortH, GPIO::Pin10}), + initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel2}, {GPIO::PortD, GPIO::Pin13}), + initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel3}, {GPIO::PortD, GPIO::Pin14}), + initIOTimerChannel(io_timers, {Timer::Timer12, Timer::Channel1}, {GPIO::PortH, GPIO::Pin6}), + initIOTimerChannel(io_timers, {Timer::Timer12, Timer::Channel2}, {GPIO::PortH, GPIO::Pin9}), + initIOTimerChannelCapture(io_timers, {Timer::Timer1, Timer::Channel2}, {GPIO::PortE, GPIO::Pin11}), +}; + +constexpr io_timers_channel_mapping_t io_timers_channel_mapping = + initIOTimerChannelMapping(io_timers, timer_io_channels); diff --git a/boards/auterion/fmu-v6x/src/usb.c b/boards/auterion/fmu-v6x/src/usb.c new file mode 100644 index 0000000000..70eebc6fe0 --- /dev/null +++ b/boards/auterion/fmu-v6x/src/usb.c @@ -0,0 +1,105 @@ +/**************************************************************************** + * + * Copyright (C) 2016 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file usb.c + * + * Board-specific USB functions. + */ + +/************************************************************************************ + * Included Files + ************************************************************************************/ + +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include "board_config.h" + +/************************************************************************************ + * Definitions + ************************************************************************************/ + +/************************************************************************************ + * Private Functions + ************************************************************************************/ + +/************************************************************************************ + * Public Functions + ************************************************************************************/ + +/************************************************************************************ + * Name: stm32_usbinitialize + * + * Description: + * Called to setup USB-related GPIO pins for the PX4FMU board. + * + ************************************************************************************/ + +__EXPORT void stm32_usbinitialize(void) +{ + /* The OTG FS has an internal soft pull-up */ + + /* Configure the OTG FS VBUS sensing GPIO, Power On, and Overcurrent GPIOs */ + +#ifdef CONFIG_STM32H7_OTGFS + stm32_configgpio(GPIO_OTGFS_VBUS); +#endif +} + +/************************************************************************************ + * Name: stm32_usbsuspend + * + * Description: + * Board logic must provide the stm32_usbsuspend logic if the USBDEV driver is + * used. This function is called whenever the USB enters or leaves suspend mode. + * This is an opportunity for the board logic to shutdown clocks, power, etc. + * while the USB is suspended. + * + ************************************************************************************/ + +__EXPORT void stm32_usbsuspend(FAR struct usbdev_s *dev, bool resume) +{ + uinfo("resume: %d\n", resume); +} diff --git a/boards/auterion/fmu-v6x/uuv.px4board b/boards/auterion/fmu-v6x/uuv.px4board new file mode 100644 index 0000000000..3a7b00f13d --- /dev/null +++ b/boards/auterion/fmu-v6x/uuv.px4board @@ -0,0 +1,23 @@ +CONFIG_MODULES_AIRSPEED_SELECTOR=n +CONFIG_MODULES_FLIGHT_MODE_MANAGER=n +CONFIG_MODULES_FW_ATT_CONTROL=n +CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n +CONFIG_MODULES_FW_POS_CONTROL=n +CONFIG_MODULES_FW_RATE_CONTROL=n +CONFIG_MODULES_FW_MODE_MANAGER=n +CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=n +CONFIG_MODULES_LAND_DETECTOR=n +CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=n +CONFIG_MODULES_MC_ATT_CONTROL=n +CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=n +CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=n +CONFIG_MODULES_MC_POS_CONTROL=n +CONFIG_MODULES_MC_RATE_CONTROL=n +CONFIG_MODULES_VTOL_ATT_CONTROL=n +CONFIG_MODULES_ROVER_ACKERMANN=n +CONFIG_MODULES_ROVER_DIFFERENTIAL=n +CONFIG_MODULES_ROVER_MECANUM=n +CONFIG_MODULES_SPACECRAFT=n +CONFIG_MODULES_CONTROL_ALLOCATOR=y +CONFIG_MODULES_UUV_ATT_CONTROL=y +CONFIG_MODULES_UUV_POS_CONTROL=y diff --git a/boards/auterion/fmu-v6x/zenoh.px4board b/boards/auterion/fmu-v6x/zenoh.px4board new file mode 100644 index 0000000000..cb14fde935 --- /dev/null +++ b/boards/auterion/fmu-v6x/zenoh.px4board @@ -0,0 +1,4 @@ +# CONFIG_BOARD_UAVCAN_TIMER_OVERRIDE is not set +CONFIG_DRIVERS_UAVCAN=n +CONFIG_MODULES_UXRCE_DDS_CLIENT=n +CONFIG_MODULES_ZENOH=y diff --git a/boards/px4/fmu-v6x/default.px4board b/boards/px4/fmu-v6x/default.px4board index 45030adde4..4a20430f10 100644 --- a/boards/px4/fmu-v6x/default.px4board +++ b/boards/px4/fmu-v6x/default.px4board @@ -21,7 +21,6 @@ CONFIG_DRIVERS_DIFFERENTIAL_PRESSURE_AUAV=y CONFIG_COMMON_DISTANCE_SENSOR=y CONFIG_DRIVERS_DSHOT=y CONFIG_DRIVERS_GNSS_SEPTENTRIO=y -CONFIG_DRIVERS_GPIO_MCP23009=y CONFIG_DRIVERS_GPS=y CONFIG_DRIVERS_HEATER=y CONFIG_DRIVERS_IMU_ANALOG_DEVICES_ADIS16470=y @@ -39,7 +38,6 @@ CONFIG_DRIVERS_OSD_MSP_OSD=y CONFIG_DRIVERS_POWER_MONITOR_INA226=y CONFIG_DRIVERS_POWER_MONITOR_INA228=y CONFIG_DRIVERS_POWER_MONITOR_INA238=y -CONFIG_DRIVERS_POWER_MONITOR_PM_SELECTOR_AUTERION=y CONFIG_DRIVERS_PWM_INPUT=y CONFIG_DRIVERS_PWM_OUT=y CONFIG_DRIVERS_PX4IO=y diff --git a/boards/px4/fmu-v6x/init/rc.board_defaults b/boards/px4/fmu-v6x/init/rc.board_defaults index 2d9a6ea49a..7dfe7b546a 100644 --- a/boards/px4/fmu-v6x/init/rc.board_defaults +++ b/boards/px4/fmu-v6x/init/rc.board_defaults @@ -9,35 +9,13 @@ param set-default SENS_EN_INA238 0 param set-default SENS_EN_INA228 0 param set-default SENS_EN_INA226 0 -if ver hwbasecmp 009 010 011 -then - # Skynode: use the "custom participant", IP=10.41.10.1 config for uxrce_dds_client - param set-default UXRCE_DDS_PTCFG 2 - param set-default UXRCE_DDS_AG_IP 170461697 - param set-default UXRCE_DDS_CFG 1000 - - # The buzzer draws too much power (0.2A) on the GPS power rail (limit 0.45A). - param set-default CBRK_BUZZER 782097 -else - # Mavlink ethernet (CFG 1000) - param set-default MAV_2_CONFIG 1000 - param set-default MAV_2_BROADCAST 1 - param set-default MAV_2_MODE 0 - param set-default MAV_2_RADIO_CTL 0 - param set-default MAV_2_RATE 100000 - param set-default MAV_2_REMOTE_PRT 14550 - param set-default MAV_2_UDP_PRT 14550 -fi +# Mavlink ethernet (CFG 1000) +param set-default MAV_2_CONFIG 1000 +param set-default MAV_2_BROADCAST 1 +param set-default MAV_2_MODE 0 +param set-default MAV_2_RADIO_CTL 0 +param set-default MAV_2_RATE 100000 +param set-default MAV_2_REMOTE_PRT 14550 +param set-default MAV_2_UDP_PRT 14550 safety_button start - -# GPIO Expander driver on external I2C3 -if ver hwbasecmp 009 -then - # No USB - mcp23009 start -b 3 -X -D 0xf0 -O 0xf0 -P 0x0f -U 10 -fi -if ver hwbasecmp 00a 008 -then - mcp23009 start -b 3 -X -D 0xf1 -O 0xf0 -P 0x0f -U 10 -fi diff --git a/boards/px4/fmu-v6x/init/rc.board_mavlink b/boards/px4/fmu-v6x/init/rc.board_mavlink deleted file mode 100644 index 713d7a41b7..0000000000 --- a/boards/px4/fmu-v6x/init/rc.board_mavlink +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# -# PX4 FMUv6X specific board MAVLink startup script. -#------------------------------------------------------------------------------ - -# if skynode base board is detected start Mavlink on Telem2 -if ver hwbasecmp 009 010 011 -then - mavlink start -d /dev/ttyS4 -b 3000000 -r 290000 -m onboard_low_bandwidth -x -z - - # Ensure nothing else starts on TEL2 (ttyS4) - set PRT_TEL2_ 1 -fi diff --git a/boards/px4/fmu-v6x/init/rc.board_sensors b/boards/px4/fmu-v6x/init/rc.board_sensors index 100c674108..75eaba3d1c 100644 --- a/boards/px4/fmu-v6x/init/rc.board_sensors +++ b/boards/px4/fmu-v6x/init/rc.board_sensors @@ -55,22 +55,13 @@ then set INA_CONFIGURED yes fi -#Start Auterion Power Module selector for Skynode boards -if ver hwbasecmp 009 010 011 +if [ $INA_CONFIGURED = no ] then - pm_selector_auterion start - - # Auterion's INA238 uses a shunt value of 0.0003 instead of 0.0005. - param set-default INA238_SHUNT 0.0003 -else - if [ $INA_CONFIGURED = no ] + # INA226, INA228, INA238 auto-start + i2c_launcher start -b 1 + if [ $HAVE_PM2 = yes ] then - # INA226, INA228, INA238 auto-start - i2c_launcher start -b 1 - if [ $HAVE_PM2 = yes ] - then - i2c_launcher start -b 2 - fi + i2c_launcher start -b 2 fi fi @@ -96,33 +87,22 @@ else icm20649 -s -R 6 start else # Internal SPI BMI088 - if ver hwbasecmp 009 010 011 + if ver hwtypecmp V6X010 then - bmi088 -A -R 6 -s start - bmi088 -G -R 6 -s start + bmi088 -A -R 0 -s start + bmi088 -G -R 0 -s start else - if ver hwtypecmp V6X010 - then - bmi088 -A -R 0 -s start - bmi088 -G -R 0 -s start - else - bmi088 -A -R 4 -s start - bmi088 -G -R 4 -s start - fi + bmi088 -A -R 4 -s start + bmi088 -G -R 4 -s start fi fi # Internal SPI bus ICM42688p - if ver hwbasecmp 009 010 011 + if ver hwtypecmp V6X010 then - icm42688p -R 12 -s start + icm42688p -R 14 -s start else - if ver hwtypecmp V6X010 - then - icm42688p -R 14 -s start - else - icm42688p -R 6 -s start - fi + icm42688p -R 6 -s start fi if ver hwtypecmp V6X003 V6X004 @@ -130,13 +110,8 @@ else # Internal SPI bus ICM-42670-P (hard-mounted) icm42670p -R 10 -s start else - if ver hwbasecmp 009 010 011 - then - icm20602 -R 6 -s start - else - # Internal SPI bus ICM-20649 (hard-mounted) - icm20649 -R 14 -s start - fi + # Internal SPI bus ICM-20649 (hard-mounted) + icm20649 -R 14 -s start fi fi diff --git a/boards/px4/fmu-v6x/nuttx-config/nsh/defconfig b/boards/px4/fmu-v6x/nuttx-config/nsh/defconfig index f0a8d6ae86..ec6b1c7e2b 100644 --- a/boards/px4/fmu-v6x/nuttx-config/nsh/defconfig +++ b/boards/px4/fmu-v6x/nuttx-config/nsh/defconfig @@ -91,7 +91,6 @@ CONFIG_DEBUG_SYMBOLS=y CONFIG_DEBUG_TCBINFO=y CONFIG_DEFAULT_SMALL=y CONFIG_DEV_FIFO_SIZE=0 -CONFIG_DEV_GPIO=y CONFIG_DEV_PIPE_MAXSIZE=1024 CONFIG_DEV_PIPE_SIZE=70 CONFIG_DEV_URANDOM=y diff --git a/boards/px4/fmu-v6x/src/CMakeLists.txt b/boards/px4/fmu-v6x/src/CMakeLists.txt index 39ec808e1e..605cf16ac9 100644 --- a/boards/px4/fmu-v6x/src/CMakeLists.txt +++ b/boards/px4/fmu-v6x/src/CMakeLists.txt @@ -71,6 +71,5 @@ else() nuttx_arch # sdio nuttx_drivers # sdio px4_layer - platform_gpio_mcp23009 ) endif() diff --git a/boards/px4/fmu-v6x/src/board_config.h b/boards/px4/fmu-v6x/src/board_config.h index a57610545c..3259c421d5 100644 --- a/boards/px4/fmu-v6x/src/board_config.h +++ b/boards/px4/fmu-v6x/src/board_config.h @@ -270,11 +270,6 @@ #define GPIO_VDD_3V3_SPEKTRUM_POWER_EN /* PH2 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN2) #define GPIO_VDD_3V3_SD_CARD_EN /* PC13 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTC|GPIO_PIN13) -/* MCP23009 GPIO expander */ -#define BOARD_GPIO_VDD_5V_COMP_VALID "/dev/gpio4" -#define BOARD_GPIO_VDD_5V_CAN1_GPS1_VALID "/dev/gpio5" - - /* Spare GPIO */ #define GPIO_PG6 /* PG6 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTG|GPIO_PIN6) diff --git a/boards/px4/fmu-v6x/src/init.cpp b/boards/px4/fmu-v6x/src/init.cpp index d914b75497..5d2a614206 100644 --- a/boards/px4/fmu-v6x/src/init.cpp +++ b/boards/px4/fmu-v6x/src/init.cpp @@ -74,7 +74,6 @@ #include #include #include -#include /**************************************************************************** * Pre-Processor Definitions @@ -286,13 +285,6 @@ __EXPORT int board_app_initialize(uintptr_t arg) # endif /* CONFIG_MMCSD */ - ret = mcp23009_register_gpios(3, 0x25); - - if (ret != OK) { - led_on(LED_RED); - return ret; - } - #endif /* !defined(BOOTLOADER) */ return OK; diff --git a/boards/px4/fmu-v6xrt/default.px4board b/boards/px4/fmu-v6xrt/default.px4board index 84e76cd888..f64b7801e4 100644 --- a/boards/px4/fmu-v6xrt/default.px4board +++ b/boards/px4/fmu-v6xrt/default.px4board @@ -40,7 +40,6 @@ CONFIG_DRIVERS_OSD_MSP_OSD=y CONFIG_DRIVERS_POWER_MONITOR_INA226=y CONFIG_DRIVERS_POWER_MONITOR_INA228=y CONFIG_DRIVERS_POWER_MONITOR_INA238=y -CONFIG_DRIVERS_POWER_MONITOR_PM_SELECTOR_AUTERION=y CONFIG_DRIVERS_PWM_OUT=y CONFIG_DRIVERS_PX4IO=y CONFIG_COMMON_RC=y diff --git a/boards/px4/fmu-v6xrt/init/rc.board_sensors b/boards/px4/fmu-v6xrt/init/rc.board_sensors index ae60e13536..99248dde72 100644 --- a/boards/px4/fmu-v6xrt/init/rc.board_sensors +++ b/boards/px4/fmu-v6xrt/init/rc.board_sensors @@ -69,19 +69,13 @@ then set INA_CONFIGURED yes fi -#Start Auterion Power Module selector for Skynode boards -if ver hwbasecmp 009 010 +if [ $INA_CONFIGURED = no ] then - pm_selector_auterion start -else - if [ $INA_CONFIGURED = no ] + # INA226, INA228, INA238 auto-start + i2c_launcher start -b 1 + if [ $HAVE_PM2 = yes ] then - # INA226, INA228, INA238 auto-start - i2c_launcher start -b 1 - if [ $HAVE_PM2 = yes ] - then - i2c_launcher start -b 2 - fi + i2c_launcher start -b 2 fi fi From ba1e658750ac044b13ba34824f5eeec46952db64 Mon Sep 17 00:00:00 2001 From: Niklas Hauser Date: Fri, 10 Oct 2025 14:16:00 +0200 Subject: [PATCH 28/71] boards: remove USB device from Auterion FMUv6x --- .../extras/auterion_fmu-v6s_bootloader.bin | Bin 32888 -> 35108 bytes boards/auterion/fmu-v6x/default.px4board | 1 - .../extras/auterion_fmu-v6x_bootloader.bin | Bin 46892 -> 35416 bytes .../fmu-v6x/nuttx-config/bootloader/defconfig | 12 -- .../fmu-v6x/nuttx-config/nsh/defconfig | 12 -- boards/auterion/fmu-v6x/src/CMakeLists.txt | 2 - boards/auterion/fmu-v6x/src/board_config.h | 4 + boards/auterion/fmu-v6x/src/bootloader_main.c | 3 - boards/auterion/fmu-v6x/src/hw_config.h | 15 ++- boards/auterion/fmu-v6x/src/init.cpp | 4 - boards/auterion/fmu-v6x/src/usb.c | 105 ------------------ 11 files changed, 11 insertions(+), 147 deletions(-) delete mode 100644 boards/auterion/fmu-v6x/src/usb.c diff --git a/boards/auterion/fmu-v6s/extras/auterion_fmu-v6s_bootloader.bin b/boards/auterion/fmu-v6s/extras/auterion_fmu-v6s_bootloader.bin index 2c79c4b1bab5367e36ca229181ada79f098e7877..233552b39789f86ffa3ef04330d8fcaa538d0de5 100755 GIT binary patch delta 10502 zcmaia3wTu3x#+*v-ZQgFhGg<^7?Ke7Jc5%4VIYX%CBr1FypV*46a{s7s2d_=1RoJ; zXF{+>Nh`8A=SH!XR_c*TE0YkfsSH8kv{qZ2VCVrN9+dWsh`^2s?mh4OtrJ_4wcGU!(f)!M#|!X(HG(oIm3Q{E{fpF6=@cI*f}J`LtjYdJ7v0YtI+F zUznX|kvaUbtD_$*UIo_r1$w(`~7BLM3M;Zu1FOsLm zkq9!cf++NY+@P}GjS0Hv&OP)#eJkD`r$hQO?>)z%|Ev#$d5e*C-rajF{K(_lQcrs? zm_?FM?n!V~ljY7j>r)PLXTzP1r!H$MwAM@QSnf^SQ74kS+*pppDjLusiBv2paARw! z2g#G77cK+B@|6g0t#DUJsC3ZI31>cn~_YU|XXD+bSK{Y&x*nbzm#gfo);|2%`il&!_E07W z8+7!ejPmRax_?Z?nuT6^e4LSrnOeR&Uge`DnPs`N;+P;}Cm^qli3G`?MAzu(rp#IR zKYmAlnYj$dqV&5=F?%ptNkD!tX6i$SDhZbV7NvGWwU%vUmzHidEK5sO!PcaspBP+t zjgDq#O~F5l&^cL~81zP#h*w7Fhgq!*a%ETI3lX{_+n&T_J50vN)$V6UvpPgl84!t0 zx)u}&mQjRW%NFsmFg4_q7hqY}2mP<=!M0Biw#r@&K{hk76D%Eq zo(MghvrdoYmay2jq87`|VVaj~Ps6e~%;tD6NRQ_ljn3Ndy0Kgp{_$v52iVUH8bmBV zuF}@rbv%~Ogy`qFJ2RMkem`NUk#4!o#$&l9ME~`+yUMVJZoGf}F5Qv9SMrOR zE-dd1X$jb`4Scz~j=08P>zD0Vt`6-rF5|I$XNayeig-tYwi-+D$^<=VjN-@g=r1P_ zd@@eIp71!2*xojvJ5QW2sz1fYNr#+UxjGYRGy9H zzl3<=uU<&d%qD{6!y!6v;uIdsJt6w=L~#n1e-ZK#^s-2V5hP&wN1^KKfnbY#ADjuc z$mwu8Slb2y9Vjr-QxnOo&s5~-a9tlnq8en z36`g-$O2}5Bn_Yl$xR8GmtUQ6KF&~+Rrb-hQTk|pp|0sT6X`?rrTiNFUX-5C->YTn zW7E;C1xqq&q99fVpg*Nm^pk?ua%+<-PAL5ezEE?1gA2*qW7Ie4HSs`1Lu&mn;?|Wt zVJD_LrV}KW#NKu(gKiPYFGc8Gg+~3v*kPA4=oFFci%@r=ah?$S)y;;M2v1h|VZ^Dy zw+l;d-zE~nOg4rRWuK^lqk6C%)`RV!{(JGE-Gwvp{uuqLaAwBk=*2!mZQv_|6Ump3 z(SdmrifaGXjpU)|uF_vZWHi_!-v&2=$MkfG#Zs^!VwLj!uSjiDTJvVsVRZgz0g=o!4#PYK@>sZ9HH%1Gr59@b^8Jn0PKB}ibwJzh4>|P{~3*-G-GThxhn$^)C zgnq^jCOMV8dZKI4kmc%h19#;Vm;dyzjynVLWVP(6$^epe;c!rB13}Y(y@uZ9>I?%< zkenR`tMw_iEQSMlMIWxukx)gB+fxJmr}RvD(ThxH{KKe${6nwa? z=aZsO5I)>SU%P!)+Tk|lEU?@dr=Q<$FKc}_u}lX~+f$9xRV+_anbMALFiEC9eM7#K zFKz1sQ6p!Cn1`7Y4+g#xoEjPRF~^^BLQ^lx3$-MZWZiv61s|4sW3vfQ93-LK6(7%r z@MF0@Mt9mv3K)4rS*}uBX(c1s1Eu9?9Q{e@G&~Zg$4m46+xb0PM!zhb z<7KnRy?D#@(JUWWedg<XcFPkYr)!-?*6x3%iD+Uee_?l3$d)wznsocEwHSXx~5SaPUCl6lPe z*dbOIbKJhstPVMFa@3`<%9-54F<6+-=j%(W-Vfqpp}%U(xBjDGx4PZnzj3ie=&zD} z%Rdf6fBbUdI=7`=ebeBn;kJCLb~;{O=c)0251ie2V)TT;Q)B4mw+yKV0p!uhkb2m0 zVnl>?mwsS!>5zIv99YARAe`0@)>GgbA4Uv)%)AxFlDh8gs0?^|HCuQBQ+|BpOtQ;wA`fpkqjoybAqLwk z5MAGl>7`~3)iwP2GB*okU!;PR5WX(e|G9|v2#Z^td=~tq9E6Xxj^14I+!6Dc<&U0j z&Z)LMx_-lX|B%}0fFg8gC^@EPFQTtEW9rqjA@2bB2NCO|7Lr!S(5EhE-cd?GULDaL zaRk_EBTC@=i?M3uc9F_8Vz{TrR%qMVmqWm_}@{u^!Hf`Jy<1eJkb_v}-* zJNEnUD_rhczVJTWIOf~7Pu*e2t8#tamhF-qc&FDrr1}gXI}#xNS1^xU51#k$m9XsK z9Hqv=>@nXqejs}cy!w7@Mb=&Fc1OE(a@3czOWolBd3xfM>H|ATC8-1W&xCz7+6Hltpv5IY9V_1dN5hmjF|q zsUL}kfT4G<`lch7RQL@fp?sY%_>wmB3>)%vgtg{r zwXD^Vuf@sMmm(k<0&J4&1B{;;mb`Ue2P=EQ!f)B7wu;wBv)X(`IV7dT%pEc%9#T7- z4yuofrIK~*?6xY|z?HgL+gp-V_9E^r_s2=Ao>U5hso`Z8H)t?VsEsM(ll#h%tnzp+ z$33L(frRp#$dI}Z63U^-kb1ze+@I2wmElyW4>Qd;=onJFk~k*uwP7YxAjd-t_o|~Z z00!igtMMvF@B8aopF5%<{1zy#8e}_~=uR#}oZIjUTZUy$ZA|$noSM2LoSJ%9cu4Iu z>{E9*?4({=?Xryha2YoS%X6w4*uKQ_hAb)F$rjux?o*$pOQ+>{cgGl%BUQ<;yh@(L z<+#CmP<`CNWU7@d7n=MauL+$}UxgvH6MPmh3yzrbY3ngK(Ac-!gjIeeP zO7;D@R=qW+D&1`eq@V(;5(LD1p-NgM`MNzdYA;Wm(s=SyiIdLh<_)cHU10g5Re$^B zQcl)!IE=nE*X`>UM7^ksa5<}`51LA(_0lWubyBnRse3EOohjLvQ@u{gSzEGky>y>j zJLardE2T-6G3N|6v3Bg@W9uaU4WD=UMyvcDXX>w#b)0wk+O?9tK3&RlrZ-eLSw}Un z;dZbfb4=+Dt(WqpVO`%DB*v8YLukQwgFQjE%gK-vznB<92S)NaZKR5Gb57)y7a$boMqh7g zm(u+oNL@8d`4-s64;&b&<@i#3cDNf`P6rQ+tl)5|=4@l-$?orh$fC1;7z9fW`S&37 zvjrUmU=c-4)?%2F)z~N(2)`iRWZV^P&Mp-WSjd6a`&-d0jjYoM5zUQfCf+N>l+`hj zc%Qk~Fte*BSIyAJl$XMW^1lxTzLKAVem3AP%-pu#dSVn8iS^A@gQic{EN*4`4^w=% zUmrF6cIe8G-#_suJH*@y)7UT`+ z&G`sLG?wvo|04a+|0l0$Z|jNfEz*Wod}Roq?%oGPwSXk?H+);cmfQ59Ne-Zj(?Jl! zx9rr_n$v(~9dh*QZF~e(yezHt?{5X$-4b`@G&kJ+3M^8sPJF|+tzLSy>H26^`#*b3 zunc!&&lVPHI#QB*)YV#G8ezJS8IWpOOAvhxFUa}sRsJlIMm_Do%OH}1jqs#Za~B&f&7Pe zq5oDmzwiHsJxQ2ucl?--DPM#sKYi6KE(~`4u${z|H)3E%!$|x#2y$HIBq$yIObLqQ z>mZBka6`V7-WOL|-t*M#()R3~K7>BLSB)Wj4`sOO!T^$7itqFGDvx@4 z(&#LE!StAhT#~w6+@SRZRAJr84!45VL1N19!qj=Ett=~MeF2qb41$#(5x}~WiOeN; zTzN_byXHJQ10|Hv0GeyvX$VlUvestk#nn7Pv-h|(16e9s04kabrOIG-9+;!bBMFfh z0<^PoCNA4aKd77~3Rz$~@GJ=I1xS^i8Z19`j3vo-#;9qw%^On=BtR4bU~L>5-iqsR zEt2=X3;nis5So1;czSs!cvHGxBwaO^HY2l0RyTLm@FPZuDVsuHZf+xB zUe+vPNKB~> z@r5V8-RA>aqwGsZ`(Jf=PWP#0VxL-KFm#XWZgZIj&Z!OqnlWxoc6VQ>9QLrCSq`aX z;yG0iv&SxaH3MnIy1{JOnQ7`DZ$>jUD#||>9A6w_ftA}=OA-M>*Yk}Eh#O!*g;FPuDF-il@! z<%IT*0aQL64bmeMjO(woCc2yZu57lGe5tF3FVvl929qCFbU&+I*^JC~vVUV&4g0R#^F^>lp1^+|RC+TBjJUNh;-MeUop@hYl!+Vu zOxze#a^t^seLct>kpojNt5xk%2Dy!_*~pLNCD%Gt)fFxphN<-f{D>Qab(zXP2vcVa z@>kmN#0q|-U>tv?om=^EE!nm#uJrhU2F+L_v!aUiLkd;VEF*}6@MOPe(W%&VK3=EBr3&!_Y=vk|8L zhYEW#&NBvIh}s#0pKBc3?m_aL&|K;DE91Bxm-aL>I>Sk$BM)3o54OnLG?#-cV?npy zRqi!JQprI(B$Tw9^;}3Od;~0&gdZ_!vq(aTg~8$=tfq!j{qrE9d>aOHB|-A!2$&rN z$@vj0v6GYm416Uo1o`Peb$jx7LXbJ3)W=_Mo$F_Y+61qAm}!npS2iDGXAYk5=7cgQ zzW!zhBdkw#Q0_lw2zYwGm#a&gdsZ!2hEOMc%h|lDHo@|mCIGoAfz13!0f2m0vStU6 zXD9fPJV0hP5y&(8*(jQ%Z02emB&zsh)>c%iJ%{F6JJZ)yR*CZ=bc;+*7o(>hLfA~H#PfBHC%Y-x2V&#eq8sF zkVRaUcj9u!jFY?byRQa4H48U!ovuewxP5eC^UE&7(X>IX^GL{Iz~T1Mp2)};isV-0 zcXJbWf%U{?L&eGUd43kJB$U4fSm~*u*IdTJF$^{kS-v5c2qcSuyf^7A1rk?&c8pr8 z?A9gm8np;KeQ5sct#7$B7b;0ynHg`9ji3g8pcX+~nMyZTOGs;^#&cZKMN>K*v!5&C7d9Xmo)zo-yzkI=G3cAOrfD;L?#QN^vY znCDxSonY<^{VizdO(-XCCbQ$p8}#Rkrg$*s8l})R<4c3Ayw{}^3BaSL~zCx={TCpwFv>}XWtllIl?lc zIVvhG>4W?NM_f4*HT4++(@I7MzYD^Mi9_^ma=Y>0d?4tvSRR%60wc+B9 z!l;s!V3>V9jdg1g+D-lSRcIr=tgjjjy}0$Su$71F29x- zXR)rR!6dP~E2|5=nuc_LOj)f)l}mA!ri?4C$Dsd05sSMtL{B2hxfr{XqK?MwvWW6& zEUD;aqZiOTJBcdkQCs)d!7|^q;GMmE;do*ko?JZPY(#lGMz=JY1c%C#B=FP5dh{ec z*I10@5apZ7@F_i=(X^r{syvoJ=C34>(^bxDeahO2=2~~L%aYWtz~<@Apf6e`tcfaD z!#ug#eZY^s`UaL-jw`Jpmi1s3Wd?~V!=W#Bvup~7m{o}?k>4?Fi;Te&NF}9BlEcq= zxl%NELh{rkF-bzu!lecHmwj~J((;mvkxJ)-;SL4uIp9ZcMig5d5s^fcPhyk&RZ^+D zU21k~pN=SB$LPMLbEZBVvl2um)H7d|7ZZur98+3V2K^+qPhDdG>*V6sH)Nf4khrpu zMwaGpd_WDd=tL_ATVzgq^=5W`fh!Z7u1u)=0SNHXD|1P- z_FWJ+q>k>DPbLqiFN|^1!J{u z7ZcVgqKsFIlbGL7&5A{69c@@qgzpK_tt;HtbukMmCiqQ|C#ag&&@AQ@T4OwM`w^Kz zv~PkuyXVG=%Lujh{O8KeIIXK41g{T-XM8;?@6F{=7j3@(o_n(f&0l}9RpW4&t7XiG zmC7g-y*H8h&-)&m_t<=QD&#wQ&6z%O%@D@_Q7sGn)!@&sI-fauttQoWp<3qoOTnLC zo!@-)+V7KXxkK~m(g!BcIS=G=)0->k(g$W|6*X{Ie$UaX@QmY{F8$|M3+es`^1Yrt z|EYQoEd9oi4sv>;Mdr8;0(*w@5k>n~SHI@kd7+*xC(yN!fc!<=;aEywZ@P*yyGSib zvw#)kzsB3h3nUnX{zUS*?gf}R~VrzTsYm?HmoeXBip7W@Km5v+nZ} zltc$THMvGg)^72hkwCa2fpE73!vA{YAMXvp#=et|S`2W?HZ-kzTb?1;JwFj^m2qHma9}gs2Da4Nd&)PgLin0W zJ0AK>YsdmyyN_;q*ojuqw;nbxxnJExz-*U54ul*;IFd34+mAJleKAvW_i&JvXM@ns zEdLum5NsUS_WP2-)?!hLDRl|vfvhY=)^Foz-XkTmSQqAZiK%gH`xE0DkGh0GHGnK; zQYpoiy(+Tv186=>y)lSp%0bpA9JFzC`y;c^i`4&!8SSH=K2nET=p<J*J*SmA7L( z-!+?fYzR?bi9=c&YYuIEY5UW6+-nzmKs!wTxBD}PPUU0dsCg_V=>X|-YHM7+ERsJoW(U4tVM(iZ-AyqjLr>nNj zWa9VJZH4&PKKk2j#!XEe*l?kyK~tOCkIaG@%RHXw=FO_I{W!xJF2cp+J#DS3Ja!!V z8O+jwe67%{DpI^rzGwx@D{EOyz;Kw|>DH>s>i_PGlkoE6wEXcrKCEctbn)Z0rVn?4 zQ2Q(hyqzhMp5&ZmdpH`Shab-?QI%iC*kygAoNz>fM|Xh$PFRKPJP~^FAea-%xr9hU z%Cr!bA74=*abR1))_PP=oKhCaBVsiR`&8w30qTCjQm!h27@Buuutm;<%7C+BF;pgR z{WYY?A5v-}d?7!~4oe3UVdcM6dgKXX_RI)hs7W^dAz>$B<+MuAKJg@$!?fv1558Ze zA3V7eKM|(nsgL-Oax_76TR-GgrSCYs*lNOMMjCE?MO$VB+X^Fn<>{5l>ZXbGyQg=i zt((5KV#9_FYiF;cJGVdSWmlO90GO-Q+)}cCbpQacKPfQ0^Cnz*vz)i3Wy{*l58VZc zZ$4o73nB>kX35xLKZA4#Ku&AoMOxwg2yB zAiTV^=iwh_V@=o9gcs2^uZ0dg!)M_S*~NY8!5?OTEs5FV)e7IR`)^1#+(rkzlf5O3 zegIH>v;6+KXaF0ad@ulZe%}V;3bgiH;jBpp=dJL>LgT7iVe@40+zJ1MCt zz^x6l7Z~5Y6~?t-;BQ$#TAkK@E1X?#aNY{%H5gaj3R@O~=T^96g|_2Xc*c@@3q8OsvRt=%Q&#doAW=snFhpq3fPI+K&$X7 z+U6~AJU;`3Llq$0m;pjy1_)PYq~>AI|Ab>R2mmSu+lF@fowpFTwo{|ek`eHMumAv> Mcz}<5l=x=+A0QqH2><{9 delta 8556 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 diff --git a/boards/auterion/fmu-v6x/default.px4board b/boards/auterion/fmu-v6x/default.px4board index dc58fb1c88..f714280cdb 100644 --- a/boards/auterion/fmu-v6x/default.px4board +++ b/boards/auterion/fmu-v6x/default.px4board @@ -13,7 +13,6 @@ CONFIG_DRIVERS_ADC_BOARD_ADC=y CONFIG_DRIVERS_BAROMETER_BMP388=y CONFIG_DRIVERS_CAMERA_CAPTURE=y CONFIG_DRIVERS_CAMERA_TRIGGER=y -CONFIG_DRIVERS_CDCACM_AUTOSTART=y CONFIG_COMMON_DIFFERENTIAL_PRESSURE=y CONFIG_DRIVERS_DIFFERENTIAL_PRESSURE_AUAV=y CONFIG_COMMON_DISTANCE_SENSOR=y diff --git a/boards/auterion/fmu-v6x/extras/auterion_fmu-v6x_bootloader.bin b/boards/auterion/fmu-v6x/extras/auterion_fmu-v6x_bootloader.bin index c48956fc9e34e53237080061365a4f7f60335131..c619569917b47376eb4de82beb40a24653d88545 100755 GIT binary patch delta 12380 zcmaia3s_Xu+VH#f>=`!q0Splk_gt_+E{=eSS&5(vkPK2ghmP7AMb8;Tg|Z8k9R|Uq z#FNM6`5u&0r_%iFWXXWjC+Uc#)j4(QV@yvfT}-R-lDQCU@44*R|FZ_H^MBv}JpX>4 znRR*Jb$u`Eec!eA|Hz%$!Rb~{0JB!(jC-E@lPHi*t^{o$gIwl3hYrkwE2A=_{9O9G z8HuSzs^NB)wD*G%3_xAM36-h;3zA#`lmvig`hYI?1AT^MYNm>53eX9DpxFxaZ%78S zLj&dw8ZZNZ`HN>k=xx(jH9Q-Sd^$0ie5x}d2N}{`Pxve_t`AH(_H3Jo8{N>~);knY zilR}#h~p|WBG4e29hn>1rUP?i6bNU@W0B2Vv4i{+nTOhXGouPPV{sG+)lnb_E<_7L zNCe8uAPO#^l`{KpP>HZ`TP%-RK_iP8sGV$%scKI2gJpj|*9oGwdzs7!idwD0|+QR=Wc@$_1xX zrq~MXyiF{Br5Wg(q22b3@+Eb@wITWz`R`Z*uc6Hf8Hp8njt;6MB`&@E$xzT+U|#|~ zUg+PZ1G5+b=FS!nPRD}Kt^@PZ2r$<~fY}@YW=jN^b0WYzFC7H!WDwrZ03pc*W{&Pv z$%eQT-L)nVY8+%&T!v1G1HtYfN8=`=Sn^$*NqagTgq0*VeroK>h+n!rO)BCI{5_%d z4zeyjC&?P(Fv1oLbh#p8L_ZBKC2z)0=Q(=z9rAsAHP2BsNbb~UjN|BM!6FRwu#(b; zUN6EN{XR(6=;vzLgxiQqUlqG3IOGkNbYQL~2??cWDS03vljrDP1LO}0tI<+&Ibjmd z(V75>No+z($)>~^JV(C{kYkA!22GqQax^7yt!LA4Lc55I+#)vHfAk8Nqng05SMSn1 zO}Zzga!38-pOdVqk$uqrml!bbhygQWAY?XR3+AXJKwe4`qd2-QfGiRC4<52@Tr&A8 zDQ-MRe;u$nv+W|jxT@Z6`W={duSC>LG~=pbIQp<(>|0#U(Y1c^&^QavQInrMKTb^K z=sf?k!wKzRIqlJl9DQ6SN5-v)=IG}>Qw7_$yGhn=b+Fo+qgGAZO*bmY7RXNN%de`wS zJWkWzcIwVPhuz{VeF|lBos8(hBF;zxJFz`cB0GWs`RLMhWC3=p25n@1t%$kh^ zNq1UC1U||H=QKH;#1c;uksn%b1O>_-Jp;Y6W5?vGA(0jGor5s zw7A>}L$-*V$1FHy`ZSDaj&h(x^4LT~Nr1;S465aBAAjHNkBK;?kYS`L`%5HGv54r# zF^pm@+^)ax_VpsxhcTj**Tyg&{uzV2UHCT)UvPhNiR6*p2V=mzKL*TuV#fHH+{`H8 z5q(i1Ig|4Bh+Ykz@6(sNFX@XB{q6{{B_(G@lz-cU=)Zz(!wKz{z7!ErAs{%BN%NTA z&Ez87A9;P!B%Wz_^3O?m7DPXJ2l{UfROI3@4Be|`Eb*scbss;pIGo=SBu3E~hiFsK z(kB+OJzpOr3&kmDDS1X5pBz$<7?Qdb#utLiVYgTj^#{q{#C(pnkgvo$ctm@HB*ic# z2hnZ8Tj~Y+X$uIsmucyvVfQ@0f(x+6%|88Y$^tq-C?VS04V6%RYE z+?Qx8YsNHAk%*|)&tt2TaTTKGAbH1-&LjGDA30|z=MjA%Kqec@O^D76?6;{so0%FB z-Ir*KW_}h%v@kFn=8Bu%Bjis;LmHxU0w#N!bCDA%X1<}TNGk5 zt&Byq&ClqhcSHX{;xR4a5q-o@Eas*>MCbc;c*}4?``2=N_e0Lep%i4r(;r1N%KwC| z*4}H|Z6CJvc&kN3*UIEmvzbTqnveWswv0zK+Rt_A@L*5ta6)^(7y21Z4wC7ah8c)P z`u*NLEg)zsxn{j7Gz5>%z&=cNOx1#Zvj&A=aRpoq#%a1hv-3U@cC-U46{bSrFP+yRW|6i6&gCHP8qY znOav1^n!eK3y7s7jzw2ni`=F4yGwo;0J@0G%*tNK(Ul>SJ*5FCC$pXrMk2W2Yi1z{ zu88@^Oc51mR*B4~1w7iyXeUsk!WIB@$`NMvT|fHfSE~vcYewChY3FE#Lf*+Trn0Ws z1Q};I>P6?pErUEd4fHdG{FIf)hotK=u}sMq+7xzrx`SlJ6yw;r{@j$W`H-|gCTp^b z7!CGj=OGO_ojo=4YRJ@}89K$K+H~_x4aem+(P1<-{KjT#`1WTjz)7-lX2fg>jWPjs zaqGxee@bpXDR)>W+A}FaT8j7ywv)2Mc2aI{TrX&@mT7teKMk+Uo_Q7(WRAd`C4zw> zbW-l9&a$!pt2Se0bn$liDLu-X<|!RHR=Zt(x;iqK8xV5yJaxTnV^7K*`eQxOHdEk9gzOhWR?lZZ= zx^qQi*{%GUx?{t~^o?bD7r*Y5ya#~Z44jhl_FIn)iO^aSGcYOpl-w;2EY%DlE~+0) zC*=L&33ewVr|@q2G7zV1Ee+-~QnRb$Og_9Tut*7F02BhVbv&zX>^O@7MSYCk^gNNSTe zSb-L(Cu9d$uqwSA`YNnYPk0%9tU*yuR(^X8te-0xY zRC%1zH=4f?WH##@D+s?3{3rh@d6eEMsVV(P)VuYr?eaeBI9%Y=V^zAM>Yd@;37nEU z#Lw!wdXi{d{2uvnD;kJ1C9PoiC*`^h{W$z_U02Vm^5fP)UBqdD#`$yAQKV$km)>Cq4 z7{<7}qS?{*CfQ3VEGnfFHAyxw?U5g~GM;K;D}ZVz&?UYT@?YST z+yM?F7zC>#HTh4;FGET%&;`C*0%R^YA@2c1PRZR?j)*2Li5nB51HMzuat9O}v#?-2 zA@8qNq#8dm8F56#=$5_d1ChzptsT)ERSQ6iAi)Ykvn#s7j)68PV2WIjjvtWuw3*I_ z(yaw{yj700BKoOZfKj24GvwjB8{JzRAgtL4LSvcwgWgqQpVO3NpOi)R=1)ck$tU@r zjNj|4wWrw!Bl=DwQIT9eH2Wt{ulFEv7QCQ6h}gkCudu-Ipd#X@AJi9imW`9+ViakU zU!V7#$9;)zhW>-V{KK7vxA1ePFG2@N%k(tVMqZqrc3T?<=F+BgqlQLk7L}s;pVg$4 zwUJMzkH3#WqA2MBK`)=s>tCQlc^c{uh_+D=06y9^Yj#OI6qm$9EKbIwk&h32 z)361dKL`@!NL)Vo8{+lR=b z_glDW3VG@NWL}XD`N^UC%{d8*>3NhL=K&KxB!FpS6;%r^+CtJ}GFY_dn3__hVKy^EX6V>EMHiFP1CMzcXivmjgYB&LEPDE(FyvEEJiMTOiyHN|mfW5dt3gcb;be{DyH*Xe#8Zcb4%($)HGf--Wd;7z_*R zMZB$S)IRSUg7_2X8mI<7@m5iYWEOf9d`O&&lbS72)mV|RkIy)EV}}FGRn!rUy8cqq zc(PB<5&PsRdVNo1PfLkm;H+%bqx{IFi9LP3JlMvTVtifB5zoqkm^gC2SvwGw72!#w z#qlZqu?AGAl~LMRZ)}#2omkB&{ZWPyFXYVq;vG9osUMhWPoTwUHE}+0n|-NRj(_WK zm$%n#D`O+Fkt2H&d;U~{J!j>m;`Y^1&T_o1jOCG`9RF`TZlHZQp?#MZ86$^M;5nHS z73q}B>cH~CImi+E8>og48y^4O;i$2}YRWM(ux{CAYz~PyOp6y-2me0ka&H5z=1;Qi zs?CMtgvO4Y1IH4FT5|R0gNrQP!=#FHn>ZT8%ylEarMld;y*N643kG#EcIDs@g zsBOO5r1sSJU0rLzY4*-CJ|p5BbE8-v6(JEbXNtkP!mz7rHRqPtEx5Dn2XEKvXeY~E zU5gAB+*Q|E#@gjIe&cPR>9$elmH57{^{ zEtL7+LT{r7l%>9u@G} z?|Z=1K;t9UFK4@RSSiBpOLFUDb}i+#pLy5ULH3P-iMGdPjoq z>~A=k4^P(B=$cKQZ+n<;Sct>hyBX19Uke7yw;t_KdQ>$IO8ZqlgASgN!CHZx*n(SW zv2b+ z4Xo~CCCWg(Vf^N?22q~Wh^SK~n1TPP@EQ8S$RTy+fHx{@B-|8vq72u)C3v)h!wR4A z(>donbaL<2NdC%}?2geLiyXMRmWlr_oWQ2YIM=AW;2rh**lxg3y1?T&T#O@v(%q^y zV+L9F;P__9tfDBAA4-n8u*EdiW%58+t8Dw2tG@4gzT=`GQnWXf_dtSsrksjOpYpTTKsWS49<2&*OgMFiC(TXeQXmLCVI#0S7w zg!!QqT>@4m#Sca+W;xkEik}Lqbi)sZB8=#yKr*p!WKNL;@y|%9H39Szika0 zx)>Q$X?|#T(<~=Dky2oHB z@9mpgn`6(tee?O|V>jM*?7jJX!g_5s+;BR+zNDc~{`tUxSKc7$OHvcb`OY%^(1iFe z2EYPzr(?@`vTe!uDO+o|juJiUi`uQPZcXb+?CDDVsAuDFLVLCi#D?>)ZnbSq>^bPm zBhM|FXfSqM+%k%<`QqXhV@F!gIj^zf{1%2`v_j7};TKA~v&auE?qr27)*}ikDY@5A|&b78y(!6v+^KM(c{i5xv-L(8+FXVnbu-l$( zyJ)Ysnd+|E?95fcU`VzCEmv7wGX;Q_s>r|(r327=!Z`~7ovHFeselZOG(hwF*~V+b z%4?j?ii6St#ngndb!X8mQ==6t(t-epjczbpoUm5JhDN45v+YZC{Hdyur)-D2 zEY9vh(`z>!^yOJcO_&e7?`_eH=??P%>S%s%OJq;!YIbCE9r5Qh{*A+>wa2$`9iyyu zycSHYwVIX3*QTwmcczqS{2Onej*{BQo^GE}T$p<7a$NrLEonX1yp3gZR%<#+)*yfD z@SOUcCHjL=9!*ELŜ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 -extern int sercon_main(int c, char **argv); - void board_late_initialize(void) { - sercon_main(0, NULL); } extern void sys_tick_handler(void); diff --git a/boards/auterion/fmu-v6x/src/hw_config.h b/boards/auterion/fmu-v6x/src/hw_config.h index 4ad1049fed..949a9284a5 100644 --- a/boards/auterion/fmu-v6x/src/hw_config.h +++ b/boards/auterion/fmu-v6x/src/hw_config.h @@ -57,17 +57,12 @@ */ /* Boot device selection list*/ -#define USB0_DEV 0x01 #define SERIAL0_DEV 0x02 #define SERIAL1_DEV 0x04 #define APP_LOAD_ADDRESS 0x08020000 #define BOOTLOADER_DELAY 5000 -#define INTERFACE_USB 1 -#define INTERFACE_USB_CONFIG "/dev/ttyACM0" -#define BOARD_VBUS MK_GPIO_INPUT(GPIO_OTGFS_VBUS) - -//#define USE_VBUS_PULL_DOWN +#define INTERFACE_USB 0 #define INTERFACE_USART 1 #define INTERFACE_USART_CONFIG "/dev/ttyS0,1500000" #define BOOT_DELAY_ADDRESS 0x000001a0 @@ -85,6 +80,10 @@ #define SERIAL_BREAK_DETECT_DISABLED 1 +// Connected to VBUS on the Auterion FMU v6x +#define BOARD_FORCE_BL_PIN (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTA|GPIO_PIN9) +#define BOARD_FORCE_BL_STATE 1 + /* * Uncommenting this allows to force the bootloader through * a PWM output pin. As this can accidentally initialize @@ -118,11 +117,11 @@ #endif #ifndef BOOT_DEVICES_SELECTION -# define BOOT_DEVICES_SELECTION USB0_DEV|SERIAL0_DEV|SERIAL1_DEV +# define BOOT_DEVICES_SELECTION SERIAL0_DEV|SERIAL1_DEV #endif #ifndef BOOT_DEVICES_FILTER_ONUSB -# define BOOT_DEVICES_FILTER_ONUSB USB0_DEV|SERIAL0_DEV|SERIAL1_DEV +# define BOOT_DEVICES_FILTER_ONUSB SERIAL0_DEV|SERIAL1_DEV #endif #endif /* HW_CONFIG_H_ */ diff --git a/boards/auterion/fmu-v6x/src/init.cpp b/boards/auterion/fmu-v6x/src/init.cpp index 88fe88126c..7e35a407c4 100644 --- a/boards/auterion/fmu-v6x/src/init.cpp +++ b/boards/auterion/fmu-v6x/src/init.cpp @@ -179,10 +179,6 @@ stm32_boardinitialize(void) const uint32_t gpio[] = PX4_GPIO_INIT_LIST; px4_gpio_init(gpio, arraySize(gpio)); - /* configure USB interfaces */ - - stm32_usbinitialize(); - VDD_3V3_ETH_POWER_EN(true); } diff --git a/boards/auterion/fmu-v6x/src/usb.c b/boards/auterion/fmu-v6x/src/usb.c deleted file mode 100644 index 70eebc6fe0..0000000000 --- a/boards/auterion/fmu-v6x/src/usb.c +++ /dev/null @@ -1,105 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2016 PX4 Development Team. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name PX4 nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - -/** - * @file usb.c - * - * Board-specific USB functions. - */ - -/************************************************************************************ - * Included Files - ************************************************************************************/ - -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include "board_config.h" - -/************************************************************************************ - * Definitions - ************************************************************************************/ - -/************************************************************************************ - * Private Functions - ************************************************************************************/ - -/************************************************************************************ - * Public Functions - ************************************************************************************/ - -/************************************************************************************ - * Name: stm32_usbinitialize - * - * Description: - * Called to setup USB-related GPIO pins for the PX4FMU board. - * - ************************************************************************************/ - -__EXPORT void stm32_usbinitialize(void) -{ - /* The OTG FS has an internal soft pull-up */ - - /* Configure the OTG FS VBUS sensing GPIO, Power On, and Overcurrent GPIOs */ - -#ifdef CONFIG_STM32H7_OTGFS - stm32_configgpio(GPIO_OTGFS_VBUS); -#endif -} - -/************************************************************************************ - * Name: stm32_usbsuspend - * - * Description: - * Board logic must provide the stm32_usbsuspend logic if the USBDEV driver is - * used. This function is called whenever the USB enters or leaves suspend mode. - * This is an opportunity for the board logic to shutdown clocks, power, etc. - * while the USB is suspended. - * - ************************************************************************************/ - -__EXPORT void stm32_usbsuspend(FAR struct usbdev_s *dev, bool resume) -{ - uinfo("resume: %d\n", resume); -} From 9fa4a57c6653160a377fe1afc95c3fa5897527be Mon Sep 17 00:00:00 2001 From: Niklas Hauser Date: Fri, 10 Oct 2025 16:49:09 +0200 Subject: [PATCH 29/71] tools: Ignore known_hosts file for uploading via SSH --- Tools/auterion/remote_update_fmu.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Tools/auterion/remote_update_fmu.sh b/Tools/auterion/remote_update_fmu.sh index 2eeb66b999..d3777aebaf 100755 --- a/Tools/auterion/remote_update_fmu.sh +++ b/Tools/auterion/remote_update_fmu.sh @@ -7,6 +7,7 @@ fi ssh_port=22 ssh_user=root +ssh_opts="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" while getopts ":f:c:d:p:u:r" opt; do case ${opt} in @@ -67,7 +68,7 @@ target_file_name="update-dev.tar" if [ "$revert" == true ]; then # revert to the release version which was originally deployed cmd="cp $target_dir/update.tar $target_dir/$target_file_name" - ssh -t -p $ssh_port $ssh_user@$device "$cmd" + ssh $ssh_opts -t -p $ssh_port $ssh_user@$device "$cmd" else # create custom update-dev.tar tmp_dir="$(mktemp -d)" @@ -105,11 +106,11 @@ else $tar_name -C "$tmp_dir" --sort=name --owner=root:0 --group=root:0 --mtime='2019-01-01 00:00:00' -cvf $target_file_name $firmware_path $config_path # send it to the target to start flashing - scp -P $ssh_port "$target_file_name" $ssh_user@"$device":$target_dir + scp $ssh_opts -P $ssh_port "$target_file_name" $ssh_user@"$device":$target_dir popd &>/dev/null rm -rf "$tmp_dir" fi # grab status output for flashing progress cmd="tail --follow=name $target_dir/update_status 2>/dev/null || true" -ssh -t -p $ssh_port $ssh_user@$device "$cmd" +ssh $ssh_opts -t -p $ssh_port $ssh_user@$device "$cmd" From 0f0fe8f1fa6edfe5007641c51c837b380a3c04eb Mon Sep 17 00:00:00 2001 From: Alexander Lerach Date: Tue, 14 Oct 2025 15:36:09 +0200 Subject: [PATCH 30/71] boards: align auterion v6x with APX4 --- boards/auterion/fmu-v6x/default.px4board | 10 ++++++---- boards/auterion/fmu-v6x/init/rc.board_defaults | 3 +++ boards/auterion/fmu-v6x/init/rc.board_mavlink | 12 ++++++++++-- boards/auterion/fmu-v6x/multicopter.px4board | 1 - boards/auterion/fmu-v6x/nuttx-config/include/board.h | 6 +++++- boards/auterion/fmu-v6x/nuttx-config/nsh/defconfig | 9 +-------- 6 files changed, 25 insertions(+), 16 deletions(-) diff --git a/boards/auterion/fmu-v6x/default.px4board b/boards/auterion/fmu-v6x/default.px4board index f714280cdb..dece24a26f 100644 --- a/boards/auterion/fmu-v6x/default.px4board +++ b/boards/auterion/fmu-v6x/default.px4board @@ -20,13 +20,11 @@ CONFIG_DRIVERS_DSHOT=y CONFIG_DRIVERS_GNSS_SEPTENTRIO=y CONFIG_DRIVERS_GPIO_MCP23009=y CONFIG_DRIVERS_GPS=y -CONFIG_DRIVERS_HEATER=y CONFIG_DRIVERS_IMU_BOSCH_BMI088=y CONFIG_DRIVERS_IMU_INVENSENSE_ICM20602=y CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P=y CONFIG_COMMON_LIGHT=y CONFIG_COMMON_MAGNETOMETER=y -CONFIG_DRIVERS_OSD_MSP_OSD=y CONFIG_DRIVERS_POWER_MONITOR_INA226=y CONFIG_DRIVERS_POWER_MONITOR_INA228=y CONFIG_DRIVERS_POWER_MONITOR_INA238=y @@ -34,6 +32,7 @@ CONFIG_DRIVERS_POWER_MONITOR_PM_SELECTOR_AUTERION=y CONFIG_DRIVERS_PWM_INPUT=y CONFIG_DRIVERS_PWM_OUT=y CONFIG_DRIVERS_PX4IO=y +CONFIG_DRIVERS_RPM_CAPTURE=y CONFIG_COMMON_RC=y CONFIG_DRIVERS_SAFETY_BUTTON=y CONFIG_DRIVERS_TONE_ALARM=y @@ -53,10 +52,12 @@ CONFIG_MODULES_FW_ATT_CONTROL=y CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=y CONFIG_MODULES_FW_MODE_MANAGER=y CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL=y +CONFIG_FIGURE_OF_EIGHT=y CONFIG_MODULES_FW_RATE_CONTROL=y CONFIG_MODULES_GIMBAL=y CONFIG_MODULES_GYRO_CALIBRATION=y CONFIG_MODULES_HARDFAULT_STREAM=y +CONFIG_MODULES_INTERNAL_COMBUSTION_ENGINE_CONTROL=y CONFIG_MODULES_LAND_DETECTOR=y CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=y CONFIG_MODULES_LOAD_MON=y @@ -64,7 +65,6 @@ CONFIG_MODULES_LOGGER=y CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y CONFIG_MODULES_MANUAL_CONTROL=y CONFIG_MODULES_MAVLINK=y -CONFIG_MAVLINK_DIALECT="development" CONFIG_MODULES_MC_ATT_CONTROL=y CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y @@ -74,8 +74,9 @@ CONFIG_MODULES_NAVIGATOR=y CONFIG_MODE_NAVIGATOR_VTOL_TAKEOFF=y CONFIG_NUM_MISSION_ITMES_SUPPORTED=1000 CONFIG_MODULES_RC_UPDATE=y +CONFIG_MODULES_ROVER_MECANUM=y CONFIG_MODULES_SENSORS=y -CONFIG_MODULES_TEMPERATURE_COMPENSATION=y +CONFIG_MODULES_SIMULATION_SIMULATOR_SIH=y CONFIG_MODULES_UXRCE_DDS_CLIENT=y CONFIG_MODULES_VTOL_ATT_CONTROL=y CONFIG_SYSTEMCMDS_ACTUATOR_TEST=y @@ -92,6 +93,7 @@ CONFIG_SYSTEMCMDS_PARAM=y CONFIG_SYSTEMCMDS_PERF=y CONFIG_SYSTEMCMDS_REBOOT=y CONFIG_SYSTEMCMDS_SYSTEM_TIME=y +CONFIG_SYSTEMCMDS_SD_BENCH=y CONFIG_SYSTEMCMDS_TOP=y CONFIG_SYSTEMCMDS_TOPIC_LISTENER=y CONFIG_SYSTEMCMDS_TUNE_CONTROL=y diff --git a/boards/auterion/fmu-v6x/init/rc.board_defaults b/boards/auterion/fmu-v6x/init/rc.board_defaults index f371bbee78..1a6fc9673c 100644 --- a/boards/auterion/fmu-v6x/init/rc.board_defaults +++ b/boards/auterion/fmu-v6x/init/rc.board_defaults @@ -17,6 +17,9 @@ param set-default UXRCE_DDS_CFG 1000 # The buzzer draws too much power (0.2A) on the GPS power rail (limit 0.45A). param set-default CBRK_BUZZER 782097 +# Update default IP config if needed +netman update_default -i eth0 + safety_button start # GPIO Expander driver on external I2C3 diff --git a/boards/auterion/fmu-v6x/init/rc.board_mavlink b/boards/auterion/fmu-v6x/init/rc.board_mavlink index 4952825bc4..88cdd87c66 100644 --- a/boards/auterion/fmu-v6x/init/rc.board_mavlink +++ b/boards/auterion/fmu-v6x/init/rc.board_mavlink @@ -3,8 +3,16 @@ # Auterion FMUv6X specific board MAVLink startup script. #------------------------------------------------------------------------------ -# start Mavlink on Telem2 -mavlink start -d /dev/ttyS4 -b 3000000 -r 290000 -m onboard_low_bandwidth -x -z +if param compare MAV_S_FORWARD 1 +then + set S_FORWARD "-f" +else + set S_FORWARD "" +fi + +mavlink start -d /dev/ttyS4 -b 3000000 -r 290000 -m p:MAV_S_MODE -x -z $S_FORWARD + +unset S_FORWARD # Ensure nothing else starts on TEL2 (ttyS4) set PRT_TEL2_ 1 diff --git a/boards/auterion/fmu-v6x/multicopter.px4board b/boards/auterion/fmu-v6x/multicopter.px4board index 147297d55e..4f1b9ef033 100644 --- a/boards/auterion/fmu-v6x/multicopter.px4board +++ b/boards/auterion/fmu-v6x/multicopter.px4board @@ -9,5 +9,4 @@ CONFIG_MODULES_FW_RATE_CONTROL=n CONFIG_MODULES_VTOL_ATT_CONTROL=n CONFIG_COMMON_RC=y # CONFIG_EKF2_SIDESLIP is not set -CONFIG_MODULES_SIMULATION_SIMULATOR_SIH=y # CONFIG_SENSORS_VEHICLE_AIRSPEED is not set diff --git a/boards/auterion/fmu-v6x/nuttx-config/include/board.h b/boards/auterion/fmu-v6x/nuttx-config/include/board.h index 7907eafad1..964976318a 100644 --- a/boards/auterion/fmu-v6x/nuttx-config/include/board.h +++ b/boards/auterion/fmu-v6x/nuttx-config/include/board.h @@ -377,7 +377,11 @@ #define GPIO_USART2_RTS GPIO_USART2_RTS_2 /* PD4 */ #define GPIO_USART2_CTS GPIO_USART2_CTS_NSS_2 /* PD3 */ -#define GPIO_USART3_RX GPIO_USART3_RX_3 /* PD9 */ +#ifdef PX4_RESTRICTED_BUILD +# define GPIO_USART3_RX 0 /* PD9 */ +#else +# define GPIO_USART3_RX GPIO_USART3_RX_3 /* PD9 */ +#endif /* PX4_RESTRICTED_BUILD */ #define GPIO_USART3_TX GPIO_USART3_TX_3 /* PD8 */ #define GPIO_UART4_RX GPIO_UART4_RX_6 /* PH14 */ diff --git a/boards/auterion/fmu-v6x/nuttx-config/nsh/defconfig b/boards/auterion/fmu-v6x/nuttx-config/nsh/defconfig index 328a033bbf..6070e6696e 100644 --- a/boards/auterion/fmu-v6x/nuttx-config/nsh/defconfig +++ b/boards/auterion/fmu-v6x/nuttx-config/nsh/defconfig @@ -139,14 +139,13 @@ CONFIG_NETDB_DNSCLIENT=y CONFIG_NETDB_DNSCLIENT_ENTRIES=8 CONFIG_NETDB_DNSSERVER_NOADDR=y CONFIG_NETDEV_PHY_IOCTL=y -CONFIG_NETINIT_DHCPC=y CONFIG_NETINIT_DNS=y CONFIG_NETINIT_DNSIPADDR=0xA290AFE CONFIG_NETINIT_DRIPADDR=0xA290AFE +CONFIG_NETINIT_IPADDR=0xA290A02 CONFIG_NETINIT_MONITOR=y CONFIG_NETINIT_THREAD=y CONFIG_NETINIT_THREAD_PRIORITY=49 -CONFIG_NETUTILS_TELNETD=y CONFIG_NET_ARP_IPIN=y CONFIG_NET_ARP_SEND=y CONFIG_NET_BROADCAST=y @@ -155,10 +154,6 @@ CONFIG_NET_ICMP=y CONFIG_NET_ICMP_SOCKET=y CONFIG_NET_NACTIVESOCKETS=16 CONFIG_NET_SOLINGER=y -CONFIG_NET_TCP=y -CONFIG_NET_TCPBACKLOG=y -CONFIG_NET_TCP_DELAYED_ACK=y -CONFIG_NET_TCP_WRITE_BUFFERS=y CONFIG_NET_UDP=y CONFIG_NET_UDP_CHECKSUMS=y CONFIG_NET_UDP_WRITE_BUFFERS=y @@ -174,8 +169,6 @@ CONFIG_NSH_QUOTE=y CONFIG_NSH_ROMFSETC=y CONFIG_NSH_ROMFSSECTSIZE=128 CONFIG_NSH_STRERROR=y -CONFIG_NSH_TELNET=y -CONFIG_NSH_TELNET_LOGIN=y CONFIG_NSH_VARS=y CONFIG_OTG_ID_GPIO_DISABLE=y CONFIG_PIPES=y From 376f52f51ddcb0b103b7b6439478357035fe8b2a Mon Sep 17 00:00:00 2001 From: Alexander Lerach Date: Tue, 14 Oct 2025 18:11:55 +0200 Subject: [PATCH 31/71] mavlink: add som/fmu config params --- src/modules/mavlink/module.yaml | 37 +++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/modules/mavlink/module.yaml b/src/modules/mavlink/module.yaml index fa2fe38834..a8eee0d093 100644 --- a/src/modules/mavlink/module.yaml +++ b/src/modules/mavlink/module.yaml @@ -201,3 +201,40 @@ parameters: num_instances: *max_num_config_instances default: [0.015, 0.015, 0.015] reboot_required: true + + MAV_S_MODE: + description: + short: MAVLink Mode for SOM to FMU communication channel + long: | + The MAVLink Mode defines the set of streamed messages (for example the + vehicle's attitude) and their sending rates. + + type: enum + values: + 0: Normal + #1: Custom + 2: Onboard + #3: OSD + #4: Magic + 5: Config + #6: Iridium + 7: Minimal + #8: External Vision + #9: External Vision Minimal + #10: Gimbal + 11: Onboard Low Bandwidth + #12: uAvionix + 13: Low Bandwidth + # We shadow the modes that can block the FMU to SOM connection + reboot_required: true + default: 11 + + MAV_S_FORWARD: + description: + short: Enable MAVLink forwarding on TELEM2 + long : | + TELEM2 on Skynode only. + + type: boolean + reboot_required: true + default: false From babe094d0692427195ad857582190b3b86d1a625 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Tue, 14 Oct 2025 20:46:29 +0200 Subject: [PATCH 32/71] FailureDetector: use robust timeout checks for motor failure detection (#25757) --- .../commander/failure_detector/FailureDetector.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/modules/commander/failure_detector/FailureDetector.cpp b/src/modules/commander/failure_detector/FailureDetector.cpp index 34eb92089a..2cf3608e5b 100644 --- a/src/modules/commander/failure_detector/FailureDetector.cpp +++ b/src/modules/commander/failure_detector/FailureDetector.cpp @@ -255,10 +255,9 @@ void FailureDetector::updateMotorStatus(const vehicle_status_s &vehicle_status, // First wait for some ESC telemetry that has the required fields. Before that happens, don't check this ESC // Then check - const hrt_abstime time_now = hrt_absolute_time(); - // Only check while armed if (vehicle_status.arming_state == vehicle_status_s::ARMING_STATE_ARMED) { + const hrt_abstime now = hrt_absolute_time(); const int limited_esc_count = math::min(esc_status.esc_count, esc_status_s::CONNECTED_ESC_MAX); actuator_motors_s actuator_motors{}; @@ -282,9 +281,7 @@ void FailureDetector::updateMotorStatus(const vehicle_status_s &vehicle_status, } // Check for telemetry timeout - const hrt_abstime telemetry_age = time_now - cur_esc_report.timestamp; - const bool esc_timed_out = telemetry_age > 300_ms; - + const bool esc_timed_out = now > cur_esc_report.timestamp + 300_ms; const bool esc_was_valid = _motor_failure_esc_valid_current_mask & (1 << i_esc); const bool esc_timeout_currently_flagged = _motor_failure_esc_timed_out_mask & (1 << i_esc); @@ -315,7 +312,7 @@ void FailureDetector::updateMotorStatus(const vehicle_status_s &vehicle_status, if (throttle_above_threshold && current_too_low && !esc_timed_out) { if (_motor_failure_undercurrent_start_time[i_esc] == 0) { - _motor_failure_undercurrent_start_time[i_esc] = time_now; + _motor_failure_undercurrent_start_time[i_esc] = now; } } else { @@ -325,7 +322,7 @@ void FailureDetector::updateMotorStatus(const vehicle_status_s &vehicle_status, } if (_motor_failure_undercurrent_start_time[i_esc] != 0 - && (time_now - _motor_failure_undercurrent_start_time[i_esc]) > _param_fd_motor_time_thres.get() * 1_ms + && now > (_motor_failure_undercurrent_start_time[i_esc] + (_param_fd_motor_time_thres.get() * 1_ms)) && (_motor_failure_esc_under_current_mask & (1 << i_esc)) == 0) { // Set flag _motor_failure_esc_under_current_mask |= (1 << i_esc); From a64536802b5a5b6ba8fe6ef1b7dcb6a54a0a99ea Mon Sep 17 00:00:00 2001 From: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> Date: Tue, 14 Oct 2025 11:45:43 -0800 Subject: [PATCH 33/71] gz: fix gimbal yaw, add dds publisher (#25754) * gz: correct gimbal yaw * uxrce_dds: add publisher /fmu/out/gimbal_device_attitude_status * chore: use explicit ENU_to_NED rotation Signed-off-by: Beniamino Pozzan * format --------- Signed-off-by: Beniamino Pozzan Co-authored-by: Beniamino Pozzan --- msg/GimbalDeviceAttitudeStatus.msg | 3 +++ src/modules/simulation/gz_bridge/GZGimbal.cpp | 10 ++++++---- src/modules/uxrce_dds_client/dds_topics.yaml | 4 ++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/msg/GimbalDeviceAttitudeStatus.msg b/msg/GimbalDeviceAttitudeStatus.msg index 0007a1c03d..72eca870f3 100644 --- a/msg/GimbalDeviceAttitudeStatus.msg +++ b/msg/GimbalDeviceAttitudeStatus.msg @@ -9,6 +9,9 @@ uint16 DEVICE_FLAGS_NEUTRAL = 2 uint16 DEVICE_FLAGS_ROLL_LOCK = 4 uint16 DEVICE_FLAGS_PITCH_LOCK = 8 uint16 DEVICE_FLAGS_YAW_LOCK = 16 +uint16 DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME = 32 +uint16 DEVICE_FLAGS_YAW_IN_EARTH_FRAME = 64 + float32[4] q float32 angular_velocity_x diff --git a/src/modules/simulation/gz_bridge/GZGimbal.cpp b/src/modules/simulation/gz_bridge/GZGimbal.cpp index 451f846563..4fbccc316f 100644 --- a/src/modules/simulation/gz_bridge/GZGimbal.cpp +++ b/src/modules/simulation/gz_bridge/GZGimbal.cpp @@ -100,11 +100,15 @@ void GZGimbal::gimbalIMUCallback(const gz::msgs::IMU &IMU_data) pthread_mutex_lock(&_node_mutex); static const matrix::Quatf q_FLU_to_FRD = matrix::Quatf(0.0f, 1.0f, 0.0f, 0.0f); + static const matrix::Quatf q_ENU_to_NED = matrix::Quatf(0.0f, cosf(M_PI_4_F), cosf(M_PI_4_F), 0.0f); + + // Get the gimbal orientation. Gimbal frame is FLU in Gazebo, reference frame is ENU in Gazebo const matrix::Quatf q_gimbal_FLU = matrix::Quatf(IMU_data.orientation().w(), IMU_data.orientation().x(), IMU_data.orientation().y(), IMU_data.orientation().z()); - _q_gimbal = q_FLU_to_FRD * q_gimbal_FLU * q_FLU_to_FRD.inversed(); + + _q_gimbal = q_ENU_to_NED * q_gimbal_FLU * q_FLU_to_FRD.inversed(); matrix::Vector3f rate = q_FLU_to_FRD.rotateVector(matrix::Vector3f(IMU_data.angular_velocity().x(), IMU_data.angular_velocity().y(), @@ -206,13 +210,11 @@ void GZGimbal::publishDeviceInfo() void GZGimbal::publishDeviceAttitude() { - // TODO handle flags - gimbal_device_attitude_status_s gimbal_att{}; gimbal_att.target_system = 0; // Broadcast gimbal_att.target_component = 0; // Broadcast - gimbal_att.device_flags = 0; + gimbal_att.device_flags = gimbal_device_attitude_status_s::DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME; _q_gimbal.copyTo(gimbal_att.q); gimbal_att.angular_velocity_x = _gimbal_rate[0]; gimbal_att.angular_velocity_y = _gimbal_rate[1]; diff --git a/src/modules/uxrce_dds_client/dds_topics.yaml b/src/modules/uxrce_dds_client/dds_topics.yaml index ef7ba8fc0b..7cc39d199c 100644 --- a/src/modules/uxrce_dds_client/dds_topics.yaml +++ b/src/modules/uxrce_dds_client/dds_topics.yaml @@ -104,6 +104,10 @@ publications: type: px4_msgs::msg::Wind rate_limit: 1. + - topic: /fmu/out/gimbal_device_attitude_status + type: px4_msgs::msg::GimbalDeviceAttitudeStatus + rate_limit: 20. + # Create uORB::Publication subscriptions: - topic: /fmu/in/register_ext_component_request From 2cae8ee7972235506ce34081690cff329baa244c Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Wed, 15 Oct 2025 02:05:33 +0200 Subject: [PATCH 34/71] Improve documentation for motor failure injection and detection (#25756) * failure_injection: improve previously vague motor faulure Reading it again I decided adding the sentance in 4d2170c13ea4d42c5b0b464dbbcbb68fb098cbcc is not clear enough. * docs/safety: add a motor failure detection paragraph The functionality is in my eyes pretty basic but so far completely undocumented so I went through the code and added a paragraph based on questions I received. * Subedit * Apply suggestion from @hamishwillee --------- Co-authored-by: Hamish Willee --- docs/en/config/safety.md | 26 +++++++++++++++++++++--- docs/en/debug/failure_injection.md | 32 ++++++++++++++++++++++-------- 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/docs/en/config/safety.md b/docs/en/config/safety.md index a01a6c6bb7..5640f1dcd7 100644 --- a/docs/en/config/safety.md +++ b/docs/en/config/safety.md @@ -207,7 +207,7 @@ The relevant parameters shown below. ### Position Loss Failsafe Action Multicopters will switch to [Altitude mode](../flight_modes_mc/altitude.md) if a height estimate is available, otherwise [Stabilized mode](../flight_modes_mc/manual_stabilized.md). - + Fixed-wing planes, and VTOLs not configured to land in hover ([NAV_FORCE_VT](../advanced_config/parameter_reference.md#NAV_FORCE_VT)), have a parameter ([FW_GPSF_LT](../advanced_config/parameter_reference.md#FW_GPSF_LT)) that defines how long they will loiter (circle with a constant roll angle ([FW_GPSF_R](../advanced_config/parameter_reference.md#FW_GPSF_R)) at the current altitude) after losing position before attempting to land. If VTOLs have are configured to switch to hover for landing ([NAV_FORCE_VT](../advanced_config/parameter_reference.md#NAV_FORCE_VT)) then they will first transition and then descend. @@ -276,12 +276,12 @@ The relevant parameters are listed in the table below. ## Failure Detector -The failure detector allows a vehicle to take protective action(s) if it unexpectedly flips, or if it is notified by an external failure detection system. +The failure detector allows a vehicle to take protective actions if it unexpectedly flips, detects a motor failure, or if it is notified by an external failure detection system. During **flight**, the failure detector can be used to trigger [flight termination](../advanced_config/flight_termination.md) if failure conditions are met, which may then launch a [parachute](../peripherals/parachute.md) or perform some other action. ::: info -Failure detection during flight is deactivated by default (enable by setting the parameter: [CBRK_FLIGHTTERM=0](#CBRK_FLIGHTTERM)). +Acting on a detected failure during flight is deactivated by default (enable by setting the parameter: [CBRK_FLIGHTTERM=0](#CBRK_FLIGHTTERM)). ::: During **takeoff** the failure detector [attitude trigger](#attitude-trigger) invokes the [disarm action](#act_disarm) if the vehicle flips (disarm kills the motors but, unlike flight termination, will not launch a parachute or perform other failure actions). @@ -303,6 +303,26 @@ The relevant parameters are shown below: | [FD_FAIL_P_TTRI](../advanced_config/parameter_reference.md#FD_FAIL_P_TTRI) | Time to exceed [FD_FAIL_P](#FD_FAIL_P) for failure detection (default 0.3s). | | [FD_FAIL_R_TTRI](../advanced_config/parameter_reference.md#FD_FAIL_R_TTRI) | Time to exceed [FD_FAIL_R](#FD_FAIL_R) for failure detection (default 0.3s). | +### Motor Failure Trigger + +The failure detector can be configured to detect a motor failure while armed (and trigger an associated action) in the following conditions: + +- A 300 ms timeout occurs in telemetry from an ESC that was previously available. +- The input current in the telemetry of an ESC which was previously positive gets too low for more than [`FD_ACT_MOT_TOUT`](FD_ACT_MOT_TOUT) ms. + The "too low" condition is defined by: + + ```text + {esc current} < {parameter FD_ACT_MOT_C2T} * {motor command between 0 and 1} + ``` + +| Parameter | Description | +| -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [FD_ACT_EN](../advanced_config/parameter_reference.md#FD_ACT_EN) | Enable/disable the motor failure trigger completely. | +| [FD_ACT_MOT_THR](../advanced_config/parameter_reference.md#FD_ACT_MOT_THR) | Minimum normalized [0,1] motor command below which motor under current is ignored. | +| [FD_ACT_MOT_C2T](../advanced_config/parameter_reference.md#FD_ACT_MOT_C2T) | Scale between normalized [0,1] motor command and expected minimally reported currrent when the rotor is healthy. | +| [FD_ACT_MOT_TOUT](../advanced_config/parameter_reference.md#FD_ACT_MOT_TOUT) | Time in miliseconds for which the under current detection condition needs to stay true. | +| [CA_FAILURE_MODE](../advanced_config/parameter_reference.md#CA_FAILURE_MODE) | Configure to not only warn about a motor failure but remove the first motor that detects a failure from the allocation effectiveness which turns off the motor and tries to operate the vehicle without it until disarming the next time. | + ### External Automatic Trigger System (ATS) The [failure detector](#failure-detector), if [enabled](#CBRK_FLIGHTTERM), can also be triggered by an external ATS system. diff --git a/docs/en/debug/failure_injection.md b/docs/en/debug/failure_injection.md index 217a2b7ffb..298e1aad50 100644 --- a/docs/en/debug/failure_injection.md +++ b/docs/en/debug/failure_injection.md @@ -19,7 +19,7 @@ At time of writing (PX4 v1.14): ## Failure System Command -Failures can be injected using the [failure system command](../modules/modules_command.md#failure) from any PX4 console/shell, specifying both the target and type of the failure. +Failures can be injected using the [failure system command](../modules/modules_command.md#failure) from any PX4 [console/shell](../debug/consoles.md) (such as the [QGC MAVLink Console](../debug/mavlink_shell.md#qgroundcontrol-mavlink-console) or SITL _pxh shell_), specifying both the target and type of the failure. ### Syntax @@ -61,12 +61,19 @@ where: - _instance number_ (optional): Instance number of affected sensor. 0 (default) indicates all sensors of specified type. -### Example +## MAVSDK Failure Plugin + +The [MAVSDK failure plugin](https://mavsdk.mavlink.io/main/en/cpp/api_reference/classmavsdk_1_1_failure.html) can be used to programmatically inject failures. +It is used in [PX4 Integration Testing](../test_and_ci/integration_testing_mavsdk.md) to simulate failure cases (for example, see [PX4-Autopilot/test/mavsdk_tests/autopilot_tester.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/test/mavsdk_tests/autopilot_tester.cpp)). + +The plugin API is a direct mapping of the failure command shown above, with a few additional error signals related to the connection. + +## Example: RC signal To simulate losing RC signal without having to turn off your RC controller: -1. Enable the parameter [SYS_FAILURE_EN](../advanced_config/parameter_reference.md#SYS_FAILURE_EN). And specifically to turn off motors also [CA_FAILURE_MODE](../advanced_config/parameter_reference.md#CA_FAILURE_MODE). -1. Enter the following commands on the MAVLink console or SITL _pxh shell_: +1. Enable the [SYS_FAILURE_EN](../advanced_config/parameter_reference.md#SYS_FAILURE_EN) parameter. +2. Enter the following commands on the MAVLink console or SITL _pxh shell_: ```sh # Fail RC (turn publishing off) @@ -76,9 +83,18 @@ To simulate losing RC signal without having to turn off your RC controller: failure rc_signal ok ``` -## MAVSDK Failure Plugin +## Example: Motor -The [MAVSDK failure plugin](https://mavsdk.mavlink.io/main/en/cpp/api_reference/classmavsdk_1_1_failure.html) can be used to programmatically inject failures. -It is used in [PX4 Integration Testing](../test_and_ci/integration_testing_mavsdk.md) to simulate failure cases (for example, see [PX4-Autopilot/test/mavsdk_tests/autopilot_tester.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/test/mavsdk_tests/autopilot_tester.cpp)). +To stop a motor mid-flight without the system anticipating it or excluding it from allocation effectiveness: -The plugin API is a direct mapping of the failure command shown above, with a few additional error signals related to the connection. +1. Enable the [SYS_FAILURE_EN](../advanced_config/parameter_reference.md#SYS_FAILURE_EN) parameter. +2. Enable [CA_FAILURE_MODE](../advanced_config/parameter_reference.md#CA_FAILURE_MODE) parameter to allow turning off motors. +3. Enter the following commands on the MAVLink console or SITL _pxh shell_: + + ```sh + # Turn off first motor + failure motor off -i 1 + + # Turn it back on + failure motor ok -i 1 + ``` From e83d18cad2d5e746d4a1882a5dd70ddb2b8eb6aa Mon Sep 17 00:00:00 2001 From: Hamish Willee Date: Wed, 15 Oct 2025 12:28:33 +1100 Subject: [PATCH 35/71] metadata - _sidebar and only display front page warning on main (#25761) * _sidebar and only display front page warning on main * Update metadata and fix internal flaws --- .../radiolink_pix6/radiolink_pix6_hero.png | Bin 1159928 -> 0 bytes docs/en/SUMMARY.md | 1 + docs/en/_sidebar.md | 6 +- .../en/advanced_config/parameter_reference.md | 895 ++++++++---------- docs/en/airframes/airframe_reference.md | 4 + docs/en/index.md | 14 +- .../modules/modules_driver_distance_sensor.md | 2 +- docs/en/msg_docs/AirspeedValidated.md | 42 +- .../msg_docs/AutotuneAttitudeControlStatus.md | 73 +- docs/en/msg_docs/ControlAllocatorStatus.md | 3 +- docs/en/msg_docs/EstimatorStatusFlags.md | 3 +- docs/en/msg_docs/FailureDetectorStatus.md | 3 +- .../en/msg_docs/GimbalDeviceAttitudeStatus.md | 5 +- docs/en/msg_docs/SensorGnssStatus.md | 19 + docs/en/msg_docs/SensorGps.md | 40 +- docs/en/msg_docs/VehicleOdometry.md | 49 +- docs/en/msg_docs/index.md | 7 +- docs/en/ros2/px4_ros2_waypoint_missions.md | 2 +- docs/ko/_sidebar.md | 13 +- docs/uk/_sidebar.md | 13 +- docs/zh/_sidebar.md | 13 +- 21 files changed, 616 insertions(+), 591 deletions(-) delete mode 100644 docs/assets/flight_controller/radiolink_pix6/radiolink_pix6_hero.png create mode 100644 docs/en/msg_docs/SensorGnssStatus.md diff --git a/docs/assets/flight_controller/radiolink_pix6/radiolink_pix6_hero.png b/docs/assets/flight_controller/radiolink_pix6/radiolink_pix6_hero.png deleted file mode 100644 index 1296d02ed881c3218a1b3f35973916bca49004e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1159928 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�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

AIo}_;GY{LDv9!fbW2}dB@426IkL3)Y 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

2b|`-xcs`iQ^;1eHURl=Y2mO!qJ;Ag^H>@GaO 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

g|Ut3u++1wJUi4ec|% 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

dvmMF5?zN>TvLaD0 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 z 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%0A%n}b!kirm43C2W zd%+=WfmG-)NW*_21W2-qEyzKUE?`z?X;lKJi=8m&1okS1{Hjo>8(T15_PARx?u9R@ zRWBM}Ly1dOAvM4T!^P1nt-V5fw6%w`mB}-E;dZMv`k1Bg=;P7W)jCcaW5ld}uhM;F z5Lai@YFu*H-d$4hLT_hF>c&zpJ+gM>`i%@n9`$_KONOrfvY)UvSNkZ6BdQDDZEHB~ z?ZKl_GogPJX|+_1e}XsAs>hQM{@M!~L~WW}*>QrI7saRD9YlakHXI5R%o z9?P9w zURaK-!bdW#hzc)X-nHwOZYO7~mkOwKp}4`0J7lo%%KjG^9^X#e^P8*9T&~j%HafR) z-E}vDFsvB>S4rGpu3TM+La;8$z`XA6BRs-N$?A157+f1flR>#oCf35j%fEf`D-NVc z1^wGUZ@oUNAgqk~aWgUid(ohaoxx=98W7%o-tY~ne6>?h(K3AsPL^F`43NQ*DHfuC za7LlaE8Z0DH51>1s0hM+ zM&j&IxU{Yh;MT0G)dP_^m?Er77Y$kwXAn}Aqtf3^M%XJ+DCLgk?;^L{bdd4&b%y;l zhOJCyrcBP{j#9Bz>#%d~TxRNG*&cCa>YKNZ?yx!+{r}_3hwVgywqKW-zt;c&AOJ~3 zK~%=ZvX{uy$);B_XNWH%s_m_KA_e_1P<=4uXELx(L6-kzu&sKelyaoSg$d?J#fM`3 zu?H-9#d%|11l$i|Ux*DE#y%kHDz%;BSL#Ba!LP!gV@REc4SanxP5g%aalbz{oC1J{ z@%bA2O(BRbsdum+!BquDO#Ft&Y><1^-_QJ+mZOsTkM0}2eKQX{S4tH!B`fnpLC+I_ z^@d~)gX8H^5+o4 zrs*G4Cxa3>h?e^+?<=9>831gAm(eq%*u_*n$W|2A_&u~$ zhQTy4Bnj_GJ_DskM)r-sDkK`_J2EkS&mcNE!h)CS^NB1|=!x-(^B9Bq1xnK!oTa7k zS~fcBTzi@Pl?VOY901n3$G4wbfHPb)3v z;y8lCL_E#pIb_%@2^ItBM1l}#d*w{v@Wpu~cAQ3o6~r-nCJa?MV}tx3Y6;V=Vkh0v zY%U&la-;(>eJ&O^fx6-dWY zgRMrV7=rB$gWFs7-souk7OtbKMuXe+Iw4rK_TJo5`)Z94EbU;aJQ6zAcIT9mLHt!O zRipO4Q^7+ddz}o?wE6I`_E9EuZ|b~zRK9Qo&o%E#a&-2wwD%_MqOzJ}I30aVkEHYi zOHxGR2i{#$Y9=*FVD!VMvs4Q*Xx64zxy)+)li_Gg4TWQ_eWt46cyo0ustZ1IX8mcs zwPgQ-E#tn!rLzmw)z#+0XXhGs?mYVbyVnNBH*eNPuYa?uL=PgbR;w=zn7f4_=%xn- ze)A-=uC^sLCH#-B^LuUUKErtR6G=8EvL+GBieyW+rC64*!Cqv^vJAdxvSH%Q(`E|6 z@{G}jN96@(a^agmSST{M!Ni8ZdXcLRLYF`WVT9&t*QGc6GeR54{oc>>J#q?L+_;I( zIaX3v(Q}^neSR?8zDM}<#+kHKryb?iiXUC8{^XxXRT-9^bWy;99gtIw#_a-u5(+}!Y%o@|T8qntu3?Ktu*3X%x35EI^N z4S)Cjcl@RcI`;fChrECIA0yJw9^TJ5-%;DaYJ2&Pn=QAemz@o1-r?@_;3AhBeYpmn zHU=D3@O83;);U=$Y;!AFvX^@36fqluG(%&F4!ii^lZ<pv(rk7Z*NUy#Z9t^*9&p85q|oP*Ohpm(7*$VI0&*O%;WMR#m@7C!7 z-X-%H^_4MVPUJO>28<1)vz*UY@-hn(#!<~0^wxpg<3(@ts{u6TBYSj40Ye(pRUvSG zF>H@`n3hus^|SqSR>|kj7KhT=vn?qbeFiYBj2KX9MK)(b1@KISg0BM-xNT z5wdAE#yjy?l?&*eiGV&DngE|CjQ)mY3Z{%99t3i+95H`J>mGputCWx=EI%`6Plc7R zM~c~CC#(^4@&W-?Oli+B-6T#W1KS9QOUW-5;UpbMU~K^WH5yZ}_t{W~%!Q~CVsy3i zEF`0+g>BTJ2Dqom4nh?Kp`}8x5K7wnchoDA=@i$f04|6Tv*9gt*QC5EmDavkSxK$U z71hyDkeVo^Y~y08gbsQ|rli!`7xq)?Aa%HYXwY?6j$lLF6(}ad-b1G@J`~!iA3^dd zT)FEWc+zWh*ti7PT4MmIZXE3Z_~bGxx^|gLdAUcvGbumIwA;NC!4y zC(=?lHEOZ-nwo$cDabST54DFdVA7ybUTNHn!}r$k8?XC_$@8Ei3FIAHK$<1X?!v;> zS1HB^2X>ni9oZ~zEr=FV91P$N8?U-~{n0Y@MPmwywu8^)0xLw5+X4SCUbhK@ba<}q ztifPw;Yov}GQyBMOg93t?BDLR#++4IIg@HBUdUbV*=qp6ih;nr+RE3b2^JVhx4&Td z%q#1&*wQ?cWo2IhxOYW;3X;Os-lWs$sk>_b(ELI++apfjY=?2|y7~X955jTOIO_WoU zOX@pla?B~J$kAeJJE@s?U-RL~vPS4|Pa?0Th;x?3nH4emFVMG-7YPWn)DO z_(lxOgBm#dSpG(Qn?D_t!=t)09XM0RgC35FI`_gk6j${Hh z3^n45F&Ku7L1`v#KhAe$P&&tgG;0^*IhqZg&q8)F^v+a*m1>am4KTT?G4vTOCHs0} zvZ}MQ43!Ot&(sH;2ZR@C304L)Jq=Za(frE5cSa6iqse)4IP&WLT~sa7BKTS*dIO^{ zCBbN~7+o8-&Qx4MFmvO@Gfkl@L~RVAzRDYmb%~XTqmPXVgR%^!$)A)W%V=?0dCy)N z7J-xOb`5+<-N2wU?zGWi=FZ1qyusNal03$lNaIh+GH5=w>&K1%UU>`wCIagQ`O(;Y zDNC{^vY!!V8T8&5&mK*vO8Dp~{0V(nc#m9RR!kwJfr!slWo?E+uwdYKFCq(Y#QA?? zA!8>>wF-FYSD~oVIP72~CSS00 zLIT!nXxk~ReNB^j6sgKux0uAvL9#v3_S66y6+WN?xOh+ijJs>}zNHLA3aPtFfi|9N zfU;7WBZ1@K;GkGsX}Hvllo|+G`?BOEiP@_f1nJ}eB4WA6C9eN>z2?;yF-@*DP7D=s z37vQe8?_Hp>00kYJcq}Ye?o*^HG?3Us$b`48hq7&1iS4p)?;wjp|VaMdP`#ul+_oU za_0bWiLi!qZ^U=Sd4UF$;}l9>_~v>~^}ZwkZHg>{Xs@ zK*(K&hAUfIXyqQw;mKhgk@&WH<)62I{^Ysw?w8*@c-TXk7weR^x9!#U%enS^O97Q* zE*83_fGmJjYhP|9bOS>Df>+?c?_&U*gA8jn?P9c^{_Z0=9DgweJasu`HoU#+Qn02a zy=to)$?@FftDZaQauY94?My!v$Y0U%mI&d-rbLW63|J#^C7%7QtH^UOxk2(DTw~ z&ASLCOe(<>7U;xX6B+0%-|@SFcGsB|ndV6mxBV$~7O! zfa{_r4LJ7^F-^I(sEQ4^c3-nxEVOKX4F`7=k>M7(kZAn@^zR)_qK&Ec;oX{x%kf*@ zQI$h^ifyoRJskc*ogu3kr_fp|vzj&jN+cHKm=rDw2+L|2+#&aCweM!sO6`)gi;;7g zrUoyKLx2y-FJt;85}IptU&3VD8)%nhdH(+04+7vHpYBKmzIyGOlUhu%8v))tBgS1u zF6?bJqyP>hFg_n~Mo6?E!Az+)gON?6!0KC|oSjCbJv^a|CHMA%sHX!LFy9Muuj~yw zNDL*RS3DcmB){qze1vrPf(F#SNWHF9Xs9!XR1F-*v1G^N@L?4I6T5*Nn*5DAba zG<8Wcgg+Dg3=qeSEmt|POC>{H(rBZ$_?Lp!nQGkFZbgTv4W5MoLwx1!-JPY0AwR25 z!ZUh-7q$7F-K}T`%;wmIZ&WE@SUj`SX@zqDv1(z+&Ky@riq2N(MmjrA8*Q%0=bO&v zkMr1!(#N22#jrIm^;LFAz9c(!#{O5%Bh=93ZiE$yH4g3?>y;PSpnFuMfy7!eqs}v+ zX6YLq9hwNc6)@bFDhBXXQ)#;#m(dL>3Goq+Po%Rhd6InSA!4$O86S;4zA`>!oEPpJ zJ{p}k!VNtBiT!`GJF);F>t~a z11IeV!{?Y#H%2W|K&K6XlN}_jrvhp8HK1{VD4@hCbLh^gy*U@VUFmQNO71V(dlA7v zMs`bt{TJ6tYYMX`0gK+$(u!g30Rc+|&UH(qNTd{IY$&X1q`SHxwK7*EgyZg97gD@7 zXUun9AWZb*3W*mDMJ%V*RR^fH-kNZ@Apum6zzc@aQY@>KFeM}%aNowD=tzXO<^ry~ z4CtD-EN*zy>VcQ3<`%)d-dxSmXhAH`zuuVh8j@r$67eR8tHwC|u<@bNq2|>Ery4!F z60spU0L)2?#c0<)Fd4nk(P1Z#&bhAOH#rB?P-DB~&cg%lRv7Si^1Yk$z%Ef$ZlgTB zAkmhJlX709*8F`f;)~HvH1J=xuC=wT!wg3ktGc0C(j;t4lPw+HYF&`Pj&0qC8I2k0 zym@Z*p&*@To?Yx=$84rhe+ihtkijXTG8mc<`IJJ~Qb-_8O+IaZVLzj^`2~BQ=RI27 zZN>=eoFhkZ96fs8_qn*IuPR&6X0=(h#7nF5nd@V;5nd2}@CHlXrnw$(L4&nHSgg)( zfS>xSPcX-b^yC-FVNZR0m8r^c|JH1!a`%hX0V^Ejl-K^Nv(eT(mcDp)ZTf-Rs)U}j z2e;Lo)Mj@BSaDmi8RlOBVTN|_QCA;-@W=lHzf?ir|CfefSty%PnX_(pXSAf@j*go% zRy5YT+>avWXRzVq3i`SIYvgN-frFSOYV40=qsrYo3Z=@&Of(0l(iir)ME zN5gCGRf%A6#kRhVm#OGYw=i)=YO;XSa;v%ARFaBQO>HYoT6!!+<9Iqgf>Ig%3`ptd z7nTuT8P|>m`OYK8WsP)jEZ7bfZM7s#EV^lduVqvzG)cvm<6p-Mz> z(+B`f4KfzIJAF=sk&__=_v?vyN?;Y6>4G)ircw*hSx|W~vyz_TLYm5FY?SX3eYvxa zTUi~X_i=8x<=(@4@xsF|uCAVc+Ha=&^22HU_=A4@_}wpB?2c+ZJ70Am1Itb&t6Ny9 z19j_{^c2B@BzRLr+64%-;0Bgg_n;-4#*(<^432}rF-FwRAvy1uWkz(}XfQYmVVF62t|^HI?bI_$Y;?aT%Bk zE^OA=k%WXxB5pa$&V|wyIocG}X#>^;dfbA&7ek8$dL_!N;mNS4`UkJNl0p*1R zZhWvD3H~CqG7(x3GJwFwxMmoV7-F53)6Hf!7hv=(>{)#Ln|0Q zuV88&y0vMu>yAQ`NH;m_a3J>^|DbYrbBc;9gmP?h>lgb-0cJZ&58ot4FHATCE>WRLb>9?*j1h z9B0lachD64ZfRVvPdb1xI#%Vgwja^hq$Nm)RxyLZJ(`GDQNd7GS(eb@VjX3PhqN!j zBaElXrecOte)YG?#)ftas=0`WS*2;n-_|TjI+C=Xq0Lli@L4&yF*nBToKS@!!OdEH>_pw^LhjO0?4Zd0_?(Y zr@a5P9bkZr88YD)t7*UgwfsxM4<7D?-HA`GGF=L-fT#y`Bu5P*7xHW5{^jFs7BI94 zz6gQlAYIrv^DL?H#yLOZqQR5rtIC6Cce?UJm_cpQJQ6Lt76ab<9{~Q#&(F>dfWDat z0Bat!7BX1XgI3^1CR4G}C#}<6K=O8G=C%Ux1?KNq?GAPg^ep5&hSyMcU4CFh1`tLY z2#7`$bU2K! zGT^a6%k0Gr)G z41Q)WFwHvv+9oapO0ql{L6QBm+KrN0F~oqWIAv6QW=TW;45peytR>c{tsUrz$*Z+r zA+D{$EgciLH0esN=qGphCIAVT8iUznSarO$j3_%HSj;HUs83fOW8G5_sjK?9}Nq__6@B2~akf7tI`KQ$Ed75Oqk* zelFD(OEo#>%%Wn@T%!EBlwDjx=myM5KxEkTGJ@)Os9kZnkp^CV)Zz8Rw9hSGdQo@L>%Gpt{mdj4VhPi2qLo3#(>u!Or$+M zD6yt4unXHY^1WQ-m66}a3bAMO(BbCEYYsF7(G3t@L5x8s*Vs4Y&MSzn@_FHKonoW$ zG#V8i9PKoYqe6H)umCsMc2tZWH`Xa*l3PuCWV;_`&_xyzt}}M>FdAin5#lf?h{oo1 zQWsc{9x}0c-SQG0S_|9t^T|5ca{3-we3#{dtN)3J1`O*gd7WCTqB3SR1t$Fn<2e|DC6{c^T7^k| zRuaxvKdeU)BG%}5JdxP5ZEkvJXRi|3?y_Q_Gl zK#w2%;`U#^T&qA@C4WG*jbMLAb%Tas z|C8VS#D;VOfPZ%X{%@#mUfZ@@zM9Bkr9)4;2rcC^_0el<8o_aA(pGqIn9p~JulbIL zDPV%WhWsU9bT@h)$kOtZ`Fjw<+CvyL<~+QMEND%B?pCbejV`s@+jk$l17I$N0nHUl zr&Z}%f@%5e&fHW%@7)Aqx%uF|KP_HE`_z2cveKOyAdwzH7u`yylS#A%rTZ;Ne@B{0 zf#4?ry=5i6tjuLnWxsC;mbIu5$gTFIi2@2^-ZZ*~z)_RQgMxNGG^urxM=ZCj6lTbt zkm#I-k(YleOv%{rswE1R?kQTynx9vgi)$*F0|Nr z6xW;%OWJLH!+wDRt-G}L(nBmaX%%z{suo`F9=_jv9WhJgZ(ig-89%n-* z-+uoo-i;J6f<8ij+$N+`4$xNUT!j%|((r5ZBFQS~@D3RP?HIE5*MW!)^b}#K8?+&x zkSb^!`ium2*|cB_3{iU&tjU#*0QFlo(q^Vl%BwbzUFa>!j{;C-aa0|2&;rbwLL2g+ z17?k}lTblB1LG__!h*m7Mqt&(NPn)?On`6=3DG7*(q^_cHU(jY(Uxn>(aKWkTxJv& z=&e)TzXHjEtPo$N%D5OD7`25$k5huo^7Bg}ej}C8N%Z2WK2 zuv`}MovJ8H9^nE2ql*v#5J2z0`(MFo7mPy!xD2hFbDaWIV{@D>CtM+I{#8X5Q2Oum z0|S(S%!r?i#e54P1V6h@T&sYdWo6oRYv>-br4oiSyH-_VZo;uN zvJdPOVBy9Q0QiQ5;i6>P%d)`;Avin*y%w#&ZpQ?64ZyB}W*gKjP>v-?EP#u_a~OR` zP(O$BaUj%T3krC8`FLn3AW4vPcQjUHZ^fK%V(Jkh4 zEb9^U?ff;57!HBqB3}H3p+MOeSM4P?Z}=g|Ul9)qfdQl`7kwuJ^`G3HqA zr;}xX*Sbbm2@#E*Rpgh~m*1%%>hxctg*ntT1Qnu{MmNZSRcD2Kt=d4|{|Lr}w z_fZNV9PkvOzX&d{qM6YIF5jfv{MDPa22v;KWQxVwcuI`nfE5WD&oP!1GBA2B=E$WH%MtwQ zH|NpH*ZGO57r_pMTCp<);QtZC@$rL)HJ1CXtzDUmoO!e}nNF>xqF2=n8ceyVHAt%0 zT1(xiSd-n1{7fUN2h#?+fsG`BR5R9Af7G|qupNcdeWNRHEi>%8Mi9EZLg0PvRzx*v|9KmK+8$A$VhjFI&UNWNOE zYx>6a!pph_N!r|%vcM0w*mZkV^QnM+j|Guywd;-%E@wWCxfbWvO z<9ozy1XLkEgad7q{=S6f84m*gMmaE|L9kF3B5h+e9cQ!_sJ{G^@m;8_PzKCUO8kuH zU$~##dLFv``{4WA7o$g*QOmQj*>r>tXW-24BY|WLm@#c$QZ00O zsciDH!mt;a&dc%uf-oL}c`~{cyoi>>@EK#}r#T?<4u;Q=M3)hRm7}%_uv}bbNg)Q* z>?B0ruiOJJj1;V$#55q7tQUD#LTYzFhp`7PA`=VdqFIczv_O~u03ZNKL_t)eXNzni zg!M>~b~Z632g~7TG)l06Z~~rS2%U=oHW~#qeiDsG)6*vb^%T+OivkBYmV^yYAD&Fp zo-{?hm0X`WK{+8M(2SG>`Vz0_S*$R@PNWl715Z)(EFc>Q0D@-_dG&*kVqp2q%>Z(t z4`vQfMF?y@xb{&G;VivgPepj1Q$(V9XhQOM$c4#(J-me8LGWJruzaj$fFznNNLT@5 zyo`0Pj;DPVv#mgmnS{jwbP}-&h5&Uk>9a;KUkDf*-F^~habskplVLW?VrQl?lsIz% z5iB9Z2;=BCk&u;aru%!0IOrz#QM&ND2>=#SA?LS#Gb7A*KRet*zD7hKwOQH6f|n~^ z)Yey;RW=aAKdcSHT<5R&m@s7|XMqVRcIf)O0%yNp!OuM1w~UHG`V7YtZp=Q*fzO zmCySnu84)c501~<1qMNKT>Q2`#}FV?m%S>B4w3;=nT5x#uQ!OMv5OYQ2N6Sl&s%{P zh?|;Q*HVS`x0)jz)3PHvo$&9*0J$edTHcBIuT@eVO1wZk*9&C0XM=t^B7YJzK~G|P zFdA9mu)mjovl3%mW{}MgP(!!Rn?|3}D@n`$g|!>yJeh;+H`VG0cUi`yzx?TwRE(*U zZ^3l24GuEdnb{w-6|+W|?S&oKgawuxaw*n$^7+Gyub)RR{#aTeNp4(?p#O^n{|P}H z_oACojpB%It~oniVY$v0nDb{e6y9~Zkr-R)#8Apjo2e9jH+@E>%4@i9ybfaqok@lb zT<>;;`=+4_ZvuU(%Swi=eg*-p8Ov(D+FWTD8XX9o?{_**FL0qg1gW&Ap) z%)(?bE*1jlWUOZY*8!(E1Yc_Yu5Ldos|HRC_J1#+`5wv`f@E zIoCG>_I=^mpyn@a>YEY1aeq7R#EL-U44j8-%f_Y|PUo8a&GF9cIbNP7?- z4Iwn>H8`)iW3q?P3_TOpY6{Tq1MMxV?CP0`sWc)eQSnP? zeg;mQNA8u}ZZ4r5X&KR1`JZwSW&v}deqKiBQ8BknWCqqQJQ zAfP-CA`IUV0y<^`2Z4E11kYa!APDQ=U>+LkgDJo*f;#4@)S6*u!_A32sxEmJM(`}}Gypr5Y zR{I3yt~{=p?DsQ$?1Zr`78H+#4Cf<)ayqk!owmy{o21mKexPG;WPM87i%@!MAb@LhDSQ z9UGBGHMuy0A&?#nRc!?l{%s33D1BOV|01wUI5BqB zSz40hy+-Ny`zRN;08Q**$#3Zho?|35Gbp(bR*6u-_1yqT#+(w5~u6r5WJ zi^YM!?6-58C>_%gbZoA%UMQTEl3mK;EWdyLe76&$_8DIeX_Z0yA^s%kWPeLuF~08x zd+Fp>QeG*Zljo^IgBoiBrQmfe`am9s$S9%6?$4VkEN~l4^k`gG_c$AogMEoV-%9CL z7vkpvQCF@uI!@{pku`_`w31-~uR@#R=)&z!A3pfqS-Ug1dBn8J#>F30g!LfF;;D+D88mJMm zXh#~MlQV3L0Lp#L-XZWen%!i$@+uYU5KA4;uOe)_{n=;l0Wc+3jdtoPiUSmwwZLr# zaoqXx{ju}=V`%JvpS@BR%9;JB1z#cL3J0g$)3-v*<{0U*Q+ zDv@@AspWl$VDJmyarybh(?|Efh%b5%YWD@l@fE&-3F!_9umCW2)b>{bz!ukeSnl;) zo=L=Dxh7rolfY4=+T{?OLjsC!T032wR)>224a7W~{!@1kEEpytKgli&eLmv!q4jdK~> z;APYyfiA0hd|oIPgoHr5RfIGmZpn2BwNv6bVx%Iq9xJF zkfZcj@HH18PYz5c4k2v*4_)W`(sp9U@iS>$5?yGLCitsr)tFopi-Kv@Gl?L#)eUbR zp+k<2q!ZEN(F7TCFrO6Uj*@~Wr4F9OZ--uDh~5+4DWy->^r8yT4$c*ZcF; zyWUu#HO6mZG-=-7_viEeF*|@BYky!*;Trp6Y-@YE_fvLEN}YvcgX$N=ZnQs^>e*Kx z;aY_Q z+WQFAXgmxBo|mb?N^7 z_s@Ebf@murJm(aIHSdVrw>n+#t*xE~QG&jIwTM} zy~O1-Nm%v~XtrM!66vN+QkGBqa`7CrJVMb!c}EK+dp65 zdq;Tn4jJCQ^s5W6n6x5S{t~m%W~EWN?D{C*<-V`=tG1!%`IB0gPN@5!^QDAP@))_c z*i$i3J74Lz01Fyj^y)xJs$5F$TB;~91M#t!RzNCEKnP(SVnkJR4Cj zV}n*$b&>i(gV`b{32$yhM!Wu&cv!7|_q_5na-X>9P56E>P(lCj{q^b}Z{kh5^7XT9 z2KNZj&T%-7G2KWao>(xD1&cLYHvY@JnPqLrnK5%nRL~o7&7q~+N^B$&Yl&!3K4@>s z$FvnfmO~7d6M(J3tw&ELE<`VE7=$Z=!*E+I!4O*1SWKLa06X5IpYlWw?;yOIq=S%; z3yFl}RhW{JWMdf{eq#3k05fN{Yp^FtZFSYB(Z*rP=a{^6^$y`!bTknE%oQAUXX?r9 zEa_N=tMK75gwIql&=yP?gE3s~gNMb5`7-+FM+UK~A{-l-b?FsQJd73^X|!Q+&;IZ* z;U0u;P%lVaG%lol+Jof)=3o@ebOIaR?jw&LPT>bOQcF0rU6SvJFs$Kj55!`H+&xH9 zgHk6U!l`{wctB;q-utVzK|4-Fc~Et~qdg>1YI{sF2RG}X#tqiI_ZSKE-ec;Jj2vJ5 zi(zr8O9AWM0KlhE#_H{(`)|1CC_k zf#Nw1-KC3=F5onEN$}%BI&9!;?3oI7@qk#w-g#mOZP@hC?4Mm|mBY$2Z^ z&>ot!L;ys79KwcibrJW>(vIOS$s5LRjRLo`C1pI@=X0!rsar74Yhb)oT3#}6%P%jt zce7%TsIeA}3={5Hf?u{(eN<95hkXgX79(kc*DO=wc3T2vf*_Y$p5W{~Ms6!|Y@TyR z(_AaiO8W*_P+bz8w$Dmp)G8kgT8@Im$(A%?Z69?rk*2zd434&pM_N|HGYp2^72 zsIEi~=FEU}T`AGEnd=`uiwqj9z5e($htAZW-Ugtyf265% zx!iQF-q-utXPmGI z5@C>)vS(&Ur|d<+>}|=$s3^d(TCPq=SKJW|ZIF_oXsQm5p@}Q1E|giRaR%7MYEdCw zY<(NmV#Sf0du^!8uu&xIvSSF^0KALkGGgpvr6bTM4W#3}!LG!{-8B=o=vFZ)&pLpWJF%xQZ(QAYtNS3x>V~ zMH5>2h?-!PEnK~3B>EZ?=Sluvo23=$(d@AAhACtiBbQ@p|9tv9i=G)X@YL{CtVjm5 z_VpJcIbU;l~nZ?e8O^a-EiD z&|-QACk(sl|8|iR4elzOgBAvou8i$c zOc;%)*TZ4lz9e8}j?+rcQUV8I8*#ul64{EV2bl6B0HK)U@2HhuZx)R3 zHw%a9g0W#cxoNK3>4?_CO&Um4{6z*Z_dThM(rf){zJ7butLP7-5 ztM%Hgp8_y>8`E{!f8|1&CbUE2=NvxZHy{6cd;9++QEva@_mi&_)+j*LwAO{rDjgsZ zxoDKw#lwh}CVco?fov9org}wRK?AFv<|q}`kT6=|7akyqEEqVhFxaJbP;Co3FQvS#gs5N<(LP&%k6wHemXYHYJ8;Li{^>=p7k`hBocC6Ag#+VzpCN7$uPDq0vR4 z8&x&?-wr1htcvZ>BK?DM`a+XC<#NzM+$f{=hUb@&V3&)H&0@JzJ!)p3zZ^Tbf31{x z^5)7>{$(c!(K5#U{eO)A{_yrAf+#6jy8GhcvXR)XxCYMA=-)%}kknG)uCuK%>ItJ-1%DS-n~H2GKmW$SEO+q%;z9$B`k7e~ZaC2U!dEyDBf`C&Qm+&- zi4xjTVB@cAhO9%yrC~!}yD8}$Y;{5B;!9L%Q~I*UCUB&UVSX$3^5sR!mCI80GtKO0)g5;M8v z_P!{vFd=1?F`4a;vk!(4_Z4py0-fmqP8%|(v!q*%vodC)+gtp3<@BRbAIrgQ5elY$ZCO&)$k@P+x(Njcv-~vV&eZrnZ1bR*wFyvkb;UCq6 zMDVw0Z}1|$3)fVK6lCli9B~b;elZe&j71o{P2xUc3tTW3tWLS#bD#@Gh3#)kB1{}E zY}mEklu4dUD28AM73eEC0W)b@W8gldOtuRw8$JBL1q0nzhPjQ-Hw}-1-!>@QV0dhw zH|j=kg}}yw+lIv)p!wHsu~$!d^^OO3+%wcIHyRBCSNlS#^}1&SbFYCI+AcPPev3jo zyHr<9Gz^&PArVe?$n})-<~k!T>L?fBp(!%NR}SO7j)YkdW5PU~xEXww8QAOWA+t9A z>M}5qM!Vq4MHjKL2p*^G48R@$@@OPvorW)uCQsxR4>JX2*TDSwa(CLV0LFwQM^aZG z-n1N{l|L8glU&O83^P35IBM^<+o<0XBlCBzZiq6EIgi;9+fM0##rP`53WG9I^{K@%lckZY_>pZ7q@$uIiU93Z>s+obeo_09j z+AiT8AG-9zWzkpY?PTUFGyp~!H%CT-C+}Rj&;oq*4he=RJ0aGjM&ruca1TU-=22JJ zP@Oz;?%?2)Gu6p&&mG#&Ll*SOn}7bpd($XCJUEzjd*0Q{6Iblx`Bh~-FB=$t{!8`e z*5BU-U}r?~$?wE5AvOSxY?JW3!;9HYZ0sarhv`na@T#ywFYw)DggJBx(LWi`gkeR5 z&*l2dIR!zxnes+!x#iqObML62wH030o|r6Xt$>$xrTT!sJ&vM$-wgW0OKUI4Y*Iw? zvjK$#L^8WJ1hLN9>ly{;+!mIc41>MF0!$KP(w1Apo@cSE7%hB5WNTbEs2w=m1Y!qj z@Fhk$qipBdOwL~*KU4XV*1~qYx$sP}Qw+s%7Ui@So^_Hg_RnY4RwTm|{-D7UaJ?8fx}E#%0DxFdLI=+UF#MXHg)*g>%(4XgAh9@gJw2HS$& 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%0Dujy=3z2AdGGGg`nRwH9?DlG0D2;w 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