|
| 1 | +# IM19 Attitude Module |
| 2 | +For certain GNSS Flex modules, users have the option to purchase a [variant with IM19 attitude module](modules.md#gnss-module-w-optional-imu). The optional, [IM19 attitude module](../assets/component_documentation/IM19EI_v1.4.1.pdf) from [Feyman Inc. (FMI)](http://feymani.com/en/) fuses MEMS IMU sensor data and GNSS RTK positioning to deliver high-precision attitude compensated measurements, with roll and pitch accurate to within 0.05 degrees. This kind of superb accuracy has widespread uses in industrial applications such as tilt RTK surveys (where RTK poles need not be held straight vertical as the IM19 can calculate a virtual digital level at any tilt angle), agriculture machine automation, and dead reckoning. |
| 3 | + |
| 4 | + |
| 5 | +<div class="grid" markdown> |
| 6 | + |
| 7 | +<div markdown> |
| 8 | + |
| 9 | +<article class="video-500px" style="text-align: center; margin: auto;" markdown> |
| 10 | +<iframe src="https://global.feymani.com/files/im19.mp4" type="video/mp4" title="KiCad Dimension Tool" frameborder="0" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> |
| 11 | +</article> |
| 12 | + |
| 13 | +</div> |
| 14 | + |
| 15 | + |
| 16 | +<div markdown> |
| 17 | + |
| 18 | + |
| 19 | +<article class="video-500px" style="text-align: center; margin: auto;" markdown> |
| 20 | +<iframe src="https://www.youtube.com/embed/wND8cXVQSXo" title="IM19 Initialization Stability" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> |
| 21 | +</article> |
| 22 | + |
| 23 | +</div> |
| 24 | + |
| 25 | +</div> |
| 26 | + |
| 27 | + |
| 28 | +<div class="grid" markdown> |
| 29 | + |
| 30 | +<div markdown> |
| 31 | + |
| 32 | +**Features:** |
| 33 | + |
| 34 | +- Power: 0.33W |
| 35 | +- Data Rate: 100Hz |
| 36 | +- IMU Accuracy: ≤1% * D(1σ, vehicle) |
| 37 | +- Gyroscope |
| 38 | + - ARW: 0.17°/√(h) |
| 39 | + - Bias Stability: ±4.5°/h |
| 40 | + - Range: ±1000°/s |
| 41 | + |
| 42 | +</div> |
| 43 | + |
| 44 | + |
| 45 | +<div markdown> |
| 46 | + |
| 47 | +<br> |
| 48 | + |
| 49 | +- Accelerometer |
| 50 | + - Speed RW: 0.04m/s/√(h) |
| 51 | + - Bias Stability: ±0.3mg |
| 52 | + - Range: ±16g |
| 53 | +- Roll and Pitch: ≤0.02°(1σ) |
| 54 | +- Heading/Yaw: ≤0.2°(1σ) |
| 55 | +- Initialization: 1s (95%) |
| 56 | +- Self-calibration Technique |
| 57 | + |
| 58 | +</div> |
| 59 | + |
| 60 | +</div> |
| 61 | + |
| 62 | + |
| 63 | +!!! info |
| 64 | + For more information, please refer to the [IM19 datasheet](./assets/component_documentation/IM19.pdf). |
| 65 | + |
| 66 | + |
| 67 | + |
| 68 | +### Accuracy |
| 69 | +When configured and calibrated, the IM19 attitude module can fuses IMU sensor and GNSS RTK positioning data to deliver compensated position. The accuracy, displayed in the table below, should also be considered when implemented. |
| 70 | + |
| 71 | + |
| 72 | +<article style="text-align: center;" markdown> |
| 73 | + |
| 74 | +| Tilt Angle | Accuracy | |
| 75 | +| :---------------: | :------: | |
| 76 | +| 0° - 30° | 1cm | |
| 77 | +| 30° - 60° | 2cm | |
| 78 | + |
| 79 | +</article> |
| 80 | + |
| 81 | + |
| 82 | +!!! tip |
| 83 | + It is recommended that the IM19 module is placed in a stable temperature region and avoid convection with the outside air. |
| 84 | + |
| 85 | + |
| 86 | + |
| 87 | +## Hardware Overview |
| 88 | +Once calibrated, the IM19 will output proprietary NMEA messages containing the compensated position and roll, pitch and yaw. However, it requires the Pulse-Per-Second signal and NMEA GGA, RMC and GST messages from the GNSS receiver; and information on the location of the GNSS antenna's phase center *(APC)* and the survey point, with respect to the IMU's origin. |
| 89 | + |
| 90 | + |
| 91 | + |
| 92 | +### IMU Position |
| 93 | +The measurements below are general guidelines for the position of the IMU inside the IM19 attitude module, with respect to the layout GNSS Flex module. The origin for the IMU is 2.72mm in Y-axis and 5.72mm in X-axis from the center of the IM19 attitude module. Users should also consider the manufacturing tolerances of the board in reference to these measurements. For example, the edges of the PCB may not be at their exact and that the exact position and orientation of the IM19 attitude module will be affected by the reflow process. |
| 94 | + |
| 95 | + |
| 96 | +<div class="grid" markdown> |
| 97 | + |
| 98 | +<div markdown> |
| 99 | + |
| 100 | +<figure markdown> |
| 101 | +[{ width="400" }](./assets/img/hookup_guide/im19_offset-top.png "Click to enlarge") |
| 102 | +<figcaption markdown>The IMU position offset, with respect to the IM19 attitude module and the GNSS Flex module.</figcaption> |
| 103 | +</figure> |
| 104 | + |
| 105 | +</div> |
| 106 | + |
| 107 | + |
| 108 | +<div markdown> |
| 109 | + |
| 110 | +<figure markdown> |
| 111 | +[{ width="400" }](./assets/img/hookup_guide/im19_offset-bottom.png "Click to enlarge") |
| 112 | +<figcaption markdown>The IMU position offset as viewed from the bottom of the GNSS Flex module.</figcaption> |
| 113 | +</figure> |
| 114 | + |
| 115 | +</div> |
| 116 | + |
| 117 | +</div> |
| 118 | + |
| 119 | + |
| 120 | + |
| 121 | +### UART Interface |
| 122 | +The diagram below, generalizes the connections of the UART interfaces between the GNSS receiver, IM19 attitude module, and the GNSS Flex headers. In general, the `UART1` and `UART2` interfaces of the IM19 attitude module will be connected to the `UART3` and `UART4` interfaces, respectively, of the GNSS Flex headers. |
| 123 | + |
| 124 | +Depending on the GNSS receiver of the GNSS Flex module, the first two available UART interfaces of the GNSS receiver will usually be connected to the `UART1` and `UART2` interfaces, respectively, of the GNSS Flex headers. Additionally, one of the `TX` pins from the available UART interfaces of the GNSS receiver will be connected to the `RX` pin of the IM19 attitude module's `UART2` interface to provide the RTK GNSS data. However, this can connection can be changed through jumpers on the GNSS Flex Module, if necessary. |
| 125 | + |
| 126 | + |
| 127 | +<div class="grid" markdown> |
| 128 | + |
| 129 | +<div markdown> |
| 130 | + |
| 131 | +<figure markdown> |
| 132 | +[{ width="400" }](./assets/img/hookup_guide/im19-uart.png "Click to enlarge") |
| 133 | +<figcaption markdown>UART connections between the GNSS receiver, IM19 attitude module, and the GNSS Flex headers.</figcaption> |
| 134 | +</figure> |
| 135 | + |
| 136 | +</div> |
| 137 | + |
| 138 | + |
| 139 | +<div markdown> |
| 140 | + |
| 141 | +!!! info |
| 142 | + For information on the exact connections between the UART interfaces of the GNSS receiver, IM19 attitude module, and the GNSS Flex headers, please refer to the [hookup guide for the specific GNSS Flex module](modules.md). |
| 143 | + |
| 144 | + |
| 145 | +!!! abstract |
| 146 | + For the UART interface of the GNSS receiver that is connected to the IM19 attitude module, users will need to configure the UART port for the following settings: |
| 147 | + |
| 148 | + - Baudrate: 115200bps |
| 149 | + - Output NMEA Messages: `GPGGA`, `GPRMC`, and `GPGST` |
| 150 | + - Solution Rate: **1Hz** |
| 151 | + |
| 152 | +</div> |
| 153 | + |
| 154 | +</div> |
| 155 | + |
| 156 | + |
| 157 | + |
| 158 | +### PPS Signal |
| 159 | +The `PPS1` signal from the GNSS receiver, is used to fuse the MEMS IMU sensor data with the GNSS RTK position data. The timing of the PPS signal should match the solution rate of the GNSS RTK position data. |
| 160 | + |
| 161 | + |
| 162 | +!!! abstract |
| 163 | + For the PPS signal from the GNSS receiver, users will need to configure the signal's timing to match the RTK GNSS solution rate: |
| 164 | + |
| 165 | + - Solution Rate: **1Hz** |
| 166 | + |
| 167 | + |
| 168 | + |
| 169 | +## AT Commands |
| 170 | +Below is a summary of the AT commands supported by the IM19 attitude module. |
| 171 | + |
| 172 | +| AT Command | Description | |
| 173 | +| :--------- | :---------- | |
| 174 | +| `AT+SYSTEM_RESET` | System reset | |
| 175 | +| `AT+SAVE_ALL` | Save the parameters | |
| 176 | +| `AT+UPDATE_APP` | Update module firmware, see attachment for protocols | |
| 177 | +| `AT+UPDATE_BOOT` | Update Bootloader,see attachment for protocols | |
| 178 | +| `AT+GNSS_CARD=` | Set the GNSS RTK receiver type:<ul><li>`HEMI`, `NOVTEL`, `UNICORE`, `OEM`</li></ul> | |
| 179 | +| `AT+READ_PARA=SYSTEM/ALL` | Read parameters (SYSTEM/ALL)AT+LOAD_DEFAULT Loading default parameters | |
| 180 | +| `AT+AUTO_FIX=ENABLE/DISABLE` | Installation angle estimation in tilt measurement applications | |
| 181 | +| `AT+CLUB_VECTOR=X,Y,Z` | Set the RTK pole vector to map the position tothe end of the RTK pole | |
| 182 | +| `AT+NAVI_OUTPUT=UART1,ON/OFF` | Binary NAVI positioning output | |
| 183 | +| `AT+NASC_OUTPUT=UART1,ON/OFF` | Ascii type NAVI positioning output | |
| 184 | +| `AT+MEMS_OUTPUT=UART1,ON/OFF` | MEMS raw output | |
| 185 | +| `AT+GNSS_OUTPUT=UART1,ON/OFF` | GNSS raw output | |
| 186 | +| `AT+LEVER_ARM=``X,Y,Z` | Set the lever arm | |
| 187 | +| `AT+LEVER_ARM2=``X,Y,Z` | Set the lever arm, the input value will be automatically adjusted according to the estimated installation angle | |
| 188 | +| `AT+CHECK_SYNC` | Query whether time is synchronized between MEMS and GNSS | |
| 189 | +| `AT+HIGH_RATE=``ENABLE`/`DISABLE` | High-rate mode setting | |
| 190 | +| `AT+ACTIVATE_KEY=``KEY` | Module activation | |
| 191 | +| `AT+ALIGN_VEL=1.0` | Set the initial alignment speed threshold | |
| 192 | +| `AT+VERSION` | Query the Firmware version | |
| 193 | +| `AT+GNSS_PORT=``PHYSICAL_UART2` | Set the physical serial port for communicatingwith the GNSS RTK receiver. Save the Settings and restart to take effect | |
| 194 | +| `AT+WORK_MODE=``X` | Set the module working mode | |
| 195 | +| `AT+INSTALL_ANGLE=``X,Y,Z` | Set the module installation angle | |
| 196 | +| `AT+THIS_PORT` | Query the serial port number | |
| 197 | +| `AT+FILTER_STOP=` `ENABLE`/`DISABLE` | Causes the filter to enter or exitstop mode | |
| 198 | +| `AT+LOOP_BACK=` `UARTn`/`NONE` | UART n enters or exits the loopback mode | |
| 199 | +| `AT+FILTER_RESET` | Filter Reset | |
| 200 | +| `AT+CHECK_CRC=` `N` | The IM19EE firmware CRC is calculated for checkingthe firmware, where N is the firmware size | |
| 201 | +| `AT+CORRECT_HOLDER=` `ENABLE`/`DISABLE` | Turn on or off RTK pole length compensation | |
| 202 | +| `AT+OUTPUT_DISABLE=` `UARTx` | Disable the output of all messages over the serial port x | |
| 203 | +| `AT+CALIBRATE_MODE2=` `STEP1`/`STEP2` | Factory calibration command | |
| 204 | +| `AT+SET_CHECK_LEVEL=` `LEVELx` | Set check level of calibration parameter | |
| 205 | +| `AT+FACTORY_PARA_x=` `X,Y,Z` | Recovery factory calibration parameter | |
| 206 | +| `AT+SET_PPS_EDGE=` `RISING`/`FALLING` | Set PPS edge, accept falling pps edge by default | |
| 207 | + |
| 208 | + |
| 209 | +!!! info |
| 210 | + For more information, please refer to the [IM19 integration manual](./assets/component_documentation/IM19EI_v1.4.1.pdf). |
| 211 | + |
| 212 | + |
| 213 | + |
| 214 | +## Configuration Requirements |
| 215 | + |
| 216 | +- Access to the UART interfaces of the IM19 IMU |
| 217 | +- Access to configure the UART interface and PPS signal that are transmitting from the GNSS receiver to the IM19 IMU |
| 218 | + |
| 219 | + !!! abstract |
| 220 | + For the UART interface of the GNSS receiver that is connected to the IM19 attitude module, users will need to configure the UART port for the following settings: |
| 221 | + |
| 222 | + - Baudrate: 115200bps |
| 223 | + - Output NMEA Messages: `GPGGA`, `GPRMC`, and `GPGST` |
| 224 | + - Solution Rate: 1Hz |
| 225 | + |
| 226 | + The timing of the `PPS` signal from the GNSS receiver should match the RTK GNSS solution rate being transmitted to the IM19 IMU. |
| 227 | + |
| 228 | +- The location of the **APC** of the GNSS antenna and the survey point, with respect to the IMU's origin. |
| 229 | + |
| 230 | + |
| 231 | +!!! info |
| 232 | + For information on the antenna reference point (ARP) and antenna phase center (APC), check out this useful [tutorial by Septentrio](https://customersupport.septentrio.com/s/article/ARP-APC-offsets). |
| 233 | + |
| 234 | + |
| 235 | +!!! tip |
| 236 | + It is recommended that the IM19 module is placed in a stable temperature region and avoid convection with the outside air. |
| 237 | + |
| 238 | + |
| 239 | + |
| 240 | +## Compatible Software |
| 241 | +Below are some compatible software options for configuring the IM19 attitude module and receiving the tilt-compensated position in its proprietary message format. |
| 242 | + |
| 243 | + |
| 244 | + |
| 245 | +### PyGPSClient |
| 246 | +As of [v1.5.8](https://github.com/semuconsulting/PyGPSClient/releases/tag/v1.5.8), a widget has been added to the [PyGPSClient](https://github.com/semuconsulting/PyGPSClient) application to configure and utilize the IM19 attitude module. |
| 247 | + |
| 248 | + |
| 249 | +???+ info "Resources" |
| 250 | + For additional information, users can refer to the following resources for the PyGPSClient software: |
| 251 | + |
| 252 | + - :material-github: [GitHub Repository](https://github.com/semuconsulting/PyGPSClient) |
| 253 | + - [Installation Instructions](https://github.com/semuconsulting/PyGPSClient?tab=readme-ov-file#installation) |
| 254 | + - [PyPI Project](https://pypi.org/project/pygpsclient/) |
| 255 | + |
| 256 | + |
| 257 | + |
| 258 | +### IM19 IMU Arduino Library |
| 259 | +The [SparkFun IM19 Tilt Sensor Arduino Library](https://github.com/sparkfun/SparkFun_IM19_IMU_Arduino_Library) can be installed from the library manager in the Arduino IDE by searching for: |
| 260 | + |
| 261 | + SparkFun IM19 IMU Arduino Library |
| 262 | + |
| 263 | + |
| 264 | +<div class="grid" markdown> |
| 265 | + |
| 266 | +<div markdown> |
| 267 | + |
| 268 | +<figure markdown> |
| 269 | +[{ width="400" }](../assets/img/hookup_guide/arduino_library-im19.png) |
| 270 | +<figcaption markdown>SparkFun IM19 IMU Arduino Library in the library manager of the Arduino IDE.</figcaption> |
| 271 | +</figure> |
| 272 | + |
| 273 | +</div> |
| 274 | + |
| 275 | + |
| 276 | +<div markdown> |
| 277 | + |
| 278 | +!!! tip "Manually Download the Arduino Library" |
| 279 | + For users who would like to manually download and install the library, the `*.zip` file can be accessed from the [GitHub repository](https://github.com/sparkfun/SparkFun_IM19_IMU_Arduino_Library) or downloaded by clicking the button below. |
| 280 | + |
| 281 | + <article style="text-align: center;" markdown> |
| 282 | + [:octicons-download-16:{ .heart } Download the Arduino Library](https://github.com/sparkfun/SparkFun_IM19_IMU_Arduino_Library/archive/refs/heads/main.zip){ .md-button .md-button--primary } |
| 283 | + </article> |
| 284 | + |
| 285 | +</div> |
| 286 | + |
| 287 | +</div> |
| 288 | + |
| 289 | + |
| 290 | + |
| 291 | +## Resources |
| 292 | +Feyman Inc. also provides some resources for the IM19 attitude module: |
| 293 | + |
| 294 | +- :material-web: [IM19 Product Page](https://global.feymani.com/product/attitede/im19ee/) |
| 295 | + - :material-newspaper-variant: [Documentation](https://global.feymani.com/document/) |
| 296 | +- :material-web: [IM19 Product Page](http://feymani.com/en/show-53-2-1.html) *(alternate website)* |
| 297 | +- :material-youtube: [Feyman Inc. YouTube Channel](https://www.youtube.com/@FeymanIncFMI) |
| 298 | +- :material-email: [Support Email](mailto:fmi-support@feymani.com) |
0 commit comments