diff --git a/assets/hardware/sensors/inertial/ellipse-inertial-navigation-system.png b/assets/hardware/sensors/inertial/ellipse-inertial-navigation-system.png new file mode 100644 index 000000000000..617f2e676cc8 Binary files /dev/null and b/assets/hardware/sensors/inertial/ellipse-inertial-navigation-system.png differ diff --git a/assets/hardware/sensors/inertial/vn-300-smd-rugged.png b/assets/hardware/sensors/inertial/vn-300-smd-rugged.png index abdcca22eded..599bbd7d4c73 100644 Binary files a/assets/hardware/sensors/inertial/vn-300-smd-rugged.png and b/assets/hardware/sensors/inertial/vn-300-smd-rugged.png differ diff --git a/en/SUMMARY.md b/en/SUMMARY.md index 49a2c21c9a37..3f3d3c38ae94 100644 --- a/en/SUMMARY.md +++ b/en/SUMMARY.md @@ -284,6 +284,7 @@ - [CubePilot Here+ (Discontined)](gps_compass/rtk_gps_hex_hereplus.md) - [INS (Inertial Navigation/GNSS)](sensor/inertial_navigation_systems.md) - [VectorNav](sensor/vectornav.md) + - [sbgECom](sensor/sbgecom.md) - [Optical Flow](sensor/optical_flow.md) - [ARK Flow](dronecan/ark_flow.md) - [ARK Flow MR](dronecan/ark_flow_mr.md) diff --git a/en/releases/main.md b/en/releases/main.md index c08f266b2cd0..b8fe2d385af8 100644 --- a/en/releases/main.md +++ b/en/releases/main.md @@ -53,7 +53,7 @@ Please continue reading for [upgrade instructions](#upgrade-guide). ### Sensors -- TBD +- Add [sbgECom INS driver](../sensor/sbgecom.md) ([PX4-Autopilot#24137](https://github.com/PX4/PX4-Autopilot/pull/24137)) ### Simulation diff --git a/en/sensor/inertial_navigation_systems.md b/en/sensor/inertial_navigation_systems.md index 641dd7f968ab..1f8b9197f82a 100644 --- a/en/sensor/inertial_navigation_systems.md +++ b/en/sensor/inertial_navigation_systems.md @@ -6,6 +6,7 @@ However PX4 can also use some INS devices as either sources of raw data, or as a Systems that can be used in this way include: +- [SBG Systems](../sensor/sbgecom.md): IMU/AHRS, GNSS/INS, Dual GNSS/INS systems that can be used as an external INS or as a source of raw sensor data. - [VectorNav](../sensor/vectornav.md): IMU/AHRS, GNSS/INS, Dual GNSS/INS systems that can be used as an external INS or as a source of raw sensor data. ## Glossary @@ -20,7 +21,7 @@ The magnetometer, if present, provides sensor data that can be used to provide t An AHRS system that includes both an IMU and a processing system that can provide attitude and heading information from the IMUs raw data. -### Inertial Navigation System (INS) +### Inertial Navigation System (INS) An INS is a navigation device that uses accelerometers, gyroscopes, possibly magnetometers, and a computer to calculate the attitude, position, and velocity of a moving object without the need for external references. Essentially it is an AHRS that also includes position/velocity estimation. diff --git a/en/sensor/sbgecom.md b/en/sensor/sbgecom.md new file mode 100644 index 000000000000..89e7bdd52e1a --- /dev/null +++ b/en/sensor/sbgecom.md @@ -0,0 +1,150 @@ +# SBG Systems INS/AHRS (Pulse, Ellipse, etc.) + +[SBG-Systems](https://www.sbg-systems.com/) designs, manufactures, and support an extensive range of state-of-the-art inertial sensors such as Inertial Measurement Units (IMU), Attitude and Heading Reference Systems (AHRS), Inertial Navigation Systems with embedded GNSS (INS/GNSS), and so on. + +PX4 supports [all SBG Systems products](https://www.sbg-systems.com/products/) and can use these as an [external INS](../sensor/inertial_navigation_systems.md) (bypassing/replacing the EKF2 estimator), or as a source of raw sensor data provided to the navigation estimator. + +![Ellipse](../../assets/hardware/sensors/inertial/ellipse-inertial-navigation-system.png) + +## Overview + +SBG Systems products provide a range of benefits to PX4 users and can be integrated for: + +- Higher accuracy heading, pitch, and roll estimates +- More robust and reliable GNSS positioning +- Improved positioning and attitude performance in GNSS-contested environments +- Performance under challenging dynamic conditions (e.g. catapult launches, VTOL operations, high-g or high angular rate operations) + +The sbgECom PX4 driver is streamlined to provide a simple plug-and-play architecture, removing engineering obstacles and allowing the acceleration of the design, development, and launch of platforms to keep pace with the rapid rate of innovation. + +The driver supports [all SBG Systems products](https://www.sbg-systems.com/products/). +In particular the following systems are recommended: + +- **Pulse:** Recommended for fixed-wing systems without hovering, where static heading is not necessary. +- **Ellipse:** Recommended for multicopter systems where hovering and low dynamics requires the use of static heading. + +## Where to Buy + +SBG Systems solutions are available directly from [MySBG](https://account.sbg-systems.com/realms/sbg/protocol/openid-connect/auth?client_id=my-sbg-sso&redirect_uri=https%3A%2F%2Fmy.sbg-systems.com%2Foidc%3Ftarget%3D%252F&response_type=code&scope=openid+email+profile&state=93af390a93994b6c89162e080c431df9&code_challenge=1ZGBaGQhWuu5_v68vKVUaxlQqqh8UTqsV_8HwcsJrBg&code_challenge_method=S256) (FR) or through their Global Sales Representatives. For more information on their solutions or for international orders, please contact contact@sbg-systems.com. + +## Hardware Setup + +### Wiring + +Connect any unused flight controller serial interface, such as a spare `GPS` or `TELEM` port, to the SBG Systems product MAIN port (required by PX4). + +### Mounting + +The SBG Systems product sensor can be mounted in any orientation, in any position on the vehicle, without regard to center of gravity. +All SBG Systems product sensors default to a coordinate system of x-forward, y-right, and z-down, making the default mounting as connector-back, base down. +This can be changed to any rigid rotation using the sbgECom Reference Frame Rotation register. + +If using a GNSS-enabled product, the GNSS antenna must be mounted rigidly with respect to the inertial sensor and with an unobstructed sky view. If using a dual-GNSS-enabled product (Ellipse-D), the secondary antenna must be mounted rigidly with respect to the primary antenna and the inertial sensor with an unobstructed sky view. + +For more mounting and configuration requirements and recommendations, see the relevant [SBG SUPPORT CENTER](https://support.sbg-systems.com/sc). + +## Firmware Configuration + +### PX4 Configuration + +To use the sbgECom driver: + +1. Include the module in firmware in the [kconfig board configuration](../hardware/porting_guide_config.md#px4-board-configuration-kconfig) by setting the kconfig variables: `CONFIG_DRIVERS_INS_SBGECOM` or `CONFIG_COMMON_INS`. +2. [Set the parameter](../advanced_config/parameters.md) [SENS_SBG_CFG](../advanced_config/parameter_reference.md#SENS_SBG_CFG) to the hardware port connected to the SBG Systems product (for more information see [Serial Port Configuration](../peripherals/serial_configuration.md)). + + ::: warning + Disable or change port of other sensors that are using the same one, for example [GPS_1_CONFIG](../advanced_config/parameter_reference.md#GPS_1_CONFIG) if using GPS1 port. + ::: + +3. Set [SBG_BAUDRATE](../advanced_config/parameter_reference.md#SBG_BAUDRATE) to the desired default baudrate value. +4. Allow the sbgECom driver to initialize by restarting PX4. +5. Configure driver to provide IMU data, GNSS data and INS : + + 1. Set [SBG_MODE](../advanced_config/parameter_reference.md#SBG_MODE) to the desired mode. + 2. Make sensor module select sensors by enabling [SENS_IMU_MODE](../advanced_config/parameter_reference.md#SENS_IMU_MODE). + 3. Prioritize SBG Systems sensors using [CAL_GYROn_PRIO](../advanced_config/parameter_reference.md#CAL_GYRO0_PRIO), [CAL_ACCn_PRIO](../advanced_config/parameter_reference.md#CAL_ACC0_PRIO), [CAL_BAROn_PRIO](../advanced_config/parameter_reference.md#CAL_BARO0_PRIO), [CAL_MAGn_PRIO](../advanced_config/parameter_reference.md#CAL_MAG0_PRIO), where _n_ is the instance number of the IMU component (0, 1, etc.). + + ::: tip + In most cases the external IMU (SBG) is the highest-numbered. + You can get a list of the IMU components available using [`uorb top -1`](../middleware/uorb.md#uorb-top-command), you can differentiate between them using the [`listener`](../modules/modules_command.md#listener) command and looking through the data, or just the rates. + + Alternatively, you can check [CAL_GYROn_ID](../advanced_config/parameter_reference.md#CAL_GYRO0_ID) to see the device id. + The priority is 0-255, where 0 is entirely disabled and 255 is highest priority. + ::: + + ::: warning + When configuring both SBG Systems and Pixhawk sensors to have non-zero priority, if the selected sensor is errored (timeout), it can change during operation without being notified. + In this case, MAVLink messages will be updated with the newly selected sensor. + + If you don't want to have this fallback mechanism, you must disable unwanted sensors. + ::: + + 4. If using the sbgECom as an INS, disable EKF2 using [EKF2_EN](../advanced_config/parameter_reference.md#EKF2_EN). + +6. Restart PX4. + +Once enabled, the module will be detected on boot. +IMU data should be published at 200Hz. + +## SBG Systems Configuration + +All High Performance and Ellipse 3.0 and higher SBG Systems INS can be configured directly from PX4 firmware: + +1. Enable [SBG_CONFIGURATION_EN](../advanced_config/parameter_reference.md#SBG_CONFIGURATION_EN) +2. Provide a JSON file `sbg_settings.json` containing SBG Systems INS settings to be applied in your PX4 board `extras` directory (ex: `boards/px4/fmu-v5/extras`). The settings JSON file will be installed in `/etc/extras/sbg_settings.json` on the board. + + ::: tip + The settings can be retrieved using [sbgEComAPI](https://github.com/SBG-Systems/sbgECom/tree/main/tools/sbgEComApi) or [sbgInsRestApi](https://developer.sbg-systems.com/sbgInsRestApi/1.3/#tag/Settings) and then modified as a JSON file. + ::: + + ::: tip + The settings file can be provided in the SD card in q`/fs/microsd/etc/extras/sbg_settings.json` to avoid rebuilding a new firmware to change JSON settings file. + ::: + +3. For testing purpose, it's also possible to modify SBG Systems INS settings on the fly: + + - By passing a JSON file path as argument when starting sbgecom driver (ex: `sbgecom start -f /fs/microsd/new_sbg_settings.json`) + - By passing a JSON string as argument when starting sbgecom driver: (ex: `sbgecom start -s {"output":{"comA":{"messages":{"airData":"onChange"}}}}`) + +For older Ellipse SBG Systems INS or to configure any SBG Systems INS directly, all commands and registers can be found in the [SBG SUPPORT CENTER](https://support.sbg-systems.com/sc). + +::: warning +If the baudrate of the serial port on the INS product (used to communicate with PX4) is changed, the parameter [SBG_BAUDRATE](../advanced_config/parameter_reference.md#SBG_BAUDRATE) must be changed to match. +::: + +## Published Data + +Upon initialization, the driver should print the following information to console (printed using `PX4_INFO`) + +- Unit model number +- Unit hardware version +- Unit serial number +- Unit firmware number + +This should be accessible using the [`dmesg`](../modules/modules_system.md#dmesg) command. + +The sbgECom driver always publishes the unit's data to the following uORB topics: + +- [sensor_accel](../msg_docs/SensorAccel.md) +- [sensor_gyro](../msg_docs/SensorGyro.md) +- [sensor_mag](../msg_docs/SensorMag.md) + +if configured as a GNSS, publishes: + +- [sensor_gps](../msg_docs/SensorGps.md) + +and, if configured as an INS, publishes: + +- [estimator_status](../msg_docs/EstimatorStatus.md) +- [vehicle_local_position](../msg_docs/VehicleLocalPosition.md) +- [vehicle_global_positon](../msg_docs/VehicleGlobalPosition.md) +- [vehicle_attitude](../msg_docs/VehicleAttitude.md) + +::: tip +Published topics can be viewed using the `listener` command. +::: + +## Hardware Specifications + +- [Product Briefs](https://www.sbg-systems.com/products/) +- [Datasheets](https://www.sbg-systems.com/contact/#products)