mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-25 11:13:34 +08:00
New Crowdin translations - zh-CN (#24563)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
This commit is contained in:
co-authored by
Crowdin Bot
parent
bd0a59eb1f
commit
d04e6695ac
@@ -129,7 +129,7 @@ The on-screen gimbal control can be used to move/test a connected MAVLink camera
|
|||||||
|
|
||||||
2. Open QGroundControl and enable the on-screen camera control (Application settings).
|
2. Open QGroundControl and enable the on-screen camera control (Application settings).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
3. Make sure the vehicle is armed and flying, e.g. by entering with `commander takeoff`.
|
3. Make sure the vehicle is armed and flying, e.g. by entering with `commander takeoff`.
|
||||||
|
|
||||||
|
|||||||
@@ -128,21 +128,21 @@ You add some "boilerplate" code to regularly listen for changes in the [uORB Top
|
|||||||
|
|
||||||
- **px4_platform_common/module_params.h** to get the `DEFINE_PARAMETERS` macro:
|
- **px4_platform_common/module_params.h** to get the `DEFINE_PARAMETERS` macro:
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
#include <px4_platform_common/module_params.h>
|
#include <px4_platform_common/module_params.h>
|
||||||
```
|
```
|
||||||
|
|
||||||
- **parameter_update.h** to access the uORB `parameter_update` message:
|
- **parameter_update.h** to access the uORB `parameter_update` message:
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
#include <uORB/topics/parameter_update.h>
|
#include <uORB/topics/parameter_update.h>
|
||||||
```
|
```
|
||||||
|
|
||||||
- **Subscription.hpp** for the uORB C++ subscription API:
|
- **Subscription.hpp** for the uORB C++ subscription API:
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
#include <uORB/Subscription.hpp>
|
#include <uORB/Subscription.hpp>
|
||||||
```
|
```
|
||||||
|
|
||||||
Derive your class from `ModuleParams`, and use `DEFINE_PARAMETERS` to specify a list of parameters and their associated parameter attributes.
|
Derive your class from `ModuleParams`, and use `DEFINE_PARAMETERS` to specify a list of parameters and their associated parameter attributes.
|
||||||
参数的名称必须与其参数元数据定义相同。
|
参数的名称必须与其参数元数据定义相同。
|
||||||
@@ -194,7 +194,7 @@ void Module::parameters_update()
|
|||||||
- `_parameter_update_sub.updated()` tells us if there is _any_ update to the `param_update` uORB message (but not what parameter is affected).
|
- `_parameter_update_sub.updated()` tells us if there is _any_ update to the `param_update` uORB message (but not what parameter is affected).
|
||||||
- If there has been "some" parameter updated, we copy the update into a `parameter_update_s` (`param_update`), to clear the pending update.
|
- If there has been "some" parameter updated, we copy the update into a `parameter_update_s` (`param_update`), to clear the pending update.
|
||||||
- Then we call `ModuleParams::updateParams()`.
|
- Then we call `ModuleParams::updateParams()`.
|
||||||
This "under the hood" updates all parameter attributes listed in our `DEFINE_PARAMETERS` list.
|
This "under the hood" updates all parameter attributes listed in our `DEFINE_PARAMETERS` list.
|
||||||
|
|
||||||
The parameter attributes (`_sys_autostart` and `_att_bias_max` in this case) can then be used to represent the parameters, and will be updated whenever the parameter value changes.
|
The parameter attributes (`_sys_autostart` and `_att_bias_max` in this case) can then be used to represent the parameters, and will be updated whenever the parameter value changes.
|
||||||
|
|
||||||
@@ -267,12 +267,12 @@ YAML meta data is intended as a full replacement for the **.c** definitions.
|
|||||||
- An example of YAML definitions being used can be found in the MAVLink parameter definitions: [/src/modules/mavlink/module.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mavlink/module.yaml).
|
- An example of YAML definitions being used can be found in the MAVLink parameter definitions: [/src/modules/mavlink/module.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mavlink/module.yaml).
|
||||||
- 通过添加到 cmake 构建系统中注册一个 YAML 文件
|
- 通过添加到 cmake 构建系统中注册一个 YAML 文件
|
||||||
|
|
||||||
```cmake
|
```cmake
|
||||||
MODULE_CONFIG
|
MODULE_CONFIG
|
||||||
module.yaml
|
module.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
to the `px4_add_module` section of the `CMakeLists.txt` file of that module.
|
to the `px4_add_module` section of the `CMakeLists.txt` file of that module.
|
||||||
|
|
||||||
#### 多实例(模块化)YAML 元数据
|
#### 多实例(模块化)YAML 元数据
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ On Windows, one option is to use _Melody Master_ within _Dosbox_.
|
|||||||
7. 当您准备好时保存音乐:
|
7. 当您准备好时保存音乐:
|
||||||
- Press **F2** to give the tune a name and save it in the _/Music_ sub folder of your Melody Master installation.
|
- Press **F2** to give the tune a name and save it in the _/Music_ sub folder of your Melody Master installation.
|
||||||
- Press **F7**, the scroll down the list of output formats on the right to get to ANSI.
|
- Press **F7**, the scroll down the list of output formats on the right to get to ANSI.
|
||||||
The file will be exported to the _root_ of the Melody Master directory (with the same name and a file-type specific extension).
|
The file will be exported to the _root_ of the Melody Master directory (with the same name and a file-type specific extension).
|
||||||
|
|
||||||
8. 打开文件。
|
8. 打开文件。
|
||||||
输出可能看起来像这样:
|
输出可能看起来像这样:
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ You can locate the parameters in QGroundControl as shown below:
|
|||||||
1. Open QGroundControl menu: **Settings > Parameters > Sensor Calibration**.
|
1. Open QGroundControl menu: **Settings > Parameters > Sensor Calibration**.
|
||||||
2. The parameters as located in the section as shown below (or you can search for them):
|
2. The parameters as located in the section as shown below (or you can search for them):
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Parameter Summary
|
## Parameter Summary
|
||||||
|
|
||||||
|
|||||||
@@ -52,80 +52,80 @@ The following steps explain how you can "manually" update the bootloader using a
|
|||||||
1. Get a binary containing the bootloader (either from dev team or [build it yourself](#building-the-px4-bootloader)).
|
1. Get a binary containing the bootloader (either from dev team or [build it yourself](#building-the-px4-bootloader)).
|
||||||
|
|
||||||
2. Get a [Debug Probe](../debug/swd_debug.md#debug-probes-for-px4-hardware).
|
2. Get a [Debug Probe](../debug/swd_debug.md#debug-probes-for-px4-hardware).
|
||||||
Connect the probe your PC via USB and setup the `gdbserver`.
|
Connect the probe your PC via USB and setup the `gdbserver`.
|
||||||
|
|
||||||
3. Go into the directory containing the binary and run the command for your target bootloader in the terminal:
|
3. Go into the directory containing the binary and run the command for your target bootloader in the terminal:
|
||||||
|
|
||||||
- FMUv6X
|
- FMUv6X
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
arm-none-eabi-gdb px4_fmu-v6x_bootloader.elf
|
arm-none-eabi-gdb px4_fmu-v6x_bootloader.elf
|
||||||
```
|
```
|
||||||
|
|
||||||
- FMUv6X-RT
|
- FMUv6X-RT
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
arm-none-eabi-gdb px4_fmu-v6xrt_bootloader.elf
|
arm-none-eabi-gdb px4_fmu-v6xrt_bootloader.elf
|
||||||
```
|
```
|
||||||
|
|
||||||
- FMUv5
|
- FMUv5
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
H7 Bootloaders from [PX4/PX4-Autopilot](https://github.com/PX4/PX4-Autopilot) are named with pattern `*._bootloader.elf`.
|
H7 Bootloaders from [PX4/PX4-Autopilot](https://github.com/PX4/PX4-Autopilot) are named with pattern `*._bootloader.elf`.
|
||||||
Bootloaders from [PX4/PX4-Bootloader](https://github.com/PX4/PX4-Bootloader) are named with the pattern `*_bl.elf`.
|
Bootloaders from [PX4/PX4-Bootloader](https://github.com/PX4/PX4-Bootloader) are named with the pattern `*_bl.elf`.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
4. The _gdb terminal_ appears and it should display the following output:
|
4. The _gdb terminal_ appears and it should display the following output:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
GNU gdb (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 8.0.50.20171128-git
|
GNU gdb (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 8.0.50.20171128-git
|
||||||
Copyright (C) 2017 Free Software Foundation, Inc.
|
Copyright (C) 2017 Free Software Foundation, Inc.
|
||||||
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
||||||
This is free software: you are free to change and redistribute it.
|
This is free software: you are free to change and redistribute it.
|
||||||
There is NO WARRANTY, to the extent permitted by law.
|
There is NO WARRANTY, to the extent permitted by law.
|
||||||
Type "show copying" and "show warranty" for details.
|
Type "show copying" and "show warranty" for details.
|
||||||
This GDB was configured as "--host=x86_64-linux-gnu --target=arm-none-eabi".
|
This GDB was configured as "--host=x86_64-linux-gnu --target=arm-none-eabi".
|
||||||
Type "show configuration" for configuration details.
|
Type "show configuration" for configuration details.
|
||||||
For bug reporting instructions, please see:
|
For bug reporting instructions, please see:
|
||||||
<http://www.gnu.org/software/gdb/bugs/>.
|
<http://www.gnu.org/software/gdb/bugs/>.
|
||||||
Find the GDB manual and other documentation resources online at:
|
Find the GDB manual and other documentation resources online at:
|
||||||
<http://www.gnu.org/software/gdb/documentation/>.
|
<http://www.gnu.org/software/gdb/documentation/>.
|
||||||
For help, type "help".
|
For help, type "help".
|
||||||
Type "apropos word" to search for commands related to "word"...
|
Type "apropos word" to search for commands related to "word"...
|
||||||
Reading symbols from px4fmuv5_bl.elf...done.
|
Reading symbols from px4fmuv5_bl.elf...done.
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Find your `<dronecode-probe-id>` by running an `ls` command in the **/dev/serial/by-id** directory.
|
5. Find your `<dronecode-probe-id>` by running an `ls` command in the **/dev/serial/by-id** directory.
|
||||||
|
|
||||||
6. Now connect to the debug probe with the following command:
|
6. Now connect to the debug probe with the following command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
tar ext /dev/serial/by-id/<dronecode-probe-id>
|
tar ext /dev/serial/by-id/<dronecode-probe-id>
|
||||||
```
|
```
|
||||||
|
|
||||||
7. Power on the Pixhawk with another USB cable and connect the probe to the `FMU-DEBUG` port.
|
7. Power on the Pixhawk with another USB cable and connect the probe to the `FMU-DEBUG` port.
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
If using a Dronecode probe you may need to remove the case in order to connect to the `FMU-DEBUG` port (e.g. on Pixhawk 4 you would do this using a T6 Torx screwdriver).
|
If using a Dronecode probe you may need to remove the case in order to connect to the `FMU-DEBUG` port (e.g. on Pixhawk 4 you would do this using a T6 Torx screwdriver).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
8. Use the following command to scan for the Pixhawk\`s SWD and connect to it:
|
8. Use the following command to scan for the Pixhawk\`s SWD and connect to it:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
(gdb) mon swdp_scan
|
(gdb) mon swdp_scan
|
||||||
(gdb) attach 1
|
(gdb) attach 1
|
||||||
```
|
```
|
||||||
|
|
||||||
9. 将二进制文件加载到 Pixhawk 中 :
|
9. 将二进制文件加载到 Pixhawk 中 :
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
(gdb) load
|
(gdb) load
|
||||||
```
|
```
|
||||||
|
|
||||||
After the bootloader has updated you can [Load PX4 Firmware](../config/firmware.md) using _QGroundControl_.
|
After the bootloader has updated you can [Load PX4 Firmware](../config/firmware.md) using _QGroundControl_.
|
||||||
|
|
||||||
@@ -146,8 +146,8 @@ Currently only FMUv2 and some custom firmware includes the desired bootloader.
|
|||||||
|
|
||||||
2. [Update the Firmware](../config/firmware.md#custom) with an image containing the new/desired bootloader.
|
2. [Update the Firmware](../config/firmware.md#custom) with an image containing the new/desired bootloader.
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
The updated bootloader might be supplied in custom firmware (i.e. from the dev team), or it or may be included in the latest main branch.
|
The updated bootloader might be supplied in custom firmware (i.e. from the dev team), or it or may be included in the latest main branch.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -156,7 +156,7 @@ Currently only FMUv2 and some custom firmware includes the desired bootloader.
|
|||||||
4. [Find and enable](../advanced_config/parameters.md) the parameter [SYS_BL_UPDATE](../advanced_config/parameter_reference.md#SYS_BL_UPDATE).
|
4. [Find and enable](../advanced_config/parameters.md) the parameter [SYS_BL_UPDATE](../advanced_config/parameter_reference.md#SYS_BL_UPDATE).
|
||||||
|
|
||||||
5. 重新启动(断开/重新连接飞控板)。
|
5. 重新启动(断开/重新连接飞控板)。
|
||||||
Bootloader 更新只需要几秒钟即可完成。
|
Bootloader 更新只需要几秒钟即可完成。
|
||||||
|
|
||||||
Generally at this point you may then want to [update the firmware](../config/firmware.md) again using the correct/newly installed bootloader.
|
Generally at this point you may then want to [update the firmware](../config/firmware.md) again using the correct/newly installed bootloader.
|
||||||
|
|
||||||
@@ -176,25 +176,25 @@ Early FMUv2 [Pixhawk-series](../flight_controller/pixhawk_series.md#fmu_versions
|
|||||||
1. 插入 SD 卡(使能引导日志记录,便于调试任何可能的问题)。
|
1. 插入 SD 卡(使能引导日志记录,便于调试任何可能的问题)。
|
||||||
|
|
||||||
2. [Update the Firmware](../config/firmware.md) to PX4 _master_ version (when updating the firmware, check **Advanced settings** and then select **Developer Build (master)** from the dropdown list).
|
2. [Update the Firmware](../config/firmware.md) to PX4 _master_ version (when updating the firmware, check **Advanced settings** and then select **Developer Build (master)** from the dropdown list).
|
||||||
_QGroundControl_ will automatically detect that the hardware supports FMUv2 and install the appropriate Firmware.
|
_QGroundControl_ will automatically detect that the hardware supports FMUv2 and install the appropriate Firmware.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
等待飞控重启。
|
等待飞控重启。
|
||||||
|
|
||||||
3. [Find and enable](../advanced_config/parameters.md) the parameter [SYS_BL_UPDATE](../advanced_config/parameter_reference.md#SYS_BL_UPDATE).
|
3. [Find and enable](../advanced_config/parameters.md) the parameter [SYS_BL_UPDATE](../advanced_config/parameter_reference.md#SYS_BL_UPDATE).
|
||||||
|
|
||||||
4. 重新启动(断开/重新连接飞控板)。
|
4. 重新启动(断开/重新连接飞控板)。
|
||||||
Bootloader 更新只需要几秒钟即可完成。
|
Bootloader 更新只需要几秒钟即可完成。
|
||||||
|
|
||||||
5. Then [Update the Firmware](../config/firmware.md) again.
|
5. Then [Update the Firmware](../config/firmware.md) again.
|
||||||
This time _QGroundControl_ should autodetect the hardware as FMUv3 and update the Firmware appropriately.
|
This time _QGroundControl_ should autodetect the hardware as FMUv3 and update the Firmware appropriately.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
If the hardware has the [Silicon Errata](../flight_controller/silicon_errata.md#fmuv2-pixhawk-silicon-errata) it will still be detected as FMUv2 and you will see that FMUv2 was re-installed (in console).
|
If the hardware has the [Silicon Errata](../flight_controller/silicon_errata.md#fmuv2-pixhawk-silicon-errata) it will still be detected as FMUv2 and you will see that FMUv2 was re-installed (in console).
|
||||||
在这种情况下,您将无法安装 FMUv3 硬件。
|
在这种情况下,您将无法安装 FMUv3 硬件。
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ The process is demonstrated for a multicopter, but is equally valid for other ve
|
|||||||
- 解锁无人机,然后缓缓将油门推到最大。
|
- 解锁无人机,然后缓缓将油门推到最大。
|
||||||
- 慢慢将油门降到0
|
- 慢慢将油门降到0
|
||||||
- 给无人机加锁
|
- 给无人机加锁
|
||||||
> <strong x-id="1">Note</strong> 谨慎地进行测试,并密切注意振动情况。
|
> <strong x-id="1">Note</strong> 谨慎地进行测试,并密切注意振动情况。
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
Perform the test carefully and closely monitor the vibrations.
|
Perform the test carefully and closely monitor the vibrations.
|
||||||
|
|||||||
@@ -94,29 +94,29 @@ Flight control systems that can't power the autopilot via USB will need a [diffe
|
|||||||
|
|
||||||
- The minimum value for a motor (default: `1100us`) should make the motor spin slowly but reliably, and also spin up reliably after it was stopped.
|
- The minimum value for a motor (default: `1100us`) should make the motor spin slowly but reliably, and also spin up reliably after it was stopped.
|
||||||
|
|
||||||
You can confirm that a motor spins at minimum (still without propellers) in [Actuator Testing](../config/actuators.md#actuator-testing), by enabling the sliders, and then moving the test output slider for the motor to the first snap position from the bottom.
|
You can confirm that a motor spins at minimum (still without propellers) in [Actuator Testing](../config/actuators.md#actuator-testing), by enabling the sliders, and then moving the test output slider for the motor to the first snap position from the bottom.
|
||||||
当你将滑块从解锁到最小值时,正确的值应该使电机立即和可靠地旋转。
|
当你将滑块从解锁到最小值时,正确的值应该使电机立即和可靠地旋转。
|
||||||
|
|
||||||
要找到“最佳”最小值,请将滑块移动到底部(禁用)。
|
要找到“最佳”最小值,请将滑块移动到底部(禁用)。
|
||||||
Then increase the PWM output's `disarmed` setting in small increments (e.g. 1025us, 1050us, etc), until the motor starts to spin reliably (it is better to be a little too high than a little too low).
|
Then increase the PWM output's `disarmed` setting in small increments (e.g. 1025us, 1050us, etc), until the motor starts to spin reliably (it is better to be a little too high than a little too low).
|
||||||
Enter this value into the `minimum` setting for all the motor PWM outputs, and restore the `disarmed` output to `1100us`.
|
Enter this value into the `minimum` setting for all the motor PWM outputs, and restore the `disarmed` output to `1100us`.
|
||||||
|
|
||||||
- The maximum value for a motor (default: `1900us`) should be chosen such that increasing the value doesn't make the motor spin any faster.
|
- The maximum value for a motor (default: `1900us`) should be chosen such that increasing the value doesn't make the motor spin any faster.
|
||||||
|
|
||||||
You can confirm that the motor spins quickly at the maximum setting in [Actuator Testing](../config/actuators.md#actuator-testing), by moving the associated test output slider to the top position.
|
You can confirm that the motor spins quickly at the maximum setting in [Actuator Testing](../config/actuators.md#actuator-testing), by moving the associated test output slider to the top position.
|
||||||
|
|
||||||
To find the "optimal" maximum value, first move the slider to the bottom (disarmed).
|
To find the "optimal" maximum value, first move the slider to the bottom (disarmed).
|
||||||
Then increase the PWM output's `disarmed` setting to near the default maximum (`1900`) - the motors should spin up.
|
Then increase the PWM output's `disarmed` setting to near the default maximum (`1900`) - the motors should spin up.
|
||||||
Listen to the tone of the motor as you increase the PWM maximum value for the output in increments (e.g. 1925us, 1950us, etc).
|
Listen to the tone of the motor as you increase the PWM maximum value for the output in increments (e.g. 1925us, 1950us, etc).
|
||||||
The optimal value is found at the point when the sound of the motors does not change as you increase the value of the output.
|
The optimal value is found at the point when the sound of the motors does not change as you increase the value of the output.
|
||||||
Enter this value into the `maximum` setting for all the motor PWM outputs, and restore the `disarmed` output to `1100us`.
|
Enter this value into the `maximum` setting for all the motor PWM outputs, and restore the `disarmed` output to `1100us`.
|
||||||
|
|
||||||
- The disarmed value for a motor (default: `1000us`) should make the motor stop and stay stopped.
|
- The disarmed value for a motor (default: `1000us`) should make the motor stop and stay stopped.
|
||||||
|
|
||||||
You can confirm this in [Actuator Testing](../config/actuators.md#actuator-testing) by moving the test output slider to the snap position at the bottom of the slider and observing that the motor does not spin.
|
You can confirm this in [Actuator Testing](../config/actuators.md#actuator-testing) by moving the test output slider to the snap position at the bottom of the slider and observing that the motor does not spin.
|
||||||
|
|
||||||
If the ESC spins with the default value of 1000us then the ESC is not properly calibrated.
|
If the ESC spins with the default value of 1000us then the ESC is not properly calibrated.
|
||||||
If using an ESC that can't be calibrated, you should reduce the PWM output value for the output to below where the motor does not spin anymore (such as 950us or 900us).
|
If using an ESC that can't be calibrated, you should reduce the PWM output value for the output to below where the motor does not spin anymore (such as 950us or 900us).
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
VTOL and fixed-wing motors do not need any special PWM configuration.
|
VTOL and fixed-wing motors do not need any special PWM configuration.
|
||||||
|
|||||||
@@ -87,14 +87,14 @@ To set the above "example" configuration using the _QGroundControl_:
|
|||||||
|
|
||||||
3. Enter commands "like" the ones below into the _MAVLink Console_ (to write the values to the configuration file):
|
3. Enter commands "like" the ones below into the _MAVLink Console_ (to write the values to the configuration file):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
echo DEVICE=eth0 > /fs/microsd/net.cfg
|
echo DEVICE=eth0 > /fs/microsd/net.cfg
|
||||||
echo BOOTPROTO=fallback >> /fs/microsd/net.cfg
|
echo BOOTPROTO=fallback >> /fs/microsd/net.cfg
|
||||||
echo IPADDR=10.41.10.2 >> /fs/microsd/net.cfg
|
echo IPADDR=10.41.10.2 >> /fs/microsd/net.cfg
|
||||||
echo NETMASK=255.255.255.0 >>/fs/microsd/net.cfg
|
echo NETMASK=255.255.255.0 >>/fs/microsd/net.cfg
|
||||||
echo ROUTER=10.41.10.254 >>/fs/microsd/net.cfg
|
echo ROUTER=10.41.10.254 >>/fs/microsd/net.cfg
|
||||||
echo DNS=10.41.10.254 >>/fs/microsd/net.cfg
|
echo DNS=10.41.10.254 >>/fs/microsd/net.cfg
|
||||||
```
|
```
|
||||||
|
|
||||||
4. 一旦设置了网络配置,您可以断开 USB 电缆。
|
4. 一旦设置了网络配置,您可以断开 USB 电缆。
|
||||||
|
|
||||||
@@ -113,36 +113,36 @@ Note that there are many more [examples](https://netplan.io/examples/) and instr
|
|||||||
设置Ubuntu计算机:
|
设置Ubuntu计算机:
|
||||||
|
|
||||||
1. In a terminal, create and open a `netplan` configuration file: `/etc/netplan/01-network-manager-all.yaml`
|
1. In a terminal, create and open a `netplan` configuration file: `/etc/netplan/01-network-manager-all.yaml`
|
||||||
Below we do this using the _nano_ text editor.
|
Below we do this using the _nano_ text editor.
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo nano /etc/netplan/01-network-manager-all.yaml
|
sudo nano /etc/netplan/01-network-manager-all.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
2. 将以下配置信息复制并粘贴到文件中(注意:缩进很重要!):
|
2. 将以下配置信息复制并粘贴到文件中(注意:缩进很重要!):
|
||||||
|
|
||||||
```
|
```
|
||||||
network:
|
network:
|
||||||
version: 2
|
version: 2
|
||||||
renderer: NetworkManager
|
renderer: NetworkManager
|
||||||
ethernets:
|
ethernets:
|
||||||
enp2s0:
|
enp2s0:
|
||||||
addresses:
|
addresses:
|
||||||
- 10.41.10.1/24
|
- 10.41.10.1/24
|
||||||
nameservers:
|
nameservers:
|
||||||
addresses: [10.41.10.1]
|
addresses: [10.41.10.1]
|
||||||
routes:
|
routes:
|
||||||
- to: 10.41.10.1
|
- to: 10.41.10.1
|
||||||
via: 10.41.10.1
|
via: 10.41.10.1
|
||||||
```
|
```
|
||||||
|
|
||||||
保存并退出编辑器。
|
保存并退出编辑器。
|
||||||
|
|
||||||
3. Apply the _netplan_ configuration by entering the following command into the Ubuntu terminal.
|
3. Apply the _netplan_ configuration by entering the following command into the Ubuntu terminal.
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo netplan apply
|
sudo netplan apply
|
||||||
```
|
```
|
||||||
|
|
||||||
### 机载计算机以太网网络设置
|
### 机载计算机以太网网络设置
|
||||||
|
|
||||||
@@ -189,9 +189,9 @@ Assuming you have already [Set up the Ethernet Network](#setting-up-the-ethernet
|
|||||||
|
|
||||||
3. Start QGroundControl and [define a comm link](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/settings_view/settings_view.html) (**Application Settings > Comm Links**) specifying the _server address_ and port as the IP address and port assigned in PX4, respectively.
|
3. Start QGroundControl and [define a comm link](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/settings_view/settings_view.html) (**Application Settings > Comm Links**) specifying the _server address_ and port as the IP address and port assigned in PX4, respectively.
|
||||||
|
|
||||||
假设值已按本主题其余部分所述设置,设置将如下所示:
|
假设值已按本主题其余部分所述设置,设置将如下所示:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
4. 如果你选择这个链接,QGroundControl 应该会连接。
|
4. 如果你选择这个链接,QGroundControl 应该会连接。
|
||||||
|
|
||||||
@@ -205,14 +205,14 @@ Assuming you have already [Set up the Ethernet Network](#setting-up-the-ethernet
|
|||||||
|
|
||||||
1. [Set up the Ethernet Network](#setting-up-the-ethernet-network) so your companion computer and PX4 run on the same network.
|
1. [Set up the Ethernet Network](#setting-up-the-ethernet-network) so your companion computer and PX4 run on the same network.
|
||||||
2. Modify the [PX4 Ethernet Port Configuration](#px4-ethernet-network-setup) to connect to a companion computer.
|
2. Modify the [PX4 Ethernet Port Configuration](#px4-ethernet-network-setup) to connect to a companion computer.
|
||||||
You might change the parameters [MAV_2_REMOTE_PRT](../advanced_config/parameter_reference.md#MAV_2_REMOTE_PRT) and [MAV_2_UDP_PRT](../advanced_config/parameter_reference.md#MAV_2_UDP_PRT) to `14540`, and [MAV_2_MODE](../advanced_config/parameter_reference.md#MAV_2_MODE) to `2` (Onboard).
|
You might change the parameters [MAV_2_REMOTE_PRT](../advanced_config/parameter_reference.md#MAV_2_REMOTE_PRT) and [MAV_2_UDP_PRT](../advanced_config/parameter_reference.md#MAV_2_UDP_PRT) to `14540`, and [MAV_2_MODE](../advanced_config/parameter_reference.md#MAV_2_MODE) to `2` (Onboard).
|
||||||
3. Follow the instructions in [MAVSDK-python](https://github.com/mavlink/MAVSDK-Python) to install and use MAVSDK.
|
3. Follow the instructions in [MAVSDK-python](https://github.com/mavlink/MAVSDK-Python) to install and use MAVSDK.
|
||||||
|
|
||||||
例如,您的代码将使用以下方式连接到PX4:
|
例如,您的代码将使用以下方式连接到PX4:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
await drone.connect(system_address="udp://10.41.10.2:14540")
|
await drone.connect(system_address="udp://10.41.10.2:14540")
|
||||||
```
|
```
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
MAVSDK can connect to the PX4 on port `14550` if you don't modify the PX4 Ethernet port configuration.
|
MAVSDK can connect to the PX4 on port `14550` if you don't modify the PX4 Ethernet port configuration.
|
||||||
@@ -235,38 +235,38 @@ MAVSDK can connect to the PX4 on port `14550` if you don't modify the PX4 Ethern
|
|||||||
1. 通过以太网连接您的飞行控制器和机载计算机。
|
1. 通过以太网连接您的飞行控制器和机载计算机。
|
||||||
|
|
||||||
2. [Start the uXRCE-DDS client on PX4](../middleware/uxrce_dds.md#starting-the-client), either manually or by customizing the system startup script.
|
2. [Start the uXRCE-DDS client on PX4](../middleware/uxrce_dds.md#starting-the-client), either manually or by customizing the system startup script.
|
||||||
Note that you must use the IP address of the companion computer and the UDP port on which the agent is listening (the example configuration above sets the companion IP address to `10.41.10.1`, and the agent UDP port is set to `8888` in the next step).
|
Note that you must use the IP address of the companion computer and the UDP port on which the agent is listening (the example configuration above sets the companion IP address to `10.41.10.1`, and the agent UDP port is set to `8888` in the next step).
|
||||||
|
|
||||||
3. [Start the micro XRCE-DDS agent on the companion computer](../middleware/uxrce_dds.md#starting-the-agent).
|
3. [Start the micro XRCE-DDS agent on the companion computer](../middleware/uxrce_dds.md#starting-the-agent).
|
||||||
For example, enter the following command in a terminal to start the agent listening on UDP port `8888`.
|
For example, enter the following command in a terminal to start the agent listening on UDP port `8888`.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
MicroXRCEAgent udp4 -p 8888
|
MicroXRCEAgent udp4 -p 8888
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Run a [listener node](../ros2/user_guide.md#running-the-example) in a new terminal to confirm the connection is established:
|
4. Run a [listener node](../ros2/user_guide.md#running-the-example) in a new terminal to confirm the connection is established:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
source ~/ws_sensor_combined/install/setup.bash
|
source ~/ws_sensor_combined/install/setup.bash
|
||||||
ros2 launch px4_ros_com sensor_combined_listener.launch.py
|
ros2 launch px4_ros_com sensor_combined_listener.launch.py
|
||||||
```
|
```
|
||||||
|
|
||||||
如果所有设置都正确,终端应显示如下输出:
|
如果所有设置都正确,终端应显示如下输出:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
RECEIVED SENSOR COMBINED DATA
|
RECEIVED SENSOR COMBINED DATA
|
||||||
=============================
|
=============================
|
||||||
ts: 855801598
|
ts: 855801598
|
||||||
gyro_rad[0]: -0.00339938
|
gyro_rad[0]: -0.00339938
|
||||||
gyro_rad[1]: 0.00440091
|
gyro_rad[1]: 0.00440091
|
||||||
gyro_rad[2]: 0.00513893
|
gyro_rad[2]: 0.00513893
|
||||||
gyro_integral_dt: 4997
|
gyro_integral_dt: 4997
|
||||||
accelerometer_timestamp_relative: 0
|
accelerometer_timestamp_relative: 0
|
||||||
accelerometer_m_s2[0]: -0.0324082
|
accelerometer_m_s2[0]: -0.0324082
|
||||||
accelerometer_m_s2[1]: 0.0392213
|
accelerometer_m_s2[1]: 0.0392213
|
||||||
accelerometer_m_s2[2]: -9.77914
|
accelerometer_m_s2[2]: -9.77914
|
||||||
accelerometer_integral_dt: 4997
|
accelerometer_integral_dt: 4997
|
||||||
```
|
```
|
||||||
|
|
||||||
## See Also
|
## See Also
|
||||||
|
|
||||||
|
|||||||
@@ -153,15 +153,15 @@ It corresponds to: [COM_PREARM_MODE=1](#COM_PREARM_MODE) (safety switch) and [CB
|
|||||||
The default startup sequence is:
|
The default startup sequence is:
|
||||||
|
|
||||||
1. Power-up.
|
1. Power-up.
|
||||||
- All actuators locked into disarmed position
|
- All actuators locked into disarmed position
|
||||||
- Not possible to arm.
|
- Not possible to arm.
|
||||||
2. Safety switch is pressed.
|
2. Safety switch is pressed.
|
||||||
- System now prearmed: non-throttling actuators can move (e.g. ailerons).
|
- System now prearmed: non-throttling actuators can move (e.g. ailerons).
|
||||||
- System safety is off: Arming possible.
|
- System safety is off: Arming possible.
|
||||||
3. Arm command is issued.
|
3. Arm command is issued.
|
||||||
|
|
||||||
- The system is armed.
|
- The system is armed.
|
||||||
- All motors and actuators can move.
|
- All motors and actuators can move.
|
||||||
|
|
||||||
### COM_PREARM_MODE=Disabled and Safety Switch
|
### COM_PREARM_MODE=Disabled and Safety Switch
|
||||||
|
|
||||||
@@ -171,15 +171,15 @@ This corresponds to [COM_PREARM_MODE=0](#COM_PREARM_MODE) (Disabled) and [CBRK_I
|
|||||||
The startup sequence is:
|
The startup sequence is:
|
||||||
|
|
||||||
1. Power-up.
|
1. Power-up.
|
||||||
- All actuators locked into disarmed position
|
- All actuators locked into disarmed position
|
||||||
- Not possible to arm.
|
- Not possible to arm.
|
||||||
2. Safety switch is pressed.
|
2. Safety switch is pressed.
|
||||||
- _All actuators stay locked into disarmed position (same as disarmed)._
|
- _All actuators stay locked into disarmed position (same as disarmed)._
|
||||||
- System safety is off: Arming possible.
|
- System safety is off: Arming possible.
|
||||||
3. Arm command is issued.
|
3. Arm command is issued.
|
||||||
|
|
||||||
- The system is armed.
|
- The system is armed.
|
||||||
- All motors and actuators can move.
|
- All motors and actuators can move.
|
||||||
|
|
||||||
### COM_PREARM_MODE=Always and Safety Switch
|
### COM_PREARM_MODE=Always and Safety Switch
|
||||||
|
|
||||||
@@ -190,13 +190,13 @@ This corresponds to [COM_PREARM_MODE=2](#COM_PREARM_MODE) (Always) and [CBRK_IO_
|
|||||||
The startup sequence is:
|
The startup sequence is:
|
||||||
|
|
||||||
1. Power-up.
|
1. Power-up.
|
||||||
- System now prearmed: non-throttling actuators can move (e.g. ailerons).
|
- System now prearmed: non-throttling actuators can move (e.g. ailerons).
|
||||||
- Not possible to arm.
|
- Not possible to arm.
|
||||||
2. Safety switch is pressed.
|
2. Safety switch is pressed.
|
||||||
- System safety is off: Arming possible.
|
- System safety is off: Arming possible.
|
||||||
3. Arm command is issued.
|
3. Arm command is issued.
|
||||||
- The system is armed.
|
- The system is armed.
|
||||||
- All motors and actuators can move.
|
- All motors and actuators can move.
|
||||||
|
|
||||||
### COM_PREARM_MODE=Safety or Disabled and No Safety Switch
|
### COM_PREARM_MODE=Safety or Disabled and No Safety Switch
|
||||||
|
|
||||||
@@ -206,11 +206,11 @@ This corresponds to [COM_PREARM_MODE=0 or 1](#COM_PREARM_MODE) (Disabled/Safety
|
|||||||
The startup sequence is:
|
The startup sequence is:
|
||||||
|
|
||||||
1. Power-up.
|
1. Power-up.
|
||||||
- All actuators locked into disarmed position
|
- All actuators locked into disarmed position
|
||||||
- System safety is off: Arming possible.
|
- System safety is off: Arming possible.
|
||||||
2. Arm command is issued.
|
2. Arm command is issued.
|
||||||
- The system is armed.
|
- The system is armed.
|
||||||
- All motors and actuators can move.
|
- All motors and actuators can move.
|
||||||
|
|
||||||
### COM_PREARM_MODE=Always and No Safety Switch
|
### COM_PREARM_MODE=Always and No Safety Switch
|
||||||
|
|
||||||
@@ -220,11 +220,11 @@ This corresponds to [COM_PREARM_MODE=2](#COM_PREARM_MODE) (Always) and [CBRK_IO_
|
|||||||
The startup sequence is:
|
The startup sequence is:
|
||||||
|
|
||||||
1. Power-up.
|
1. Power-up.
|
||||||
- System now prearmed: non-throttling actuators can move (e.g. ailerons).
|
- System now prearmed: non-throttling actuators can move (e.g. ailerons).
|
||||||
- System safety is off: Arming possible.
|
- System safety is off: Arming possible.
|
||||||
2. Arm command is issued.
|
2. Arm command is issued.
|
||||||
- The system is armed.
|
- The system is armed.
|
||||||
- All motors and actuators can move.
|
- All motors and actuators can move.
|
||||||
|
|
||||||
### 参数
|
### 参数
|
||||||
|
|
||||||
|
|||||||
@@ -102,11 +102,11 @@ To perform an offboard calibration:
|
|||||||
|
|
||||||
9. Open a terminal window in the **Firmware/Tools** directory and run the python calibration script:
|
9. Open a terminal window in the **Firmware/Tools** directory and run the python calibration script:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
python process_sensor_caldata.py <full path name to .ulog file>
|
python process_sensor_caldata.py <full path name to .ulog file>
|
||||||
```
|
```
|
||||||
|
|
||||||
This will generate a **.pdf** file showing the measured data and curve fits for each sensor, and a **.params** file containing the calibration parameters.
|
This will generate a **.pdf** file showing the measured data and curve fits for each sensor, and a **.params** file containing the calibration parameters.
|
||||||
|
|
||||||
10. Power the board, connect _QGroundControl_ and load the parameter from the generated **.params** file onto the board using _QGroundControl_. 由于参数的数量,加载它们可能需要一些时间。
|
10. Power the board, connect _QGroundControl_ and load the parameter from the generated **.params** file onto the board using _QGroundControl_. 由于参数的数量,加载它们可能需要一些时间。
|
||||||
|
|
||||||
|
|||||||
@@ -157,29 +157,29 @@ Three axis body fixed magnetometer data at a minimum rate of 5Hz is required to
|
|||||||
Magnetometer data fusion can be configured using [EKF2_MAG_TYPE](../advanced_config/parameter_reference.md#EKF2_MAG_TYPE):
|
Magnetometer data fusion can be configured using [EKF2_MAG_TYPE](../advanced_config/parameter_reference.md#EKF2_MAG_TYPE):
|
||||||
|
|
||||||
0. Automatic:
|
0. Automatic:
|
||||||
- The magnetometer readings only affect the heading estimate before arming, and the whole attitude after arming.
|
- The magnetometer readings only affect the heading estimate before arming, and the whole attitude after arming.
|
||||||
- Heading and tilt errors are compensated when using this method.
|
- Heading and tilt errors are compensated when using this method.
|
||||||
- Incorrect magnetic field measurements can degrade the tilt estimate.
|
- Incorrect magnetic field measurements can degrade the tilt estimate.
|
||||||
- The magnetometer biases are estimated whenever observable.
|
- The magnetometer biases are estimated whenever observable.
|
||||||
1. Magnetic heading:
|
1. Magnetic heading:
|
||||||
- Only the heading is corrected.
|
- Only the heading is corrected.
|
||||||
The tilt estimate is never affected by incorrect magnetic field measurements.
|
The tilt estimate is never affected by incorrect magnetic field measurements.
|
||||||
- Tilt errors that could arise when flying without velocity/position aiding are not corrected when using this method.
|
- Tilt errors that could arise when flying without velocity/position aiding are not corrected when using this method.
|
||||||
- The magnetometer biases are estimated whenever observable.
|
- The magnetometer biases are estimated whenever observable.
|
||||||
2. Deprecated
|
2. Deprecated
|
||||||
3. Deprecated
|
3. Deprecated
|
||||||
4. Deprecated
|
4. Deprecated
|
||||||
5. None:
|
5. None:
|
||||||
- Magnetometer data is never used.
|
- Magnetometer data is never used.
|
||||||
This is useful when the data can never be trusted (e.g.: high current close to the sensor, external anomalies).
|
This is useful when the data can never be trusted (e.g.: high current close to the sensor, external anomalies).
|
||||||
- The estimator will use other sources of heading: [GPS heading](#yaw-measurements) or external vision.
|
- The estimator will use other sources of heading: [GPS heading](#yaw-measurements) or external vision.
|
||||||
- When using GPS measurements without another source of heading, the heading can only be initialized after sufficient horizontal acceleration.
|
- When using GPS measurements without another source of heading, the heading can only be initialized after sufficient horizontal acceleration.
|
||||||
See [Estimate yaw from vehicle movement](#yaw-from-gps-velocity) below.
|
See [Estimate yaw from vehicle movement](#yaw-from-gps-velocity) below.
|
||||||
6. Init only:
|
6. Init only:
|
||||||
- Magnetometer data is only used to initialize the heading estimate.
|
- Magnetometer data is only used to initialize the heading estimate.
|
||||||
This is useful when the data can be used before arming but not afterwards (e.g.: high current after the vehicle is armed).
|
This is useful when the data can be used before arming but not afterwards (e.g.: high current after the vehicle is armed).
|
||||||
- After initialization, the heading is constrained using other observations.
|
- After initialization, the heading is constrained using other observations.
|
||||||
- Unlike mag type `None`, when combined with GPS measurements, this method allows position controlled modes to run directly during takeoff.
|
- Unlike mag type `None`, when combined with GPS measurements, this method allows position controlled modes to run directly during takeoff.
|
||||||
|
|
||||||
The following selection tree can be used to select the right option:
|
The following selection tree can be used to select the right option:
|
||||||
|
|
||||||
@@ -241,8 +241,8 @@ EKF2模块将误差建模为与机体固连的椭球体,在将其转换为高
|
|||||||
|
|
||||||
2. Extract the `.ulg` log file using, for example, [QGroundControl: Analyze > Log Download](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/analyze_view/log_download.html)
|
2. Extract the `.ulg` log file using, for example, [QGroundControl: Analyze > Log Download](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/analyze_view/log_download.html)
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
The same log file can be used to tune the [multirotor wind estimator](#mc_wind_estimation_using_drag).
|
The same log file can be used to tune the [multirotor wind estimator](#mc_wind_estimation_using_drag).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -460,8 +460,8 @@ The amount of specific force observation noise is set by the [EKF2_DRAG_NOISE](.
|
|||||||
|
|
||||||
1. Fly once in [Position mode](../flight_modes_mc/position.md) repeatedly forwards/backwards/left/right/up/down between rest and maximum speed (best results are obtained when this testing is conducted in still conditions).
|
1. Fly once in [Position mode](../flight_modes_mc/position.md) repeatedly forwards/backwards/left/right/up/down between rest and maximum speed (best results are obtained when this testing is conducted in still conditions).
|
||||||
2. Extract the **.ulg** log file using, for example, [QGroundControl: Analyze > Log Download](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/analyze_view/log_download.html)
|
2. Extract the **.ulg** log file using, for example, [QGroundControl: Analyze > Log Download](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/analyze_view/log_download.html)
|
||||||
::: info
|
::: info
|
||||||
The same **.ulg** log file can also be used to tune the [static pressure position error coefficients](#correction-for-static-pressure-position-error).
|
The same **.ulg** log file can also be used to tune the [static pressure position error coefficients](#correction-for-static-pressure-position-error).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
3. Use the log with the [mc_wind_estimator_tuning.py](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/ekf2/EKF/python/tuning_tools/mc_wind_estimator) Python script to obtain the optimal set of parameters.
|
3. Use the log with the [mc_wind_estimator_tuning.py](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/ekf2/EKF/python/tuning_tools/mc_wind_estimator) Python script to obtain the optimal set of parameters.
|
||||||
|
|||||||
@@ -38,14 +38,14 @@ If it is not visible the vehicle immediately performs a _normal_ landing at the
|
|||||||
A precision landing has three phases:
|
A precision landing has three phases:
|
||||||
|
|
||||||
1. **Horizontal approach:** The vehicle approaches the target horizontally while keeping its current altitude.
|
1. **Horizontal approach:** The vehicle approaches the target horizontally while keeping its current altitude.
|
||||||
Once the position of the target relative to the vehicle is below a threshold ([PLD_HACC_RAD](../advanced_config/parameter_reference.md#PLD_HACC_RAD)), the next phase is entered.
|
Once the position of the target relative to the vehicle is below a threshold ([PLD_HACC_RAD](../advanced_config/parameter_reference.md#PLD_HACC_RAD)), the next phase is entered.
|
||||||
If the target is lost during this phase (not visible for longer than [PLD_BTOUT](../advanced_config/parameter_reference.md#PLD_BTOUT)), a search procedure is initiated (during a required precision landing) or the vehicle does a normal landing (during an opportunistic precision landing).
|
If the target is lost during this phase (not visible for longer than [PLD_BTOUT](../advanced_config/parameter_reference.md#PLD_BTOUT)), a search procedure is initiated (during a required precision landing) or the vehicle does a normal landing (during an opportunistic precision landing).
|
||||||
|
|
||||||
2. **Descent over target:** The vehicle descends, while remaining centered over the target.
|
2. **Descent over target:** The vehicle descends, while remaining centered over the target.
|
||||||
If the target is lost during this phase (not visible for longer than `PLD_BTOUT`), a search procedure is initiated (during a required precision landing) or the vehicle does a normal landing (during an opportunistic precision landing).
|
If the target is lost during this phase (not visible for longer than `PLD_BTOUT`), a search procedure is initiated (during a required precision landing) or the vehicle does a normal landing (during an opportunistic precision landing).
|
||||||
|
|
||||||
3. **Final approach:** When the vehicle is close to the ground (closer than [PLD_FAPPR_ALT](../advanced_config/parameter_reference.md#PLD_FAPPR_ALT)), it descends while remaining centered over the target.
|
3. **Final approach:** When the vehicle is close to the ground (closer than [PLD_FAPPR_ALT](../advanced_config/parameter_reference.md#PLD_FAPPR_ALT)), it descends while remaining centered over the target.
|
||||||
If the target is lost during this phase, the descent is continued independent of the kind of precision landing.
|
If the target is lost during this phase, the descent is continued independent of the kind of precision landing.
|
||||||
|
|
||||||
Search procedures are initiated in the first and second steps, and will run at most [PLD_MAX_SRCH](../advanced_config/parameter_reference.md#PLD_MAX_SRCH) times.
|
Search procedures are initiated in the first and second steps, and will run at most [PLD_MAX_SRCH](../advanced_config/parameter_reference.md#PLD_MAX_SRCH) times.
|
||||||
Landing Phases Flow Diagram
|
Landing Phases Flow Diagram
|
||||||
|
|||||||
@@ -54,19 +54,19 @@ If an external antenna is used always make sure that the antenna is connected to
|
|||||||
The default baud rate of the module is 19200. However, the PX4 _iridiumsbd_ driver requires a baud rate of 115200 so it needs to be changed using the [AT commands](https://www.groundcontrol.com/en/wp-content/uploads/2022/02/IRDM_ISU_ATCommandReferenceMAN0009_Rev2.0_ATCOMM_Oct2012.pdf).
|
The default baud rate of the module is 19200. However, the PX4 _iridiumsbd_ driver requires a baud rate of 115200 so it needs to be changed using the [AT commands](https://www.groundcontrol.com/en/wp-content/uploads/2022/02/IRDM_ISU_ATCommandReferenceMAN0009_Rev2.0_ATCOMM_Oct2012.pdf).
|
||||||
|
|
||||||
1. Connect to the module with using a 19200/8-N-1 setting and check if the communication is working using the command: `AT`.
|
1. Connect to the module with using a 19200/8-N-1 setting and check if the communication is working using the command: `AT`.
|
||||||
The response should be: `OK`.
|
The response should be: `OK`.
|
||||||
|
|
||||||
2. Change the baud rate:
|
2. Change the baud rate:
|
||||||
|
|
||||||
```
|
```
|
||||||
AT+IPR=9
|
AT+IPR=9
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Reconnect to the model now with a 115200/8-N-1 setting and save the configuration using:
|
3. Reconnect to the model now with a 115200/8-N-1 setting and save the configuration using:
|
||||||
|
|
||||||
```
|
```
|
||||||
AT&W0
|
AT&W0
|
||||||
```
|
```
|
||||||
|
|
||||||
The module is now ready to be used with PX4.
|
The module is now ready to be used with PX4.
|
||||||
|
|
||||||
@@ -102,55 +102,55 @@ The relay server should be run on either Ubuntu 16.04 or 14.04 OS.
|
|||||||
|
|
||||||
1. The server working as a message relay should have a static IP address and two publicly accessible, open, TCP ports:
|
1. The server working as a message relay should have a static IP address and two publicly accessible, open, TCP ports:
|
||||||
|
|
||||||
- `5672` for the _RabbitMQ_ message broker (can be changed in the _rabbitmq_ settings)
|
- `5672` for the _RabbitMQ_ message broker (can be changed in the _rabbitmq_ settings)
|
||||||
- `45679` for the HTTP POST interface (can be changed in the **relay.cfg** file)
|
- `45679` for the HTTP POST interface (can be changed in the **relay.cfg** file)
|
||||||
|
|
||||||
2. Install the required python modules:
|
2. Install the required python modules:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo pip install pika tornado future
|
sudo pip install pika tornado future
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Install the `rabbitmq` message broker:
|
3. Install the `rabbitmq` message broker:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt install rabbitmq-server
|
sudo apt install rabbitmq-server
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Configure the broker's credentials (change PWD to your preferred password):
|
4. Configure the broker's credentials (change PWD to your preferred password):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo rabbitmqctl add_user iridiumsbd PWD
|
sudo rabbitmqctl add_user iridiumsbd PWD
|
||||||
sudo rabbitmqctl set_permissions iridiumsbd ".*" ".*" ".*"
|
sudo rabbitmqctl set_permissions iridiumsbd ".*" ".*" ".*"
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Clone the [SatComInfrastructure](https://github.com/acfloria/SatComInfrastructure.git) repository:
|
5. Clone the [SatComInfrastructure](https://github.com/acfloria/SatComInfrastructure.git) repository:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/acfloria/SatComInfrastructure.git
|
git clone https://github.com/acfloria/SatComInfrastructure.git
|
||||||
```
|
```
|
||||||
|
|
||||||
6. Go to the location of the _SatComInfrastructure_ repo and configure the broker's queues:
|
6. Go to the location of the _SatComInfrastructure_ repo and configure the broker's queues:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./setup_rabbit.py localhost iridiumsbd PWD
|
./setup_rabbit.py localhost iridiumsbd PWD
|
||||||
```
|
```
|
||||||
|
|
||||||
7. Verify the setup:
|
7. Verify the setup:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo rabbitmqctl list_queues
|
sudo rabbitmqctl list_queues
|
||||||
```
|
```
|
||||||
|
|
||||||
This should give you a list of 4 queues: `MO`, `MO_LOG`, `MT`, `MT_LOG`
|
This should give you a list of 4 queues: `MO`, `MO_LOG`, `MT`, `MT_LOG`
|
||||||
|
|
||||||
8. Edit the `relay.cfg` configuration file to reflect your settings.
|
8. Edit the `relay.cfg` configuration file to reflect your settings.
|
||||||
|
|
||||||
9. Start the relay script in the detached mode:
|
9. Start the relay script in the detached mode:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
screen -dm bash -c 'cd SatcomInfrastructure/; ./relay.py
|
screen -dm bash -c 'cd SatcomInfrastructure/; ./relay.py
|
||||||
```
|
```
|
||||||
|
|
||||||
Other instructions include:
|
Other instructions include:
|
||||||
|
|
||||||
@@ -178,15 +178,15 @@ To setup the ground station:
|
|||||||
|
|
||||||
1. Install the required python modules:
|
1. Install the required python modules:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo pip install pika tornado future
|
sudo pip install pika tornado future
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Clone the SatComInfrastructure repository:
|
2. Clone the SatComInfrastructure repository:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/acfloria/SatComInfrastructure.git
|
git clone https://github.com/acfloria/SatComInfrastructure.git
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Edit the **udp2rabbit.cfg** configuration file to reflect your settings.
|
3. Edit the **udp2rabbit.cfg** configuration file to reflect your settings.
|
||||||
|
|
||||||
@@ -194,20 +194,20 @@ To setup the ground station:
|
|||||||
|
|
||||||
5. Add a UDP connection in QGC with the parameters:
|
5. Add a UDP connection in QGC with the parameters:
|
||||||
|
|
||||||
- Listening port: 10000
|
- Listening port: 10000
|
||||||
- Target hosts: 127.0.0.1:10001
|
- Target hosts: 127.0.0.1:10001
|
||||||
- High Latency: checked
|
- High Latency: checked
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 验证
|
### 验证
|
||||||
|
|
||||||
1. Open a terminal on the ground station computer and change to the location of the _SatComInfrastructure_ repository.
|
1. Open a terminal on the ground station computer and change to the location of the _SatComInfrastructure_ repository.
|
||||||
Then start the **udp2rabbit.py** script:
|
Then start the **udp2rabbit.py** script:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./udp2rabbit.py
|
./udp2rabbit.py
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Send a test message from [RockBlock Account](https://rockblock.rock7.com/Operations) to the created delivery group in the `Test Delivery Groups` tab.
|
2. Send a test message from [RockBlock Account](https://rockblock.rock7.com/Operations) to the created delivery group in the `Test Delivery Groups` tab.
|
||||||
|
|
||||||
@@ -218,37 +218,37 @@ If in the terminal where the `udp2rabbit.py` script is running within a couple o
|
|||||||
## Running the System
|
## Running the System
|
||||||
|
|
||||||
1. Start _QGroundControl_.
|
1. Start _QGroundControl_.
|
||||||
Manually connect the high latency link first, then the regular telemetry link:
|
Manually connect the high latency link first, then the regular telemetry link:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
2. Open a terminal on the ground station computer and change to the location of the _SatComInfrastructure_ repository.
|
2. Open a terminal on the ground station computer and change to the location of the _SatComInfrastructure_ repository.
|
||||||
Then start the **udp2rabbit.py** script:
|
Then start the **udp2rabbit.py** script:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./udp2rabbit.py
|
./udp2rabbit.py
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Power up the vehicle.
|
3. Power up the vehicle.
|
||||||
|
|
||||||
4. Wait until the first `HIGH_LATENCY2` message is received on QGC.
|
4. Wait until the first `HIGH_LATENCY2` message is received on QGC.
|
||||||
This can be checked either using the _MAVLink Inspector_ widget or on the toolbar with the _LinkIndicator_.
|
This can be checked either using the _MAVLink Inspector_ widget or on the toolbar with the _LinkIndicator_.
|
||||||
If more than one link is connected to the active vehicle the _LinkIndicator_ shows all of them by clicking on the name of the shown link:
|
If more than one link is connected to the active vehicle the _LinkIndicator_ shows all of them by clicking on the name of the shown link:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
The link indicator always shows the name of the priority link.
|
The link indicator always shows the name of the priority link.
|
||||||
|
|
||||||
5. The satellite communication system is now ready to use.
|
5. The satellite communication system is now ready to use.
|
||||||
The priority link, which is the link over which commands are send, is determined the following ways:
|
The priority link, which is the link over which commands are send, is determined the following ways:
|
||||||
|
|
||||||
- If no link is commanded by the user a regular radio telemetry link is preferred over the high latency link.
|
- If no link is commanded by the user a regular radio telemetry link is preferred over the high latency link.
|
||||||
- The autopilot and QGC will fall back from the regular radio telemetry to the high latency link if the vehicle is armed and the radio telemetry link is lost (no MAVLink messages received for a certain time).
|
- The autopilot and QGC will fall back from the regular radio telemetry to the high latency link if the vehicle is armed and the radio telemetry link is lost (no MAVLink messages received for a certain time).
|
||||||
As soon as the radio telemetry link is regained QGC and the autopilot will switch back to it.
|
As soon as the radio telemetry link is regained QGC and the autopilot will switch back to it.
|
||||||
- The user can select a priority link over the `LinkIndicator` on the toolbar.
|
- The user can select a priority link over the `LinkIndicator` on the toolbar.
|
||||||
This link is kept as the priority link as long as this link is active or the user selects another priority link:
|
This link is kept as the priority link as long as this link is active or the user selects another priority link:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 故障处理
|
## 故障处理
|
||||||
|
|
||||||
|
|||||||
@@ -797,3 +797,4 @@ div.frame_variant td, div.frame_variant th {
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ The GPS/compass should be [mounted on the frame](../assembly/mount_gps_compass.m
|
|||||||

|

|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
Pixhawk V6X<sup>&reg;</sup> is not compatible with NEO V2 GPS built-in buzzer: you should use [NEO3/NEO 3Pro](https://store.cuav.net/shop/neo-3/) instead.
|
Pixhawk V6X<sup>®</sup> is not compatible with NEO V2 GPS built-in buzzer: you should use [NEO3/NEO 3Pro](https://store.cuav.net/shop/neo-3/) instead.
|
||||||
The GPS module's integrated safety switch is enabled _by default_ (when enabled, PX4 will not let you arm the vehicle).
|
The GPS module's integrated safety switch is enabled _by default_ (when enabled, PX4 will not let you arm the vehicle).
|
||||||
To disable the safety press and hold the safety switch for 1 second.
|
To disable the safety press and hold the safety switch for 1 second.
|
||||||
You can press the safety switch again to enable safety and disarm the vehicle (this can be useful if, for whatever reason, you are unable to disarm the vehicle from your remote control or ground station).
|
You can press the safety switch again to enable safety and disarm the vehicle (this can be useful if, for whatever reason, you are unable to disarm the vehicle from your remote control or ground station).
|
||||||
|
|||||||
@@ -32,4 +32,4 @@ Flight Control boards with in-built accelerometers or gyros are sensitive to vib
|
|||||||
一些可能对您有用的参考资料:
|
一些可能对您有用的参考资料:
|
||||||
|
|
||||||
- [An Introduction to Shock & Vibration Response Spectra, Tom Irvine](http://www.vibrationdata.com/tutorials2/srs_intr.pdf) (free paper)
|
- [An Introduction to Shock & Vibration Response Spectra, Tom Irvine](http://www.vibrationdata.com/tutorials2/srs_intr.pdf) (free paper)
|
||||||
- [Structural Dynamics and Vibration in Practice - An Engineering Handbook, Douglas Thorby](https://books.google.ch/books?id=PwzDuWDc8AgC\&printsec=frontcover) (preview).
|
- Structural Dynamics and Vibration in Practice - An Engineering Handbook, Douglas Thorby (preview).
|
||||||
|
|||||||
@@ -188,16 +188,16 @@ The following sections are out of date and need retesting.
|
|||||||
|
|
||||||
1. On the PX4 console:
|
1. On the PX4 console:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
camera_trigger test
|
camera_trigger test
|
||||||
```
|
```
|
||||||
|
|
||||||
2. From _QGroundControl_:
|
2. From _QGroundControl_:
|
||||||
|
|
||||||
Click on **Trigger Camera** in the main instrument panel.
|
Click on **Trigger Camera** in the main instrument panel.
|
||||||
These shots are not logged or counted for geotagging.
|
These shots are not logged or counted for geotagging.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Sony QX-1 example (Photogrammetry)
|
## Sony QX-1 example (Photogrammetry)
|
||||||
|
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ PX4 重新使用与自驾仪相同的系统 ID 和组件 ID [MAV_COMP_ID_ALL](ht
|
|||||||
|
|
||||||
1. 修改一个未使用的 `MAV_n_CONFIG` 参数,例如[MAV_2_CONFIG](../advanced_config/parameter_reference.md#MAV_2_CONFIG),使其分配给相机连接的端口。
|
1. 修改一个未使用的 `MAV_n_CONFIG` 参数,例如[MAV_2_CONFIG](../advanced_config/parameter_reference.md#MAV_2_CONFIG),使其分配给相机连接的端口。
|
||||||
2. 将对应的 [MAV_2_MODE](../advanced_config/parameter_reference.md#MAV_2_MODE) 设置为 `2` (板载)。
|
2. 将对应的 [MAV_2_MODE](../advanced_config/parameter_reference.md#MAV_2_MODE) 设置为 `2` (板载)。
|
||||||
这确保正确的 MAVLink 消息集被发出和转发。
|
这确保正确的 MAVLink 消息集被发出和转发。
|
||||||
3. 您可能需要设置一些其他参数,取决于您的连接 - 例如波特率。
|
3. 您可能需要设置一些其他参数,取决于您的连接 - 例如波特率。
|
||||||
|
|
||||||
然后按照其用户指南中的建议连接和配置相机。
|
然后按照其用户指南中的建议连接和配置相机。
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ The linked document explains how, but in summary:
|
|||||||
|
|
||||||
1. Modify an unused `MAV_n_CONFIG` parameter, such as [MAV_2_CONFIG](../advanced_config/parameter_reference.md#MAV_2_CONFIG), so that it is assigned to port to which you connected the camera/companion computer.
|
1. Modify an unused `MAV_n_CONFIG` parameter, such as [MAV_2_CONFIG](../advanced_config/parameter_reference.md#MAV_2_CONFIG), so that it is assigned to port to which you connected the camera/companion computer.
|
||||||
2. 将对应的 [MAV_2_MODE](../advanced_config/parameter_reference.md#MAV_2_MODE) 设置为 `2` (板载)。
|
2. 将对应的 [MAV_2_MODE](../advanced_config/parameter_reference.md#MAV_2_MODE) 设置为 `2` (板载)。
|
||||||
This ensures that the right set of MAVLink messages are emitted for a companion computer (or camera).
|
This ensures that the right set of MAVLink messages are emitted for a companion computer (or camera).
|
||||||
3. Set [MAV_2_FORWARD](../advanced_config/parameter_reference.md#MAV_2_FORWARD) to enable forwarding of communications from the port to other ports, such as the one that is connected to the ground station.
|
3. Set [MAV_2_FORWARD](../advanced_config/parameter_reference.md#MAV_2_FORWARD) to enable forwarding of communications from the port to other ports, such as the one that is connected to the ground station.
|
||||||
4. You may need to set some of the other parameters, depending on your connection type and any particular requirements of the camera on the expected baud rate, and so on.
|
4. You may need to set some of the other parameters, depending on your connection type and any particular requirements of the camera on the expected baud rate, and so on.
|
||||||
|
|
||||||
|
|||||||
@@ -69,15 +69,15 @@ To install the RPi CM4 companion computer:
|
|||||||
|
|
||||||
1. Disconnect the `FAN` wiring.
|
1. Disconnect the `FAN` wiring.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
2. Remove these 4 screws on the back side of the baseboard.
|
2. Remove these 4 screws on the back side of the baseboard.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
3. Remove the baseboard case, install the CM4, and use the 4 screws to attach it (as shown):
|
3. Remove the baseboard case, install the CM4, and use the 4 screws to attach it (as shown):
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
4. Reattach the cover.
|
4. Reattach the cover.
|
||||||
|
|
||||||
@@ -115,29 +115,29 @@ To flash a RPi image onto EMMC.
|
|||||||
|
|
||||||
1. Switch Dip-Switch to `RPI`.
|
1. Switch Dip-Switch to `RPI`.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
2. Connect computer to USB-C _CM4 Slave_ port used to power & flash the RPi.
|
2. Connect computer to USB-C _CM4 Slave_ port used to power & flash the RPi.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
3. Get `usbboot`, build it and run it.
|
3. Get `usbboot`, build it and run it.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt install libusb-1.0-0-dev
|
sudo apt install libusb-1.0-0-dev
|
||||||
git clone --depth=1 https://github.com/raspberrypi/usbboot
|
git clone --depth=1 https://github.com/raspberrypi/usbboot
|
||||||
cd usbboot
|
cd usbboot
|
||||||
make
|
make
|
||||||
sudo ./rpiboot
|
sudo ./rpiboot
|
||||||
```
|
```
|
||||||
|
|
||||||
4. You can now install your preferred Linux distro using The `rpi-imager`.
|
4. You can now install your preferred Linux distro using The `rpi-imager`.
|
||||||
Make sure you add WiFi and SSH settings (hidden behind the gear/advanced symbol).
|
Make sure you add WiFi and SSH settings (hidden behind the gear/advanced symbol).
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt install rpi-imager
|
sudo apt install rpi-imager
|
||||||
rpi-imager
|
rpi-imager
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Once done, unplugging USB-C CM4 Slave (this will unmount the volumes, and power off the CM4).
|
5. Once done, unplugging USB-C CM4 Slave (this will unmount the volumes, and power off the CM4).
|
||||||
|
|
||||||
@@ -146,8 +146,8 @@ To flash a RPi image onto EMMC.
|
|||||||
7. Power on CM4 by providing power to USB-C CM4 Slave port.
|
7. Power on CM4 by providing power to USB-C CM4 Slave port.
|
||||||
|
|
||||||
8. To check if it's booting/working you can either:
|
8. To check if it's booting/working you can either:
|
||||||
- Check there is HDMI output
|
- Check there is HDMI output
|
||||||
- Connect via SSH (if set up in rpi-imager, and WiFi is available).
|
- Connect via SSH (if set up in rpi-imager, and WiFi is available).
|
||||||
|
|
||||||
## Configure PX4 to CM4 MAVLink Serial Connection
|
## Configure PX4 to CM4 MAVLink Serial Connection
|
||||||
|
|
||||||
@@ -167,13 +167,13 @@ To enable this MAVLink instance on the FC:
|
|||||||
|
|
||||||
1. Connect a computer running QGroundControl via USB Type C port on the baseboard labeled `FC`
|
1. Connect a computer running QGroundControl via USB Type C port on the baseboard labeled `FC`
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
2. [Set the parameters](../advanced_config/parameters.md):
|
2. [Set the parameters](../advanced_config/parameters.md):
|
||||||
|
|
||||||
- `MAV_1_CONFIG` = `102`
|
- `MAV_1_CONFIG` = `102`
|
||||||
- `MAV_1_MODE = 2`
|
- `MAV_1_MODE = 2`
|
||||||
- `SER_TEL2_BAUD` = `921600`
|
- `SER_TEL2_BAUD` = `921600`
|
||||||
|
|
||||||
3. Reboot the FC.
|
3. Reboot the FC.
|
||||||
|
|
||||||
@@ -185,13 +185,13 @@ On the RPi side:
|
|||||||
|
|
||||||
2. Enable the RPi serial port by running `RPi-config`
|
2. Enable the RPi serial port by running `RPi-config`
|
||||||
|
|
||||||
- Go to `3 Interface Options`, then `I6 Serial Port`.
|
- Go to `3 Interface Options`, then `I6 Serial Port`.
|
||||||
Then choose:
|
Then choose:
|
||||||
- `login shell accessible over serial → No`
|
- `login shell accessible over serial → No`
|
||||||
- `serial port hardware enabled` → `Yes`
|
- `serial port hardware enabled` → `Yes`
|
||||||
|
|
||||||
3. Finish, and reboot.
|
3. Finish, and reboot.
|
||||||
This will add `enable_uart=1` to `/boot/config.txt`, and remove `console=serial0,115200` from `/boot/cmdline.txt`.
|
This will add `enable_uart=1` to `/boot/config.txt`, and remove `console=serial0,115200` from `/boot/cmdline.txt`.
|
||||||
|
|
||||||
4. Now MAVLink traffic should be available on `/dev/serial0` at a baudrate of 921600.
|
4. Now MAVLink traffic should be available on `/dev/serial0` at a baudrate of 921600.
|
||||||
|
|
||||||
@@ -201,9 +201,9 @@ On the RPi side:
|
|||||||
|
|
||||||
2. Install MAVSDK Python:
|
2. Install MAVSDK Python:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
python3 -m pip install mavsdk
|
python3 -m pip install mavsdk
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Copy an example from the [MAVSDK-Python examples](https://github.com/mavlink/MAVSDK-Python/tree/main/examples).
|
3. Copy an example from the [MAVSDK-Python examples](https://github.com/mavlink/MAVSDK-Python/tree/main/examples).
|
||||||
|
|
||||||
@@ -247,7 +247,7 @@ Note that we could have used WiFi for the link, but by setting up a dedicated ro
|
|||||||
|
|
||||||
To set up a local ethernet connection between CM4 and the flight computer, the two Ethernet ports need to be connected using the provided 8 pin to 4 pin connector.
|
To set up a local ethernet connection between CM4 and the flight computer, the two Ethernet ports need to be connected using the provided 8 pin to 4 pin connector.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
The pinout of the cable is:
|
The pinout of the cable is:
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ In most cases the accessible hardware serial ports already have some function (m
|
|||||||
A safe and easy to set up option is to use an FTDI Chip USB-to-serial adapter board to connect from `TELEM2` on the Pixhawk to the USB port on the companion computer.
|
A safe and easy to set up option is to use an FTDI Chip USB-to-serial adapter board to connect from `TELEM2` on the Pixhawk to the USB port on the companion computer.
|
||||||
The `TELEM2` to FTDI wiring map is shown below.
|
The `TELEM2` to FTDI wiring map is shown below.
|
||||||
|
|
||||||
| TELEM2 | | FTDI | &nbsp; |
|
| TELEM2 | | FTDI | |
|
||||||
| ------ | ---------------------------- | ---- | -------------------------------- |
|
| ------ | ---------------------------- | ---- | -------------------------------- |
|
||||||
| 1 | + 5v (红色) | | DO NOT CONNECT! |
|
| 1 | + 5v (红色) | | DO NOT CONNECT! |
|
||||||
| 2 | 2 | 5 | 5 |
|
| 2 | 2 | 5 | 5 |
|
||||||
|
|||||||
@@ -132,50 +132,50 @@ Enter the following commands (in sequence) a terminal to configure Ubuntu for RP
|
|||||||
|
|
||||||
1. Install `raspi-config`:
|
1. Install `raspi-config`:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt upgrade
|
sudo apt upgrade
|
||||||
sudo apt-get install raspi-config
|
sudo apt-get install raspi-config
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Open `raspi-config`:
|
2. Open `raspi-config`:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo raspi-config
|
sudo raspi-config
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Go to the **Interface Option** and then click **Serial Port**.
|
3. Go to the **Interface Option** and then click **Serial Port**.
|
||||||
|
|
||||||
- Select **No** to disable serial login shell.
|
- Select **No** to disable serial login shell.
|
||||||
- Select **Yes** to enable the serial interface.
|
- Select **Yes** to enable the serial interface.
|
||||||
- Click **Finish** and restart the RPi.
|
- Click **Finish** and restart the RPi.
|
||||||
|
|
||||||
4. Open the firmware boot configuration file in the `nano` editor on RPi:
|
4. Open the firmware boot configuration file in the `nano` editor on RPi:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo nano /boot/firmware/config.txt
|
sudo nano /boot/firmware/config.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Append the following text to the end of the file (after the last line):
|
5. Append the following text to the end of the file (after the last line):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
enable_uart=1
|
enable_uart=1
|
||||||
dtoverlay=disable-bt
|
dtoverlay=disable-bt
|
||||||
```
|
```
|
||||||
|
|
||||||
6. Then save the file and restart the RPi.
|
6. Then save the file and restart the RPi.
|
||||||
|
|
||||||
- In `nano` you can save the file using the following sequence of keyboard shortcuts: **ctrl+x**, **ctrl+y**, **Enter**.
|
- In `nano` you can save the file using the following sequence of keyboard shortcuts: **ctrl+x**, **ctrl+y**, **Enter**.
|
||||||
|
|
||||||
7. Check that the serial port is available.
|
7. Check that the serial port is available.
|
||||||
In this case we use the following terminal commands to list the serial devices:
|
In this case we use the following terminal commands to list the serial devices:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd /
|
cd /
|
||||||
ls /dev/ttyAMA0
|
ls /dev/ttyAMA0
|
||||||
```
|
```
|
||||||
|
|
||||||
The result of the command should include the RX/TX connection `/dev/ttyAMA0` (note that this serial port is also available as `/dev/serial0`).
|
The result of the command should include the RX/TX connection `/dev/ttyAMA0` (note that this serial port is also available as `/dev/serial0`).
|
||||||
|
|
||||||
The RPi is now setup to work with RPi and communicate using the `/dev/ttyAMA0` serial port.
|
The RPi is now setup to work with RPi and communicate using the `/dev/ttyAMA0` serial port.
|
||||||
Note that we'll install more software in the following sections to work with MAVLink and ROS 2.
|
Note that we'll install more software in the following sections to work with MAVLink and ROS 2.
|
||||||
@@ -199,39 +199,39 @@ First check the Pixhawk `TELEM 2` configuration:
|
|||||||
2. Open QGroundControl (the vehicle should connect).
|
2. Open QGroundControl (the vehicle should connect).
|
||||||
3. [Check/change the following parameters](../advanced_config/parameters.md) in QGroundControl:
|
3. [Check/change the following parameters](../advanced_config/parameters.md) in QGroundControl:
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
MAV_1_CONFIG = TELEM2
|
MAV_1_CONFIG = TELEM2
|
||||||
UXRCE_DDS_CFG = 0 (Disabled)
|
UXRCE_DDS_CFG = 0 (Disabled)
|
||||||
SER_TEL2_BAUD = 57600
|
SER_TEL2_BAUD = 57600
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that the parameters may already be set appropriately.
|
Note that the parameters may already be set appropriately.
|
||||||
For information about how serial ports and MAVLink configuration work see [Serial Port Configuration](../peripherals/serial_configuration.md) and [MAVLink Peripherals](../peripherals/mavlink_peripherals.md).
|
For information about how serial ports and MAVLink configuration work see [Serial Port Configuration](../peripherals/serial_configuration.md) and [MAVLink Peripherals](../peripherals/mavlink_peripherals.md).
|
||||||
|
|
||||||
Then install setup MAVProxy on the RPi using the following terminal commands:
|
Then install setup MAVProxy on the RPi using the following terminal commands:
|
||||||
|
|
||||||
1. Install MAVProxy:
|
1. Install MAVProxy:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt install python3-pip
|
sudo apt install python3-pip
|
||||||
sudo pip3 install mavproxy
|
sudo pip3 install mavproxy
|
||||||
sudo apt remove modemmanager
|
sudo apt remove modemmanager
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Run MAVProxy, setting the port to connect to `/dev/ttyAMA0` and the baud rate to match the PX4:
|
2. Run MAVProxy, setting the port to connect to `/dev/ttyAMA0` and the baud rate to match the PX4:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo mavproxy.py --master=/dev/serial0 --baudrate 57600
|
sudo mavproxy.py --master=/dev/serial0 --baudrate 57600
|
||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
Note that above we used `/dev/serial0`, but we could equally well have used `/dev/ttyAMA0`.
|
Note that above we used `/dev/serial0`, but we could equally well have used `/dev/ttyAMA0`.
|
||||||
If we were connecting via USB then we would instead set the port as `/dev/ttyACM0`:
|
If we were connecting via USB then we would instead set the port as `/dev/ttyACM0`:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo chmod a+rw /dev/ttyACM0
|
sudo chmod a+rw /dev/ttyACM0
|
||||||
sudo mavproxy.py --master=/dev/ttyACM0 --baudrate 57600
|
sudo mavproxy.py --master=/dev/ttyACM0 --baudrate 57600
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
@@ -259,27 +259,27 @@ The configuration steps are:
|
|||||||
|
|
||||||
2. [Check/change the following parameters](../advanced_config/parameters.md) in QGroundControl:
|
2. [Check/change the following parameters](../advanced_config/parameters.md) in QGroundControl:
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
MAV_1_CONFIG = 0 (Disabled)
|
MAV_1_CONFIG = 0 (Disabled)
|
||||||
UXRCE_DDS_CFG = 102 (TELEM2)
|
UXRCE_DDS_CFG = 102 (TELEM2)
|
||||||
SER_TEL2_BAUD = 921600
|
SER_TEL2_BAUD = 921600
|
||||||
```
|
```
|
||||||
|
|
||||||
[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.
|
[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`.
|
You could similarly configure a connection to `TELEM1` using either `MAV_1_CONFIG` or `MAV_0_CONFIG`.
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
You will need to reboot the flight controller to apply any changes to these parameters.
|
You will need to reboot the flight controller to apply any changes to these parameters.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
3. Check that the [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) module is now running.
|
3. Check that the [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) module is now running.
|
||||||
YOu can do this by running the following command in the QGroundControl [MAVLink Console](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/analyze_view/mavlink_console.html):
|
YOu can do this by running the following command in the QGroundControl [MAVLink Console](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/analyze_view/mavlink_console.html):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
uxrce_dds_client status
|
uxrce_dds_client status
|
||||||
```
|
```
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
If the client module is not running you can start it manually in the MAVLink console:
|
If the client module is not running you can start it manually in the MAVLink console:
|
||||||
@@ -300,32 +300,32 @@ The steps to setup ROS 2 and the Micro XRCE-DDS Agent on the RPi are:
|
|||||||
|
|
||||||
2. Install the git using the RPi terminal:
|
2. Install the git using the RPi terminal:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt install git
|
sudo apt install git
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Install the uXRCE_DDS agent:
|
3. Install the uXRCE_DDS agent:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
|
git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
|
||||||
cd Micro-XRCE-DDS-Agent
|
cd Micro-XRCE-DDS-Agent
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake ..
|
cmake ..
|
||||||
make
|
make
|
||||||
sudo make install
|
sudo make install
|
||||||
sudo ldconfig /usr/local/lib/
|
sudo ldconfig /usr/local/lib/
|
||||||
```
|
```
|
||||||
|
|
||||||
See [uXRCE-DDS > Micro XRCE-DDS Agent Installation](../middleware/uxrce_dds.md#micro-xrce-dds-agent-installation) for alternative ways of installing the agent.
|
See [uXRCE-DDS > Micro XRCE-DDS Agent Installation](../middleware/uxrce_dds.md#micro-xrce-dds-agent-installation) for alternative ways of installing the agent.
|
||||||
|
|
||||||
4. Start the agent in the RPi terminal:
|
4. Start the agent in the RPi terminal:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo MicroXRCEAgent serial --dev /dev/serial0 -b 921600
|
sudo MicroXRCEAgent serial --dev /dev/serial0 -b 921600
|
||||||
```
|
```
|
||||||
|
|
||||||
Note how we use the serial port set up earlier and the same baud rate as for PX4.
|
Note how we use the serial port set up earlier and the same baud rate as for PX4.
|
||||||
|
|
||||||
Now that both the agent and client are running, you should see activity on both the MAVLink console and the RPi terminal.
|
Now that both the agent and client are running, you should see activity on both the MAVLink console and the RPi terminal.
|
||||||
You can view the available topics using the following command on the RPi:
|
You can view the available topics using the following command on the RPi:
|
||||||
|
|||||||
@@ -82,18 +82,18 @@ If you use a special "very" high power cards from Taobao/Aliexpress then you MUS
|
|||||||
5. Setup camera pipeline. Open `/etc/systemd/system/fpv-camera.service` and uncomment pipeline according to your camera (PI camera or Logitech camera)
|
5. Setup camera pipeline. Open `/etc/systemd/system/fpv-camera.service` and uncomment pipeline according to your camera (PI camera or Logitech camera)
|
||||||
6. Open `/etc/wifibroadcast.cfg` and configure WiFi channel according to your antenna setup (or use default #165 for 5.8GHz)
|
6. Open `/etc/wifibroadcast.cfg` and configure WiFi channel according to your antenna setup (or use default #165 for 5.8GHz)
|
||||||
7. Configure PX4 to output telemetry stream at speed 1500 Kbps (other UART speeds doesn't match well to RPi frequency dividers).
|
7. Configure PX4 to output telemetry stream at speed 1500 Kbps (other UART speeds doesn't match well to RPi frequency dividers).
|
||||||
Connect Pixhawk UART to Raspberry Pi UART.
|
Connect Pixhawk UART to Raspberry Pi UART.
|
||||||
In `/etc/wifibroadcast.cfg` uncomment `peer = 'serial:ttyS0:1500000'` in `[drone_mavlink]` section.
|
In `/etc/wifibroadcast.cfg` uncomment `peer = 'serial:ttyS0:1500000'` in `[drone_mavlink]` section.
|
||||||
|
|
||||||
### Using a Linux Laptop as GCS (Harder than using a RPi)
|
### Using a Linux Laptop as GCS (Harder than using a RPi)
|
||||||
|
|
||||||
1. On **ground** Linux development computer:
|
1. On **ground** Linux development computer:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt install libpcap-dev libsodium-dev python3-all python3-twisted
|
sudo apt install libpcap-dev libsodium-dev python3-all python3-twisted
|
||||||
git clone -b stable https://github.com/svpcom/wfb-ng.git
|
git clone -b stable https://github.com/svpcom/wfb-ng.git
|
||||||
cd wfb-ng && make deb && sudo apt install ./deb_dist/wfb-ng*.deb
|
cd wfb-ng && make deb && sudo apt install ./deb_dist/wfb-ng*.deb
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Follow the [Setup HOWTO](https://github.com/svpcom/wfb-ng/wiki/Setup-HOWTO) to complete installation
|
2. Follow the [Setup HOWTO](https://github.com/svpcom/wfb-ng/wiki/Setup-HOWTO) to complete installation
|
||||||
|
|
||||||
|
|||||||
@@ -51,54 +51,54 @@ After setting up the PX4 development environment, follow these steps to install
|
|||||||
|
|
||||||
1. Download the source code of the PX4 Bootloader:
|
1. Download the source code of the PX4 Bootloader:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/PX4/Bootloader.git
|
git clone https://github.com/PX4/Bootloader.git
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Navigate into the top directory of the source code and compile it using:
|
2. Navigate into the top directory of the source code and compile it using:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make crazyflie_bl
|
make crazyflie_bl
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Put the Crazyflie 2.0 into DFU mode by following these steps:
|
3. Put the Crazyflie 2.0 into DFU mode by following these steps:
|
||||||
- Ensure it is initially unpowered.
|
- Ensure it is initially unpowered.
|
||||||
- Hold down the reset button (see figure below...).
|
- Hold down the reset button (see figure below...).
|
||||||

|

|
||||||
- Plug into computer's USB port.
|
- Plug into computer's USB port.
|
||||||
- After a second, the blue LED should start blinking and after 5 seconds should start blinking faster.
|
- After a second, the blue LED should start blinking and after 5 seconds should start blinking faster.
|
||||||
- Release button.
|
- Release button.
|
||||||
|
|
||||||
4. Install _dfu-util_:
|
4. Install _dfu-util_:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install dfu-util
|
sudo apt-get install dfu-util
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Flash bootloader using _dfu-util_ and unplug Crazyflie 2.0 when done:
|
5. Flash bootloader using _dfu-util_ and unplug Crazyflie 2.0 when done:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D ./build/crazyflie_bl/crazyflie_bl.bin
|
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D ./build/crazyflie_bl/crazyflie_bl.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
When powering on the Crazyflie 2.0 the yellow LED should blink.
|
When powering on the Crazyflie 2.0 the yellow LED should blink.
|
||||||
|
|
||||||
6. Download the source code of the PX4 autopilot:
|
6. Download the source code of the PX4 autopilot:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/PX4/PX4-Autopilot.git
|
git clone https://github.com/PX4/PX4-Autopilot.git
|
||||||
```
|
```
|
||||||
|
|
||||||
7. Navigate into the top directory of the source code and compile it using:
|
7. Navigate into the top directory of the source code and compile it using:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make bitcraze_crazyflie_default upload
|
make bitcraze_crazyflie_default upload
|
||||||
```
|
```
|
||||||
|
|
||||||
8. When prompted to plug in device, plug in Crazyflie 2.0.
|
8. When prompted to plug in device, plug in Crazyflie 2.0.
|
||||||
The yellow LED should start blinking indicating bootloader mode.
|
The yellow LED should start blinking indicating bootloader mode.
|
||||||
Then the red LED should turn on indicating that the flashing process has started.
|
Then the red LED should turn on indicating that the flashing process has started.
|
||||||
|
|
||||||
9. Wait for completion.
|
9. Wait for completion.
|
||||||
|
|
||||||
|
|||||||
@@ -64,56 +64,56 @@ After setting up the PX4 development environment, follow these steps to install
|
|||||||
|
|
||||||
1. Download the source code of the PX4 Bootloader:
|
1. Download the source code of the PX4 Bootloader:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/PX4/Bootloader.git --recurse-submodules
|
git clone https://github.com/PX4/Bootloader.git --recurse-submodules
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Navigate into the top directory of the source code and compile it using:
|
2. Navigate into the top directory of the source code and compile it using:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make crazyflie21_bl
|
make crazyflie21_bl
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Put the Crazyflie 2.1 into DFU mode by following these steps:
|
3. Put the Crazyflie 2.1 into DFU mode by following these steps:
|
||||||
- Ensure it is initially unpowered.
|
- Ensure it is initially unpowered.
|
||||||
- Ensure battery is disconnected.
|
- Ensure battery is disconnected.
|
||||||
- Hold down the reset button (see figure below...).
|
- Hold down the reset button (see figure below...).
|
||||||

|

|
||||||
- Plug into computer's USB port.
|
- Plug into computer's USB port.
|
||||||
- After a second, the blue LED should start blinking and after 5 seconds should start blinking faster.
|
- After a second, the blue LED should start blinking and after 5 seconds should start blinking faster.
|
||||||
- Release button.
|
- Release button.
|
||||||
|
|
||||||
4. Install _dfu-util_:
|
4. Install _dfu-util_:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install dfu-util
|
sudo apt-get install dfu-util
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Flash bootloader using _dfu-util_ and unplug Crazyflie 2.1 when done:
|
5. Flash bootloader using _dfu-util_ and unplug Crazyflie 2.1 when done:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D ./build/crazyflie21_bl/crazyflie21_bl.bin
|
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D ./build/crazyflie21_bl/crazyflie21_bl.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
When powering on the Crazyflie 2.1 the yellow LED should blink.
|
When powering on the Crazyflie 2.1 the yellow LED should blink.
|
||||||
|
|
||||||
6. Download the source code of the PX4 autopilot:
|
6. Download the source code of the PX4 autopilot:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/PX4/PX4-Autopilot.git
|
git clone https://github.com/PX4/PX4-Autopilot.git
|
||||||
```
|
```
|
||||||
|
|
||||||
7. Navigate into the top directory of the source code and compile it using:
|
7. Navigate into the top directory of the source code and compile it using:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd PX4-Autopilot/
|
cd PX4-Autopilot/
|
||||||
make bitcraze_crazyflie21_default upload
|
make bitcraze_crazyflie21_default upload
|
||||||
```
|
```
|
||||||
|
|
||||||
8. When prompted to plug in device, plug in Crazyflie 2.1.
|
8. When prompted to plug in device, plug in Crazyflie 2.1.
|
||||||
The yellow LED should start blinking indicating bootloader mode.
|
The yellow LED should start blinking indicating bootloader mode.
|
||||||
Then the red LED should turn on indicating that the flashing process has started.
|
Then the red LED should turn on indicating that the flashing process has started.
|
||||||
|
|
||||||
9. Wait for completion.
|
9. Wait for completion.
|
||||||
|
|
||||||
@@ -124,20 +124,20 @@ After setting up the PX4 development environment, follow these steps to install
|
|||||||
1. Download the latest [Crazyflie 2.1 bootloader](https://github.com/bitcraze/crazyflie2-stm-bootloader/releases)
|
1. Download the latest [Crazyflie 2.1 bootloader](https://github.com/bitcraze/crazyflie2-stm-bootloader/releases)
|
||||||
|
|
||||||
2. Put the Crazyflie 2.1 into DFU mode by following these steps:
|
2. Put the Crazyflie 2.1 into DFU mode by following these steps:
|
||||||
- Ensure it is initially unpowered.
|
- Ensure it is initially unpowered.
|
||||||
- Ensure battery is disconnected.
|
- Ensure battery is disconnected.
|
||||||
- Hold down the reset button.
|
- Hold down the reset button.
|
||||||
- Plug into computer's USB port.
|
- Plug into computer's USB port.
|
||||||
- After a second, the blue LED should start blinking and after 5 seconds should start blinking faster.
|
- After a second, the blue LED should start blinking and after 5 seconds should start blinking faster.
|
||||||
- Release button.
|
- Release button.
|
||||||
|
|
||||||
3. Flash bootloader using _dfu-util_ and unplug Crazyflie 2.1 when done:
|
3. Flash bootloader using _dfu-util_ and unplug Crazyflie 2.1 when done:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D cf2loader-1.0.bin
|
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D cf2loader-1.0.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
When powering on the Crazyflie 2.1 the yellow LED should blink.
|
When powering on the Crazyflie 2.1 the yellow LED should blink.
|
||||||
|
|
||||||
4. Install the latest Bitcraze Crazyflie 2.1 Firmware using [this](https://www.bitcraze.io/documentation/tutorials/getting-started-with-crazyflie-2-x/#update-fw) tutorial.
|
4. Install the latest Bitcraze Crazyflie 2.1 Firmware using [this](https://www.bitcraze.io/documentation/tutorials/getting-started-with-crazyflie-2-x/#update-fw) tutorial.
|
||||||
|
|
||||||
|
|||||||
@@ -82,26 +82,26 @@ Follow this guide to bind your ELRS receiver to your transmitter.
|
|||||||
#### Setting up the Receiver
|
#### Setting up the Receiver
|
||||||
|
|
||||||
1. **Power On the Receiver**: Once your drone is powered on, you'll notice the ELRS receiver's blue LED flashing.
|
1. **Power On the Receiver**: Once your drone is powered on, you'll notice the ELRS receiver's blue LED flashing.
|
||||||
This is an indication that the receiver is on but has not yet established a connection with a transmitter.
|
This is an indication that the receiver is on but has not yet established a connection with a transmitter.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
2. **Enter Binding Mode**: To initiate binding, open a terminal and execute the `adb shell` and `voxl-elrs -bind` commands.
|
2. **Enter Binding Mode**: To initiate binding, open a terminal and execute the `adb shell` and `voxl-elrs -bind` commands.
|
||||||
You'll observe the receiver's LED switch to a flashing in a heartbeat pattern, signaling that it is now in binding mode.
|
You'll observe the receiver's LED switch to a flashing in a heartbeat pattern, signaling that it is now in binding mode.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
#### Setting up the Transmitter
|
#### Setting up the Transmitter
|
||||||
|
|
||||||
1. **Access the Menu**: On your Commando 8 radio transmitter included in the kit, press the left mode button to open the menu system.
|
1. **Access the Menu**: On your Commando 8 radio transmitter included in the kit, press the left mode button to open the menu system.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
2. **Navigate to ExpressLRS**: Use the right button to select the first menu entry, which should be "ExpressLRS."
|
2. **Navigate to ExpressLRS**: Use the right button to select the first menu entry, which should be "ExpressLRS."
|
||||||
|
|
||||||
3. **Find the Bind Option**: With the "ExpressLRS" option selected, scroll down to the bottom of the menu to locate the "Bind" section. This can be done by pressing the right button downwards until you reach the "Bind" option.
|
3. **Find the Bind Option**: With the "ExpressLRS" option selected, scroll down to the bottom of the menu to locate the "Bind" section. This can be done by pressing the right button downwards until you reach the "Bind" option.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
4. **Initiate Binding**: Select "Bind" to put the transmitter into binding mode. You will know the process has been successful when the transmitter emits a beep, indicating a successful bind.
|
4. **Initiate Binding**: Select "Bind" to put the transmitter into binding mode. You will know the process has been successful when the transmitter emits a beep, indicating a successful bind.
|
||||||
|
|
||||||
|
|||||||
@@ -42,17 +42,17 @@ This kit is still highly recommended for developing and testing vision solutions
|
|||||||
## Warnings and Notifications
|
## Warnings and Notifications
|
||||||
|
|
||||||
1. The kit is intended for computer vision projects that use a forward-facing camera (it does not have downward or rear-facing depth cameras).
|
1. The kit is intended for computer vision projects that use a forward-facing camera (it does not have downward or rear-facing depth cameras).
|
||||||
Consequently it can't be used (without modification) for testing features that require a downward-facing camera.
|
Consequently it can't be used (without modification) for testing features that require a downward-facing camera.
|
||||||
|
|
||||||
2. Obstacle avoidance in missions can only be tested when GPS is available (missions use GPS coordinates).
|
2. Obstacle avoidance in missions can only be tested when GPS is available (missions use GPS coordinates).
|
||||||
Collision prevention can be tested in position mode provided there is a good position lock from either GPS or optical flow.
|
Collision prevention can be tested in position mode provided there is a good position lock from either GPS or optical flow.
|
||||||
|
|
||||||
3. The port labeled `USB1` may jam the GPS if used with a _USB3_ peripheral (disable GPS-dependent functionality including missions).
|
3. The port labeled `USB1` may jam the GPS if used with a _USB3_ peripheral (disable GPS-dependent functionality including missions).
|
||||||
This is why the boot image is supplied on a _USB2.0_ memory stick.
|
This is why the boot image is supplied on a _USB2.0_ memory stick.
|
||||||
|
|
||||||
4. PX4 Vision v1 with ECN 010 or above (carrier board RC05 and up), the _UP Core_ can be powered by either the DC plug or with battery.
|
4. PX4 Vision v1 with ECN 010 or above (carrier board RC05 and up), the _UP Core_ can be powered by either the DC plug or with battery.
|
||||||
|
|
||||||
 
|
 
|
||||||
|
|
||||||
5. All PX4 Vision v1.5 _UP Core_ can be powered by either the DC plug or with battery.
|
5. All PX4 Vision v1.5 _UP Core_ can be powered by either the DC plug or with battery.
|
||||||
|
|
||||||
@@ -136,37 +136,37 @@ In addition, users will need ground station hardware/software:
|
|||||||
|
|
||||||
1. Attach a [compatible RC receiver](../getting_started/rc_transmitter_receiver.md#connecting-receivers) to the vehicle (not supplied with kit):
|
1. Attach a [compatible RC receiver](../getting_started/rc_transmitter_receiver.md#connecting-receivers) to the vehicle (not supplied with kit):
|
||||||
|
|
||||||
- Remove/unscrew the top plate (where the battery goes) using an H2.0 hex key tool.
|
- Remove/unscrew the top plate (where the battery goes) using an H2.0 hex key tool.
|
||||||
- [Connect the receiver to the flight controller](../assembly/quick_start_pixhawk4.md#radio-control).
|
- [Connect the receiver to the flight controller](../assembly/quick_start_pixhawk4.md#radio-control).
|
||||||
- Re-attach the top plate.
|
- Re-attach the top plate.
|
||||||
- Mount the RC receiver on the _UP Core_ carrier board plate at the back of the vehicle (use zipties or double-sided tape).
|
- Mount the RC receiver on the _UP Core_ carrier board plate at the back of the vehicle (use zipties or double-sided tape).
|
||||||
- Ensure the antennas are clear of any obstructions and electrically isolated from the frame (e.g. secure them under the carrier board or to the vehicle arms or legs).
|
- Ensure the antennas are clear of any obstructions and electrically isolated from the frame (e.g. secure them under the carrier board or to the vehicle arms or legs).
|
||||||
|
|
||||||
2. [Bind](../getting_started/rc_transmitter_receiver.md#binding) the RC ground and air units (if not already done).
|
2. [Bind](../getting_started/rc_transmitter_receiver.md#binding) the RC ground and air units (if not already done).
|
||||||
The binding procedure depends on the specific radio system used (read the receiver manual).
|
The binding procedure depends on the specific radio system used (read the receiver manual).
|
||||||
|
|
||||||
3. Raise the GPS mast to the vertical position and screw the cover onto the holder on the base plate. (Not required for v1.5)
|
3. Raise the GPS mast to the vertical position and screw the cover onto the holder on the base plate. (Not required for v1.5)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
4. Insert the pre-imaged USB2.0 stick from the kit into the _UP Core_ port labeled `USB1` (highlighted below).
|
4. Insert the pre-imaged USB2.0 stick from the kit into the _UP Core_ port labeled `USB1` (highlighted below).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
5. Power the vehicle with a fully charged battery.
|
5. Power the vehicle with a fully charged battery.
|
||||||
::: info
|
::: info
|
||||||
Ensure propellers are removed before connecting the battery.
|
Ensure propellers are removed before connecting the battery.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
6. Connect the ground station to the vehicle WiFi network (after a few seconds) using the following default credentials:
|
6. Connect the ground station to the vehicle WiFi network (after a few seconds) using the following default credentials:
|
||||||
|
|
||||||
- **SSID:** pixhawk4
|
- **SSID:** pixhawk4
|
||||||
- **Password:** pixhawk4
|
- **Password:** pixhawk4
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
WiFi network SSID, password, and other credentials may be changed after connecting (if desired), by using a web browser to open the URL: `http://192.168.4.1`.
|
WiFi network SSID, password, and other credentials may be changed after connecting (if desired), by using a web browser to open the URL: `http://192.168.4.1`.
|
||||||
The baud rate must not be changed from 921600.
|
The baud rate must not be changed from 921600.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -174,39 +174,39 @@ In addition, users will need ground station hardware/software:
|
|||||||
|
|
||||||
8. [Configure/calibrate](../config/index.md) the vehicle:
|
8. [Configure/calibrate](../config/index.md) the vehicle:
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
The vehicle should arrive pre-calibrated (e.g. with firmware, airframe, battery, and sensors all setup).
|
The vehicle should arrive pre-calibrated (e.g. with firmware, airframe, battery, and sensors all setup).
|
||||||
You will however need to calibrate the radio system (that you just connected) and it is often worth re-doing the compass calibration.
|
You will however need to calibrate the radio system (that you just connected) and it is often worth re-doing the compass calibration.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
- [Calibrate the Radio System](../config/radio.md)
|
- [Calibrate the Radio System](../config/radio.md)
|
||||||
- [Calibrate the Compass](../config/compass.md)
|
- [Calibrate the Compass](../config/compass.md)
|
||||||
|
|
||||||
9. (Optional) Configure a [Flight Mode selector switch](../config/flight_mode.md) on the remote controller.
|
9. (Optional) Configure a [Flight Mode selector switch](../config/flight_mode.md) on the remote controller.
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
Modes can also be changed using _QGroundControl_
|
Modes can also be changed using _QGroundControl_
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
We recommend RC controller switches are define for:
|
We recommend RC controller switches are define for:
|
||||||
|
|
||||||
- [Position Mode](../flight_modes_mc/position.md) - a safe manual flight mode that can be used to test collision prevention.
|
- [Position Mode](../flight_modes_mc/position.md) - a safe manual flight mode that can be used to test collision prevention.
|
||||||
- [Mission Mode](../flight_modes_mc/mission.md) - run missions and test obstacle avoidance.
|
- [Mission Mode](../flight_modes_mc/mission.md) - run missions and test obstacle avoidance.
|
||||||
- [Return Mode](../flight_modes_mc/return.md) - return vehicle safely to its launch point and land.
|
- [Return Mode](../flight_modes_mc/return.md) - return vehicle safely to its launch point and land.
|
||||||
|
|
||||||
10. Attach the propellers with the rotations as shown:
|
10. Attach the propellers with the rotations as shown:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
- The propellers directions can be determined from the labels: _6045_ (normal, counter-clockwise) and _6045_**R** (reversed, clockwise).
|
- The propellers directions can be determined from the labels: _6045_ (normal, counter-clockwise) and _6045_**R** (reversed, clockwise).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
- Screw down firmly using the provided propellor nuts:
|
- Screw down firmly using the provided propellor nuts:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Fly the Drone with Avoidance
|
## Fly the Drone with Avoidance
|
||||||
|
|
||||||
@@ -216,31 +216,31 @@ When the vehicle setup described above is complete:
|
|||||||
|
|
||||||
2. Wait until the boot sequence completes and the avoidance system has started (the vehicle will reject arming commands during boot).
|
2. Wait until the boot sequence completes and the avoidance system has started (the vehicle will reject arming commands during boot).
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
The boot/startup process takes around 1 minute from the supplied USB stick (or 30 seconds from [internal memory](#install_image_mission_computer)).
|
The boot/startup process takes around 1 minute from the supplied USB stick (or 30 seconds from [internal memory](#install_image_mission_computer)).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
3. Check that the avoidance system has started properly:
|
3. Check that the avoidance system has started properly:
|
||||||
|
|
||||||
- The _QGroundControl_ notification log displays the message: **Avoidance system connected**.
|
- The _QGroundControl_ notification log displays the message: **Avoidance system connected**.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
- A red laser is visible on the front of the _Structure Core_ camera.
|
- A red laser is visible on the front of the _Structure Core_ camera.
|
||||||
|
|
||||||
4. Wait for the GPS LED to turn green.
|
4. Wait for the GPS LED to turn green.
|
||||||
This means that the vehicle has a GPS fix and is ready to fly!
|
This means that the vehicle has a GPS fix and is ready to fly!
|
||||||
|
|
||||||
5. Connect the ground station to the vehicle WiFi network.
|
5. Connect the ground station to the vehicle WiFi network.
|
||||||
|
|
||||||
6. Find a safe outdoor location for flying, ideally with a tree or some other convenient obstacle for testing PX4 Vision.
|
6. Find a safe outdoor location for flying, ideally with a tree or some other convenient obstacle for testing PX4 Vision.
|
||||||
|
|
||||||
7. To test [collision prevention](../computer_vision/collision_prevention.md), enable [Position Mode](../flight_modes_mc/position.md) and fly manually towards an obstacle.
|
7. To test [collision prevention](../computer_vision/collision_prevention.md), enable [Position Mode](../flight_modes_mc/position.md) and fly manually towards an obstacle.
|
||||||
The vehicle should slow down and then stop within 6m of the obstacle (the distance can be [changed](../advanced_config/parameters.md) using the [CP_DIST](../advanced_config/parameter_reference.md#CP_DIST) parameter).
|
The vehicle should slow down and then stop within 6m of the obstacle (the distance can be [changed](../advanced_config/parameters.md) using the [CP_DIST](../advanced_config/parameter_reference.md#CP_DIST) parameter).
|
||||||
|
|
||||||
8. To test obstacle avoidance, create a mission where the path is blocked by an obstacle.
|
8. To test obstacle avoidance, create a mission where the path is blocked by an obstacle.
|
||||||
Then switch to [Mission Mode](../flight_modes_mc/mission.md) to run the mission, and observe the vehicle moving around the obstacle and then returning to the planned course.
|
Then switch to [Mission Mode](../flight_modes_mc/mission.md) to run the mission, and observe the vehicle moving around the obstacle and then returning to the planned course.
|
||||||
|
|
||||||
## Development using the Kit
|
## Development using the Kit
|
||||||
|
|
||||||
@@ -285,22 +285,22 @@ To flash the USB image to the _UP Core_:
|
|||||||
2. [Login to the companion computer](#login_mission_computer) (as described above).
|
2. [Login to the companion computer](#login_mission_computer) (as described above).
|
||||||
|
|
||||||
3. Open a terminal and run the following command to copy the image onto internal memory (eMMC).
|
3. Open a terminal and run the following command to copy the image onto internal memory (eMMC).
|
||||||
The terminal will prompt for a number of responses during the flashing process.
|
The terminal will prompt for a number of responses during the flashing process.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ~/catkin_ws/src/px4vision_ros/tools
|
cd ~/catkin_ws/src/px4vision_ros/tools
|
||||||
sudo ./flash_emmc.sh
|
sudo ./flash_emmc.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
All information saved in the _UP Core_ computer will be removed when executing this script.
|
All information saved in the _UP Core_ computer will be removed when executing this script.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
4. Pull out the USB stick.
|
4. Pull out the USB stick.
|
||||||
|
|
||||||
5. Restart the vehicle.
|
5. Restart the vehicle.
|
||||||
The _UP Core_ computer will now boot from internal memory (eMMC).
|
The _UP Core_ computer will now boot from internal memory (eMMC).
|
||||||
|
|
||||||
### Boot the Companion Computer
|
### Boot the Companion Computer
|
||||||
|
|
||||||
@@ -324,24 +324,24 @@ To login to the companion computer:
|
|||||||
|
|
||||||
1. Connect a keyboard and mouse to the _UP Core_ via port `USB2`:
|
1. Connect a keyboard and mouse to the _UP Core_ via port `USB2`:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
- Use the USB-JST cable from the kit to get a USB A connector
|
- Use the USB-JST cable from the kit to get a USB A connector
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
- A USB hub can be attached to the cable if the keyboard and mouse have separate connectors.
|
- A USB hub can be attached to the cable if the keyboard and mouse have separate connectors.
|
||||||
|
|
||||||
2. Connect a monitor to the _UP Core_ HDMI port.
|
2. Connect a monitor to the _UP Core_ HDMI port.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
The Ubuntu login screen should then appear on the monitor.
|
The Ubuntu login screen should then appear on the monitor.
|
||||||
|
|
||||||
3. Login to the _UP Core_ using the credentials:
|
3. Login to the _UP Core_ using the credentials:
|
||||||
|
|
||||||
- **Username:** px4vision
|
- **Username:** px4vision
|
||||||
- **Password:** px4vision
|
- **Password:** px4vision
|
||||||
|
|
||||||
### Developing/Extending PX4 Avoidance
|
### Developing/Extending PX4 Avoidance
|
||||||
|
|
||||||
@@ -356,39 +356,39 @@ To integrate a different planner, this needs to be disabled.
|
|||||||
|
|
||||||
1. Disable the avoidance process using the following command:
|
1. Disable the avoidance process using the following command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
systemctl stop avoidance.service
|
systemctl stop avoidance.service
|
||||||
```
|
```
|
||||||
|
|
||||||
You can simply reboot the machine to restart the service.
|
You can simply reboot the machine to restart the service.
|
||||||
|
|
||||||
Other useful commands are:
|
Other useful commands are:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# restart service
|
# restart service
|
||||||
systemctl start avoidance.service
|
systemctl start avoidance.service
|
||||||
|
|
||||||
# disable service (stop service and do not restart after boot)
|
# disable service (stop service and do not restart after boot)
|
||||||
systemctl disable avoidance.service
|
systemctl disable avoidance.service
|
||||||
|
|
||||||
# enable service (start service and enable restart after boot)
|
# enable service (start service and enable restart after boot)
|
||||||
systemctl enable avoidance.service
|
systemctl enable avoidance.service
|
||||||
```
|
```
|
||||||
|
|
||||||
2. The source code of the obstacle avoidance package can be found in https://github.com/PX4/PX4-Avoidance which is located in `~/catkin_ws/src/avoidance`.
|
2. The source code of the obstacle avoidance package can be found in https://github.com/PX4/PX4-Avoidance which is located in `~/catkin_ws/src/avoidance`.
|
||||||
|
|
||||||
3. Make changes to the code! To get the latest code of avoidance pull the code from the avoidance repo:
|
3. Make changes to the code! To get the latest code of avoidance pull the code from the avoidance repo:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git pull origin
|
git pull origin
|
||||||
git checkout origin/master
|
git checkout origin/master
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Build the package
|
4. Build the package
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
catkin build local_planner
|
catkin build local_planner
|
||||||
```
|
```
|
||||||
|
|
||||||
The ROS workspace is placed in `~/catkin_ws`.
|
The ROS workspace is placed in `~/catkin_ws`.
|
||||||
For reference on developing in ROS and using the catkin workspace, see the [ROS catkin tutorials](http://wiki.ros.org/catkin/Tutorials).
|
For reference on developing in ROS and using the catkin workspace, see the [ROS catkin tutorials](http://wiki.ros.org/catkin/Tutorials).
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ PX4 v1.14 (and later) supports the [LightWare LiDAR SF45](../sensor/sf45_rotatin
|
|||||||
|
|
||||||
- Attach and configure the distance sensor on a particular port (see [sensor-specific docs](../sensor/rangefinders.md)) and enable collision prevention using [CP_DIST](#CP_DIST).
|
- Attach and configure the distance sensor on a particular port (see [sensor-specific docs](../sensor/rangefinders.md)) and enable collision prevention using [CP_DIST](#CP_DIST).
|
||||||
- 修改驱动程序以设置方向。
|
- 修改驱动程序以设置方向。
|
||||||
This should be done by mimicking the `SENS_CM8JL65_R_0` parameter (though you might also hard-code the orientation in the sensor _module.yaml_ file to something like `sf0x start -d ${SERIAL_DEV} -R 25` - where 25 is equivalent to `ROTATION_DOWNWARD_FACING`).
|
This should be done by mimicking the `SENS_CM8JL65_R_0` parameter (though you might also hard-code the orientation in the sensor _module.yaml_ file to something like `sf0x start -d ${SERIAL_DEV} -R 25` - where 25 is equivalent to `ROTATION_DOWNWARD_FACING`).
|
||||||
- Modify the driver to set the _field of view_ in the distance sensor UORB topic (`distance_sensor_s.h_fov`).
|
- Modify the driver to set the _field of view_ in the distance sensor UORB topic (`distance_sensor_s.h_fov`).
|
||||||
|
|
||||||
## PX4 (Software) Setup
|
## PX4 (Software) Setup
|
||||||
@@ -184,7 +184,7 @@ Next, adjust the relevant parameters to the appropriate values and add arbitrary
|
|||||||
|
|
||||||
The diagram below shows a simulation of collision prevention as viewed in Gazebo.
|
The diagram below shows a simulation of collision prevention as viewed in Gazebo.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Development Information/Tools
|
## Development Information/Tools
|
||||||
|
|
||||||
@@ -203,85 +203,85 @@ The Lua script works by extracting the `obstacle_distance_fused` data at each ti
|
|||||||
|
|
||||||
2. Configure PX4 to publish obstacle distance data (so that it is available to PlotJuggler):
|
2. Configure PX4 to publish obstacle distance data (so that it is available to PlotJuggler):
|
||||||
|
|
||||||
Add the [`obstacle_distance_fused`](../msg_docs/ObstacleDistance.md) UORB topic to your [`dds_topics.yaml`](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) so that it is published by PX4:
|
Add the [`obstacle_distance_fused`](../msg_docs/ObstacleDistance.md) UORB topic to your [`dds_topics.yaml`](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) so that it is published by PX4:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
- topic: /fmu/out/obstacle_distance_fused
|
- topic: /fmu/out/obstacle_distance_fused
|
||||||
type: px4_msgs::msg::ObstacleDistance
|
type: px4_msgs::msg::ObstacleDistance
|
||||||
```
|
```
|
||||||
|
|
||||||
For more information see [DDS Topics YAML](../middleware/uxrce_dds.md#dds-topics-yaml) in _uXRCE-DDS (PX4-ROS 2/DDS Bridge)_.
|
For more information see [DDS Topics YAML](../middleware/uxrce_dds.md#dds-topics-yaml) in _uXRCE-DDS (PX4-ROS 2/DDS Bridge)_.
|
||||||
|
|
||||||
3. Open PlotJuggler and navigate to the **Tools > Reactive Script Editor** section.
|
3. Open PlotJuggler and navigate to the **Tools > Reactive Script Editor** section.
|
||||||
In the **Script Editor** tab, add following scripts in the appropriate sections:
|
In the **Script Editor** tab, add following scripts in the appropriate sections:
|
||||||
|
|
||||||
- **Global code, executed once:**
|
- **Global code, executed once:**
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
obs_dist_fused_xy = ScatterXY.new("obstacle_distance_fused_xy")
|
obs_dist_fused_xy = ScatterXY.new("obstacle_distance_fused_xy")
|
||||||
obs_dist_min = Timeseries.new("obstacle_distance_minimum")
|
obs_dist_min = Timeseries.new("obstacle_distance_minimum")
|
||||||
```
|
```
|
||||||
|
|
||||||
- **function(tracker_time)**
|
- **function(tracker_time)**
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
obs_dist_fused_xy:clear()
|
obs_dist_fused_xy:clear()
|
||||||
|
|
||||||
i = 0
|
i = 0
|
||||||
angle_offset = TimeseriesView.find("/fmu/out/obstacle_distance_fused/angle_offset")
|
angle_offset = TimeseriesView.find("/fmu/out/obstacle_distance_fused/angle_offset")
|
||||||
increment = TimeseriesView.find("/fmu/out/obstacle_distance_fused/increment")
|
increment = TimeseriesView.find("/fmu/out/obstacle_distance_fused/increment")
|
||||||
min_dist = 65535
|
min_dist = 65535
|
||||||
|
|
||||||
-- Cache increment and angle_offset values at tracker_time to avoid repeated calls
|
-- Cache increment and angle_offset values at tracker_time to avoid repeated calls
|
||||||
local angle_offset_value = angle_offset:atTime(tracker_time)
|
local angle_offset_value = angle_offset:atTime(tracker_time)
|
||||||
local increment_value = increment:atTime(tracker_time)
|
local increment_value = increment:atTime(tracker_time)
|
||||||
|
|
||||||
if increment_value == nil or increment_value <= 0 then
|
if increment_value == nil or increment_value <= 0 then
|
||||||
print("Invalid increment value: " .. tostring(increment_value))
|
print("Invalid increment value: " .. tostring(increment_value))
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local max_steps = math.floor(360 / increment_value)
|
local max_steps = math.floor(360 / increment_value)
|
||||||
|
|
||||||
while i < max_steps do
|
while i < max_steps do
|
||||||
local str = string.format("/fmu/out/obstacle_distance_fused/distances[%d]", i)
|
local str = string.format("/fmu/out/obstacle_distance_fused/distances[%d]", i)
|
||||||
local distance = TimeseriesView.find(str)
|
local distance = TimeseriesView.find(str)
|
||||||
if distance == nil then
|
if distance == nil then
|
||||||
print("No distance data for: " .. str)
|
print("No distance data for: " .. str)
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
|
|
||||||
local dist = distance:atTime(tracker_time)
|
local dist = distance:atTime(tracker_time)
|
||||||
if dist ~= nil and dist < 65535 then
|
if dist ~= nil and dist < 65535 then
|
||||||
-- Calculate angle and Cartesian coordinates
|
-- Calculate angle and Cartesian coordinates
|
||||||
local angle = angle_offset_value + i * increment_value
|
local angle = angle_offset_value + i * increment_value
|
||||||
local y = dist * math.cos(math.rad(angle))
|
local y = dist * math.cos(math.rad(angle))
|
||||||
local x = dist * math.sin(math.rad(angle))
|
local x = dist * math.sin(math.rad(angle))
|
||||||
|
|
||||||
obs_dist_fused_xy:push_back(x, y)
|
obs_dist_fused_xy:push_back(x, y)
|
||||||
|
|
||||||
-- Update minimum distance
|
-- Update minimum distance
|
||||||
if dist < min_dist then
|
if dist < min_dist then
|
||||||
min_dist = dist
|
min_dist = dist
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
i = i + 1
|
i = i + 1
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Push minimum distance once after the loop
|
-- Push minimum distance once after the loop
|
||||||
if min_dist < 65535 then
|
if min_dist < 65535 then
|
||||||
obs_dist_min:push_back(tracker_time, min_dist)
|
obs_dist_min:push_back(tracker_time, min_dist)
|
||||||
else
|
else
|
||||||
print("No valid minimum distance found")
|
print("No valid minimum distance found")
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Enter a name for the script on the top right, and press **Save**.
|
4. Enter a name for the script on the top right, and press **Save**.
|
||||||
Once saved, the script should appear in the _Active Scripts_ section.
|
Once saved, the script should appear in the _Active Scripts_ section.
|
||||||
|
|
||||||
5. Start streaming the data using the approach described in [Plotting uORB Topic Data in Real Time using PlotJuggler](../debug/plotting_realtime_uorb_data.md).
|
5. Start streaming the data using the approach described in [Plotting uORB Topic Data in Real Time using PlotJuggler](../debug/plotting_realtime_uorb_data.md).
|
||||||
You should see the `obstacle_distance_fused_xy` and `obstacle_distance_minimum` timeseries on the left.
|
You should see the `obstacle_distance_fused_xy` and `obstacle_distance_minimum` timeseries on the left.
|
||||||
|
|
||||||
Note that you have to press **Save** again to re-enable the scripts after loading a new log file or otherwise clearing data.
|
Note that you have to press **Save** again to re-enable the scripts after loading a new log file or otherwise clearing data.
|
||||||
|
|
||||||
@@ -293,7 +293,7 @@ New sensor data is compared to the existing map, and used to update any sections
|
|||||||
|
|
||||||
The angles in the `obstacle_distance` topic are defined as follows:
|
The angles in the `obstacle_distance` topic are defined as follows:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
The data from rangefinders, rotary lidars, or companion computers, is processed differently, as described below.
|
The data from rangefinders, rotary lidars, or companion computers, is processed differently, as described below.
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Path Planning Interface
|
# Path Planning Interface
|
||||||
|
|
||||||
<Badge type="warning" text="Removed" />
|
<Badge type="warning" text="Removed PX4 v1.15" />
|
||||||
|
|
||||||
:::warning
|
:::warning
|
||||||
The **Path Planning Interface**, along with the features **Obstacle avoidance in Missions** and **Safe Landing** are no longer supported or maintained, and _should not_ be used in any PX4 version.
|
The **Path Planning Interface**, along with the features **Obstacle avoidance in Missions** and **Safe Landing** are no longer supported or maintained, and _should not_ be used in any PX4 version.
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ It is rare that a system is set up with an entirely synchronised chain!
|
|||||||
|
|
||||||
通过检查 IMU 速率和 EV 速率之间的偏移,可以从日志中获取对延迟的粗略估计:
|
通过检查 IMU 速率和 EV 速率之间的偏移,可以从日志中获取对延迟的粗略估计:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
A plot of external data vs. onboard estimate (as above) can be generated using [FlightPlot](../log/flight_log_analysis.md#flightplot) or similar flight analysis tools.
|
A plot of external data vs. onboard estimate (as above) can be generated using [FlightPlot](../log/flight_log_analysis.md#flightplot) or similar flight analysis tools.
|
||||||
@@ -132,15 +132,15 @@ Perform the following checks to verify that VIO is working properly _before_ you
|
|||||||
可以通过更改参数来进一步调整该值,以找到在动态变化中最低的EKF更新值。
|
可以通过更改参数来进一步调整该值,以找到在动态变化中最低的EKF更新值。
|
||||||
|
|
||||||
1. Put the vehicle on the ground and start streaming `ODOMETRY` feedback (as above).
|
1. Put the vehicle on the ground and start streaming `ODOMETRY` feedback (as above).
|
||||||
油门杆推到最低并解锁。
|
油门杆推到最低并解锁。
|
||||||
|
|
||||||
此时,设置为位置控制模式。
|
此时,设置为位置控制模式。
|
||||||
如果切换成功,飞控会闪绿灯。
|
如果切换成功,飞控会闪绿灯。
|
||||||
绿灯代表:你的外部位置信息已经注入到飞控中,并且位置控制模式已经切换成功。
|
绿灯代表:你的外部位置信息已经注入到飞控中,并且位置控制模式已经切换成功。
|
||||||
|
|
||||||
2. 油门杆放到中间位置(死区),以便无人机保持飞行高度。
|
2. 油门杆放到中间位置(死区),以便无人机保持飞行高度。
|
||||||
提高操控杆会增加参考高度,降低操控杆会降低参考高度。
|
提高操控杆会增加参考高度,降低操控杆会降低参考高度。
|
||||||
Similarly, the other stick will change the position over the ground.
|
Similarly, the other stick will change the position over the ground.
|
||||||
|
|
||||||
3. Increase the value of the throttle stick and the vehicle will take off. Move it back to the middle immediately afterwards.
|
3. Increase the value of the throttle stick and the vehicle will take off. Move it back to the middle immediately afterwards.
|
||||||
|
|
||||||
|
|||||||
@@ -71,44 +71,44 @@ Explanations and requirements:
|
|||||||
- `/* EVENT`: This tag indicates that a comment defines metadata for the following event.
|
- `/* EVENT`: This tag indicates that a comment defines metadata for the following event.
|
||||||
|
|
||||||
- **event_name**: the event name (`events::ID(event_name)`).
|
- **event_name**: the event name (`events::ID(event_name)`).
|
||||||
- must be unique within the whole source code of PX4.
|
- must be unique within the whole source code of PX4.
|
||||||
As a general convention, prefix it with the module name, or the source file for larger modules.
|
As a general convention, prefix it with the module name, or the source file for larger modules.
|
||||||
- must be a valid variable name, i.e. must not contain spaces, colons, etc.
|
- must be a valid variable name, i.e. must not contain spaces, colons, etc.
|
||||||
- from that name, a 24 bit event ID is derived using a hash function.
|
- from that name, a 24 bit event ID is derived using a hash function.
|
||||||
This means as long as the event name stays the same, so will the ID.
|
This means as long as the event name stays the same, so will the ID.
|
||||||
|
|
||||||
- **Log Level**:
|
- **Log Level**:
|
||||||
|
|
||||||
- valid log levels are the same as used in the MAVLink [MAV_SEVERITY](https://mavlink.io/en/messages/common.html#MAV_SEVERITY) enum.
|
- valid log levels are the same as used in the MAVLink [MAV_SEVERITY](https://mavlink.io/en/messages/common.html#MAV_SEVERITY) enum.
|
||||||
In order of descending importance these are:
|
In order of descending importance these are:
|
||||||
|
|
||||||
```plain
|
```plain
|
||||||
Emergency,
|
Emergency,
|
||||||
Alert,
|
Alert,
|
||||||
Critical,
|
Critical,
|
||||||
Error,
|
Error,
|
||||||
Warning,
|
Warning,
|
||||||
Notice,
|
Notice,
|
||||||
Info,
|
Info,
|
||||||
Debug,
|
Debug,
|
||||||
Disabled,
|
Disabled,
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```
|
||||||
- Above we specify a separate external and internal log level, which are the levels displayed to GCS users and in the log file, respectively: `{events::Log::Error, events::LogInternal::Info}`.
|
- Above we specify a separate external and internal log level, which are the levels displayed to GCS users and in the log file, respectively: `{events::Log::Error, events::LogInternal::Info}`.
|
||||||
For the majority of cases you can pass a single log level, and this will be used for both exernal and internal cases.
|
For the majority of cases you can pass a single log level, and this will be used for both exernal and internal cases.
|
||||||
There are cases it makes sense to have two different log levels.
|
There are cases it makes sense to have two different log levels.
|
||||||
For example an RTL failsafe action: the user should see it as Warning/Error, whereas in the log, it is an expected system response, so it can be set to `Info`.
|
For example an RTL failsafe action: the user should see it as Warning/Error, whereas in the log, it is an expected system response, so it can be set to `Info`.
|
||||||
```
|
```
|
||||||
|
|
||||||
- **Event Message**:
|
- **Event Message**:
|
||||||
- Single-line, short message of the event.
|
- Single-line, short message of the event.
|
||||||
It may contain template placeholders for arguments (e.g. `{1}`). For more information see below.
|
It may contain template placeholders for arguments (e.g. `{1}`). For more information see below.
|
||||||
|
|
||||||
- **Event Description**:
|
- **Event Description**:
|
||||||
- Detailed, optional event description.
|
- Detailed, optional event description.
|
||||||
- Can be multiple lines/paragraphs.
|
- Can be multiple lines/paragraphs.
|
||||||
- It may contain template placeholders for arguments (e.g. `{2}`) and supported tags (see below)
|
- It may contain template placeholders for arguments (e.g. `{2}`) and supported tags (see below)
|
||||||
|
|
||||||
#### Arguments and Enums
|
#### Arguments and Enums
|
||||||
|
|
||||||
@@ -127,35 +127,35 @@ Text format for event message description:
|
|||||||
|
|
||||||
- characters can be escaped with \\
|
- characters can be escaped with \\
|
||||||
|
|
||||||
These have to be escaped: '\\\\', '\\<', '\\{'.
|
These have to be escaped: '\\\\', '\\<', '\\{'.
|
||||||
|
|
||||||
- supported tags:
|
- supported tags:
|
||||||
|
|
||||||
- Profiles: `<profile name="[!]NAME">CONTENT</profile>`
|
- Profiles: `<profile name="[!]NAME">CONTENT</profile>`
|
||||||
|
|
||||||
`CONTENT` will only be shown if the name matches the configured profile.
|
`CONTENT` will only be shown if the name matches the configured profile.
|
||||||
This can be used for example to hide developer information from end-users.
|
This can be used for example to hide developer information from end-users.
|
||||||
|
|
||||||
- URLs: `<a [href="URL"]>CONTENT</a>`.
|
- URLs: `<a [href="URL"]>CONTENT</a>`.
|
||||||
If `href` is not set, use `CONTENT` as `URL` (i.e.`<a>https://docs.px4.io</a>` is interpreted as `<a href="https://docs.px4.io">https://docs.px4.io</a>`)
|
If `href` is not set, use `CONTENT` as `URL` (i.e.`<a>https://docs.px4.io</a>` is interpreted as `<a href="https://docs.px4.io">https://docs.px4.io</a>`)
|
||||||
|
|
||||||
- Parameters: `<param>PARAM_NAME</param>`
|
- Parameters: `<param>PARAM_NAME</param>`
|
||||||
|
|
||||||
- no nested tags of the same type are allowed
|
- no nested tags of the same type are allowed
|
||||||
|
|
||||||
- arguments: template placeholders that follow python syntax, with 1-based indexing (instead of 0)
|
- arguments: template placeholders that follow python syntax, with 1-based indexing (instead of 0)
|
||||||
|
|
||||||
- general form: `{ARG_IDX[:.NUM_DECIMAL_DIGITS][UNIT]}`
|
- general form: `{ARG_IDX[:.NUM_DECIMAL_DIGITS][UNIT]}`
|
||||||
|
|
||||||
UNIT:
|
UNIT:
|
||||||
|
|
||||||
- m: horizontal distance in meters
|
- m: horizontal distance in meters
|
||||||
- m_v: vertical distance in meters
|
- m_v: vertical distance in meters
|
||||||
- m^2: area in m^2
|
- m^2: area in m^2
|
||||||
- m/s: speed in m/s
|
- m/s: speed in m/s
|
||||||
- C: temperature in degrees celsius
|
- C: temperature in degrees celsius
|
||||||
|
|
||||||
- `NUM_DECIMAL_DIGITS` only makes sense for real number arguments.
|
- `NUM_DECIMAL_DIGITS` only makes sense for real number arguments.
|
||||||
|
|
||||||
## 日志
|
## 日志
|
||||||
|
|
||||||
|
|||||||
@@ -38,24 +38,24 @@ The instructions below might be used to create a task named _MyTask_:
|
|||||||
|
|
||||||
- Update the copyright to the current year
|
- Update the copyright to the current year
|
||||||
|
|
||||||
```cmake
|
```cmake
|
||||||
############################################################################
|
############################################################################
|
||||||
#
|
#
|
||||||
# Copyright (c) 2021 PX4 Development Team. All rights reserved.
|
# Copyright (c) 2021 PX4 Development Team. All rights reserved.
|
||||||
#
|
#
|
||||||
```
|
```
|
||||||
|
|
||||||
- Modify the code to reflect the new task - e.g. replace `FlightTaskOrbit` with `FlightTaskMyTask`.
|
- Modify the code to reflect the new task - e.g. replace `FlightTaskOrbit` with `FlightTaskMyTask`.
|
||||||
The code will look something like this:
|
The code will look something like this:
|
||||||
|
|
||||||
```cmake
|
```cmake
|
||||||
px4_add_library(FlightTaskMyTask
|
px4_add_library(FlightTaskMyTask
|
||||||
FlightTaskMyTask.cpp
|
FlightTaskMyTask.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(FlightTaskMyTask PUBLIC FlightTask)
|
target_link_libraries(FlightTaskMyTask PUBLIC FlightTask)
|
||||||
target_include_directories(FlightTaskMyTask PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
target_include_directories(FlightTaskMyTask PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Update the header file (in this case **FlightTaskMyTask.hpp**):
|
4. Update the header file (in this case **FlightTaskMyTask.hpp**):
|
||||||
Most tasks reimplement the virtual methods `activate()` and `update()`, and in this example we also have a private variable.
|
Most tasks reimplement the virtual methods `activate()` and `update()`, and in this example we also have a private variable.
|
||||||
@@ -141,35 +141,35 @@ The instructions below might be used to create a task named _MyTask_:
|
|||||||
|
|
||||||
- Update `MPC_POS_MODE` ([multicopter_position_mode_params.c](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mc_pos_control/multicopter_position_mode_params.c)) to add an option for selecting "MyTask" if the parameter has a previously unused value like 5:
|
- Update `MPC_POS_MODE` ([multicopter_position_mode_params.c](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mc_pos_control/multicopter_position_mode_params.c)) to add an option for selecting "MyTask" if the parameter has a previously unused value like 5:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
...
|
...
|
||||||
* @value 0 Direct velocity
|
* @value 0 Direct velocity
|
||||||
* @value 3 Smoothed velocity
|
* @value 3 Smoothed velocity
|
||||||
* @value 4 Acceleration based
|
* @value 4 Acceleration based
|
||||||
* @value 5 My task
|
* @value 5 My task
|
||||||
* @group Multicopter Position Control
|
* @group Multicopter Position Control
|
||||||
*/
|
*/
|
||||||
PARAM_DEFINE_INT32(MPC_POS_MODE, 5);
|
PARAM_DEFINE_INT32(MPC_POS_MODE, 5);
|
||||||
```
|
```
|
||||||
|
|
||||||
- Add a case for your new option in the switch for the parameter [FlightModeManager.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/flight_mode_manager/FlightModeManager.cpp#L266-L285) to enable the task when `_param_mpc_pos_mode` has the right value.
|
- Add a case for your new option in the switch for the parameter [FlightModeManager.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/flight_mode_manager/FlightModeManager.cpp#L266-L285) to enable the task when `_param_mpc_pos_mode` has the right value.
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
...
|
...
|
||||||
// manual position control
|
// manual position control
|
||||||
...
|
...
|
||||||
switch (_param_mpc_pos_mode.get()) {
|
switch (_param_mpc_pos_mode.get()) {
|
||||||
...
|
...
|
||||||
case 3:
|
case 3:
|
||||||
error = switchTask(FlightTaskIndex::ManualPositionSmoothVel);
|
error = switchTask(FlightTaskIndex::ManualPositionSmoothVel);
|
||||||
break;
|
break;
|
||||||
case 5: // Add case for new task: MyTask
|
case 5: // Add case for new task: MyTask
|
||||||
error = switchTask(FlightTaskIndex::MyTask);
|
error = switchTask(FlightTaskIndex::MyTask);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
....
|
....
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
## Test New Flight Task
|
## Test New Flight Task
|
||||||
|
|
||||||
|
|||||||
+27
-19
@@ -43,13 +43,13 @@ To make sure the vehicle is stable enough for auto-tuning:
|
|||||||
2. Take off and <div style="display: inline;" v-if="$frontmatter.frame === 'Multicopter'">hover at 1m above ground in [Altitude mode](../flight_modes_mc/altitude.md) or [Stabilized mode](../flight_modes_mc/manual_stabilized.md)</div><div style="display: inline;" v-else-if="$frontmatter.frame === 'Plane'">fly at cruise speed in [Position mode](../flight_modes_fw/position.md) or [Altitude mode](../flight_modes_fw/altitude.md)</div>.
|
2. Take off and <div style="display: inline;" v-if="$frontmatter.frame === 'Multicopter'">hover at 1m above ground in [Altitude mode](../flight_modes_mc/altitude.md) or [Stabilized mode](../flight_modes_mc/manual_stabilized.md)</div><div style="display: inline;" v-else-if="$frontmatter.frame === 'Plane'">fly at cruise speed in [Position mode](../flight_modes_fw/position.md) or [Altitude mode](../flight_modes_fw/altitude.md)</div>.
|
||||||
|
|
||||||
3. Use the RC transmitter roll stick to perform the following maneuver, tilting the vehicle just a few degrees: _roll left > roll right > center_ (The whole maneuver should take about 3 seconds).
|
3. Use the RC transmitter roll stick to perform the following maneuver, tilting the vehicle just a few degrees: _roll left > roll right > center_ (The whole maneuver should take about 3 seconds).
|
||||||
The vehicle should stabilise itself within 2 oscillations.
|
The vehicle should stabilise itself within 2 oscillations.
|
||||||
|
|
||||||
4. Repeat the maneuver, tilting with larger amplitudes at each attempt.
|
4. Repeat the maneuver, tilting with larger amplitudes at each attempt.
|
||||||
If the vehicle can stabilise itself within 2 oscillations at ~20 degrees move to the next step.
|
If the vehicle can stabilise itself within 2 oscillations at ~20 degrees move to the next step.
|
||||||
|
|
||||||
5. Repeat the same maneuvers but on the pitch axis.
|
5. Repeat the same maneuvers but on the pitch axis.
|
||||||
As above, start with small angles and confirm that the vehicle can stabilise itself within 2 oscillations before increasing the tilt.
|
As above, start with small angles and confirm that the vehicle can stabilise itself within 2 oscillations before increasing the tilt.
|
||||||
|
|
||||||
If the drone can stabilize itself within 2 oscillations it is ready for the [auto-tuning procedure](#auto-tuning-procedure).
|
If the drone can stabilize itself within 2 oscillations it is ready for the [auto-tuning procedure](#auto-tuning-procedure).
|
||||||
|
|
||||||
@@ -72,35 +72,43 @@ The test steps are:
|
|||||||
1. Perform the [pre-tuning test](#pre-tuning-test).
|
1. Perform the [pre-tuning test](#pre-tuning-test).
|
||||||
|
|
||||||
2. Takeoff using RC control <div style="display: inline;" v-if="$frontmatter.frame === 'Multicopter'">in [Altitude mode](../flight_modes_mc/altitude.md).
|
2. Takeoff using RC control <div style="display: inline;" v-if="$frontmatter.frame === 'Multicopter'">in [Altitude mode](../flight_modes_mc/altitude.md).
|
||||||
Hover the vehicle at a safe distance and at a few meters above ground (between 4 and 20m).</div><div v-else-if="$frontmatter.frame === 'Plane'">
|
Hover the vehicle at a safe distance and at a few meters above ground (between 4 and 20m).</div><div v-else-if="$frontmatter.frame === 'Plane'">
|
||||||
Once flying at cruise speed, activate [Hold mode](../flight_modes_fw/hold.md).
|
Once flying at cruise speed, activate [Hold mode](../flight_modes_fw/hold.md).
|
||||||
This will guide the plane to fly in circle at constant altitude and speed.</div>
|
This will guide the plane to fly in circle at constant altitude and speed.</div>
|
||||||
|
|
||||||
3. Enable autotune.
|
3. Enable autotune.
|
||||||
|
|
||||||
<div v-if="$frontmatter.frame === 'Plane'">
|
<div v-if="$frontmatter.frame === 'Plane'">
|
||||||
<div class="tip custom-block"><p class="custom-block-title">TIP</p>
|
<div class="tip custom-block"><p class="custom-block-title">TIP</p>
|
||||||
|
|
||||||
If an [Enable/Disable Autotune Switch](#enable-disable-autotune-switch) is configured you can just toggle the switch to the "enabled" position.
|
If an [Enable/Disable Autotune Switch](#enable-disable-autotune-switch) is configured you can just toggle the switch to the "enabled" position.
|
||||||
|
|
||||||
</div></div>
|
</div></div>
|
||||||
|
|
||||||
1. In QGroundControl, open the menu **Vehicle setup > PID Tuning**:
|
1. In QGroundControl, open the menu **Vehicle setup > PID Tuning**:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
2. Select either the _Rate Controller_ or _Attitude Controller_ tabs.
|
2. Select either the _Rate Controller_ or _Attitude Controller_ tabs.
|
||||||
|
|
||||||
3. Ensure that the **Autotune enabled** button is enabled (this will display the **Autotune** button and remove the manual tuning selectors).
|
3. Ensure that the **Autotune enabled** button is enabled (this will display the **Autotune** button and remove the manual tuning selectors).
|
||||||
|
|
||||||
4. Read the warning popup and click on **OK** to start tuning.
|
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.
|
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.
|
The progress is shown in the progress bar, next to the _Autotune_ button.
|
||||||
|
|
||||||
5. <div style="display: inline;" v-if="$frontmatter.frame === 'Multicopter'">Manually land and disarm to apply the new tuning parameters.
|
<div style="display: inline;" v-if="$frontmatter.frame === 'Multicopter'">
|
||||||
Takeoff carefully and manually test that the vehicle is stable.</div><div v-else-if="$frontmatter.frame === 'Plane'">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.</div>
|
5. Manually land and disarm to apply the new tuning parameters.
|
||||||
|
Takeoff carefully and manually test that the vehicle is stable.
|
||||||
|
|
||||||
|
</div><div v-else-if="$frontmatter.frame === 'Plane'">
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
:::warning
|
:::warning
|
||||||
If any strong oscillations occur, land immediately and follow the instructions in the [Troubleshooting](#troubleshooting) section below.
|
If any strong oscillations occur, land immediately and follow the instructions in the [Troubleshooting](#troubleshooting) section below.
|
||||||
|
|||||||
+46
-46
@@ -448,9 +448,9 @@ Instructions:
|
|||||||
|
|
||||||
4. One motor will start spinning (click **Spin Motor Again** if it stops spinning too quickly to note.)
|
4. One motor will start spinning (click **Spin Motor Again** if it stops spinning too quickly to note.)
|
||||||
|
|
||||||
Select the corresponding motor in the geometry section.
|
Select the corresponding motor in the geometry section.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
5. After assigning all motors, the tool will set the correct motor mapping for the outputs and then exit.
|
5. After assigning all motors, the tool will set the correct motor mapping for the outputs and then exit.
|
||||||
|
|
||||||
@@ -467,15 +467,15 @@ To assign an actuator:
|
|||||||
1. First assign functions to the outputs that you think are _likely_ to be correct in the _Actuator Outputs_ section.
|
1. First assign functions to the outputs that you think are _likely_ to be correct in the _Actuator Outputs_ section.
|
||||||
2. Toggle the **Enable sliders** switch in _Actuator Testing_ section.
|
2. Toggle the **Enable sliders** switch in _Actuator Testing_ section.
|
||||||
3. Move the slider for the actuator you want to test:
|
3. Move the slider for the actuator you want to test:
|
||||||
- Motors should be moved to the minimum thrust position.
|
- Motors should be moved to the minimum thrust position.
|
||||||
- Servos should be moved near the middle position.
|
- Servos should be moved near the middle position.
|
||||||
4. Check which actuator moves on the vehicle.
|
4. Check which actuator moves on the vehicle.
|
||||||
This should match the actuator positions for your geometry (the [airframe reference](../airframes/airframe_reference.md) shows motor positions for a number of standard airframes).
|
This should match the actuator positions for your geometry (the [airframe reference](../airframes/airframe_reference.md) shows motor positions for a number of standard airframes).
|
||||||
- If the correct actuator moves, then proceed to the next step.
|
- If the correct actuator moves, then proceed to the next step.
|
||||||
- If a wrong actuator moves, swap the output assignment over.
|
- If a wrong actuator moves, swap the output assignment over.
|
||||||
- If nothing moves then increase the slider mid-way though the range, then higher if needed.
|
- If nothing moves then increase the slider mid-way though the range, then higher if needed.
|
||||||
If nothing moves after that the output might not be connected, the motor might not be powered, or the output might be misconfigured.
|
If nothing moves after that the output might not be connected, the motor might not be powered, or the output might be misconfigured.
|
||||||
You will need to troubleshoot (perhaps try other actuator outputs to see if "anything" moves).
|
You will need to troubleshoot (perhaps try other actuator outputs to see if "anything" moves).
|
||||||
5. Return the slider to the "disarmed" position (bottom of slider for motors, centre of slider for servos).
|
5. Return the slider to the "disarmed" position (bottom of slider for motors, centre of slider for servos).
|
||||||
6. Repeat for all actuators
|
6. Repeat for all actuators
|
||||||
|
|
||||||
@@ -501,34 +501,34 @@ The motor configuration sets output values such that motors:
|
|||||||
For each motor:
|
For each motor:
|
||||||
|
|
||||||
1. Pull the motor slider down so that it snaps to the bottom.
|
1. Pull the motor slider down so that it snaps to the bottom.
|
||||||
In this position the motor is set to the outputs `disarmed` value.
|
In this position the motor is set to the outputs `disarmed` value.
|
||||||
- Verify that the motor doesn't spin in this position.
|
- Verify that the motor doesn't spin in this position.
|
||||||
- If the motor spins, reduce the corresponding PWM `disarmed` value in the [Actuator Outputs](#actuator-outputs) section to below the level at which it still spins.
|
- If the motor spins, reduce the corresponding PWM `disarmed` value in the [Actuator Outputs](#actuator-outputs) section to below the level at which it still spins.
|
||||||
|
|
||||||
2. Slowly move the slider up until it snaps to the _minimum_ position.
|
2. Slowly move the slider up until it snaps to the _minimum_ position.
|
||||||
In this position the motor is set to the outputs `minimum` value.
|
In this position the motor is set to the outputs `minimum` value.
|
||||||
|
|
||||||
- Verify that the motor is spinning very slowly in this position.
|
- Verify that the motor is spinning very slowly in this position.
|
||||||
- If the motor is not spinning, or spinning too fast you will need to adjust the corresponding PWM `minimum` value in the [Actuator Outputs](#actuator-outputs) such that the motors barely spin.
|
- If the motor is not spinning, or spinning too fast you will need to adjust the corresponding PWM `minimum` value in the [Actuator Outputs](#actuator-outputs) such that the motors barely spin.
|
||||||
|
|
||||||

|

|
||||||
::: info
|
::: info
|
||||||
For DShot output, this is not required.
|
For DShot output, this is not required.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
3. Increase the slider value to a level where you can verify that the motor is spinning in the correct direction and that it would give a positive thrust in the expected direction.
|
3. Increase the slider value to a level where you can verify that the motor is spinning in the correct direction and that it would give a positive thrust in the expected direction.
|
||||||
|
|
||||||
- The expected thrust direction can vary by vehicle type.
|
- The expected thrust direction can vary by vehicle type.
|
||||||
For example in multicopters the thrust should always point upwards, while in a fixed-wing vehicle the thrust will push the vehicle forwards.
|
For example in multicopters the thrust should always point upwards, while in a fixed-wing vehicle the thrust will push the vehicle forwards.
|
||||||
- For VTOL, thrust should point upwards when the Tilt Servo is at 0 degrees as defined the [Tilt Servo Convention](#tilt-servo-coordinate-system).
|
- For VTOL, thrust should point upwards when the Tilt Servo is at 0 degrees as defined the [Tilt Servo Convention](#tilt-servo-coordinate-system).
|
||||||
Testing of the [Tilt Servo](#tilt-servo-setup) is covered below as well.
|
Testing of the [Tilt Servo](#tilt-servo-setup) is covered below as well.
|
||||||
- If thrust is in the wrong direction, you may need to [reverse the motors](#reversing-motors).
|
- If thrust is in the wrong direction, you may need to [reverse the motors](#reversing-motors).
|
||||||
|
|
||||||
4. Increase the slider value to the maximum value, so the motor is spinning quickly.
|
4. Increase the slider value to the maximum value, so the motor is spinning quickly.
|
||||||
Reduce the value of the PWM output's `maximum` value just below the default.
|
Reduce the value of the PWM output's `maximum` value just below the default.
|
||||||
Listen to the tone of the motors as you increase the value in small (25us) increments.
|
Listen to the tone of the motors as you increase the value in small (25us) increments.
|
||||||
The "optimal" maximum value is the value at which you last hear a change in the tone.
|
The "optimal" maximum value is the value at which you last hear a change in the tone.
|
||||||
|
|
||||||
### Control Surface Setup
|
### Control Surface Setup
|
||||||
|
|
||||||
@@ -551,34 +551,34 @@ Control surfaces that move either direction around a neutral point include: aile
|
|||||||
To set these up:
|
To set these up:
|
||||||
|
|
||||||
1. Set the `Disarmed` value so that the surfaces will stay at neutral position when disarmed.
|
1. Set the `Disarmed` value so that the surfaces will stay at neutral position when disarmed.
|
||||||
This is usually around `1500` for PWM servos (near the centre of the servo range).
|
This is usually around `1500` for PWM servos (near the centre of the servo range).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
2. Move the slider for the surface upwards (positive command) and verify that it moves in the direction defined in the [Control Surface Convention](#control-surface-deflection-convention).
|
2. Move the slider for the surface upwards (positive command) and verify that it moves in the direction defined in the [Control Surface Convention](#control-surface-deflection-convention).
|
||||||
|
|
||||||
- Ailerons, elevons, V-Tails, A-Tails, and other horizontal surfaces should move up.
|
- Ailerons, elevons, V-Tails, A-Tails, and other horizontal surfaces should move up.
|
||||||
- Rudders and other "purely vertical" surfaces should move right.
|
- Rudders and other "purely vertical" surfaces should move right.
|
||||||
|
|
||||||
::: tip
|
::: tip
|
||||||
It is important that the slider movement matches the control surface convention, in order to normalize control for different servo mountings (moving the slider up may actually decrease the output value sent to the servo).
|
It is important that the slider movement matches the control surface convention, in order to normalize control for different servo mountings (moving the slider up may actually decrease the output value sent to the servo).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
If the control surface moves in the opposite direction, click on the `Rev Range` checkbox to reverse the range.
|
If the control surface moves in the opposite direction, click on the `Rev Range` checkbox to reverse the range.
|
||||||
|
|
||||||
3. Move the slider again to the middle and check if the Control Surfaces are aligned in the neutral position of the wing.
|
3. Move the slider again to the middle and check if the Control Surfaces are aligned in the neutral position of the wing.
|
||||||
|
|
||||||
- If it is not aligned, you can set the **Trim** value for the control surface.
|
- If it is not aligned, you can set the **Trim** value for the control surface.
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
This is done in the `Trim` setting of the Geometry panel, usually by "trial and error".
|
This is done in the `Trim` setting of the Geometry panel, usually by "trial and error".
|
||||||

|

|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
- After setting the trim for a control surface, move its slider away from the centre, release, and then back into disarmed (middle) position.
|
- After setting the trim for a control surface, move its slider away from the centre, release, and then back into disarmed (middle) position.
|
||||||
Confirm that surface is in the neutral position.
|
Confirm that surface is in the neutral position.
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
Another way to test without using the sliders would be to set the [`COM_PREARM_MODE`](../advanced_config/parameter_reference.md#COM_PREARM_MODE) parameter to `Always`:
|
Another way to test without using the sliders would be to set the [`COM_PREARM_MODE`](../advanced_config/parameter_reference.md#COM_PREARM_MODE) parameter to `Always`:
|
||||||
@@ -600,13 +600,13 @@ One approach for setting these up is:
|
|||||||
|
|
||||||
1. Set values `Disarmed` to `1500`, `Min` to `1200`, `Max` to `1700` so that the values are around the centre of the servo range.
|
1. Set values `Disarmed` to `1500`, `Min` to `1200`, `Max` to `1700` so that the values are around the centre of the servo range.
|
||||||
2. Move the corresponding slider up and check the control moves and that it is extending (moving away from the disarmed position).
|
2. Move the corresponding slider up and check the control moves and that it is extending (moving away from the disarmed position).
|
||||||
If not, click on the `Rev Range` checkbox to reverse the range.
|
If not, click on the `Rev Range` checkbox to reverse the range.
|
||||||
3. Enable slider in the disarmed position, them change the value of the `Disarmed` signal until the control is retracted/flush with wing.
|
3. Enable slider in the disarmed position, them change the value of the `Disarmed` signal until the control is retracted/flush with wing.
|
||||||
This may require that the `Disarmed` value is increased or decreased:
|
This may require that the `Disarmed` value is increased or decreased:
|
||||||
- If the value was decreased towards `Min`, then set `Min` to match `Disarmed`.
|
- If the value was decreased towards `Min`, then set `Min` to match `Disarmed`.
|
||||||
- If the value was increased towards `Max`, then set `Max` to match `Disarmed`.
|
- If the value was increased towards `Max`, then set `Max` to match `Disarmed`.
|
||||||
4. The value that you did _not_ set to match `Disarmed` controls the maximum amount that the control surface can extend.
|
4. The value that you did _not_ set to match `Disarmed` controls the maximum amount that the control surface can extend.
|
||||||
Set the slider to the top of the control, then change the value (`Max` or `Min`) so that the control surface is fully extended when the slider is at top.
|
Set the slider to the top of the control, then change the value (`Max` or `Min`) so that the control surface is fully extended when the slider is at top.
|
||||||
|
|
||||||
:::info Special note for flaps
|
:::info Special note for flaps
|
||||||
In some vehicle builds, flaps may be configured such that both flaps are controlled from a single output.
|
In some vehicle builds, flaps may be configured such that both flaps are controlled from a single output.
|
||||||
@@ -630,7 +630,7 @@ For each of the tilt servos:
|
|||||||
|
|
||||||
2. Position the slider for the servo in the lowest position, and verify that a positive value increase will point towards the `Angle at Min Tilt` (defined in the Geometry section).
|
2. Position the slider for the servo in the lowest position, and verify that a positive value increase will point towards the `Angle at Min Tilt` (defined in the Geometry section).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
3. Position the slider for the servo in the highest position, and verify that positive motor thrust will point towards the `Angle at Max Tilt` (as defined in the Geometry section).
|
3. Position the slider for the servo in the highest position, and verify that positive motor thrust will point towards the `Angle at Max Tilt` (as defined in the Geometry section).
|
||||||
|
|
||||||
|
|||||||
@@ -27,18 +27,18 @@ To calibrate the airspeed sensor:
|
|||||||
|
|
||||||
4. Click the **Airspeed** sensor button.
|
4. Click the **Airspeed** sensor button.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
5. Shield the sensor from the wind (i.e. cup it with your hand).
|
5. Shield the sensor from the wind (i.e. cup it with your hand).
|
||||||
Take care not to block any of its holes.
|
Take care not to block any of its holes.
|
||||||
|
|
||||||
6. Click **OK** to start the calibration.
|
6. Click **OK** to start the calibration.
|
||||||
|
|
||||||
7. Once asked for, blow into the tip of the pitot tube to signal the end of calibration.
|
7. Once asked for, blow into the tip of the pitot tube to signal the end of calibration.
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
Blowing into the tube is also a basic check that the dynamic and static ports are installed correctly.
|
Blowing into the tube is also a basic check that the dynamic and static ports are installed correctly.
|
||||||
If they are swapped then the sensor will read a large negative differential pressure when you blow into the tube, and the calibration will abort with an error.
|
If they are swapped then the sensor will read a large negative differential pressure when you blow into the tube, and the calibration will abort with an error.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Multicopter Auto-Tuning
|
title: Multicopter Auto-Tuning
|
||||||
frame: 多旋翼
|
frame: Multicopter
|
||||||
newEditLink: en/config/_autotune.md
|
newEditLink: en/config/_autotune.md
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
+15
-15
@@ -23,9 +23,9 @@ If any external magnetometers are available, it then disables the internal magne
|
|||||||
Several types of compass calibration are available:
|
Several types of compass calibration are available:
|
||||||
|
|
||||||
1. [Complete](#complete-calibration): This calibration is required after installing the autopilot on an airframe for the first time or when the configuration of the vehicle has changed significantly.
|
1. [Complete](#complete-calibration): This calibration is required after installing the autopilot on an airframe for the first time or when the configuration of the vehicle has changed significantly.
|
||||||
It compensates for hard and soft iron effects by estimating an offset and a scale factor for each axis.
|
It compensates for hard and soft iron effects by estimating an offset and a scale factor for each axis.
|
||||||
2. [Partial](#partial-quick-calibration): This calibration can be performed as a routine when preparing the vehicle for a flight, after changing the payload, or simply when the compass rose seems inaccurate.
|
2. [Partial](#partial-quick-calibration): This calibration can be performed as a routine when preparing the vehicle for a flight, after changing the payload, or simply when the compass rose seems inaccurate.
|
||||||
This type of calibration only estimates the offsets to compensate for a hard iron effect.
|
This type of calibration only estimates the offsets to compensate for a hard iron effect.
|
||||||
3. [Large vehicle](#large-vehicle-calibration): This calibration can be performed when the vehicle is too large or heavy to perform a complete calibration. This type of calibration only estimates the offsets to compensate for a hard iron effect.
|
3. [Large vehicle](#large-vehicle-calibration): This calibration can be performed when the vehicle is too large or heavy to perform a complete calibration. This type of calibration only estimates the offsets to compensate for a hard iron effect.
|
||||||
|
|
||||||
## 执行校准
|
## 执行校准
|
||||||
@@ -35,13 +35,13 @@ Several types of compass calibration are available:
|
|||||||
Before starting the calibration:
|
Before starting the calibration:
|
||||||
|
|
||||||
1. Choose a location away from large metal objects or magnetic fields.
|
1. Choose a location away from large metal objects or magnetic fields.
|
||||||
:::tip
|
:::tip
|
||||||
Metal is not always obvious! Avoid calibrating on top of an office table (often contain metal bars) or next to a vehicle.
|
Metal is not always obvious! Avoid calibrating on top of an office table (often contain metal bars) or next to a vehicle.
|
||||||
Calibration can even be affected if you're standing on a slab of concrete with uneven distribution of re-bar.
|
Calibration can even be affected if you're standing on a slab of concrete with uneven distribution of re-bar.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
2. Connect via telemetry radio rather than USB if at all possible.
|
2. Connect via telemetry radio rather than USB if at all possible.
|
||||||
USB can potentially cause significant magnetic interference.
|
USB can potentially cause significant magnetic interference.
|
||||||
3. If using an external compass (or a combined GPS/compass module), make sure it is [mounted](../assembly/mount_gps_compass.md) as far as possible from other electronics in order to reduce magnetic interference, and in a _supported orientation_.
|
3. If using an external compass (or a combined GPS/compass module), make sure it is [mounted](../assembly/mount_gps_compass.md) as far as possible from other electronics in order to reduce magnetic interference, and in a _supported orientation_.
|
||||||
|
|
||||||
### Complete Calibration
|
### Complete Calibration
|
||||||
@@ -54,10 +54,10 @@ The calibration steps are:
|
|||||||
|
|
||||||
3. Click the **Compass** sensor button.
|
3. Click the **Compass** sensor button.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
You should already have set the [Autopilot Orientation](../config/flight_controller_orientation.md). If not, you can also set it here.
|
You should already have set the [Autopilot Orientation](../config/flight_controller_orientation.md). If not, you can also set it here.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ The calibration steps are:
|
|||||||
|
|
||||||
5. 把你的飞机放置在下面显示的某一个方向,并保持静止。 随后提示(方向图像变为黄色)在指定方向旋转飞行器。 该位置标定完成后,屏幕上的相应图示将变成绿色。
|
5. 把你的飞机放置在下面显示的某一个方向,并保持静止。 随后提示(方向图像变为黄色)在指定方向旋转飞行器。 该位置标定完成后,屏幕上的相应图示将变成绿色。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
6. 在机体的所有方向上重复校准步骤。
|
6. 在机体的所有方向上重复校准步骤。
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ Once you've calibrated the vehicle in all the positions _QGroundControl_ will di
|
|||||||
This calibration is similar to the well-known figure-8 compass calibration done on a smartphone:
|
This calibration is similar to the well-known figure-8 compass calibration done on a smartphone:
|
||||||
|
|
||||||
1. Hold the vehicle in front of you and randomly perform partial rotations on all its axes.
|
1. Hold the vehicle in front of you and randomly perform partial rotations on all its axes.
|
||||||
2-3 oscillations of ~30 degrees in every direction is usually sufficient.
|
2-3 oscillations of ~30 degrees in every direction is usually sufficient.
|
||||||
2. Wait for the heading estimate to stabilize and verify that the compass rose is pointing to the correct direction (this can take a couple of seconds).
|
2. Wait for the heading estimate to stabilize and verify that the compass rose is pointing to the correct direction (this can take a couple of seconds).
|
||||||
|
|
||||||
备注:
|
备注:
|
||||||
@@ -94,12 +94,12 @@ This calibration process leverages external knowledge of vehicle's orientation a
|
|||||||
|
|
||||||
1. Ensure GNSS Fix. This is required to find the expected Earth magnetic field in WMM tables.
|
1. Ensure GNSS Fix. This is required to find the expected Earth magnetic field in WMM tables.
|
||||||
2. Align the vehicle to face True North.
|
2. Align the vehicle to face True North.
|
||||||
Be as accurate as possible for best results.
|
Be as accurate as possible for best results.
|
||||||
3. Open the [QGroundControl MAVLink Console](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/analyze_view/mavlink_console.html) and send the following command:
|
3. Open the [QGroundControl MAVLink Console](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/analyze_view/mavlink_console.html) and send the following command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
commander calibrate mag quick
|
commander calibrate mag quick
|
||||||
```
|
```
|
||||||
|
|
||||||
备注:
|
备注:
|
||||||
|
|
||||||
|
|||||||
@@ -61,10 +61,10 @@ To install a different version of PX4:
|
|||||||
2. Check **Advanced settings** and select the version from the dropdown list:
|
2. Check **Advanced settings** and select the version from the dropdown list:
|
||||||
- **Standard Version (stable):** The default version (i.e. no need to use advanced settings to install this!)
|
- **Standard Version (stable):** The default version (i.e. no need to use advanced settings to install this!)
|
||||||
- **Beta Testing (beta):** A beta/candidate release.
|
- **Beta Testing (beta):** A beta/candidate release.
|
||||||
只有当新版本准备完毕时才可用。
|
只有当新版本准备完毕时才可用。
|
||||||
- **Developer Build (master):** The latest build of PX4/PX4-Autopilot _main_ branch.
|
- **Developer Build (master):** The latest build of PX4/PX4-Autopilot _main_ branch.
|
||||||
- **Custom Firmware file...:** A custom firmware file (e.g. [that you have built locally](../dev_setup/building_px4.md)).
|
- **Custom Firmware file...:** A custom firmware file (e.g. [that you have built locally](../dev_setup/building_px4.md)).
|
||||||
如果选择 Custom firmware file ,您需要在下一步中从文件系统中选择自定义固件。
|
如果选择 Custom firmware file ,您需要在下一步中从文件系统中选择自定义固件。
|
||||||
|
|
||||||
Firmware update then continues as before.
|
Firmware update then continues as before.
|
||||||
|
|
||||||
|
|||||||
@@ -40,24 +40,24 @@ To configure single-channel flight mode selection:
|
|||||||
|
|
||||||
3. Select **"Q" icon > Vehicle Setup > Flight Modes** (sidebar) to open _Flight Modes Setup_.
|
3. Select **"Q" icon > Vehicle Setup > Flight Modes** (sidebar) to open _Flight Modes Setup_.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
4. Specify _Flight Mode Settings_:
|
4. Specify _Flight Mode Settings_:
|
||||||
- Select the **Mode channel** (above this shown as Channel 5, but this will depend on your transmitter configuration).
|
- Select the **Mode channel** (above this shown as Channel 5, but this will depend on your transmitter configuration).
|
||||||
- Move the transmitter switch (or switches) that you have set up for mode selection through the available positions.
|
- Move the transmitter switch (or switches) that you have set up for mode selection through the available positions.
|
||||||
The mode slot matching your current switch position will be highlighted (above this is _Flight Mode 1_).
|
The mode slot matching your current switch position will be highlighted (above this is _Flight Mode 1_).
|
||||||
::: info
|
::: info
|
||||||
While you can set flight modes in any of the 6 slots, only the channels that are mapped to switch positions will be highlighted/used.
|
While you can set flight modes in any of the 6 slots, only the channels that are mapped to switch positions will be highlighted/used.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
- Select the flight mode that you want triggered for each switch position.
|
- Select the flight mode that you want triggered for each switch position.
|
||||||
|
|
||||||
5. Specify _Switch Settings_:
|
5. Specify _Switch Settings_:
|
||||||
- Select the channels that you want to map to specific actions - e.g.: _Return_ mode, _Kill switch_, _offboard_ mode, etc. (if you have spare switches and channels on your transmitter).
|
- Select the channels that you want to map to specific actions - e.g.: _Return_ mode, _Kill switch_, _offboard_ mode, etc. (if you have spare switches and channels on your transmitter).
|
||||||
|
|
||||||
6. Test that the modes are mapped to the right transmitter switches:
|
6. Test that the modes are mapped to the right transmitter switches:
|
||||||
- Check the _Channel Monitor_ to confirm that the expected channel is changed by each switch.
|
- Check the _Channel Monitor_ to confirm that the expected channel is changed by each switch.
|
||||||
- Select each mode switch on your transmitter in turn, and check that the desired flight mode is activated (the text turns yellow on _QGroundControl_ for the active mode).
|
- Select each mode switch on your transmitter in turn, and check that the desired flight mode is activated (the text turns yellow on _QGroundControl_ for the active mode).
|
||||||
|
|
||||||
All values are automatically saved as they are changed.
|
All values are automatically saved as they are changed.
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ To use it:
|
|||||||
2. Set the vehicle type
|
2. Set the vehicle type
|
||||||
3. Set the other values in the **State** or any of the flags under **Conditions**
|
3. Set the other values in the **State** or any of the flags under **Conditions**
|
||||||
- The **Intended Mode** corresponds to the commanded mode via RC or GCS (or external script).
|
- The **Intended Mode** corresponds to the commanded mode via RC or GCS (or external script).
|
||||||
The failsafe state machine can override this in case of a failsafe.
|
The failsafe state machine can override this in case of a failsafe.
|
||||||
4. Check the action under **Output**
|
4. Check the action under **Output**
|
||||||
5. Check what happens when changing mode or **Move the RC sticks**
|
5. Check what happens when changing mode or **Move the RC sticks**
|
||||||
6. Play with different settings and conditions!
|
6. Play with different settings and conditions!
|
||||||
@@ -30,3 +30,4 @@ make run_failsafe_web_server
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { withBase } from 'vitepress';
|
import { withBase } from 'vitepress';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -29,10 +29,10 @@ The [Advanced Trimming](#advanced-trimming) section introduces parameters that c
|
|||||||
|
|
||||||
1. Trim the servos by physically adjusting the linkages lengths if possible and fine tune by trimming the PWM channels (use `PWM_MAIN/AUX_TRIMx`) on the bench to properly set the control surfaces to their theoretical position.
|
1. Trim the servos by physically adjusting the linkages lengths if possible and fine tune by trimming the PWM channels (use `PWM_MAIN/AUX_TRIMx`) on the bench to properly set the control surfaces to their theoretical position.
|
||||||
2. Fly in stabilized mode at cruise speed and set the pitch setpoint offset (`FW_PSP_OFF`) to desired angle of attack.
|
2. Fly in stabilized mode at cruise speed and set the pitch setpoint offset (`FW_PSP_OFF`) to desired angle of attack.
|
||||||
巡航速度飞行下的需用攻角为飞机在平飞状态下保持固定高度时的实际飞行迎角。
|
巡航速度飞行下的需用攻角为飞机在平飞状态下保持固定高度时的实际飞行迎角。
|
||||||
If you are using an airspeed sensor, also set the correct cruise airspeed (`FW_AIRSPD_TRIM`).
|
If you are using an airspeed sensor, also set the correct cruise airspeed (`FW_AIRSPD_TRIM`).
|
||||||
3. Look at the actuator controls in the log file (upload it to [Flight Review](https://logs.px4.io) and check the _Actuator Controls_ plot for example) and set the pitch trim (`TRIM_PITCH`).
|
3. Look at the actuator controls in the log file (upload it to [Flight Review](https://logs.px4.io) and check the _Actuator Controls_ plot for example) and set the pitch trim (`TRIM_PITCH`).
|
||||||
将该值设置为平飞时俯仰角度的平均值。
|
将该值设置为平飞时俯仰角度的平均值。
|
||||||
|
|
||||||
步骤3可以在步骤2之前执行,如果你不想查看日志, 或者如果您在手动模式下感觉舒适。
|
步骤3可以在步骤2之前执行,如果你不想查看日志, 或者如果您在手动模式下感觉舒适。
|
||||||
You can then trim your remote (with the trim switches) and report the values to `TRIM_PITCH` (and remove the trims from your transmitter) or update `TRIM_PITCH` directly during flight via telemetry and QGC.
|
You can then trim your remote (with the trim switches) and report the values to `TRIM_PITCH` (and remove the trims from your transmitter) or update `TRIM_PITCH` directly during flight via telemetry and QGC.
|
||||||
|
|||||||
@@ -53,15 +53,15 @@ To setup and configure a helicopter:
|
|||||||
For each servo set:
|
For each servo set:
|
||||||
|
|
||||||
- `Angle`: Clockwise angle in degree on the swash plate circle at which the servo arm is attached starting from `0` pointing forwards.
|
- `Angle`: Clockwise angle in degree on the swash plate circle at which the servo arm is attached starting from `0` pointing forwards.
|
||||||
Example for a typical setup where three servos are controlling the swash plate equally distributed over the circle (360° / 3 =) 120° apart each which results in the angles:
|
Example for a typical setup where three servos are controlling the swash plate equally distributed over the circle (360° / 3 =) 120° apart each which results in the angles:
|
||||||
|
|
||||||
| # | Angle |
|
| # | Angle |
|
||||||
| ------- | ----- |
|
| ------- | ----- |
|
||||||
| Servo 1 | 60° |
|
| Servo 1 | 60° |
|
||||||
| Servo 2 | 180° |
|
| Servo 2 | 180° |
|
||||||
| Servo 3 | 300° |
|
| Servo 3 | 300° |
|
||||||
|
|
||||||
<img width="700" alt="warning and requirement" src="../../assets/airframes/helicopter/swash_plate_servo_angles.png">
|
<img width="700" alt="warning and requirement" src="../../assets/airframes/helicopter/swash_plate_servo_angles.png">
|
||||||
|
|
||||||
- `Arm Length (relative to each other)`: Radius from the swash plate center (top view). A shorter arm means the same servo motion moves the plate more. This allows the autopilot to compensate.
|
- `Arm Length (relative to each other)`: Radius from the swash plate center (top view). A shorter arm means the same servo motion moves the plate more. This allows the autopilot to compensate.
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ To setup and configure a helicopter:
|
|||||||
- `Yaw compensation scale based on collective pitch`: How much yaw is feed forward compensated based on the current collective pitch.
|
- `Yaw compensation scale based on collective pitch`: How much yaw is feed forward compensated based on the current collective pitch.
|
||||||
- `Main rotor turns counter-clockwise`: `Disabled` (clockwise rotation) | `Enabled`
|
- `Main rotor turns counter-clockwise`: `Disabled` (clockwise rotation) | `Enabled`
|
||||||
- `Throttle spoolup time`: Set value (in seconds) greater than the achievable minimum motor spool up time.
|
- `Throttle spoolup time`: Set value (in seconds) greater than the achievable minimum motor spool up time.
|
||||||
A larger value may improve user experience.
|
A larger value may improve user experience.
|
||||||
|
|
||||||
3. Remove the rotor blades and propellers
|
3. Remove the rotor blades and propellers
|
||||||
|
|
||||||
|
|||||||
@@ -148,9 +148,9 @@ Note that there can be negative impacts on performance if `IMU_GYRO_CUTOFF` and
|
|||||||
|
|
||||||
Below is an example for three different `IMU_DGYRO_CUTOFF` filter values (40Hz, 70Hz, 90Hz).
|
Below is an example for three different `IMU_DGYRO_CUTOFF` filter values (40Hz, 70Hz, 90Hz).
|
||||||
At 90 Hz the general noise level starts to increase (especially for roll), and thus a cutoff frequency of 70 Hz is a safe setting.
|
At 90 Hz the general noise level starts to increase (especially for roll), and thus a cutoff frequency of 70 Hz is a safe setting.
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
The plot cannot be compared between different vehicles, as the y axis scale can be different.
|
The plot cannot be compared between different vehicles, as the y axis scale can be different.
|
||||||
@@ -161,16 +161,16 @@ If the flight plots shows significant low frequency spikes, like the one shown i
|
|||||||
In this case you might use the settings: [IMU_GYRO_NF0_FRQ=32](../advanced_config/parameter_reference.md#IMU_GYRO_NF0_FRQ) and [IMU_GYRO_NF0_BW=5](../advanced_config/parameter_reference.md#IMU_GYRO_NF0_BW) (note, this spike is narrower than usual).
|
In this case you might use the settings: [IMU_GYRO_NF0_FRQ=32](../advanced_config/parameter_reference.md#IMU_GYRO_NF0_FRQ) and [IMU_GYRO_NF0_BW=5](../advanced_config/parameter_reference.md#IMU_GYRO_NF0_BW) (note, this spike is narrower than usual).
|
||||||
The low pass filters and the notch filter can be tuned independently (i.e. you don't need to set the notch filter before collecting the data for tuning the low pass filter).
|
The low pass filters and the notch filter can be tuned independently (i.e. you don't need to set the notch filter before collecting the data for tuning the low pass filter).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Additional Tips
|
## Additional Tips
|
||||||
|
|
||||||
1. Acceptable latency depends on vehicle size and expectations.
|
1. Acceptable latency depends on vehicle size and expectations.
|
||||||
FPV racers typically tune for the absolute minimal latency (as a ballpark `IMU_GYRO_CUTOFF` around 120, `IMU_DGYRO_CUTOFF` of 50 to 80).
|
FPV racers typically tune for the absolute minimal latency (as a ballpark `IMU_GYRO_CUTOFF` around 120, `IMU_DGYRO_CUTOFF` of 50 to 80).
|
||||||
For bigger vehicles latency is less critical and `IMU_GYRO_CUTOFF` of around 80 might be acceptable.
|
For bigger vehicles latency is less critical and `IMU_GYRO_CUTOFF` of around 80 might be acceptable.
|
||||||
|
|
||||||
2. You can start tuning at higher `IMU_GYRO_CUTOFF` values (e.g. 100Hz), which might be desirable because the default tuning of `IMU_GYRO_CUTOFF` is set very low (30Hz).
|
2. You can start tuning at higher `IMU_GYRO_CUTOFF` values (e.g. 100Hz), which might be desirable because the default tuning of `IMU_GYRO_CUTOFF` is set very low (30Hz).
|
||||||
The only caveat is that you must be aware of the risks:
|
The only caveat is that you must be aware of the risks:
|
||||||
- Don't fly for more than 20-30 seconds
|
- Don't fly for more than 20-30 seconds
|
||||||
- Check that the motors are not getting to hot
|
- Check that the motors are not getting to hot
|
||||||
- Listen for odd sounds and symptoms of excessive noise, as discussed above.
|
- Listen for odd sounds and symptoms of excessive noise, as discussed above.
|
||||||
|
|||||||
+14
-14
@@ -38,9 +38,9 @@ A frame configuration can define everything about a vehicle, from it's geometry
|
|||||||
When you're bringing up a new vehicle though, the frame will usually contain a fairly minimal configuration:
|
When you're bringing up a new vehicle though, the frame will usually contain a fairly minimal configuration:
|
||||||
|
|
||||||
- Frames named with "Generic" define the vehicle type, number of rotors, and "placeholder" rotor positions.
|
- Frames named with "Generic" define the vehicle type, number of rotors, and "placeholder" rotor positions.
|
||||||
After selecting the airframe you define the actual geometry and then configure outputs.
|
After selecting the airframe you define the actual geometry and then configure outputs.
|
||||||
- Frames named with model/brand will define the vehicle type, number of rotors, actual rotor positions, and motor directions.
|
- Frames named with model/brand will define the vehicle type, number of rotors, actual rotor positions, and motor directions.
|
||||||
After selecting the airframe you usually still have to configure outputs.
|
After selecting the airframe you usually still have to configure outputs.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ This ensures that all ESC provide exactly the same output for a given input (ide
|
|||||||
The final step is [Motor Configuration](../config/actuators.md#motor-configuration):
|
The final step is [Motor Configuration](../config/actuators.md#motor-configuration):
|
||||||
|
|
||||||
- [Reverse any motors](../config/actuators.md#reversing-motors) that don't match the spin direction configured in the Geometry.
|
- [Reverse any motors](../config/actuators.md#reversing-motors) that don't match the spin direction configured in the Geometry.
|
||||||
For DShot ESC you can do this through the Acuator Testing UI.
|
For DShot ESC you can do this through the Acuator Testing UI.
|
||||||
- PWM, OneShot, and CAN ESC, set the motor input limits for disarmed, low and high speed (not needed for DShot ESC)
|
- PWM, OneShot, and CAN ESC, set the motor input limits for disarmed, low and high speed (not needed for DShot ESC)
|
||||||
|
|
||||||
相关章节:
|
相关章节:
|
||||||
@@ -123,14 +123,14 @@ Tuning is the final step, carried out only after most other setup and configurat
|
|||||||
|
|
||||||
- [Autotune](../config/autotune_mc.md) — Automates tuning PX4 rate and attitude controllers (recommended).
|
- [Autotune](../config/autotune_mc.md) — Automates tuning PX4 rate and attitude controllers (recommended).
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
Automatic tuning works on frames that have reasonable authority and dynamics around all the body axes.
|
Automatic tuning works on frames that have reasonable authority and dynamics around all the body axes.
|
||||||
It has primarily been tested on racing quads and X500, and is expected to be less effective on tricopters with a tiltable rotor.
|
It has primarily been tested on racing quads and X500, and is expected to be less effective on tricopters with a tiltable rotor.
|
||||||
|
|
||||||
Manual tuning using these guides are only needed if there is a problem with autotune:
|
Manual tuning using these guides are only needed if there is a problem with autotune:
|
||||||
|
|
||||||
- [MC PID Tuning (Manual/Basic)](../config_mc/pid_tuning_guide_multicopter_basic.md) — Manual tuning basic how to.
|
- [MC PID Tuning (Manual/Basic)](../config_mc/pid_tuning_guide_multicopter_basic.md) — Manual tuning basic how to.
|
||||||
- [MC PID Tuning Guide (Manual/Detailed)](../config_mc/pid_tuning_guide_multicopter.md) — Manual tuning with detailed explanation.
|
- [MC PID Tuning Guide (Manual/Detailed)](../config_mc/pid_tuning_guide_multicopter.md) — Manual tuning with detailed explanation.
|
||||||
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
@@ -138,7 +138,7 @@ Tuning is the final step, carried out only after most other setup and configurat
|
|||||||
- [MC Filter/Control Latency Tuning](../config_mc/filter_tuning.md) — Trade off control latency and noise filtering.
|
- [MC Filter/Control Latency Tuning](../config_mc/filter_tuning.md) — Trade off control latency and noise filtering.
|
||||||
|
|
||||||
- [MC Setpoint Tuning (Trajectory Generator)](../config_mc/mc_trajectory_tuning.md)
|
- [MC Setpoint Tuning (Trajectory Generator)](../config_mc/mc_trajectory_tuning.md)
|
||||||
- [MC Jerk-limited Type Trajectory](../config_mc/mc_jerk_limited_type_trajectory.md)
|
- [MC Jerk-limited Type Trajectory](../config_mc/mc_jerk_limited_type_trajectory.md)
|
||||||
|
|
||||||
- [Multicopter Racer Setup](../config_mc/racer_setup.md)
|
- [Multicopter Racer Setup](../config_mc/racer_setup.md)
|
||||||
|
|
||||||
@@ -167,7 +167,7 @@ Yes but it must be physically feasible. E.g. if you make a quadrotor where all m
|
|||||||
- [飞控外设](../peripherals/index.md) - 设置特定传感器、可选传感器、执行器等。
|
- [飞控外设](../peripherals/index.md) - 设置特定传感器、可选传感器、执行器等。
|
||||||
- [Advanced Configuration](../advanced_config/index.md) - Factory/OEM calibration, configuring advanced features, less-common configuration.
|
- [Advanced Configuration](../advanced_config/index.md) - Factory/OEM calibration, configuring advanced features, less-common configuration.
|
||||||
- Vehicle-Centric Config/Tuning:
|
- Vehicle-Centric Config/Tuning:
|
||||||
- **Multicopter Config/Tuning**
|
- **Multicopter Config/Tuning**
|
||||||
- [直升机配置/调参](../config_heli/index.md)
|
- [直升机配置/调参](../config_heli/index.md)
|
||||||
- [Fixed Wing Config/Tuning](../config_fw/index.md)
|
- [Fixed Wing Config/Tuning](../config_fw/index.md)
|
||||||
- [VTOL 配置/调参](../config_vtol/index.md)
|
- [VTOL 配置/调参](../config_vtol/index.md)
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ PX4 supports two (mathematically equivalent) forms of the PID rate controller in
|
|||||||
|
|
||||||
Users can select the form that is used by setting the proportional gain for the other form to "1" (i.e. in the diagram below set **K** to 1 for the parallel form, or **P** to 1 for the standard form - this will replace either the K or P blocks with a line).
|
Users can select the form that is used by setting the proportional gain for the other form to "1" (i.e. in the diagram below set **K** to 1 for the parallel form, or **P** to 1 for the standard form - this will replace either the K or P blocks with a line).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
<!-- The drawing is on draw.io: https://drive.google.com/file/d/1hXnAJVRyqNAdcreqNa5W4PQFkYnzwgOO/view?usp=sharing -->
|
<!-- The drawing is on draw.io: https://drive.google.com/file/d/1hXnAJVRyqNAdcreqNa5W4PQFkYnzwgOO/view?usp=sharing -->
|
||||||
|
|
||||||
@@ -74,14 +74,14 @@ The derivative term (**D**) is on the feedback path in order to avoid an effect
|
|||||||
The _parallel form_ is the simplest form, and is (hence) commonly used in textbooks.
|
The _parallel form_ is the simplest form, and is (hence) commonly used in textbooks.
|
||||||
在这种情况下,控制器的输出只是简单的将比例,积分和微分项相加。
|
在这种情况下,控制器的输出只是简单的将比例,积分和微分项相加。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
##### 标准模式
|
##### 标准模式
|
||||||
|
|
||||||
这种形式在数学上等同于并行形式。 但主要的优点是(即使似乎有点反直觉)将比例增益的调试与积分、微分增益分离开了。
|
这种形式在数学上等同于并行形式。 但主要的优点是(即使似乎有点反直觉)将比例增益的调试与积分、微分增益分离开了。
|
||||||
这意味着一个新的平台通过使用同样大小/推力 无人机的增益,使它更易于调试,只是简单地调整K增益就可正常飞行。
|
这意味着一个新的平台通过使用同样大小/推力 无人机的增益,使它更易于调试,只是简单地调整K增益就可正常飞行。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
#### 角速度 PID 调试
|
#### 角速度 PID 调试
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ The tuning procedure is:
|
|||||||
1. Arm the vehicle, takeoff, and hover (typically in [Position mode](../flight_modes_mc/position.md)).
|
1. Arm the vehicle, takeoff, and hover (typically in [Position mode](../flight_modes_mc/position.md)).
|
||||||
|
|
||||||
2. Open _QGroundControl_ **Vehicle Setup > PID Tuning**
|
2. Open _QGroundControl_ **Vehicle Setup > PID Tuning**
|
||||||

|

|
||||||
|
|
||||||
3. Select the **Rate Controller** tab.
|
3. Select the **Rate Controller** tab.
|
||||||
|
|
||||||
@@ -80,60 +80,60 @@ The tuning procedure is:
|
|||||||
|
|
||||||
5. Set the _Thrust curve_ value to: 0.3 (PWM, power-based controllers) or 1 (RPM-based ESCs)
|
5. Set the _Thrust curve_ value to: 0.3 (PWM, power-based controllers) or 1 (RPM-based ESCs)
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
For PWM, power-based and (some) UAVCAN speed controllers, the control signal to thrust relationship may not be linear.
|
For PWM, power-based and (some) UAVCAN speed controllers, the control signal to thrust relationship may not be linear.
|
||||||
As a result, the optimal tuning at hover thrust may not be ideal when the vehicle is operating at higher thrust.
|
As a result, the optimal tuning at hover thrust may not be ideal when the vehicle is operating at higher thrust.
|
||||||
|
|
||||||
The thrust curve value can be used to compensate for this non-linearity:
|
The thrust curve value can be used to compensate for this non-linearity:
|
||||||
|
|
||||||
- For PWM controllers, 0.3 is a good default (which may benefit from [further tuning](../config_mc/pid_tuning_guide_multicopter.md#thrust-curve)).
|
- For PWM controllers, 0.3 is a good default (which may benefit from [further tuning](../config_mc/pid_tuning_guide_multicopter.md#thrust-curve)).
|
||||||
- For RPM-based controllers, use 1 (no further tuning is required as these have a quadratic thrust curve).
|
- For RPM-based controllers, use 1 (no further tuning is required as these have a quadratic thrust curve).
|
||||||
|
|
||||||
For more information see the [detailed PID tuning guide](../config_mc/pid_tuning_guide_multicopter.md#thrust-curve).
|
For more information see the [detailed PID tuning guide](../config_mc/pid_tuning_guide_multicopter.md#thrust-curve).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
6. Set the _Select Tuning_ radio button to: **Roll**.
|
6. Set the _Select Tuning_ radio button to: **Roll**.
|
||||||
|
|
||||||
7. (Optionally) Select the **Automatic Flight Mode Switching** checkbox.
|
7. (Optionally) Select the **Automatic Flight Mode Switching** checkbox.
|
||||||
This will _automatically_ switch from [Position mode](../flight_modes_mc/position.md) to [Stabilised mode](../flight_modes_mc/manual_stabilized.md) when you press the **Start** button
|
This will _automatically_ switch from [Position mode](../flight_modes_mc/position.md) to [Stabilised mode](../flight_modes_mc/manual_stabilized.md) when you press the **Start** button
|
||||||
|
|
||||||
8. For rate controller tuning switch to _Acro mode_, _Stabilized mode_ or _Altitude mode_ (unless automatic switching is enabled).
|
8. For rate controller tuning switch to _Acro mode_, _Stabilized mode_ or _Altitude mode_ (unless automatic switching is enabled).
|
||||||
|
|
||||||
9. Select the **Start** button in order to start tracking the setpoint and response curves.
|
9. Select the **Start** button in order to start tracking the setpoint and response curves.
|
||||||
|
|
||||||
10. Rapidly move the _roll stick_ full range and observe the step response on the plots.
|
10. Rapidly move the _roll stick_ full range and observe the step response on the plots.
|
||||||
:::tip
|
:::tip
|
||||||
Stop tracking to enable easier inspection of the plots.
|
Stop tracking to enable easier inspection of the plots.
|
||||||
This happens automatically when you zoom/pan.
|
This happens automatically when you zoom/pan.
|
||||||
Use the **Start** button to restart the plots, and **Clear** to reset them.
|
Use the **Start** button to restart the plots, and **Clear** to reset them.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
11. Modify the three PID values using the sliders (for roll rate-tuning these affect `MC_ROLLRATE_K`, `MC_ROLLRATE_I`, `MC_ROLLRATE_D`) and observe the step response again.
|
11. Modify the three PID values using the sliders (for roll rate-tuning these affect `MC_ROLLRATE_K`, `MC_ROLLRATE_I`, `MC_ROLLRATE_D`) and observe the step response again.
|
||||||
The values are saved to the vehicle as soon as the sliders are moved.
|
The values are saved to the vehicle as soon as the sliders are moved.
|
||||||
::: info
|
::: info
|
||||||
The goal is for the _Response_ curve to match the _Setpoint_ curve as closely as possible (i.e. a fast response without overshoots).
|
The goal is for the _Response_ curve to match the _Setpoint_ curve as closely as possible (i.e. a fast response without overshoots).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
The PID values can be adjusted as follows:
|
The PID values can be adjusted as follows:
|
||||||
- P (proportional) or K gain:
|
- P (proportional) or K gain:
|
||||||
- increase this for more responsiveness
|
- increase this for more responsiveness
|
||||||
- reduce if the response is overshooting and/or oscillating (up to a certain point increasing the D gain also helps).
|
- reduce if the response is overshooting and/or oscillating (up to a certain point increasing the D gain also helps).
|
||||||
- D (derivative) gain:
|
- D (derivative) gain:
|
||||||
- this can be increased to dampen overshoots and oscillations
|
- this can be increased to dampen overshoots and oscillations
|
||||||
- increase this only as much as needed, as it amplifies noise (and can lead to hot motors)
|
- increase this only as much as needed, as it amplifies noise (and can lead to hot motors)
|
||||||
- I (integral) gain:
|
- I (integral) gain:
|
||||||
- used to reduce steady-state error
|
- used to reduce steady-state error
|
||||||
- if too low, the response might never reach the setpoint (e.g. in wind)
|
- if too low, the response might never reach the setpoint (e.g. in wind)
|
||||||
- if too high, slow oscillations can occur
|
- if too high, slow oscillations can occur
|
||||||
|
|
||||||
12. Repeat the tuning process above for the pitch and yaw:
|
12. Repeat the tuning process above for the pitch and yaw:
|
||||||
- Use _Select Tuning_ radio button to select the axis to tune
|
- Use _Select Tuning_ radio button to select the axis to tune
|
||||||
- Move the appropriate sticks (i.e. pitch stick for pitch, yaw stick for yaw).
|
- Move the appropriate sticks (i.e. pitch stick for pitch, yaw stick for yaw).
|
||||||
- For pitch tuning, start with the same values as for roll.
|
- For pitch tuning, start with the same values as for roll.
|
||||||
:::tip
|
:::tip
|
||||||
Use the **Save to Clipboard** and **Reset from Clipboard** buttons to copy the roll settings for initial pitch settings.
|
Use the **Save to Clipboard** and **Reset from Clipboard** buttons to copy the roll settings for initial pitch settings.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -141,10 +141,10 @@ The tuning procedure is:
|
|||||||
|
|
||||||
14. Repeat the tuning process for the velocity and positions controllers (on all the axes).
|
14. Repeat the tuning process for the velocity and positions controllers (on all the axes).
|
||||||
|
|
||||||
- Use Position mode when tuning these controllers
|
- Use Position mode when tuning these controllers
|
||||||
- Select the **Simple position control** option in the _Position control mode ..._ selector (this allows direct control for the generation of step inputs)
|
- Select the **Simple position control** option in the _Position control mode ..._ selector (this allows direct control for the generation of step inputs)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
All done!
|
All done!
|
||||||
Remember to re-enable airmode before leaving the setup.
|
Remember to re-enable airmode before leaving the setup.
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ For airframe specific documentation and build instructions see [VTOL Framebuilds
|
|||||||
2. Flash the firmware for your current release or master (PX4 `main` branch build).
|
2. Flash the firmware for your current release or master (PX4 `main` branch build).
|
||||||
3. In the [Frame setup](../config/airframe.md) section select the appropriate VTOL airframe.
|
3. In the [Frame setup](../config/airframe.md) section select the appropriate VTOL airframe.
|
||||||
|
|
||||||
If your airframe is not listed select the [Generic Standard VTOL](../airframes/airframe_reference.md#vtol_standard_vtol_generic_standard_vtol) frame.
|
If your airframe is not listed select the [Generic Standard VTOL](../airframes/airframe_reference.md#vtol_standard_vtol_generic_standard_vtol) frame.
|
||||||
|
|
||||||
### 飞行模式/模式转换
|
### 飞行模式/模式转换
|
||||||
|
|
||||||
|
|||||||
+90
-90
@@ -50,74 +50,74 @@ The instructions below explain how to get git and use it on your local computer.
|
|||||||
|
|
||||||
4. Clone (copy) your forked repository to your local computer:
|
4. Clone (copy) your forked repository to your local computer:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ~/wherever/
|
cd ~/wherever/
|
||||||
git clone https://github.com/<your git name>/PX4-user_guide.git
|
git clone https://github.com/<your git name>/PX4-user_guide.git
|
||||||
```
|
```
|
||||||
|
|
||||||
For example, to clone the PX4 userguide fork for a user with Github account "john_citizen":
|
For example, to clone the PX4 userguide fork for a user with Github account "john_citizen":
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/john_citizen/PX4-user_guide.git
|
git clone https://github.com/john_citizen/PX4-user_guide.git
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Navigate to your local repository:
|
5. Navigate to your local repository:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ~/wherever/PX4-user_guide
|
cd ~/wherever/PX4-user_guide
|
||||||
```
|
```
|
||||||
|
|
||||||
6. Add a _remote_ called "upstream" to point to the PX4 version of the library:
|
6. Add a _remote_ called "upstream" to point to the PX4 version of the library:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git remote add upstream https://github.com/PX4/PX4-user_guide.git
|
git remote add upstream https://github.com/PX4/PX4-user_guide.git
|
||||||
```
|
```
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
A "remote" is a handle to a particular repository.
|
A "remote" is a handle to a particular repository.
|
||||||
The remote named _origin_ is created by default when you clone the repository, and points to _your fork_ of the guide.
|
The remote named _origin_ is created by default when you clone the repository, and points to _your fork_ of the guide.
|
||||||
Above you create a new remote _upstream_ that points to the PX4 project version of the documents.
|
Above you create a new remote _upstream_ that points to the PX4 project version of the documents.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
7. Create a branch for your changes:
|
7. Create a branch for your changes:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git checkout -b <your_feature_branch_name>
|
git checkout -b <your_feature_branch_name>
|
||||||
```
|
```
|
||||||
|
|
||||||
This creates a local branch on your computer named `your_feature_branch_name`.
|
This creates a local branch on your computer named `your_feature_branch_name`.
|
||||||
|
|
||||||
8. Make changes to the documentation as needed (general guidance on this in following sections)
|
8. Make changes to the documentation as needed (general guidance on this in following sections)
|
||||||
|
|
||||||
9. Once you are satisfied with your changes, you can add them to your local branch using a "commit":
|
9. Once you are satisfied with your changes, you can add them to your local branch using a "commit":
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git add <file name>
|
git add <file name>
|
||||||
git commit -m "<your commit message>"
|
git commit -m "<your commit message>"
|
||||||
```
|
```
|
||||||
|
|
||||||
For a good commit message, please refer to the [Source Code Management](../contribute/code.md#commits-and-commit-messages) section.
|
For a good commit message, please refer to the [Source Code Management](../contribute/code.md#commits-and-commit-messages) section.
|
||||||
|
|
||||||
10. Push your local branch (including commits added to it) to your forked repository on Github.
|
10. Push your local branch (including commits added to it) to your forked repository on Github.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git push origin your_feature_branch_name
|
git push origin your_feature_branch_name
|
||||||
```
|
```
|
||||||
|
|
||||||
11. Go to your forked repository on Github in a web browser, e.g.: `https://github.com/<your git name>/PX4-user_guide.git`.
|
11. Go to your forked repository on Github in a web browser, e.g.: `https://github.com/<your git name>/PX4-user_guide.git`.
|
||||||
There you should see the message that a new branch has been pushed to your forked repository.
|
There you should see the message that a new branch has been pushed to your forked repository.
|
||||||
|
|
||||||
12. Create a pull request (PR):
|
12. Create a pull request (PR):
|
||||||
- On the right hand side of the "new branch message" (see one step before), you should see a green button saying "Compare & Create Pull Request".
|
- On the right hand side of the "new branch message" (see one step before), you should see a green button saying "Compare & Create Pull Request".
|
||||||
Press it.
|
Press it.
|
||||||
- A pull request template will be created.
|
- A pull request template will be created.
|
||||||
It will list your commits and you can (must) add a meaningful title (in case of a one commit PR, it's usually the commit message) and message (<span style="color:orange">explain what you did for what reason</span>.
|
It will list your commits and you can (must) add a meaningful title (in case of a one commit PR, it's usually the commit message) and message (<span style="color:orange">explain what you did for what reason</span>.
|
||||||
Check [other pull requests](https://github.com/PX4/PX4-user_guide/pulls) for comparison)
|
Check [other pull requests](https://github.com/PX4/PX4-user_guide/pulls) for comparison)
|
||||||
|
|
||||||
13. You're done!
|
13. You're done!
|
||||||
Maintainers for the PX4 User Guide will now have a look at your contribution and decide if they want to integrate it.
|
Maintainers for the PX4 User Guide will now have a look at your contribution and decide if they want to integrate it.
|
||||||
Check if they have questions on your changes every once in a while.
|
Check if they have questions on your changes every once in a while.
|
||||||
|
|
||||||
### Gitbook Documentation Toolchain
|
### Gitbook Documentation Toolchain
|
||||||
|
|
||||||
@@ -125,51 +125,51 @@ The instructions below explain how to get git and use it on your local computer.
|
|||||||
|
|
||||||
1. Install the [Vitepress prerequisites](https://vitepress.dev/guide/getting-started#prerequisites):
|
1. Install the [Vitepress prerequisites](https://vitepress.dev/guide/getting-started#prerequisites):
|
||||||
|
|
||||||
- [Nodejs 18+](https://nodejs.org/en)
|
- [Nodejs 18+](https://nodejs.org/en)
|
||||||
- [Yarn classic](https://classic.yarnpkg.com/en/docs/install)
|
- [Yarn classic](https://classic.yarnpkg.com/en/docs/install)
|
||||||
|
|
||||||
2. Navigate to your local repository:
|
2. Navigate to your local repository:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ~/wherever/PX4-user_guide
|
cd ~/wherever/PX4-user_guide
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Install dependencies (including Vitepress):
|
3. Install dependencies (including Vitepress):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
yarn install
|
yarn install
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Preview and serve the library:
|
4. Preview and serve the library:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
yarn start
|
yarn start
|
||||||
```
|
```
|
||||||
|
|
||||||
- Once the development/preview server has built the library (less than a minute for the first time) it will show you the URL you can preview the site on.
|
- Once the development/preview server has built the library (less than a minute for the first time) it will show you the URL you can preview the site on.
|
||||||
This will be something like: `http://localhost:5173/px4_user_guide/`.
|
This will be something like: `http://localhost:5173/px4_user_guide/`.
|
||||||
- Stop serving using **CTRL+C** in the terminal prompt.
|
- Stop serving using **CTRL+C** in the terminal prompt.
|
||||||
|
|
||||||
5. Open previewed pages in your local editor:
|
5. Open previewed pages in your local editor:
|
||||||
|
|
||||||
First specify a local text editor file using the `EDITOR` environment variable, before calling `yarn start` to preview the library.
|
First specify a local text editor file using the `EDITOR` environment variable, before calling `yarn start` to preview the library.
|
||||||
For example, on Windows command line you can enable VSCode as your default editor by entering:
|
For example, on Windows command line you can enable VSCode as your default editor by entering:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
set EDITOR=code
|
set EDITOR=code
|
||||||
```
|
```
|
||||||
|
|
||||||
The **Open in your editor** link at the bottom of each page will then open the current page in the editor (this replaces the _Open in GitHub_ link).
|
The **Open in your editor** link at the bottom of each page will then open the current page in the editor (this replaces the _Open in GitHub_ link).
|
||||||
|
|
||||||
6. You can build the library as it would be done for deployment:
|
6. You can build the library as it would be done for deployment:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Ubuntu
|
# Ubuntu
|
||||||
yarn docs:build
|
yarn docs:build
|
||||||
|
|
||||||
# Windows
|
# Windows
|
||||||
yarn docs:buildwin
|
yarn docs:buildwin
|
||||||
```
|
```
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
Use `yarn start` to preview changes _as you make them_ (documents are updated and served very quickly).
|
Use `yarn start` to preview changes _as you make them_ (documents are updated and served very quickly).
|
||||||
@@ -224,41 +224,41 @@ When you add a new page you must also add it to `en/SUMMARY.md`!
|
|||||||
|
|
||||||
1. 图片
|
1. 图片
|
||||||
|
|
||||||
- Put new markdown files in an appropriate sub-folder of `/en/`, such as `/en/contribute/`.
|
- Put new markdown files in an appropriate sub-folder of `/en/`, such as `/en/contribute/`.
|
||||||
Do not further nest folders.
|
Do not further nest folders.
|
||||||
- Put new image files in an appropriate nested sub-folder of `/assets/`.
|
- Put new image files in an appropriate nested sub-folder of `/assets/`.
|
||||||
Deeper nesting is allowed/encouraged.
|
Deeper nesting is allowed/encouraged.
|
||||||
- Use descriptive names for folders and files.
|
- Use descriptive names for folders and files.
|
||||||
In particular, image filenames should describe what they contain (don't name as "image1.png")
|
In particular, image filenames should describe what they contain (don't name as "image1.png")
|
||||||
- Use lower case filenames and separate words using underscores (`_`).
|
- Use lower case filenames and separate words using underscores (`_`).
|
||||||
|
|
||||||
2. 内容:
|
2. 内容:
|
||||||
|
|
||||||
- 将新文件放入相应的子文件夹
|
- 将新文件放入相应的子文件夹
|
||||||
- New images should be created in a sub-folder of `/assets/` (so they can be shared between translations).
|
- New images should be created in a sub-folder of `/assets/` (so they can be shared between translations).
|
||||||
- SVG files are preferred for diagrams.
|
- SVG files are preferred for diagrams.
|
||||||
PNG files are preferred over JPG for screenshots.
|
PNG files are preferred over JPG for screenshots.
|
||||||
|
|
||||||
3. Content:
|
3. Content:
|
||||||
|
|
||||||
- Use "style" (**bold**, _emphasis_, etc.) consistently and sparingly (as little as possible).
|
- Use "style" (**bold**, _emphasis_, etc.) consistently and sparingly (as little as possible).
|
||||||
- **Bold** for button presses and menu definitions.
|
- **Bold** for button presses and menu definitions.
|
||||||
- _Emphasis_ for tool names such as _QGroundControl_ or _prettier_.
|
- _Emphasis_ for tool names such as _QGroundControl_ or _prettier_.
|
||||||
- `code` for file paths, and code, parameter names that aren't linked, using tools in a command line, such as `prettier`.
|
- `code` for file paths, and code, parameter names that aren't linked, using tools in a command line, such as `prettier`.
|
||||||
- Headings and page titles should use "First Letter Capitalisation".
|
- Headings and page titles should use "First Letter Capitalisation".
|
||||||
- The page title should be a first level heading (`#`).
|
- The page title should be a first level heading (`#`).
|
||||||
All other headings should be h2 (`##`) or lower.
|
All other headings should be h2 (`##`) or lower.
|
||||||
- Don't add any style to headings.
|
- Don't add any style to headings.
|
||||||
- Don't translate the text indicating the name of an `info`, `tip` or `warning` declaration (e.g. `::: tip`) as this precise text is required to render the aside properly.
|
- Don't translate the text indicating the name of an `info`, `tip` or `warning` declaration (e.g. `::: tip`) as this precise text is required to render the aside properly.
|
||||||
- Break lines on sentences by preference.
|
- Break lines on sentences by preference.
|
||||||
Don't break lines based on some arbitrary line length.
|
Don't break lines based on some arbitrary line length.
|
||||||
- Format using _prettier_ (_VSCode_ is a has extensions can be used for this).
|
- Format using _prettier_ (_VSCode_ is a has extensions can be used for this).
|
||||||
|
|
||||||
4. Videos:
|
4. Videos:
|
||||||
|
|
||||||
- Youtube videos can be added using the format `<lite-youtube videoid="<youtube-video-id>" title="your title"/>` (supported via the [https://www.npmjs.com/package/lite-youtube-embed](https://www.npmjs.com/package/lite-youtube-embed) custom element, which has other parameters you can pass).
|
- Youtube videos can be added using the format `<lite-youtube videoid="<youtube-video-id>" title="your title"/>` (supported via the [https://www.npmjs.com/package/lite-youtube-embed](https://www.npmjs.com/package/lite-youtube-embed) custom element, which has other parameters you can pass).
|
||||||
- Use instructional videos sparingly as they date badly, and are hard to maintain.
|
- Use instructional videos sparingly as they date badly, and are hard to maintain.
|
||||||
- Cool videos of airframes in flight are always welcome.
|
- Cool videos of airframes in flight are always welcome.
|
||||||
|
|
||||||
## 许可证
|
## 许可证
|
||||||
|
|
||||||
|
|||||||
@@ -109,64 +109,64 @@ To switch between branches:
|
|||||||
|
|
||||||
1. Clean up the current branch, de-initializing submodule and removing all build artifacts:
|
1. Clean up the current branch, de-initializing submodule and removing all build artifacts:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make clean
|
make clean
|
||||||
make distclean
|
make distclean
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Switch to a new branch or tag (here we first fetch the fictional branch "PR_test_branch" from the `upstream` remote):
|
2. Switch to a new branch or tag (here we first fetch the fictional branch "PR_test_branch" from the `upstream` remote):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git fetch upstream PR_test_branch
|
git fetch upstream PR_test_branch
|
||||||
git checkout PR_test_branch
|
git checkout PR_test_branch
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Get the submodules for the new branch:
|
3. Get the submodules for the new branch:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make submodulesclean
|
make submodulesclean
|
||||||
```
|
```
|
||||||
|
|
||||||
<!-- FYI: Cleaning commands in https://github.com/PX4/PX4-Autopilot/blob/main/Makefile#L494 -->
|
<!-- FYI: Cleaning commands in https://github.com/PX4/PX4-Autopilot/blob/main/Makefile#L494 -->
|
||||||
|
|
||||||
## 更新子模块
|
## 更新子模块
|
||||||
|
|
||||||
Specific PX4 point releases are made as tags of the [release branches](#get-a-release-branch), and are named using the format `v<release>`.
|
Specific PX4 point releases are made as tags of the [release branches](#get-a-release-branch), and are named using the format `v<release>`.
|
||||||
These are [listed on Github here](https://github.com/PX4/PX4-Autopilot/releases?q=release\&expanded=true) (or you can query all tags using `git tag -l`).
|
These are listed on Github here (or you can query all tags using `git tag -l`).
|
||||||
|
|
||||||
To get the source code for a _specific older release_ (tag):
|
To get the source code for a _specific older release_ (tag):
|
||||||
|
|
||||||
1. Clone the PX4-Autopilot repo and navigate into _PX4-Autopilot_ directory:
|
1. Clone the PX4-Autopilot repo and navigate into _PX4-Autopilot_ directory:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/PX4/PX4-Autopilot.git
|
git clone https://github.com/PX4/PX4-Autopilot.git
|
||||||
cd PX4-Autopilot
|
cd PX4-Autopilot
|
||||||
```
|
```
|
||||||
|
|
||||||
:::note
|
:::note
|
||||||
|
|
||||||
You can reuse an existing repo rather than cloning a new one.
|
You can reuse an existing repo rather than cloning a new one.
|
||||||
In this case clean the build environment (see [changing source trees](#changing-source-trees)):
|
In this case clean the build environment (see [changing source trees](#changing-source-trees)):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make clean
|
make clean
|
||||||
make distclean
|
make distclean
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
2. Checkout code for particular tag (e.g. for tag v1.13.0-beta2)
|
2. Checkout code for particular tag (e.g. for tag v1.13.0-beta2)
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git checkout v1.13.0-beta2
|
git checkout v1.13.0-beta2
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Update submodules:
|
3. Update submodules:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make submodulesclean
|
make submodulesclean
|
||||||
```
|
```
|
||||||
|
|
||||||
## Get a Release Branch
|
## Get a Release Branch
|
||||||
|
|
||||||
|
|||||||
@@ -54,17 +54,17 @@ For more information, see: [https://gnu-mcu-eclipse.github.io/debug/jlink/instal
|
|||||||
7. Update packs:
|
7. Update packs:
|
||||||
|
|
||||||
- Click the small icon on the top right called _Open Perspective_ and open the _Packs_ perspective.
|
- Click the small icon on the top right called _Open Perspective_ and open the _Packs_ perspective.
|
||||||

|

|
||||||
|
|
||||||
- Click the **update all** button.
|
- Click the **update all** button.
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
This takes a VERY LONG TIME (10 minutes).
|
This takes a VERY LONG TIME (10 minutes).
|
||||||
Ignore all the errors about missing packages that pop up.
|
Ignore all the errors about missing packages that pop up.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
- The STM32Fxx devices are found in the Keil folder, install by right-clicking and then selecting **install** on the according device for F4 and F7.
|
- The STM32Fxx devices are found in the Keil folder, install by right-clicking and then selecting **install** on the according device for F4 and F7.
|
||||||
|
|
||||||
@@ -80,24 +80,24 @@ For more information, see: [https://gnu-mcu-eclipse.github.io/debug/jlink/instal
|
|||||||

|

|
||||||
|
|
||||||
10. Then select _GDB SEGGER J-Link Debugging_ and then the **New config** button on the top left.
|
10. Then select _GDB SEGGER J-Link Debugging_ and then the **New config** button on the top left.
|
||||||

|

|
||||||
|
|
||||||
11. Setup build config:
|
11. Setup build config:
|
||||||
|
|
||||||
- Give it a name and set the _C/C++ Application_ to the corresponding **.elf** file.
|
- Give it a name and set the _C/C++ Application_ to the corresponding **.elf** file.
|
||||||
- Choose _Disable Auto build_
|
- Choose _Disable Auto build_
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
Remember that you must build the target from the command line before starting a debug session.
|
Remember that you must build the target from the command line before starting a debug session.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
12. The _Debugger_ and _Startup_ tabs shouldn’t need any modifications (just verify your settings with the screenshots below)
|
12. The _Debugger_ and _Startup_ tabs shouldn’t need any modifications (just verify your settings with the screenshots below)
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
## SEGGER Task-aware debugging
|
## SEGGER Task-aware debugging
|
||||||
|
|
||||||
@@ -111,16 +111,16 @@ To enable this feature for use in Eclipse:
|
|||||||
- Open a terminal in the root of your PX4-Autopilot source code
|
- Open a terminal in the root of your PX4-Autopilot source code
|
||||||
|
|
||||||
- In the terminal, open `menuconfig` using the appropriate make target for the build.
|
- In the terminal, open `menuconfig` using the appropriate make target for the build.
|
||||||
This will be something like:
|
This will be something like:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make px4_fmu-v5_default boardguiconfig
|
make px4_fmu-v5_default boardguiconfig
|
||||||
```
|
```
|
||||||
|
|
||||||
(See [PX4 Menuconfig Setup](../hardware/porting_guide_config.md#px4-menuconfig-setup) for more information) on using the config tools).
|
(See [PX4 Menuconfig Setup](../hardware/porting_guide_config.md#px4-menuconfig-setup) for more information) on using the config tools).
|
||||||
|
|
||||||
- Ensure that the _Enable TCBinfo struct for debug_ is selected as shown:
|
- Ensure that the _Enable TCBinfo struct for debug_ is selected as shown:
|
||||||

|

|
||||||
|
|
||||||
2. Compile the **jlink-nuttx.so** library in the terminal by running the following command in the terminal: `make jlink-nuttx`
|
2. Compile the **jlink-nuttx.so** library in the terminal by running the following command in the terminal: `make jlink-nuttx`
|
||||||
|
|
||||||
|
|||||||
@@ -68,13 +68,13 @@ 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).
|
||||||
2. Enter the following commands on the MAVLink console or SITL _pxh shell_:
|
2. Enter the following commands on the MAVLink console or SITL _pxh shell_:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Fail RC (turn publishing off)
|
# Fail RC (turn publishing off)
|
||||||
failure rc_signal off
|
failure rc_signal off
|
||||||
|
|
||||||
# Restart RC publishing
|
# Restart RC publishing
|
||||||
failure rc_signal ok
|
failure rc_signal ok
|
||||||
```
|
```
|
||||||
|
|
||||||
## MAVSDK Failure Plugin
|
## MAVSDK Failure Plugin
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ See the [Embedded Debug Tools][emdbg] for more advanced debug options.
|
|||||||
The [Segger JLink EDU Mini](https://www.segger.com/products/debug-probes/j-link/models/j-link-edu-mini/) is an inexpensive and popular SWD debug probe.
|
The [Segger JLink EDU Mini](https://www.segger.com/products/debug-probes/j-link/models/j-link-edu-mini/) is an inexpensive and popular SWD debug probe.
|
||||||
The probe's connector pinout looks like the image below (connect to this using an ARM 10-pin mini connector like [FTSH-105-01-F-DV-K](https://www.digikey.com/products/en?keywords=SAM8796-ND)).
|
The probe's connector pinout looks like the image below (connect to this using an ARM 10-pin mini connector like [FTSH-105-01-F-DV-K](https://www.digikey.com/products/en?keywords=SAM8796-ND)).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
The pin mapping to connect the J-Link Edu Mini to [Pixhawk Debug Mini](swd_debug.md#pixhawk-debug-mini) is shown below.
|
The pin mapping to connect the J-Link Edu Mini to [Pixhawk Debug Mini](swd_debug.md#pixhawk-debug-mini) is shown below.
|
||||||
|
|
||||||
|
|||||||
@@ -37,8 +37,8 @@ Alternatively you can just append the modified parameters to the startup configu
|
|||||||
To add a frame configuration to firmware:
|
To add a frame configuration to firmware:
|
||||||
|
|
||||||
1. Create a new config file in the [init.d/airframes](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d/airframes) folder.
|
1. Create a new config file in the [init.d/airframes](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d/airframes) folder.
|
||||||
- Give it a short descriptive filename and prepend the filename with an unused autostart ID (for example, `1033092_superfast_vtol`).
|
- Give it a short descriptive filename and prepend the filename with an unused autostart ID (for example, `1033092_superfast_vtol`).
|
||||||
- Update the file with configuration parameters and apps (see section above).
|
- Update the file with configuration parameters and apps (see section above).
|
||||||
2. Add the name of the new frame config file to the [CMakeLists.txt](https://github.com/PX4/PX4-Autopilot/blob/main/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt) in the relevant section for the type of vehicle
|
2. Add the name of the new frame config file to the [CMakeLists.txt](https://github.com/PX4/PX4-Autopilot/blob/main/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt) in the relevant section for the type of vehicle
|
||||||
3. [Build and upload](../dev_setup/building_px4.md) the software.
|
3. [Build and upload](../dev_setup/building_px4.md) the software.
|
||||||
|
|
||||||
@@ -280,37 +280,37 @@ If the airframe is for a **new group** you additionally need to:
|
|||||||
|
|
||||||
2. Add a mapping between the new group name and image filename in the [srcparser.py](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/px4airframes/srcparser.py) method `GetImageName()` (follow the pattern below):
|
2. Add a mapping between the new group name and image filename in the [srcparser.py](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/px4airframes/srcparser.py) method `GetImageName()` (follow the pattern below):
|
||||||
|
|
||||||
```python
|
```python
|
||||||
def GetImageName(self):
|
def GetImageName(self):
|
||||||
"""
|
"""
|
||||||
Get parameter group image base name (w/o extension)
|
Get parameter group image base name (w/o extension)
|
||||||
"""
|
"""
|
||||||
if (self.name == "Standard Plane"):
|
if (self.name == "Standard Plane"):
|
||||||
return "Plane"
|
return "Plane"
|
||||||
elif (self.name == "Flying Wing"):
|
elif (self.name == "Flying Wing"):
|
||||||
return "FlyingWing"
|
return "FlyingWing"
|
||||||
...
|
...
|
||||||
...
|
...
|
||||||
return "AirframeUnknown"
|
return "AirframeUnknown"
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Update _QGroundControl_:
|
3. Update _QGroundControl_:
|
||||||
|
|
||||||
- Add the svg image for the group into: [src/AutopilotPlugins/Common/images](https://github.com/mavlink/qgroundcontrol/tree/master/src/AutoPilotPlugins/Common/Images)
|
- Add the svg image for the group into: [src/AutopilotPlugins/Common/images](https://github.com/mavlink/qgroundcontrol/tree/master/src/AutoPilotPlugins/Common/Images)
|
||||||
- Add reference to the svg image into [qgcimages.qrc](https://github.com/mavlink/qgroundcontrol/blob/master/qgcimages.qrc), following the pattern below:
|
- Add reference to the svg image into [qgcimages.qrc](https://github.com/mavlink/qgroundcontrol/blob/master/qgcimages.qrc), following the pattern below:
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
<qresource prefix="/qmlimages">
|
<qresource prefix="/qmlimages">
|
||||||
...
|
...
|
||||||
<file alias="Airframe/AirframeSimulation">src/AutoPilotPlugins/Common/Images/AirframeSimulation.svg</file>
|
<file alias="Airframe/AirframeSimulation">src/AutoPilotPlugins/Common/Images/AirframeSimulation.svg</file>
|
||||||
<file alias="Airframe/AirframeUnknown">src/AutoPilotPlugins/Common/Images/AirframeUnknown.svg</file>
|
<file alias="Airframe/AirframeUnknown">src/AutoPilotPlugins/Common/Images/AirframeUnknown.svg</file>
|
||||||
<file alias="Airframe/Boat">src/AutoPilotPlugins/Common/Images/Boat.svg</file>
|
<file alias="Airframe/Boat">src/AutoPilotPlugins/Common/Images/Boat.svg</file>
|
||||||
<file alias="Airframe/FlyingWing">src/AutoPilotPlugins/Common/Images/FlyingWing.svg</file>
|
<file alias="Airframe/FlyingWing">src/AutoPilotPlugins/Common/Images/FlyingWing.svg</file>
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
The remaining airframe metadata should be automatically included in the firmware (once **srcparser.py** is updated).
|
The remaining airframe metadata should be automatically included in the firmware (once **srcparser.py** is updated).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ If another algorithm is supported in future, the process is _likely_ to remain t
|
|||||||
The encryption process for each new ULog is:
|
The encryption process for each new ULog is:
|
||||||
|
|
||||||
1. A XChaCha20 symmetric key is generated and encrypted using an RSA2048 public key.
|
1. A XChaCha20 symmetric key is generated and encrypted using an RSA2048 public key.
|
||||||
This wrapped (encrypted) key is stored on the SD card in the beginning of a file that has the suffix `.ulge` ("ulog encrypted").
|
This wrapped (encrypted) key is stored on the SD card in the beginning of a file that has the suffix `.ulge` ("ulog encrypted").
|
||||||
2. When a log is captured, the ULog data is encrypted with the unwrapped symmetric key and the resulting data is appended into the end of the `.ulge` file immediately after the wrapped key data.
|
2. When a log is captured, the ULog data is encrypted with the unwrapped symmetric key and the resulting data is appended into the end of the `.ulge` file immediately after the wrapped key data.
|
||||||
|
|
||||||
After the flight, the `.ulge` file containing both the wrapped symmetric key and the encrypted log data can be found on the SD card.
|
After the flight, the `.ulge` file containing both the wrapped symmetric key and the encrypted log data can be found on the SD card.
|
||||||
|
|||||||
@@ -29,24 +29,24 @@ To install the toolchain:
|
|||||||
|
|
||||||
1. [Download PX4 Source Code](../dev_setup/building_px4.md):
|
1. [Download PX4 Source Code](../dev_setup/building_px4.md):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
|
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
|
||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
The environment setup scripts in the source usually work for recent PX4 releases.
|
The environment setup scripts in the source usually work for recent PX4 releases.
|
||||||
If working with an older version of PX4 you may need to [get the source code specific to your release](../contribute/git_examples.md#get-a-specific-release).
|
If working with an older version of PX4 you may need to [get the source code specific to your release](../contribute/git_examples.md#get-a-specific-release).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
2. Run the **ubuntu.sh** with no arguments (in a bash shell) to install everything:
|
2. Run the **ubuntu.sh** with no arguments (in a bash shell) to install everything:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
|
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
- 在安装过程中确认并通过所有的提示。
|
- 在安装过程中确认并通过所有的提示。
|
||||||
- You can use the `--no-nuttx` and `--no-sim-tools` options to omit the NuttX and/or simulation tools.
|
- You can use the `--no-nuttx` and `--no-sim-tools` options to omit the NuttX and/or simulation tools.
|
||||||
|
|
||||||
3. 完成后重新启动计算机。
|
3. 完成后重新启动计算机。
|
||||||
|
|
||||||
|
|||||||
@@ -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):
|
1. Enable more open files by appending the following line to the `~/.zshenv` file (creating it if necessary):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
echo ulimit -S -n 2048 >> ~/.zshenv
|
echo ulimit -S -n 2048 >> ~/.zshenv
|
||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
If you don't do this, the build toolchain may report the error: `"LD: too many open files"`
|
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`
|
2. Enforce Python 3 by appending the following lines to `~/.zshenv`
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Point pip3 to MacOS system python 3 pip
|
# Point pip3 to MacOS system python 3 pip
|
||||||
alias pip3=/usr/bin/pip3
|
alias pip3=/usr/bin/pip3
|
||||||
```
|
```
|
||||||
|
|
||||||
### Common Tools
|
### Common Tools
|
||||||
|
|
||||||
@@ -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:
|
2. Run these commands in your shell to install the common tools:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
brew tap PX4/px4
|
brew tap PX4/px4
|
||||||
brew install px4-dev
|
brew install px4-dev
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Install the required Python packages:
|
3. Install the required Python packages:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# install required packages using pip3
|
# install required packages using pip3
|
||||||
python3 -m pip install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging kconfiglib future jsonschema
|
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:
|
# 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
|
sudo -H python3 -m pip install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging kconfiglib future jsonschema
|
||||||
```
|
```
|
||||||
|
|
||||||
## Gazebo Classic 模拟
|
## Gazebo Classic 模拟
|
||||||
|
|
||||||
@@ -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:
|
1. Run the following commands in your shell:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
brew unlink tbb
|
brew unlink tbb
|
||||||
sed -i.bak '/disable! date:/s/^/ /; /disable! date:/s/./#/3' $(brew --prefix)/Library/Taps/homebrew/homebrew-core/Formula/tbb@2020.rb
|
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 install tbb@2020
|
||||||
brew link tbb@2020
|
brew link tbb@2020
|
||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
September 2021: The commands above are a workaround to this bug: [PX4-Autopilot#17644](https://github.com/PX4/PX4-Autopilot/issues/17644).
|
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).
|
They can be removed once it is fixed (along with this note).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
2. To install SITL simulation with Gazebo Classic:
|
2. To install SITL simulation with Gazebo Classic:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
brew install --cask temurin
|
brew install --cask temurin
|
||||||
brew install --cask xquartz
|
brew install --cask xquartz
|
||||||
brew install px4-sim-gazebo
|
brew install px4-sim-gazebo
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Run the macOS setup script: `PX4-Autopilot/Tools/setup/macos.sh`
|
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
|
```sh
|
||||||
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
|
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
|
||||||
cd PX4-Autopilot/Tools/setup
|
cd PX4-Autopilot/Tools/setup
|
||||||
sh macos.sh
|
sh macos.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
## Gazebo dependencies
|
## Gazebo dependencies
|
||||||
|
|
||||||
|
|||||||
@@ -136,32 +136,32 @@ The toolchain gets maintained and hence these instructions might not cover every
|
|||||||
|
|
||||||
10. Download [**Apache Ant**](https://ant.apache.org/bindownload.cgi) as zip archive of the binaries for Windows and unpack the content to the folder `C:\PX4\toolchain\apache-ant`.
|
10. Download [**Apache Ant**](https://ant.apache.org/bindownload.cgi) as zip archive of the binaries for Windows and unpack the content to the folder `C:\PX4\toolchain\apache-ant`.
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
Make sure you don't have an additional folder layer from the folder which is inside the downloaded archive.
|
Make sure you don't have an additional folder layer from the folder which is inside the downloaded archive.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
This is what the toolchain does in: [apache-ant/install-apache-ant.bat](https://github.com/MaEtUgR/PX4Toolchain/blob/master/toolchain/apache-ant/install-apache-ant.bat).
|
This is what the toolchain does in: [apache-ant/install-apache-ant.bat](https://github.com/MaEtUgR/PX4Toolchain/blob/master/toolchain/apache-ant/install-apache-ant.bat).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
11. Download, build and add _genromfs_ to the path:
|
11. Download, build and add _genromfs_ to the path:
|
||||||
|
|
||||||
- Clone the source code to the folder **C:\PX4\toolchain\genromfs\genromfs-src** with
|
- Clone the source code to the folder **C:\PX4\toolchain\genromfs\genromfs-src** with
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd /c/toolchain/genromfs
|
cd /c/toolchain/genromfs
|
||||||
git clone https://github.com/chexum/genromfs.git genromfs-src
|
git clone https://github.com/chexum/genromfs.git genromfs-src
|
||||||
```
|
```
|
||||||
|
|
||||||
- Compile it with:
|
- Compile it with:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd genromfs-src
|
cd genromfs-src
|
||||||
make all
|
make all
|
||||||
```
|
```
|
||||||
|
|
||||||
- Copy the resulting binary **genromfs.exe** one folder level out to: **C:\PX4\toolchain\genromfs**
|
- Copy the resulting binary **genromfs.exe** one folder level out to: **C:\PX4\toolchain\genromfs**
|
||||||
|
|
||||||
12. Make sure all the binary folders of all the installed components are correctly listed in the `PATH` variable configured by [**setup-environment.bat**](https://github.com/PX4/windows-toolchain/blob/master/toolchain/scripts/setup-environment.bat).
|
12. Make sure all the binary folders of all the installed components are correctly listed in the `PATH` variable configured by [**setup-environment.bat**](https://github.com/PX4/windows-toolchain/blob/master/toolchain/scripts/setup-environment.bat).
|
||||||
|
|||||||
@@ -57,13 +57,13 @@ VMWare performance is acceptable for basic usage (building Firmware) but not for
|
|||||||
Remember all settings are only for within your host operating system usage and hence you can disable any screen saver and local workstation security features which do not increase risk of a network attack.
|
Remember all settings are only for within your host operating system usage and hence you can disable any screen saver and local workstation security features which do not increase risk of a network attack.
|
||||||
|
|
||||||
10. Once the new VM is booted up make sure you install _VMWare tools drivers and tools extension_ inside your guest system.
|
10. Once the new VM is booted up make sure you install _VMWare tools drivers and tools extension_ inside your guest system.
|
||||||
This will enhance performance and usability of your VM usage:
|
This will enhance performance and usability of your VM usage:
|
||||||
|
|
||||||
- Significantly enhanced graphics performance
|
- Significantly enhanced graphics performance
|
||||||
- Proper support for hardware device usage like USB port allocation (important for target upload), proper mouse wheel scrolling, sound support
|
- Proper support for hardware device usage like USB port allocation (important for target upload), proper mouse wheel scrolling, sound support
|
||||||
- Guest display resolution adaption to the window size
|
- Guest display resolution adaption to the window size
|
||||||
- Clipboard sharing to host system
|
- Clipboard sharing to host system
|
||||||
- File sharing to host system
|
- File sharing to host system
|
||||||
|
|
||||||
11. Continue with [PX4 environment setup for Linux](../dev_setup/dev_env_linux.md)
|
11. Continue with [PX4 environment setup for Linux](../dev_setup/dev_env_linux.md)
|
||||||
|
|
||||||
@@ -98,11 +98,11 @@ To allow this, you need to configure USB passthrough settings:
|
|||||||
4. Add USB filters for the bootloader in VM: **VirtualBox > Settings > USB > Add new USB filter**.
|
4. Add USB filters for the bootloader in VM: **VirtualBox > Settings > USB > Add new USB filter**.
|
||||||
|
|
||||||
- Open the menu and plug in the USB cable connected to your autopilot.
|
- Open the menu and plug in the USB cable connected to your autopilot.
|
||||||
Select the `...Bootloader` device when it appears in the UI.
|
Select the `...Bootloader` device when it appears in the UI.
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
The bootloader device only appears for a few seconds after connecting USB.
|
The bootloader device only appears for a few seconds after connecting USB.
|
||||||
If it disappears before you can select it, disconnect and then reconnect USB.
|
If it disappears before you can select it, disconnect and then reconnect USB.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|||||||
@@ -48,38 +48,38 @@ The benefit of WSL2 is that its virtual machine is deeply integrated into Window
|
|||||||
To install WSL2 with Ubuntu on a new installation of Windows 10 or 11:
|
To install WSL2 with Ubuntu on a new installation of Windows 10 or 11:
|
||||||
|
|
||||||
1. Make sure your computer your computer's virtualization feature is enabled in the BIOS.
|
1. Make sure your computer your computer's virtualization feature is enabled in the BIOS.
|
||||||
It's usually referred as "Virtualization Technology", "Intel VT-x" or "AMD-V" respectively
|
It's usually referred as "Virtualization Technology", "Intel VT-x" or "AMD-V" respectively
|
||||||
|
|
||||||
2. Open _cmd.exe_ as administrator.
|
2. Open _cmd.exe_ as administrator.
|
||||||
This can be done by pressing the start key, typing `cmd`, right-clicking on the _Command prompt_ entry and selecting **Run as administrator**.
|
This can be done by pressing the start key, typing `cmd`, right-clicking on the _Command prompt_ entry and selecting **Run as administrator**.
|
||||||
|
|
||||||
3. Execute the following commands to install WSL2 and a particular Ubuntu version:
|
3. Execute the following commands to install WSL2 and a particular Ubuntu version:
|
||||||
|
|
||||||
- Default version (Ubuntu 22.04):
|
- Default version (Ubuntu 22.04):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
wsl --install
|
wsl --install
|
||||||
```
|
```
|
||||||
|
|
||||||
- Ubuntu 20.04 ([Gazebo-Classic Simulation](../sim_gazebo_classic/index.md))
|
- Ubuntu 20.04 ([Gazebo-Classic Simulation](../sim_gazebo_classic/index.md))
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
wsl --install -d Ubuntu-20.04
|
wsl --install -d Ubuntu-20.04
|
||||||
```
|
```
|
||||||
|
|
||||||
- Ubuntu 22.04 ([Gazebo Simulation](../sim_gazebo_gz/index.md))
|
- Ubuntu 22.04 ([Gazebo Simulation](../sim_gazebo_gz/index.md))
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
wsl --install -d Ubuntu-22.04
|
wsl --install -d Ubuntu-22.04
|
||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
You can also install[Ubuntu 20.04](https://www.microsoft.com/store/productId/9MTTCL66CPXJ) and [Ubuntu 22.04](https://www.microsoft.com/store/productId/9PN20MSR04DW) from the store, which allows you to delete the application using the normal Windows Add/Remove settings:
|
You can also install[Ubuntu 20.04](https://www.microsoft.com/store/productId/9MTTCL66CPXJ) and [Ubuntu 22.04](https://www.microsoft.com/store/productId/9PN20MSR04DW) from the store, which allows you to delete the application using the normal Windows Add/Remove settings:
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
4. WSL will prompt you for a user name and password for the Ubuntu installation.
|
4. WSL will prompt you for a user name and password for the Ubuntu installation.
|
||||||
Record these credentials as you will need them later on!
|
Record these credentials as you will need them later on!
|
||||||
|
|
||||||
The command prompt is now a terminal within the newly installed Ubuntu environment.
|
The command prompt is now a terminal within the newly installed Ubuntu environment.
|
||||||
|
|
||||||
@@ -95,26 +95,26 @@ To open a WSL shell using a command prompt:
|
|||||||
|
|
||||||
1. Open a command prompt:
|
1. Open a command prompt:
|
||||||
|
|
||||||
- Press the Windows **Start** key.
|
- Press the Windows **Start** key.
|
||||||
- Type `cmd` and press **Enter** to open the prompt.
|
- Type `cmd` and press **Enter** to open the prompt.
|
||||||
|
|
||||||
2. To start WSL and access the WSL shell, execute the command:
|
2. To start WSL and access the WSL shell, execute the command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
wsl -d <distribution_name>
|
wsl -d <distribution_name>
|
||||||
```
|
```
|
||||||
|
|
||||||
例如:
|
例如:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
wsl -d Ubuntu
|
wsl -d Ubuntu
|
||||||
```
|
```
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
wsl -d Ubuntu-20.04
|
wsl -d Ubuntu-20.04
|
||||||
```
|
```
|
||||||
|
|
||||||
If you only have one version of Ubuntu, you can just use `wsl`.
|
If you only have one version of Ubuntu, you can just use `wsl`.
|
||||||
|
|
||||||
Enter the following commands to first close the WSL shell, and then shut down WSL:
|
Enter the following commands to first close the WSL shell, and then shut down WSL:
|
||||||
|
|
||||||
@@ -136,57 +136,57 @@ To install the development toolchain:
|
|||||||
|
|
||||||
2. Execute the command `cd ~` to switch to the home folder of WSL for the next steps.
|
2. Execute the command `cd ~` to switch to the home folder of WSL for the next steps.
|
||||||
|
|
||||||
:::warning
|
:::warning
|
||||||
This is important!
|
This is important!
|
||||||
If you work from a location outside of the WSL file system you'll run into issues such as very slow execution and access right/permission errors.
|
If you work from a location outside of the WSL file system you'll run into issues such as very slow execution and access right/permission errors.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
3. Download the PX4 source code using `git` (which is already installed in WSL2):
|
3. Download the PX4 source code using `git` (which is already installed in WSL2):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
|
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
|
||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
The environment setup scripts in the source usually work for recent PX4 releases.
|
The environment setup scripts in the source usually work for recent PX4 releases.
|
||||||
If working with an older version of PX4 you may need to [get the source code specific to your release](../contribute/git_examples.md#get-a-specific-release).
|
If working with an older version of PX4 you may need to [get the source code specific to your release](../contribute/git_examples.md#get-a-specific-release).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
4. Run the **ubuntu.sh** installer script and acknowledge any prompts as the script progresses:
|
4. Run the **ubuntu.sh** installer script and acknowledge any prompts as the script progresses:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
|
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
This installs tools to build PX4 for Pixhawk and either Gazebo or Gazebo Classic targets:
|
This installs tools to build PX4 for Pixhawk and either Gazebo or Gazebo Classic targets:
|
||||||
|
|
||||||
- You can use the `--no-nuttx` and `--no-sim-tools` options to omit the NuttX and/or simulation tools.
|
- You can use the `--no-nuttx` and `--no-sim-tools` options to omit the NuttX and/or simulation tools.
|
||||||
- Other Linux build targets are untested (you can try these by entering the appropriate commands in [Ubuntu Development Environment](../dev_setup/dev_env_linux_ubuntu.md) into the WSL shell).
|
- Other Linux build targets are untested (you can try these by entering the appropriate commands in [Ubuntu Development Environment](../dev_setup/dev_env_linux_ubuntu.md) into the WSL shell).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
5. Restart the "WSL computer" after the script completes (exit the shell, shutdown WSL, and restart WSL):
|
5. Restart the "WSL computer" after the script completes (exit the shell, shutdown WSL, and restart WSL):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
exit
|
exit
|
||||||
wsl --shutdown
|
wsl --shutdown
|
||||||
wsl
|
wsl
|
||||||
```
|
```
|
||||||
|
|
||||||
6. Switch to the PX4 repository in the WSL home folder:
|
6. Switch to the PX4 repository in the WSL home folder:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ~/PX4-Autopilot
|
cd ~/PX4-Autopilot
|
||||||
```
|
```
|
||||||
|
|
||||||
7. Build the PX4 SITL target and test your environment:
|
7. Build the PX4 SITL target and test your environment:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make px4_sitl
|
make px4_sitl
|
||||||
```
|
```
|
||||||
|
|
||||||
For more build options see [Building PX4 Software](../dev_setup/building_px4.md).
|
For more build options see [Building PX4 Software](../dev_setup/building_px4.md).
|
||||||
|
|
||||||
@@ -206,26 +206,26 @@ To set up the integration:
|
|||||||
|
|
||||||
5. In the WSL shell, switch to the PX4 folder:
|
5. In the WSL shell, switch to the PX4 folder:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ~/PX4-Autopilot
|
cd ~/PX4-Autopilot
|
||||||
```
|
```
|
||||||
|
|
||||||
6. In the WSL shell, start VS Code:
|
6. In the WSL shell, start VS Code:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
code .
|
code .
|
||||||
```
|
```
|
||||||
|
|
||||||
This will open the IDE fully integrated with the WSL shell.
|
This will open the IDE fully integrated with the WSL shell.
|
||||||
|
|
||||||
Make sure you always open the PX4 repository in the Remote WSL mode.
|
Make sure you always open the PX4 repository in the Remote WSL mode.
|
||||||
|
|
||||||
7. Next time you want to develop WSL2 you can very easily open it again in Remote WSL mode by selecting **Open Recent** (as shown below).
|
7. Next time you want to develop WSL2 you can very easily open it again in Remote WSL mode by selecting **Open Recent** (as shown below).
|
||||||
This will start WSL for you.
|
This will start WSL for you.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Note however that the IP address of the WSL virtual machine will have changed, so you won't be able to monitor simulation from QGC for Windows (you can still monitor using QGC for Linux)
|
Note however that the IP address of the WSL virtual machine will have changed, so you won't be able to monitor simulation from QGC for Windows (you can still monitor using QGC for Linux)
|
||||||
|
|
||||||
## QGroundControl
|
## QGroundControl
|
||||||
|
|
||||||
@@ -241,21 +241,21 @@ You can do this from within the WSL shell.
|
|||||||
1. In a web browser, navigate to the QGC [Ubuntu download section](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/getting_started/download_and_install.html#ubuntu)
|
1. In a web browser, navigate to the QGC [Ubuntu download section](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/getting_started/download_and_install.html#ubuntu)
|
||||||
|
|
||||||
2. Right-click on the **QGroundControl.AppImage** link, and select "Copy link address".
|
2. Right-click on the **QGroundControl.AppImage** link, and select "Copy link address".
|
||||||
This will be something like _https://d176td9ibe4jno.cloudfront.net/builds/master/QGroundControl.AppImage_
|
This will be something like _https://d176td9ibe4jno.cloudfront.net/builds/master/QGroundControl.AppImage_
|
||||||
|
|
||||||
3. [Open a WSL shell](#opening-a-wsl-shell) and enter the following commands to download the appimage and make it executable (replace the AppImage URL where indicated):
|
3. [Open a WSL shell](#opening-a-wsl-shell) and enter the following commands to download the appimage and make it executable (replace the AppImage URL where indicated):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ~
|
cd ~
|
||||||
wget <the_copied_AppImage_URL>
|
wget <the_copied_AppImage_URL>
|
||||||
chmod +x QGroundControl.AppImage
|
chmod +x QGroundControl.AppImage
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Run QGroundControl:
|
4. Run QGroundControl:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./QGroundControl.AppImage
|
./QGroundControl.AppImage
|
||||||
```
|
```
|
||||||
|
|
||||||
QGroundControl will launch and automatically connect to a running simulation and allow you to monitor and control your vehicle(s).
|
QGroundControl will launch and automatically connect to a running simulation and allow you to monitor and control your vehicle(s).
|
||||||
|
|
||||||
@@ -271,15 +271,15 @@ These steps describe how you can connect to the simulation running in the WSL:
|
|||||||
|
|
||||||
2. Check the IP address of the WSL virtual machine by running the command `ip addr | grep eth0`:
|
2. Check the IP address of the WSL virtual machine by running the command `ip addr | grep eth0`:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ ip addr | grep eth0
|
$ ip addr | grep eth0
|
||||||
|
|
||||||
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
|
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
|
||||||
inet 172.18.46.131/20 brd 172.18.47.255 scope global eth0
|
inet 172.18.46.131/20 brd 172.18.47.255 scope global eth0
|
||||||
```
|
```
|
||||||
|
|
||||||
Copy the first part of the `eth0` interface `inet` address to the clipboard.
|
Copy the first part of the `eth0` interface `inet` address to the clipboard.
|
||||||
In this case: `172.18.46.131`.
|
In this case: `172.18.46.131`.
|
||||||
|
|
||||||
3. In QGC go to **Q > Application Settings > Comm Links**
|
3. In QGC go to **Q > Application Settings > Comm Links**
|
||||||
|
|
||||||
@@ -305,14 +305,14 @@ Do the following steps to flash your custom binary built in WSL:
|
|||||||
|
|
||||||
1. If you haven't already built the binary in WSL e.g. with a [WSL shell](dev_env_windows_wsl.md#opening-a-wsl-shell) and by running:
|
1. If you haven't already built the binary in WSL e.g. with a [WSL shell](dev_env_windows_wsl.md#opening-a-wsl-shell) and by running:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ~/PX4-Autopilot
|
cd ~/PX4-Autopilot
|
||||||
make px4_fmu-v5
|
make px4_fmu-v5
|
||||||
```
|
```
|
||||||
|
|
||||||
::: tip
|
::: tip
|
||||||
Use the correct `make` target for your board.
|
Use the correct `make` target for your board.
|
||||||
`px4_fmu-v5` can be used for a Pixhawk 4 board.
|
`px4_fmu-v5` can be used for a Pixhawk 4 board.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -326,12 +326,12 @@ Do the following steps to flash your custom binary built in WSL:
|
|||||||
|
|
||||||
6. Continue and select the firmware binary you just built in WSL.
|
6. Continue and select the firmware binary you just built in WSL.
|
||||||
|
|
||||||
In the open dialog look for the "Linux" location with the penguin icon in the left pane.
|
In the open dialog look for the "Linux" location with the penguin icon in the left pane.
|
||||||
It's usually all the way at the bottom.
|
It's usually all the way at the bottom.
|
||||||
Choose the file in the path: `Ubuntu\home\{your WSL user name}\PX4-Autopilot\build\{your build target}\{your build target}.px4`
|
Choose the file in the path: `Ubuntu\home\{your WSL user name}\PX4-Autopilot\build\{your build target}\{your build target}.px4`
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
You can add the folder to the favourites to access it quickly next time.
|
You can add the folder to the favourites to access it quickly next time.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|||||||
+10
-10
@@ -26,9 +26,9 @@ You must already have installed the command line [PX4 developer environment](../
|
|||||||
2. Open VSCode and add the PX4 source code:
|
2. Open VSCode and add the PX4 source code:
|
||||||
|
|
||||||
- Select _Open folder ..._ option on the welcome page (or using the menu: **File > Open Folder**):
|
- Select _Open folder ..._ option on the welcome page (or using the menu: **File > Open Folder**):
|
||||||

|

|
||||||
- A file selection dialog will appear.
|
- A file selection dialog will appear.
|
||||||
Select the **PX4-Autopilot** directory and then press **OK**.
|
Select the **PX4-Autopilot** directory and then press **OK**.
|
||||||
|
|
||||||
The project files and configuration will then load into _VSCode_.
|
The project files and configuration will then load into _VSCode_.
|
||||||
|
|
||||||
@@ -47,9 +47,9 @@ You must already have installed the command line [PX4 developer environment](../
|
|||||||
:::
|
:::
|
||||||
|
|
||||||
- If prompted to install a new version of _cmake_:
|
- If prompted to install a new version of _cmake_:
|
||||||
- Say **No** (the right version is installed with the [PX4 developer environment](../dev_setup/dev_env.md)).
|
- Say **No** (the right version is installed with the [PX4 developer environment](../dev_setup/dev_env.md)).
|
||||||
- If prompted to sign into _github.com_ and add your credentials:
|
- If prompted to sign into _github.com_ and add your credentials:
|
||||||
- This is up to you! It provides a deep integration between Github and the IDE, which may simplify your workflow.
|
- This is up to you! It provides a deep integration between Github and the IDE, which may simplify your workflow.
|
||||||
- Other prompts are optional, and may be installed if they seem useful. <!-- perhaps add screenshot of these prompts -->
|
- Other prompts are optional, and may be installed if they seem useful. <!-- perhaps add screenshot of these prompts -->
|
||||||
|
|
||||||
<a id="building"></a>
|
<a id="building"></a>
|
||||||
@@ -61,21 +61,21 @@ To build:
|
|||||||
1. Select your build target ("cmake build config"):
|
1. Select your build target ("cmake build config"):
|
||||||
|
|
||||||
- The current _cmake build target_ is shown on the blue _config_ bar at the bottom (if this is already your desired target, skip to next step).
|
- The current _cmake build target_ is shown on the blue _config_ bar at the bottom (if this is already your desired target, skip to next step).
|
||||||

|

|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
The cmake target you select affects the targets offered for when [building/debugging](#debugging) (i.e. for hardware debugging you must select a hardware target like `px4_fmu-v6`).
|
The cmake target you select affects the targets offered for when [building/debugging](#debugging) (i.e. for hardware debugging you must select a hardware target like `px4_fmu-v6`).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
- Click the target on the config bar to display other options, and select the one you want (this will replace any selected target).
|
- Click the target on the config bar to display other options, and select the one you want (this will replace any selected target).
|
||||||
|
|
||||||
- _Cmake_ will then configure your project (see notification in bottom right).
|
- _Cmake_ will then configure your project (see notification in bottom right).
|
||||||

|

|
||||||
|
|
||||||
- Wait until configuration completes.
|
- Wait until configuration completes.
|
||||||
When this is done the notification will disappear and you'll be shown the build location:
|
When this is done the notification will disappear and you'll be shown the build location:
|
||||||
.
|
.
|
||||||
|
|
||||||
2. You can then kick off a build from the config bar (select either **Build** or **Debug**).
|
2. You can then kick off a build from the config bar (select either **Build** or **Debug**).
|
||||||

|

|
||||||
|
|||||||
@@ -65,7 +65,7 @@ Set the following parameters in _QGroundControl_ [Vehicle Setup > Parameters](..
|
|||||||
|
|
||||||
- [UAVCAN_SUB_BAT](../advanced_config/parameter_reference.md#UAVCAN_SUB_BAT): set to: _Raw data_
|
- [UAVCAN_SUB_BAT](../advanced_config/parameter_reference.md#UAVCAN_SUB_BAT): set to: _Raw data_
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 更多信息
|
## 更多信息
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ The high-precision PNI RM3100 compass ensures accurate orientation and stability
|
|||||||
The Holybro ZED-F9P GPS is connected to the CAN bus using a Pixhawk standard 4 pin JST GH cable.
|
The Holybro ZED-F9P GPS is connected to the CAN bus using a Pixhawk standard 4 pin JST GH cable.
|
||||||
For more information, refer to the [CAN Wiring](../can/index.md#wiring) instructions.
|
For more information, refer to the [CAN Wiring](../can/index.md#wiring) instructions.
|
||||||
|
|
||||||
For dual F9P setups leveraging GPS yaw, connect both F9P CAN connectors to the same bus via a CAN or I2C expansion splitter or [hub](https://holybro.com/products/can-hub?_pos=1&_sid=eeb6b74b2&_ss=r).
|
For dual F9P setups leveraging GPS yaw, connect both F9P CAN connectors to the same bus via a CAN or I2C expansion splitter or hub.
|
||||||
|
|
||||||
## Firmware Setup
|
## Firmware Setup
|
||||||
|
|
||||||
@@ -64,10 +64,10 @@ To update the "AP Periph" firmware to the latest version:
|
|||||||
|
|
||||||
1. [Download the latest binary](https://firmware.ardupilot.org/AP_Periph/latest/HolybroG4_GPS/).
|
1. [Download the latest binary](https://firmware.ardupilot.org/AP_Periph/latest/HolybroG4_GPS/).
|
||||||
2. Update the firmware using either of the following approaches:
|
2. Update the firmware using either of the following approaches:
|
||||||
- Using ArduPilot:
|
- Using ArduPilot:
|
||||||
1. Install _Ardupilot_ firmware on your flight controller and the Mission Planner GCS on your computer.
|
1. Install _Ardupilot_ firmware on your flight controller and the Mission Planner GCS on your computer.
|
||||||
2. Update the binary by following the instructions in the [DroneCAN FW Upgrade](https://docs.holybro.com/gps-and-rtk-system/zed-f9p-h-rtk-series/dronecan-fw-upgrade) guide.
|
2. Update the binary by following the instructions in the [DroneCAN FW Upgrade](https://docs.holybro.com/gps-and-rtk-system/zed-f9p-h-rtk-series/dronecan-fw-upgrade) guide.
|
||||||
- Use a serial-to-can converter (such as the [Zubax Babel](https://github.com/Zubax/canface_cf1?tab=readme-ov-file)) and the [DroneCAN GUI Tool](https://dronecan.github.io/Implementations/Libuavcan/Tutorials/11._Firmware_update/).
|
- Use a serial-to-can converter (such as the [Zubax Babel](https://github.com/Zubax/canface_cf1?tab=readme-ov-file)) and the [DroneCAN GUI Tool](https://dronecan.github.io/Implementations/Libuavcan/Tutorials/11._Firmware_update/).
|
||||||
|
|
||||||
Remember to change the firmware on the flight controller back to PX4 afterwards.
|
Remember to change the firmware on the flight controller back to PX4 afterwards.
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ DroneCAN configuration in PX4 is explained in more detail in [DroneCAN > Enablin
|
|||||||
|
|
||||||
- For the the single Rover the module should be mounted with the included mast.
|
- For the the single Rover the module should be mounted with the included mast.
|
||||||
- For the Dual ZED-F9P setup (moving baseline), the DroneCAN modules should be placed at least 30cm apart on the airframe and elevated on a mast also.
|
- For the Dual ZED-F9P setup (moving baseline), the DroneCAN modules should be placed at least 30cm apart on the airframe and elevated on a mast also.
|
||||||
See the following [mast](https://holybro.com/products/30-antenna-mount?_pos=20&_sid=67b49d76b&_ss=r).
|
See the following mast.
|
||||||
- F9P module arrow(s) should be pointing forward with respect to the autopilot orientation.
|
- F9P module arrow(s) should be pointing forward with respect to the autopilot orientation.
|
||||||
|
|
||||||
## Dual ZED-F9P DroneCAN Modules For Heading
|
## Dual ZED-F9P DroneCAN Modules For Heading
|
||||||
@@ -98,14 +98,14 @@ In order to use dual ZED-F9P GPS heading in PX4, follow these steps:
|
|||||||
1. Open the QGroundControl parameters page.
|
1. Open the QGroundControl parameters page.
|
||||||
2. On the left side next to the parameters list, double-click on the _System_ section (this hides the section).
|
2. On the left side next to the parameters list, double-click on the _System_ section (this hides the section).
|
||||||
3. Components should be visible on the left panel.
|
3. Components should be visible on the left panel.
|
||||||
Click on the first `_Component_<ID#>` that maps to the ZED-F9P DroneCAN node (below shown as _Component 124_).
|
Click on the first `_Component_<ID#>` that maps to the ZED-F9P DroneCAN node (below shown as _Component 124_).
|
||||||
4. Click on the _GPS_ subsection and configure the parameters listed below:
|
4. Click on the _GPS_ subsection and configure the parameters listed below:
|
||||||
|
|
||||||
- `GPS_TYPE`: Either set to `17` for moving baseline _base_, or set to `18` to be the moving baseline _rover_.
|
- `GPS_TYPE`: Either set to `17` for moving baseline _base_, or set to `18` to be the moving baseline _rover_.
|
||||||
One F9P MUST be _rover_, and the other MUST be _base_.
|
One F9P MUST be _rover_, and the other MUST be _base_.
|
||||||
- `GPS_AUTO_CONFIG`: set to 1 for both the rover and base
|
- `GPS_AUTO_CONFIG`: set to 1 for both the rover and base
|
||||||
- `GPS_POS_X`, `GPS_POS_Y`, `GPS_POS_Z`: This is the antenna placement, which for the F9P is internal to the module.
|
- `GPS_POS_X`, `GPS_POS_Y`, `GPS_POS_Z`: This is the antenna placement, which for the F9P is internal to the module.
|
||||||
This is the local offset (FRD) with respect to the autopilot.
|
This is the local offset (FRD) with respect to the autopilot.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|||||||
@@ -45,11 +45,11 @@ Source code and build instructions can be found on [the bitbucket](https://bitbu
|
|||||||
1. Enable DroneCAN by setting the [UAVCAN_ENABLE](../advanced_config/parameter_reference.md#UAVCAN_ENABLE) parameter to `2` (Sensors Automatic Config) or `3`.
|
1. Enable DroneCAN by setting the [UAVCAN_ENABLE](../advanced_config/parameter_reference.md#UAVCAN_ENABLE) parameter to `2` (Sensors Automatic Config) or `3`.
|
||||||
2. Enable DroneCAN battery monitoring by setting [UAVCAN_SUB_BAT](../advanced_config/parameter_reference.md#UAVCAN_SUB_BAT) to `1` or `2` ( depending on your battery).
|
2. Enable DroneCAN battery monitoring by setting [UAVCAN_SUB_BAT](../advanced_config/parameter_reference.md#UAVCAN_SUB_BAT) to `1` or `2` ( depending on your battery).
|
||||||
3. Set the following module parameters using the [MAVLink console](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/analyze_view/mavlink_console.html):
|
3. Set the following module parameters using the [MAVLink console](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/analyze_view/mavlink_console.html):
|
||||||
- Battery capacity in mAh: `battery_capacity_mAh`
|
- Battery capacity in mAh: `battery_capacity_mAh`
|
||||||
- Battery voltage when _full_: `battery_full_V`,
|
- Battery voltage when _full_: `battery_full_V`,
|
||||||
- Battery voltage when _empty_: `battery_empty_V`
|
- Battery voltage when _empty_: `battery_empty_V`
|
||||||
- Turn on current integration: `enable_current_track`
|
- Turn on current integration: `enable_current_track`
|
||||||
- (optional) Turn Off CANbus termination resistor :`enable_can_term`
|
- (optional) Turn Off CANbus termination resistor :`enable_can_term`
|
||||||
|
|
||||||
**Example:** A Power Module with UAVCAN node id `125` connected to a `3S` LiPo with capacity of `5000mAh` can be configured with the following commands:
|
**Example:** A Power Module with UAVCAN node id `125` connected to a `3S` LiPo with capacity of `5000mAh` can be configured with the following commands:
|
||||||
|
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ CAN power connectors are designed for light unmanned aerial (UAV) and other vehi
|
|||||||
There are two types of devices:
|
There are two types of devices:
|
||||||
|
|
||||||
1. `CAN-MUX` devices provide power from XT30 connector to CAN.
|
1. `CAN-MUX` devices provide power from XT30 connector to CAN.
|
||||||
There are 2 variation of this type of the device with different number of connectors.
|
There are 2 variation of this type of the device with different number of connectors.
|
||||||
2. `Power connector node` is designed to pass current (up to 60A) to power load and CAN, measure voltage and current on load.
|
2. `Power connector node` is designed to pass current (up to 60A) to power load and CAN, measure voltage and current on load.
|
||||||
It behaves as Cyphal/DroneCAN node.
|
It behaves as Cyphal/DroneCAN node.
|
||||||
|
|
||||||
Please refer to the RaccoonLab docs [CAN Power Connectors](https://docs.raccoonlab.co/guide/pmu/power/) page.
|
Please refer to the RaccoonLab docs [CAN Power Connectors](https://docs.raccoonlab.co/guide/pmu/power/) page.
|
||||||
|
|
||||||
|
|||||||
@@ -81,15 +81,15 @@ To enumerate the ESC:
|
|||||||
|
|
||||||
3. Start the process of ESC auto-enumeration by pressing the **Start Assignment** button, as shown on the screenshot below.
|
3. Start the process of ESC auto-enumeration by pressing the **Start Assignment** button, as shown on the screenshot below.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
You will hear a sound indicating that the flight controller has entered the ESC enumeration mode.
|
You will hear a sound indicating that the flight controller has entered the ESC enumeration mode.
|
||||||
|
|
||||||
4. Manually turn each motor in the correct direction of its rotation (as specified in the [Airframe Reference](../airframes/airframe_reference.md)), starting from the first motor and finishing with the last motor.
|
4. Manually turn each motor in the correct direction of its rotation (as specified in the [Airframe Reference](../airframes/airframe_reference.md)), starting from the first motor and finishing with the last motor.
|
||||||
Each time you turn a motor, you should hear a confirmation beep.
|
Each time you turn a motor, you should hear a confirmation beep.
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
Make sure to turn each of the motors in the correct direction, as the ESC will automatically learn and remember the direction (i.e. motors that spin clockwise during normal operation must also be turned clockwise during enumeration).
|
Make sure to turn each of the motors in the correct direction, as the ESC will automatically learn and remember the direction (i.e. motors that spin clockwise during normal operation must also be turned clockwise during enumeration).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|||||||
@@ -395,7 +395,7 @@ Frequently asked questions are answered in [FAQ](https://docs.sky-drones.com/air
|
|||||||
|
|
||||||
- [AIRLink product page](https://sky-drones.com/airlink)
|
- [AIRLink product page](https://sky-drones.com/airlink)
|
||||||
- [AIRLink documentation](https://docs.sky-drones.com/avionics/airlink)
|
- [AIRLink documentation](https://docs.sky-drones.com/avionics/airlink)
|
||||||
- [AIRLink datasheet](https://3182378893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MTMlWysgDtJq8Hid1v7%2Fuploads%2F8AiuNNSwLYnZSscj7uIV%2FAIRLink-Datasheet.pdf?alt=media\&token=cbf0c4bf-9ab1-40c5-a0af-c6babdddb690)
|
- [AIRLink datasheet](https://3182378893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MTMlWysgDtJq8Hid1v7%2Fuploads%2F8AiuNNSwLYnZSscj7uIV%2FAIRLink-Datasheet.pdf?alt=media&token=cbf0c4bf-9ab1-40c5-a0af-c6babdddb690)
|
||||||
- [Buy AIRLink Enterprise 4G](https://sky-drones.com/sets/airlink-enterprise-set.html)
|
- [Buy AIRLink Enterprise 4G](https://sky-drones.com/sets/airlink-enterprise-set.html)
|
||||||
- [Buy AIRLink Enterprise 5G](https://sky-drones.com/sets/airlink-5g-enterprise-set.html)
|
- [Buy AIRLink Enterprise 5G](https://sky-drones.com/sets/airlink-5g-enterprise-set.html)
|
||||||
- [Buy AIRLink Core 4G](https://sky-drones.com/autopilots/airlink-core.html)
|
- [Buy AIRLink Core 4G](https://sky-drones.com/autopilots/airlink-core.html)
|
||||||
|
|||||||
@@ -86,3 +86,5 @@ See the documentation [Ark Electronics GitBook](https://arkelectron.gitbook.io/a
|
|||||||
## 针脚定义
|
## 针脚定义
|
||||||
|
|
||||||
See the [DS-10 Pixhawk Autopilot Bus Standard](https://arkelectron.gitbook.io/ark-documentation/flight-controllers/ark-fpv/pinout)
|
See the [DS-10 Pixhawk Autopilot Bus Standard](https://arkelectron.gitbook.io/ark-documentation/flight-controllers/ark-fpv/pinout)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Contact the [manufacturer](https://store.mrobotics.io/) for hardware support or
|
|||||||
|
|
||||||
The [AUAV<sup>®</sup>](http://www.auav.com/) _AUAV-X2 autopilot_ is based on the [Pixhawk<sup>®</sup>-project](https://pixhawk.org/) **FMUv2** open hardware design. It runs PX4 on the [NuttX](https://nuttx.apache.org/) OS.
|
The [AUAV<sup>®</sup>](http://www.auav.com/) _AUAV-X2 autopilot_ is based on the [Pixhawk<sup>®</sup>-project](https://pixhawk.org/) **FMUv2** open hardware design. It runs PX4 on the [NuttX](https://nuttx.apache.org/) OS.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 总览
|
## 总览
|
||||||
|
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ The remaining 6 PWM ports are still being adapted (so it is not compatible with
|
|||||||
## 购买渠道
|
## 购买渠道
|
||||||
|
|
||||||
- [CUAV Store](https://store.cuav.net)<\br>
|
- [CUAV Store](https://store.cuav.net)<\br>
|
||||||
- [CUAV Aliexpress](https://www.aliexpress.com/item/4001042501927.html?gps-id=8041884\&scm=1007.14677.110221.0\&scm_id=1007.14677.110221.0\&scm-url=1007.14677.110221.0\&pvid=3dc0a3ba-fa82-43d2-b0b3-6280e4329cef\&spm=a2g0o.store_home.promoteRecommendProducts_7913969.58)
|
- [CUAV Aliexpress](https://www.aliexpress.com/item/4001042501927.html?gps-id=8041884&scm=1007.14677.110221.0&scm_id=1007.14677.110221.0&scm-url=1007.14677.110221.0&pvid=3dc0a3ba-fa82-43d2-b0b3-6280e4329cef&spm=a2g0o.store_home.promoteRecommendProducts_7913969.58)
|
||||||
|
|
||||||
## Connections (Wiring)
|
## Connections (Wiring)
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ Pixhawk<sup>®</sup> V6X brings you the ultimate in performance, stability an
|
|||||||
- External sensor bus (SPI5) has two chip select lines and data-ready signals for additional sensors and payload with SPI-interface.
|
- External sensor bus (SPI5) has two chip select lines and data-ready signals for additional sensors and payload with SPI-interface.
|
||||||
- Integrated Microchip Ethernet PHY for high-speed communication over Ethernet with onboard devices such as mission computers.
|
- Integrated Microchip Ethernet PHY for high-speed communication over Ethernet with onboard devices such as mission computers.
|
||||||
- Newly designed vibration isolation system to filter out high frequency vibration and reduce noise to ensure accurate readings.
|
- Newly designed vibration isolation system to filter out high frequency vibration and reduce noise to ensure accurate readings.
|
||||||
- IMUs are temperature-controlled by onboard heating resistors, allowing optimum working temperature of IMUs 
|
- IMUs are temperature-controlled by onboard heating resistors, allowing optimum working temperature of IMUs 
|
||||||
- Modular flight controller: separated IMU, FMU, and Base system connected by a 100-pin & a 50-pin Pixhawk® Autopilot Bus connector.
|
- Modular flight controller: separated IMU, FMU, and Base system connected by a 100-pin & a 50-pin Pixhawk® Autopilot Bus connector.
|
||||||
|
|
||||||
The Pixhawk® V6X is ideal for corporate research labs, academic research and commercial applications.
|
The Pixhawk® V6X is ideal for corporate research labs, academic research and commercial applications.
|
||||||
|
|||||||
@@ -135,8 +135,8 @@ The pinout is as shown.
|
|||||||
|
|
||||||
## 外部设备
|
## 外部设备
|
||||||
|
|
||||||
- [Digital Airspeed Sensor](https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-16371268452.37.6d9f48afsFgGZI\&id=9512463037)
|
- [Digital Airspeed Sensor](https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-16371268452.37.6d9f48afsFgGZI&id=9512463037)
|
||||||
- [Telemetry Radio Modules](https://cuav.taobao.com/category-158480951.htm?spm=2013.1.w5002-16371268426.4.410b7a821qYbBq\&search=y\&catName=%CA%FD%B4%AB%B5%E7%CC%A8)
|
- [Telemetry Radio Modules](https://cuav.taobao.com/category-158480951.htm?spm=2013.1.w5002-16371268426.4.410b7a821qYbBq&search=y&catName=%CA%FD%B4%AB%B5%E7%CC%A8)
|
||||||
- [Rangefinders/Distance sensors](../sensor/rangefinders.md)
|
- [Rangefinders/Distance sensors](../sensor/rangefinders.md)
|
||||||
|
|
||||||
## 支持的平台/机身
|
## 支持的平台/机身
|
||||||
|
|||||||
@@ -66,9 +66,9 @@ Main FMU Processor: STM32F765◦32 Bit Arm® Cortex®-M7, 216MHz, 2MB memory, 51
|
|||||||
|
|
||||||
[CUAV Store](https://store.cuav.net/shop/v5-nano/)
|
[CUAV Store](https://store.cuav.net/shop/v5-nano/)
|
||||||
|
|
||||||
[CUAV Aliexpress](https://www.aliexpress.com/item/33050770314.html?storeId=3257035\&spm=2114.12010612.8148356.9.dbe6790bjW2hpH) (international users)
|
CUAV Aliexpress (international users)
|
||||||
|
|
||||||
[CUAV Taobao](https://item.taobao.com/item.htm?spm=a230r.1.14.8.26ab5258veQJRu\&id=569404317857\&ns=1\&abbucket=13#detail) (China Mainland users)
|
CUAV Taobao (China Mainland users)
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
Autopilot may be purchased with included Neo GPS module
|
Autopilot may be purchased with included Neo GPS module
|
||||||
@@ -167,8 +167,8 @@ The _V5 nano_ has no over current protection.
|
|||||||
|
|
||||||
## 外部设备
|
## 外部设备
|
||||||
|
|
||||||
- [Digital Airspeed Sensor](https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-16371268452.37.6d9f48afsFgGZI\&id=9512463037)
|
- [Digital Airspeed Sensor](https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-16371268452.37.6d9f48afsFgGZI&id=9512463037)
|
||||||
- [Telemetry Radio Modules](https://cuav.taobao.com/category-158480951.htm?spm=2013.1.w5002-16371268426.4.410b7a821qYbBq\&search=y\&catName=%CA%FD%B4%AB%B5%E7%CC%A8)
|
- [Telemetry Radio Modules](https://cuav.taobao.com/category-158480951.htm?spm=2013.1.w5002-16371268426.4.410b7a821qYbBq&search=y&catName=%CA%FD%B4%AB%B5%E7%CC%A8)
|
||||||
- [Rangefinders/Distance sensors](../sensor/rangefinders.md)
|
- [Rangefinders/Distance sensors](../sensor/rangefinders.md)
|
||||||
|
|
||||||
## 支持的平台/机身
|
## 支持的平台/机身
|
||||||
|
|||||||
@@ -69,9 +69,9 @@ This flight controller is [manufacturer supported](../flight_controller/autopilo
|
|||||||
|
|
||||||
<!-- [CUAV Store](https://store.cuav.net/index.php?id_product=95&id_product_attribute=0&rewrite=cuav-new-pixhack-v5-autopilot-m8n-gps-for-fpv-rc-drone-quadcopter-helicopter-flight-simulator-free-shipping-whole-sale&controller=product&id_lang=1) -->
|
<!-- [CUAV Store](https://store.cuav.net/index.php?id_product=95&id_product_attribute=0&rewrite=cuav-new-pixhack-v5-autopilot-m8n-gps-for-fpv-rc-drone-quadcopter-helicopter-flight-simulator-free-shipping-whole-sale&controller=product&id_lang=1) -->
|
||||||
|
|
||||||
[CUAV Aliexpress](https://www.aliexpress.com/item/32890380056.html?spm=a2g0o.detail.1000060.1.7a7233e7mLTlVl\&gps-id=pcDetailBottomMoreThisSeller\&scm=1007.13339.90158.0\&scm_id=1007.13339.90158.0\&scm-url=1007.13339.90158.0\&pvid=d899bfab-a7ca-46e1-adf2-72ad1d649822) (International users)
|
[CUAV Aliexpress](https://www.aliexpress.com/item/32890380056.html?spm=a2g0o.detail.1000060.1.7a7233e7mLTlVl&gps-id=pcDetailBottomMoreThisSeller&scm=1007.13339.90158.0&scm_id=1007.13339.90158.0&scm-url=1007.13339.90158.0&pvid=d899bfab-a7ca-46e1-adf2-72ad1d649822) (International users)
|
||||||
|
|
||||||
[CUAV Taobao](https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-21303114052.37.a28f697aeYzQx9\&id=594262853015) (China Mainland users)
|
CUAV Taobao (China Mainland users)
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
Autopilot may be purchased with included Neo GPS module
|
Autopilot may be purchased with included Neo GPS module
|
||||||
@@ -178,8 +178,8 @@ For more information see [Using JTAG for hardware debugging](#using-jtag-for-har
|
|||||||
|
|
||||||
## 外部设备
|
## 外部设备
|
||||||
|
|
||||||
- [Digital Airspeed Sensor](https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-16371268452.37.6d9f48afsFgGZI\&id=9512463037)
|
- [Digital Airspeed Sensor](https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-16371268452.37.6d9f48afsFgGZI&id=9512463037)
|
||||||
- [Telemetry Radio Modules](https://cuav.taobao.com/category-158480951.htm?spm=2013.1.w5002-16371268426.4.410b7a821qYbBq\&search=y\&catName=%CA%FD%B4%AB%B5%E7%CC%A8)
|
- [Telemetry Radio Modules](https://cuav.taobao.com/category-158480951.htm?spm=2013.1.w5002-16371268426.4.410b7a821qYbBq&search=y&catName=%CA%FD%B4%AB%B5%E7%CC%A8)
|
||||||
- [Rangefinders/Distance sensors](../sensor/rangefinders.md)
|
- [Rangefinders/Distance sensors](../sensor/rangefinders.md)
|
||||||
|
|
||||||
## 支持的平台/机身
|
## 支持的平台/机身
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ When it runs PX4 firmware, only 8 pwm works, the remaining 6 pwm are still being
|
|||||||
|
|
||||||
[CUAV Store](https://store.cuav.net)
|
[CUAV Store](https://store.cuav.net)
|
||||||
|
|
||||||
[CUAV aliexpress](https://www.aliexpress.com/item/4001042683738.html?spm=a2g0o.detail.1000060.2.1ebb2a9d3WDryi\&gps-id=pcDetailBottomMoreThisSeller\&scm=1007.13339.169870.0\&scm_id=1007.13339.169870.0\&scm-url=1007.13339.169870.0\&pvid=f0df2481-1c0a-44eb-92a4-9c11c6cb3d06&_t=gps-id:pcDetailBottomMoreThisSeller,scm-url:1007.13339.169870.0,pvid:f0df2481-1c0a-44eb-92a4-9c11c6cb3d06,tpp_buckets:668%230%23131923%2320_668%23808%234094%23518_668%23888%233325%2319_668%234328%2319934%23630_668%232846%238115%23807_668%232717%237566%23827_668%231000022185%231000066058%230_668%233468%2315607%2376)
|
[CUAV aliexpress](https://www.aliexpress.com/item/4001042683738.html?spm=a2g0o.detail.1000060.2.1ebb2a9d3WDryi&gps-id=pcDetailBottomMoreThisSeller&scm=1007.13339.169870.0&scm_id=1007.13339.169870.0&scm-url=1007.13339.169870.0&pvid=f0df2481-1c0a-44eb-92a4-9c11c6cb3d06&_t=gps-id:pcDetailBottomMoreThisSeller,scm-url:1007.13339.169870.0,pvid:f0df2481-1c0a-44eb-92a4-9c11c6cb3d06,tpp_buckets:668%230%23131923%2320_668%23808%234094%23518_668%23888%233325%2319_668%234328%2319934%23630_668%232846%238115%23807_668%232717%237566%23827_668%231000022185%231000066058%230_668%233468%2315607%2376)
|
||||||
|
|
||||||
## Connections (Wiring)
|
## Connections (Wiring)
|
||||||
|
|
||||||
|
|||||||
@@ -36,14 +36,14 @@ This flight controller is perfect for people that is looking for a affordable an
|
|||||||
|
|
||||||
### **Processors & Sensors**
|
### **Processors & Sensors**
|
||||||
|
|
||||||
- FMU Processor: STM32H743 
|
- FMU Processor: STM32H743 
|
||||||
- 32 Bit Arm® Cortex®-M7, 480MHz, 2MB memory, 1MB SRAM 
|
- 32 Bit Arm® Cortex®-M7, 480MHz, 2MB memory, 1MB SRAM 
|
||||||
- IO Processor: STM32F103
|
- IO Processor: STM32F103
|
||||||
-  32 Bit Arm® Cortex®-M3, 72MHz, 64KB SRAM 
|
-  32 Bit Arm® Cortex®-M3, 72MHz, 64KB SRAM 
|
||||||
- On-board sensors 
|
- On-board sensors 
|
||||||
-  Accel/Gyro: ICM-42688-P 
|
-  Accel/Gyro: ICM-42688-P 
|
||||||
- Accel/Gyro: BMI055 
|
- Accel/Gyro: BMI055 
|
||||||
- Mag: IST8310 
|
- Mag: IST8310 
|
||||||
- 气压计:MS5611
|
- 气压计:MS5611
|
||||||
|
|
||||||
### **Electrical data**
|
### **Electrical data**
|
||||||
@@ -204,5 +204,5 @@ The complete set of supported configurations can be seen in the [Airframes Refer
|
|||||||
- [PM02 Power Module](../power_module/holybro_pm02.md)
|
- [PM02 Power Module](../power_module/holybro_pm02.md)
|
||||||
- [PM06 Power Module](../power_module/holybro_pm06_pixhawk4mini_power_module.md)
|
- [PM06 Power Module](../power_module/holybro_pm06_pixhawk4mini_power_module.md)
|
||||||
- [PM07 Power Module](../power_module/holybro_pm07_pixhawk4_power_module.md)
|
- [PM07 Power Module](../power_module/holybro_pm07_pixhawk4_power_module.md)
|
||||||
- [FMUv6C reference design pinout](https://docs.google.com/spreadsheets/d/1FcmWRKd6zjdz3-cnjEDYEmANKZOFzNSc/edit?usp=sharing\&ouid=113251442407318461574\&rtpof=true\&sd=true).
|
- FMUv6C reference design pinout.
|
||||||
- [Pixhawk Connector Standard](https://github.com/pixhawk/Pixhawk-Standards/blob/master/DS-009%20Pixhawk%20Connector%20Standard.pdf).
|
- [Pixhawk Connector Standard](https://github.com/pixhawk/Pixhawk-Standards/blob/master/DS-009%20Pixhawk%20Connector%20Standard.pdf).
|
||||||
|
|||||||
@@ -135,4 +135,4 @@ The [SWD interface](../debug/swd_debug.md) (JTAG) pins are:
|
|||||||
|
|
||||||
These are shown below.
|
These are shown below.
|
||||||
|
|
||||||
 
|
 
|
||||||
|
|||||||
@@ -35,21 +35,21 @@ The main hardware documentation is [here](http://mindpx.net/assets/accessories/m
|
|||||||
- Support IMU isolation
|
- Support IMU isolation
|
||||||
- DroneCode<sup>®</sup> standard compliance connector
|
- DroneCode<sup>®</sup> standard compliance connector
|
||||||
|
|
||||||
| Item | 描述 |
|
| Item | 描述 |
|
||||||
| :----------------------------------------: | :-----------------------------------------------------------------------------------------------------------: |
|
| :----------------------------------------: | :-------------------------------------------------------------------------------------------------------: |
|
||||||
| Flight controller/Processor | F427VIT6 |
|
| Flight controller/Processor | F427VIT6 |
|
||||||
| 重量 | ~6g |
|
| 重量 | ~6g |
|
||||||
| Dimension | 35x35mm |
|
| Dimension | 35x35mm |
|
||||||
| PWM Outputs | maximum 6 |
|
| PWM Outputs | maximum 6 |
|
||||||
| IMU | 10DOF |
|
| IMU | 10DOF |
|
||||||
| IMU isolation | YES/Optional |
|
| IMU isolation | YES/Optional |
|
||||||
| Radio Receiver | S.BUS/PPM/DSM/DSM2/DSMX/SUMD |
|
| Radio Receiver | S.BUS/PPM/DSM/DSM2/DSMX/SUMD |
|
||||||
| Telemetry | FrSky<sup>&reg;</sup> D.Port, S.Port, Wifi, 3DR radio |
|
| Telemetry | FrSky<sup>®</sup> D.Port, S.Port, Wifi, 3DR radio |
|
||||||
| On board TF card for flight data recording | YES |
|
| On board TF card for flight data recording | YES |
|
||||||
| OneShot ESC Support | YES |
|
| OneShot ESC Support | YES |
|
||||||
| Expansion Slots | 2x7(pin)x2 |
|
| Expansion Slots | 2x7(pin)x2 |
|
||||||
| On board Real time clock | YES |
|
| On board Real time clock | YES |
|
||||||
| Connector | JST GH(compliance with DroneCode standard) |
|
| Connector | JST GH(compliance with DroneCode standard) |
|
||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Contact the [manufacturer](https://store.mrobotics.io/) for hardware support or
|
|||||||
The _mRo Pixhawk<sup>®</sup>_ is a hardware compatible version of the original [Pixhawk 1](../flight_controller/pixhawk.md). It runs PX4 on the [NuttX](https://nuttx.apache.org/) OS.
|
The _mRo Pixhawk<sup>®</sup>_ is a hardware compatible version of the original [Pixhawk 1](../flight_controller/pixhawk.md). It runs PX4 on the [NuttX](https://nuttx.apache.org/) OS.
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
The controller can be used as a drop-in replacement for the 3DR<sup>&reg;</sup> [Pixhawk 1](../flight_controller/pixhawk.md).
|
The controller can be used as a drop-in replacement for the 3DR<sup>®</sup> [Pixhawk 1](../flight_controller/pixhawk.md).
|
||||||
The main difference is that it is based on the [Pixhawk-project](https://pixhawk.org/) **FMUv3** open hardware design, which corrects a bug that limited the original Pixhawk 1 to 1MB of flash.
|
The main difference is that it is based on the [Pixhawk-project](https://pixhawk.org/) **FMUv3** open hardware design, which corrects a bug that limited the original Pixhawk 1 to 1MB of flash.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ This product can be ordered at the [mRobotics<sup>®</sup> Store](https://sto
|
|||||||
|
|
||||||
## 接线指南
|
## 接线指南
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 编译固件
|
## 编译固件
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ Similar variants will be available from our licensees.
|
|||||||
- Triple-redundancy domains: Completely isolated sensor domains with separate buses and separate power control
|
- Triple-redundancy domains: Completely isolated sensor domains with separate buses and separate power control
|
||||||
- Newly designed vibration isolation system to filter out high frequency vibration and reduce noise to ensure accurate readings
|
- Newly designed vibration isolation system to filter out high frequency vibration and reduce noise to ensure accurate readings
|
||||||
- 100Base-T1 2-Wire Ethernet interface for high-speed mission computer integration
|
- 100Base-T1 2-Wire Ethernet interface for high-speed mission computer integration
|
||||||
- IMUs are temperature-controlled by onboard heating resistors, allowing optimum working temperature of IMUs 
|
- IMUs are temperature-controlled by onboard heating resistors, allowing optimum working temperature of IMUs 
|
||||||
|
|
||||||
### Processors & Sensors
|
### Processors & Sensors
|
||||||
|
|
||||||
|
|||||||
@@ -126,6 +126,6 @@ You only need to supply the 3S/4S LiPo battery.
|
|||||||
|
|
||||||
- [HoverGames online documentation](https://nxp.gitbook.io/hovergames) PX4 user and programming guide, specific assembly, construction, debugging, programming instructions.
|
- [HoverGames online documentation](https://nxp.gitbook.io/hovergames) PX4 user and programming guide, specific assembly, construction, debugging, programming instructions.
|
||||||
|
|
||||||
- 3DModels supporting HoverGames and RDDRONE-FMUK66 can be found on _Thingiverse_ at these search links: [fmuk66](https://www.thingiverse.com/search?q=fmuk66\&type=things\&sort=relevant), [hovergames](https://www.thingiverse.com/search?q=hovergames\&type=things\&sort=relevant).
|
- 3DModels supporting HoverGames and RDDRONE-FMUK66 can be found on _Thingiverse_ at these search links: fmuk66, hovergames.
|
||||||
|
|
||||||

|

|
||||||
|
|||||||
@@ -53,7 +53,7 @@ This flight controller is [manufacturer supported](../flight_controller/autopilo
|
|||||||
|
|
||||||
The board can be purchased from:
|
The board can be purchased from:
|
||||||
|
|
||||||
- [store.cuav.net](http://store.cuav.net/index.php?id_product=8\&id_product_attribute=0\&rewrite=pixhack-v3-autopilot\&controller=product\&id_lang=3)
|
- [store.cuav.net](http://store.cuav.net/index.php?id_product=8&id_product_attribute=0&rewrite=pixhack-v3-autopilot&controller=product&id_lang=3)
|
||||||
- [leixun.aliexpress.com/store](https://leixun.aliexpress.com/store)
|
- [leixun.aliexpress.com/store](https://leixun.aliexpress.com/store)
|
||||||
|
|
||||||
## 编译固件
|
## 编译固件
|
||||||
|
|||||||
@@ -325,7 +325,7 @@ make px4_fmu-v2_default
|
|||||||
|
|
||||||
- **ARM MINI JTAG (J6)**: 1.27 mm 10pos header (SHROUDED), for Black Magic Probe: FCI 20021521-00010D4LF ([Distrelec](https://www.distrelec.ch/en/minitek-127-straight-male-pcb-header-surface-mount-rows-10-contacts-27mm-pitch-amphenol-fci-20021521-00010d4lf/p/14352308), [Digi-Key](https://www.digikey.com/en/products/detail/20021521-00010T1LF/609-4054-ND/2414951),) or Samtec FTSH-105-01-F-DV-K (untested) or Harwin M50-3600542 ([Digikey](https://www.digikey.com/en/products/detail/harwin-inc/M50-3600542/2264370) or [Mouser](http://ch.mouser.com/ProductDetail/Harwin/M50-3600542/?qs=%2fha2pyFadujTt%2fIEz8xdzrYzHAVUnbxh8Ki%252bwWYPNeEa09PYvTkIOQ%3d%3d))
|
- **ARM MINI JTAG (J6)**: 1.27 mm 10pos header (SHROUDED), for Black Magic Probe: FCI 20021521-00010D4LF ([Distrelec](https://www.distrelec.ch/en/minitek-127-straight-male-pcb-header-surface-mount-rows-10-contacts-27mm-pitch-amphenol-fci-20021521-00010d4lf/p/14352308), [Digi-Key](https://www.digikey.com/en/products/detail/20021521-00010T1LF/609-4054-ND/2414951),) or Samtec FTSH-105-01-F-DV-K (untested) or Harwin M50-3600542 ([Digikey](https://www.digikey.com/en/products/detail/harwin-inc/M50-3600542/2264370) or [Mouser](http://ch.mouser.com/ProductDetail/Harwin/M50-3600542/?qs=%2fha2pyFadujTt%2fIEz8xdzrYzHAVUnbxh8Ki%252bwWYPNeEa09PYvTkIOQ%3d%3d))
|
||||||
- JTAG Adapter Option #1: [BlackMagic Probe](https://1bitsquared.com/products/black-magic-probe). Note, may come without cables (check with manufacturer).
|
- JTAG Adapter Option #1: [BlackMagic Probe](https://1bitsquared.com/products/black-magic-probe). Note, may come without cables (check with manufacturer).
|
||||||
If so, you will need the **Samtec FFSD-05-D-06.00-01-N** cable ([Samtec sample service](https://www.samtec.com/products/ffsd-05-d-06.00-01-n) or [Digi-Key Link: SAM8218-ND](http://www.digikey.com/product-search/en?x=0\&y=0\&lang=en\&site=us\&KeyWords=FFSD-05-D-06.00-01-N)) or [Tag Connect Ribbon](http://www.tag-connect.com/CORTEXRIBBON10) and a Mini-USB cable.
|
If so, you will need the **Samtec FFSD-05-D-06.00-01-N** cable ([Samtec sample service](https://www.samtec.com/products/ffsd-05-d-06.00-01-n) or Digi-Key Link: SAM8218-ND) or Tag Connect Ribbon and a Mini-USB cable.
|
||||||
- JTAG Adapter Option #2: [Digi-Key Link: ST-LINK/V2](https://www.digikey.com/product-detail/en/stmicroelectronics/ST-LINK-V2/497-10484-ND) / [ST USER MANUAL](http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/USER_MANUAL/DM00026748.pdf), needs an ARM Mini JTAG to 20pos adapter: [Digi-Key Link: 726-1193-ND](https://www.digikey.com/en/products/detail/texas-instruments/MDL-ADA2/1986451)
|
- JTAG Adapter Option #2: [Digi-Key Link: ST-LINK/V2](https://www.digikey.com/product-detail/en/stmicroelectronics/ST-LINK-V2/497-10484-ND) / [ST USER MANUAL](http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/USER_MANUAL/DM00026748.pdf), needs an ARM Mini JTAG to 20pos adapter: [Digi-Key Link: 726-1193-ND](https://www.digikey.com/en/products/detail/texas-instruments/MDL-ADA2/1986451)
|
||||||
- JTAG Adapter Option #3: [SparkFun Link: Olimex ARM-TINY](http://www.sparkfun.com/products/8278) or any other OpenOCD-compatible ARM Cortex JTAG adapter, needs an ARM Mini JTAG to 20pos adapter: [Digi-Key Link: 726-1193-ND](https://www.digikey.com/en/products/detail/texas-instruments/MDL-ADA2/1986451)
|
- JTAG Adapter Option #3: [SparkFun Link: Olimex ARM-TINY](http://www.sparkfun.com/products/8278) or any other OpenOCD-compatible ARM Cortex JTAG adapter, needs an ARM Mini JTAG to 20pos adapter: [Digi-Key Link: 726-1193-ND](https://www.digikey.com/en/products/detail/texas-instruments/MDL-ADA2/1986451)
|
||||||
- **USARTs**: Hirose DF13 6 pos ([Digi-Key Link: DF13A-6P-1.25H(20)](https://www.digikey.com/products/en?keywords=H3371-ND))
|
- **USARTs**: Hirose DF13 6 pos ([Digi-Key Link: DF13A-6P-1.25H(20)](https://www.digikey.com/products/en?keywords=H3371-ND))
|
||||||
|
|||||||
@@ -33,20 +33,20 @@ The Pixhawk® 6C is perfect for developers at corporate research labs, startups,
|
|||||||
- High performance STM32H743 Processor with more computing power & RAM
|
- High performance STM32H743 Processor with more computing power & RAM
|
||||||
- New cost-effective design with low-profile form factor
|
- New cost-effective design with low-profile form factor
|
||||||
- Newly designed integrated vibration isolation system to filter out high frequency vibration and reduce noise to ensure accurate readings
|
- Newly designed integrated vibration isolation system to filter out high frequency vibration and reduce noise to ensure accurate readings
|
||||||
- IMUs are temperature-controlled by onboard heating resistors, allowing optimum working temperature of IMUs 
|
- IMUs are temperature-controlled by onboard heating resistors, allowing optimum working temperature of IMUs 
|
||||||
|
|
||||||
# Technical Specification
|
# Technical Specification
|
||||||
|
|
||||||
### **Processors & Sensors**
|
### **Processors & Sensors**
|
||||||
|
|
||||||
- FMU Processor: STM32H743 
|
- FMU Processor: STM32H743 
|
||||||
- 32 Bit Arm® Cortex®-M7, 480MHz, 2MB memory, 1MB SRAM 
|
- 32 Bit Arm® Cortex®-M7, 480MHz, 2MB memory, 1MB SRAM 
|
||||||
- IO Processor: STM32F103
|
- IO Processor: STM32F103
|
||||||
-  32 Bit Arm® Cortex®-M3, 72MHz, 64KB SRAM 
|
-  32 Bit Arm® Cortex®-M3, 72MHz, 64KB SRAM 
|
||||||
- On-board sensors 
|
- On-board sensors 
|
||||||
-  Accel/Gyro: ICM-42688-P 
|
-  Accel/Gyro: ICM-42688-P 
|
||||||
- Accel/Gyro: BMI055 
|
- Accel/Gyro: BMI055 
|
||||||
- Mag: IST8310 
|
- Mag: IST8310 
|
||||||
- 气压计:MS5611
|
- 气压计:MS5611
|
||||||
|
|
||||||
### **Electrical data**
|
### **Electrical data**
|
||||||
@@ -210,5 +210,5 @@ The complete set of supported configurations can be seen in the [Airframes Refer
|
|||||||
- [PM02 Power Module](../power_module/holybro_pm02.md)
|
- [PM02 Power Module](../power_module/holybro_pm02.md)
|
||||||
- [PM06 Power Module](../power_module/holybro_pm06_pixhawk4mini_power_module.md)
|
- [PM06 Power Module](../power_module/holybro_pm06_pixhawk4mini_power_module.md)
|
||||||
- [PM07 Power Module](../power_module/holybro_pm07_pixhawk4_power_module.md)
|
- [PM07 Power Module](../power_module/holybro_pm07_pixhawk4_power_module.md)
|
||||||
- [FMUv6C reference design pinout](https://docs.google.com/spreadsheets/d/1FcmWRKd6zjdz3-cnjEDYEmANKZOFzNSc/edit?usp=sharing\&ouid=113251442407318461574\&rtpof=true\&sd=true).
|
- FMUv6C reference design pinout.
|
||||||
- [Pixhawk Connector Standard](https://github.com/pixhawk/Pixhawk-Standards/blob/master/DS-009%20Pixhawk%20Connector%20Standard.pdf).
|
- [Pixhawk Connector Standard](https://github.com/pixhawk/Pixhawk-Standards/blob/master/DS-009%20Pixhawk%20Connector%20Standard.pdf).
|
||||||
|
|||||||
@@ -212,5 +212,5 @@ The complete set of supported configurations can be seen in the [Airframes Refer
|
|||||||
- [PM06 Power Module](../power_module/holybro_pm06_pixhawk4mini_power_module.md)
|
- [PM06 Power Module](../power_module/holybro_pm06_pixhawk4mini_power_module.md)
|
||||||
- [PM07 Power Module](../power_module/holybro_pm07_pixhawk4_power_module.md)
|
- [PM07 Power Module](../power_module/holybro_pm07_pixhawk4_power_module.md)
|
||||||
- [PM08 Power Module](https://holybro.com/products/pm08-power-module-14s-200a)
|
- [PM08 Power Module](https://holybro.com/products/pm08-power-module-14s-200a)
|
||||||
- [FMUv6C reference design pinout](https://docs.google.com/spreadsheets/d/1FcmWRKd6zjdz3-cnjEDYEmANKZOFzNSc/edit?usp=sharing\&ouid=113251442407318461574\&rtpof=true\&sd=true).
|
- FMUv6C reference design pinout.
|
||||||
- [Pixhawk Connector Standard](https://github.com/pixhawk/Pixhawk-Standards/blob/master/DS-009%20Pixhawk%20Connector%20Standard.pdf).
|
- [Pixhawk Connector Standard](https://github.com/pixhawk/Pixhawk-Standards/blob/master/DS-009%20Pixhawk%20Connector%20Standard.pdf).
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ The Pixhawk® 6X-RT is perfect for developers at corporate research labs, sta
|
|||||||
- Triple redundancy domains: Completely isolated sensor domains with separate buses and separate power control
|
- Triple redundancy domains: Completely isolated sensor domains with separate buses and separate power control
|
||||||
- Newly designed vibration isolation system to filter out high frequency vibration and reduce noise to ensure accurate readings
|
- Newly designed vibration isolation system to filter out high frequency vibration and reduce noise to ensure accurate readings
|
||||||
- Ethernet interface for high-speed mission computer integration
|
- Ethernet interface for high-speed mission computer integration
|
||||||
- IMUs are temperature-controlled by onboard heating resistors, allowing optimum working temperature of IMUs 
|
- IMUs are temperature-controlled by onboard heating resistors, allowing optimum working temperature of IMUs 
|
||||||
|
|
||||||
### Processors & Sensors
|
### Processors & Sensors
|
||||||
|
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ The Pixhawk® 6X is perfect for developers at corporate research labs, startu
|
|||||||
- Triple redundancy domains: Completely isolated sensor domains with separate buses and separate power control
|
- Triple redundancy domains: Completely isolated sensor domains with separate buses and separate power control
|
||||||
- Newly designed vibration isolation system to filter out high frequency vibration and reduce noise to ensure accurate readings
|
- Newly designed vibration isolation system to filter out high frequency vibration and reduce noise to ensure accurate readings
|
||||||
- Ethernet interface for high-speed mission computer integration
|
- Ethernet interface for high-speed mission computer integration
|
||||||
- IMUs are temperature-controlled by onboard heating resistors, allowing optimum working temperature of IMUs 
|
- IMUs are temperature-controlled by onboard heating resistors, allowing optimum working temperature of IMUs 
|
||||||
|
|
||||||
### Processors & Sensors
|
### Processors & Sensors
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ The Pixhawk Mini is based on the PX4 open-hardware project and has been optimize
|
|||||||
Wiring information is available [below](#wiring).
|
Wiring information is available [below](#wiring).
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
This flight controller was designed by 3DR in collaboration with HobbyKing<sup>&reg;</sup>.
|
This flight controller was designed by 3DR in collaboration with HobbyKing<sup>®</sup>.
|
||||||
It was formerly known as the 3DR Pixhawk Mini.
|
It was formerly known as the 3DR Pixhawk Mini.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -109,7 +109,7 @@ The _Pixhawk Mini_ is shipped with the following contents:
|
|||||||
| GPS module |  |
|
| GPS module |  |
|
||||||
| Quad Power Distribution Board |  |
|
| Quad Power Distribution Board |  |
|
||||||
| 8 Channel PWM Breakout board |  |
|
| 8 Channel PWM Breakout board |  |
|
||||||
| 4-pin cable (for I2C) |  |
|
| 4-pin cable (for I2C) |  |
|
||||||
| RC-in cable for PPM/SBUS |  |
|
| RC-in cable for PPM/SBUS |  |
|
||||||
| 6 to 6/4 ‘Y’ adapter for GPS and additional I2C devices |  |
|
| 6 to 6/4 ‘Y’ adapter for GPS and additional I2C devices |  |
|
||||||
| 6 pin cable (2) (for power distribution board and for compass/gps) |  |
|
| 6 pin cable (2) (for power distribution board and for compass/gps) |  |
|
||||||
|
|||||||
@@ -48,9 +48,9 @@ It is based on the **Pixhawk-project FMUv3** open hardware design and runs **PX4
|
|||||||
|
|
||||||
## 连接器
|
## 连接器
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 串口映射
|
## 串口映射
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ Contact the [manufacturer](https://thepeach.kr/) for hardware support or complia
|
|||||||
|
|
||||||
It is based on the **Pixhawk-project FMUv3** open hardware design and runs **PX4** on **Nuttx OS**.
|
It is based on the **Pixhawk-project FMUv3** open hardware design and runs **PX4** on **Nuttx OS**.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 产品规格
|
## 产品规格
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@ It is based on the **Pixhawk-project FMUv3** open hardware design and runs **PX4
|
|||||||
|
|
||||||
## 连接器
|
## 连接器
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 串口映射
|
## 串口映射
|
||||||
|
|
||||||
|
|||||||
@@ -29,32 +29,32 @@ At high level all vehicle types behave in the same way when MISSION mode is enga
|
|||||||
|
|
||||||
1. If no mission is stored, or if PX4 has finished executing all mission commands, or if the [mission is not feasible](#mission-feasibility-checks):
|
1. If no mission is stored, or if PX4 has finished executing all mission commands, or if the [mission is not feasible](#mission-feasibility-checks):
|
||||||
|
|
||||||
- If flying the vehicle will loiter.
|
- If flying the vehicle will loiter.
|
||||||
- If landed the vehicle will "wait".
|
- If landed the vehicle will "wait".
|
||||||
|
|
||||||
2. If a mission is stored and PX4 is flying it will execute the [mission/flight plan](../flying/missions.md) from the current step.
|
2. If a mission is stored and PX4 is flying it will execute the [mission/flight plan](../flying/missions.md) from the current step.
|
||||||
- A takeoff mission item will be treated as a normal waypoint.
|
- A takeoff mission item will be treated as a normal waypoint.
|
||||||
|
|
||||||
3. If a mission is stored and the vehicle is landed it will only takeoff if the active waypoint is a `Takeoff`.
|
3. If a mission is stored and the vehicle is landed it will only takeoff if the active waypoint is a `Takeoff`.
|
||||||
If configured for catapult launch, the vehicle must also be launched (see [FW Takeoff/Landing in Mission](#mission-takeoff)).
|
If configured for catapult launch, the vehicle must also be launched (see [FW Takeoff/Landing in Mission](#mission-takeoff)).
|
||||||
|
|
||||||
4. If no mission is stored, or if PX4 has finished executing all mission commands:
|
4. If no mission is stored, or if PX4 has finished executing all mission commands:
|
||||||
- If flying the vehicle will loiter.
|
- If flying the vehicle will loiter.
|
||||||
- If landed the vehicle will "wait".
|
- If landed the vehicle will "wait".
|
||||||
|
|
||||||
5. You can manually change the current mission command by selecting it in _QGroundControl_.
|
5. You can manually change the current mission command by selecting it in _QGroundControl_.
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
If you have a _Jump to item_ command in the mission, moving to another item will **not** reset the loop counter.
|
If you have a _Jump to item_ command in the mission, moving to another item will **not** reset the loop counter.
|
||||||
One implication is that if you change the current mission command to 1 this will not "fully restart" the mission.
|
One implication is that if you change the current mission command to 1 this will not "fully restart" the mission.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
6. The mission will only reset when the vehicle is disarmed or when a new mission is uploaded.
|
6. The mission will only reset when the vehicle is disarmed or when a new mission is uploaded.
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
To automatically disarm the vehicle after it lands, in _QGroundControl_ go to [Vehicle Setup > Safety](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/setup_view/safety.html), navigate to _Land Mode Settings_ and check the box labeled _Disarm after_.
|
To automatically disarm the vehicle after it lands, in _QGroundControl_ go to [Vehicle Setup > Safety](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/setup_view/safety.html), navigate to _Land Mode Settings_ and check the box labeled _Disarm after_.
|
||||||
Enter the time to wait after landing before disarming the vehicle.
|
Enter the time to wait after landing before disarming the vehicle.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -261,7 +261,7 @@ This pattern results in the following landing sequence:
|
|||||||
|
|
||||||
1. **Fly to landing location**: The aircraft flies at its current altitude towards the loiter waypoint.
|
1. **Fly to landing location**: The aircraft flies at its current altitude towards the loiter waypoint.
|
||||||
2. **Descending orbit to approach altitude**: On reaching the loiter radius of the waypoint, the vehicle performs a descending orbit until it reaches the "approach altitude" (the altitude of the loiter waypoint).
|
2. **Descending orbit to approach altitude**: On reaching the loiter radius of the waypoint, the vehicle performs a descending orbit until it reaches the "approach altitude" (the altitude of the loiter waypoint).
|
||||||
The vehicle continues to orbit at this altitude until it has a tanjential path towards the land waypoint, at which point the landing approach is initiated.
|
The vehicle continues to orbit at this altitude until it has a tanjential path towards the land waypoint, at which point the landing approach is initiated.
|
||||||
3. **Landing approach**: The aircraft follows the landing approach slope towards the land waypoint until the flare altitude is reached.
|
3. **Landing approach**: The aircraft follows the landing approach slope towards the land waypoint until the flare altitude is reached.
|
||||||
4. **Flare**: The vehicle flares until it touches down.
|
4. **Flare**: The vehicle flares until it touches down.
|
||||||
|
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ To launch in this mode:
|
|||||||
1. Arm the vehicle
|
1. Arm the vehicle
|
||||||
2. Put the vehicle into _Takeoff mode_
|
2. Put the vehicle into _Takeoff mode_
|
||||||
3. Launch/throw the vehicle (firmly) directly into the wind.
|
3. Launch/throw the vehicle (firmly) directly into the wind.
|
||||||
You can also shake the vehicle first, wait till the motor spins up and then throw it
|
You can also shake the vehicle first, wait till the motor spins up and then throw it
|
||||||
|
|
||||||
### Parameters (Launch Detector)
|
### Parameters (Launch Detector)
|
||||||
|
|
||||||
|
|||||||
@@ -151,19 +151,19 @@ The follow-me behavior can be configured using the following parameters:
|
|||||||
|
|
||||||
1. Set the [follow distance](#FLW_TGT_DST) to more than 12 meters (8 meters is a "recommended minimum").
|
1. Set the [follow distance](#FLW_TGT_DST) to more than 12 meters (8 meters is a "recommended minimum").
|
||||||
|
|
||||||
There is an inherent position bias (3 ~ 5 meters) between the target and the drone's GPS sensor, which makes the drone follow a 'ghost target' somewhere near the actual target. This is more obvious when the follow distance is very small. We recommend that the follow distance is set to be large enough such that the GPS bias is not significant.
|
There is an inherent position bias (3 ~ 5 meters) between the target and the drone's GPS sensor, which makes the drone follow a 'ghost target' somewhere near the actual target. This is more obvious when the follow distance is very small. We recommend that the follow distance is set to be large enough such that the GPS bias is not significant.
|
||||||
This is more obvious when the follow distance is very small.
|
This is more obvious when the follow distance is very small.
|
||||||
We recommend that the follow distance is set to be large enough such that the GPS bias is not significant.
|
We recommend that the follow distance is set to be large enough such that the GPS bias is not significant.
|
||||||
|
|
||||||
2. The speed at which you can change the follow angle depends on the [maximum tangential velocity](#FLW_TGT_MAX_VEL) setting.
|
2. The speed at which you can change the follow angle depends on the [maximum tangential velocity](#FLW_TGT_MAX_VEL) setting.
|
||||||
|
|
||||||
Experimentation shows that values between `5 m/s` are `10 m/s` are usually suitable.
|
Experimentation shows that values between `5 m/s` are `10 m/s` are usually suitable.
|
||||||
|
|
||||||
3. Using the RC Adjustment for height, distance and angle, you can get some creative camera shots.
|
3. Using the RC Adjustment for height, distance and angle, you can get some creative camera shots.
|
||||||
|
|
||||||
<lite-youtube videoid="o3DhvCL_M1E" title="YUN0012 almostCinematic"/>
|
<lite-youtube videoid="o3DhvCL_M1E" title="YUN0012 almostCinematic"/>
|
||||||
|
|
||||||
This video demonstrates a Google-Earth view perspective, by adjusting the height to around 50 meters (high), distance to 1 meter (close). Which allows a perspective as shot from a satellite.
|
This video demonstrates a Google-Earth view perspective, by adjusting the height to around 50 meters (high), distance to 1 meter (close). Which allows a perspective as shot from a satellite.
|
||||||
|
|
||||||
## 已知的问题
|
## 已知的问题
|
||||||
|
|
||||||
|
|||||||
@@ -31,33 +31,33 @@ At high level all vehicle types behave in the same way when MISSION mode is enga
|
|||||||
|
|
||||||
1. If no mission is stored, or if PX4 has finished executing all mission commands, or if the [mission is not feasible](#mission-feasibility-checks):
|
1. If no mission is stored, or if PX4 has finished executing all mission commands, or if the [mission is not feasible](#mission-feasibility-checks):
|
||||||
|
|
||||||
- If flying the vehicle will hold.
|
- If flying the vehicle will hold.
|
||||||
- If landed the vehicle will "wait".
|
- If landed the vehicle will "wait".
|
||||||
|
|
||||||
2. If a mission is stored and PX4 is flying it will execute the [mission/flight plan](../flying/missions.md) from the current step.
|
2. If a mission is stored and PX4 is flying it will execute the [mission/flight plan](../flying/missions.md) from the current step.
|
||||||
- A `TAKEOFF` item is treated as a normal waypoint.
|
- A `TAKEOFF` item is treated as a normal waypoint.
|
||||||
|
|
||||||
3. If a mission is stored and PX4 is landed:
|
3. If a mission is stored and PX4 is landed:
|
||||||
- PX4 will execute the [mission/flight plan](../flying/missions.md).
|
- PX4 will execute the [mission/flight plan](../flying/missions.md).
|
||||||
- If the mission does not have a `TAKEOFF` item then PX4 will fly the vehicle to the minimum altitude before executing the remainder of the flight plan from the current step.
|
- If the mission does not have a `TAKEOFF` item then PX4 will fly the vehicle to the minimum altitude before executing the remainder of the flight plan from the current step.
|
||||||
|
|
||||||
4. If no mission is stored, or if PX4 has finished executing all mission commands:
|
4. If no mission is stored, or if PX4 has finished executing all mission commands:
|
||||||
- If flying the vehicle will hold.
|
- If flying the vehicle will hold.
|
||||||
- If landed the vehicle will "wait".
|
- If landed the vehicle will "wait".
|
||||||
|
|
||||||
5. You can manually change the current mission command by selecting it in _QGroundControl_.
|
5. You can manually change the current mission command by selecting it in _QGroundControl_.
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
If you have a _Jump to item_ command in the mission, moving to another item will **not** reset the loop counter.
|
If you have a _Jump to item_ command in the mission, moving to another item will **not** reset the loop counter.
|
||||||
One implication is that if you change the current mission command to 1 this will not "fully restart" the mission.
|
One implication is that if you change the current mission command to 1 this will not "fully restart" the mission.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
6. The mission will only reset when the vehicle is disarmed or when a new mission is uploaded.
|
6. The mission will only reset when the vehicle is disarmed or when a new mission is uploaded.
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
To automatically disarm the vehicle after it lands, in _QGroundControl_ go to [Vehicle Setup > Safety](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/setup_view/safety.html), navigate to _Land Mode Settings_ and check the box labeled _Disarm after_.
|
To automatically disarm the vehicle after it lands, in _QGroundControl_ go to [Vehicle Setup > Safety](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/setup_view/safety.html), navigate to _Land Mode Settings_ and check the box labeled _Disarm after_.
|
||||||
Enter the time to wait after landing before disarming the vehicle.
|
Enter the time to wait after landing before disarming the vehicle.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|||||||
@@ -43,16 +43,16 @@ Also ensure that the propellers do not spin on arming after enabling the feature
|
|||||||
In addition:
|
In addition:
|
||||||
|
|
||||||
1. Wear safety equipment.
|
1. Wear safety equipment.
|
||||||
Eye protection and work gloves are recommended.
|
Eye protection and work gloves are recommended.
|
||||||
2. Have an easily accessible and tested [kill switch](../config/safety.md#kill-switch).
|
2. Have an easily accessible and tested [kill switch](../config/safety.md#kill-switch).
|
||||||
Remind the operator to be attentive and use the kill switch if needed.
|
Remind the operator to be attentive and use the kill switch if needed.
|
||||||
Pilots tend to forget that vehicles are replaceable, but they are not!
|
Pilots tend to forget that vehicles are replaceable, but they are not!
|
||||||
3. Test as much as possible without propellers.
|
3. Test as much as possible without propellers.
|
||||||
Keep the tools for removing propellers nearby/readily accessible.
|
Keep the tools for removing propellers nearby/readily accessible.
|
||||||
4. Test this feature with at least two people — one handling the aircraft, the other one the remote control.
|
4. Test this feature with at least two people — one handling the aircraft, the other one the remote control.
|
||||||
5. Keep in mind that after the throw, the exact behavior of the aircraft might be hard to predict as it depends heavily on the way it is thrown.
|
5. Keep in mind that after the throw, the exact behavior of the aircraft might be hard to predict as it depends heavily on the way it is thrown.
|
||||||
Sometimes it will stay perfectly in place, but sometimes (e.g., due to extensive roll), it might drift to one side while stabilizing.
|
Sometimes it will stay perfectly in place, but sometimes (e.g., due to extensive roll), it might drift to one side while stabilizing.
|
||||||
Keep a safe distance!
|
Keep a safe distance!
|
||||||
|
|
||||||
On first flight of a new vehicle we recommend performing a [Throw Launch test without propellers](#throw-launch-pretest) (see below).
|
On first flight of a new vehicle we recommend performing a [Throw Launch test without propellers](#throw-launch-pretest) (see below).
|
||||||
|
|
||||||
@@ -65,13 +65,13 @@ The steps for this test are:
|
|||||||
1. Dismount the propellers.
|
1. Dismount the propellers.
|
||||||
2. Set [COM_THROW_EN](../advanced_config/parameter_reference.md#COM_THROW_EN) to `Enabled`.
|
2. Set [COM_THROW_EN](../advanced_config/parameter_reference.md#COM_THROW_EN) to `Enabled`.
|
||||||
3. Arm the aircraft.
|
3. Arm the aircraft.
|
||||||
The engines should not spin, but the vehicle should be armed and keep playing the arming tune.
|
The engines should not spin, but the vehicle should be armed and keep playing the arming tune.
|
||||||
4. Throw the aircraft about 2m into the air.
|
4. Throw the aircraft about 2m into the air.
|
||||||
If the aircraft is not thrown high enough, the motors will not turn on.
|
If the aircraft is not thrown high enough, the motors will not turn on.
|
||||||
5. The engines should start just after crossing the apex.
|
5. The engines should start just after crossing the apex.
|
||||||
6. Engage the kill switch (ideally a second person operating the RC should do this).
|
6. Engage the kill switch (ideally a second person operating the RC should do this).
|
||||||
7. Catch the drone.
|
7. Catch the drone.
|
||||||
Remember to use safety gloves!
|
Remember to use safety gloves!
|
||||||
|
|
||||||
## Throw Launch
|
## Throw Launch
|
||||||
|
|
||||||
@@ -79,12 +79,12 @@ The steps for a throw launch are:
|
|||||||
|
|
||||||
1. Set [COM_THROW_EN](../advanced_config/parameter_reference.md#COM_THROW_EN) to `Enabled`.
|
1. Set [COM_THROW_EN](../advanced_config/parameter_reference.md#COM_THROW_EN) to `Enabled`.
|
||||||
2. Arm the aircraft.
|
2. Arm the aircraft.
|
||||||
The propellers should not spin, but the vehicle should be armed and keep playing the arming tune.
|
The propellers should not spin, but the vehicle should be armed and keep playing the arming tune.
|
||||||
3. Throw the aircraft away from you, forward and up (about 2m away and 2m up is recommended).
|
3. Throw the aircraft away from you, forward and up (about 2m away and 2m up is recommended).
|
||||||
- The vehicle must reach the speed of [COM_THROW_SPEED](../advanced_config/parameter_reference.md#COM_THROW_SPEED) to detect launch, which by default is set to 5 m/s.
|
- The vehicle must reach the speed of [COM_THROW_SPEED](../advanced_config/parameter_reference.md#COM_THROW_SPEED) to detect launch, which by default is set to 5 m/s.
|
||||||
If this speed is not achieved, the motors will not start and the aircraft will fall to the ground.
|
If this speed is not achieved, the motors will not start and the aircraft will fall to the ground.
|
||||||
- Try to avoid excessive rotation during the throw, as this might cause the drone to fail or behave unpredictably.
|
- Try to avoid excessive rotation during the throw, as this might cause the drone to fail or behave unpredictably.
|
||||||
The exact meaning of "excessive rotation" depends on the platform: for instance, [PX4Vision](../complete_vehicles_mc/px4_vision_kit.md) used for the testing, still managed to recover after 2-3 full rotations.
|
The exact meaning of "excessive rotation" depends on the platform: for instance, [PX4Vision](../complete_vehicles_mc/px4_vision_kit.md) used for the testing, still managed to recover after 2-3 full rotations.
|
||||||
4. After a downward velocity is detected (the vehicle reaches its apex and starts falling down), the motors should turn on and the vehicle will start flying in the current mode.
|
4. After a downward velocity is detected (the vehicle reaches its apex and starts falling down), the motors should turn on and the vehicle will start flying in the current mode.
|
||||||
|
|
||||||
## 参数
|
## 参数
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
<Redirect to="../flight_modes/offboard" />
|
<Redirect to="../flight_modes/offboard" />
|
||||||
|
|
||||||
# Offboard Mode (VTOL)
|
# Offboard Mode (VTOL)
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ Geofence planning is fully documented in [Plan View > GeoFence](https://docs.qgr
|
|||||||
- 围栏中心的圆点可以用来调整围栏的位置。
|
- 围栏中心的圆点可以用来调整围栏的位置。
|
||||||
- 边界上的圆点可以用来调整半径。
|
- 边界上的圆点可以用来调整半径。
|
||||||
- 角(顶点)上的圆点可以用来改变多边形的形状。
|
- 角(顶点)上的圆点可以用来改变多边形的形状。
|
||||||
点击线段中间可以在两个顶点中添加新的顶点。
|
点击线段中间可以在两个顶点中添加新的顶点。
|
||||||
5. Use the _Geofence Editor_ to set a fence as an inclusion or exclusion, and to select a fence to edit (**Edit** radio button) or Delete (**Del** button).
|
5. Use the _Geofence Editor_ to set a fence as an inclusion or exclusion, and to select a fence to edit (**Edit** radio button) or Delete (**Del** button).
|
||||||
6. 可添加任意数量的围栏
|
6. 可添加任意数量的围栏
|
||||||
7. Once finished, click on the **Upload** button (top right) to send the fence (along with rally points and mission) to the vehicle.
|
7. Once finished, click on the **Upload** button (top right) to send the fence (along with rally points and mission) to the vehicle.
|
||||||
|
|||||||
@@ -37,9 +37,9 @@ To create a package delivery mission (with a Gripper):
|
|||||||
- To drop the package while flying set an appropriate altitude for the waypoint (and ensure the waypoint is at a safe location to drop the package).
|
- To drop the package while flying set an appropriate altitude for the waypoint (and ensure the waypoint is at a safe location to drop the package).
|
||||||
|
|
||||||
- If you'd like to land the vehicle to make the delivery you will need to change the `Waypoint` to a `Land` mission item.
|
- If you'd like to land the vehicle to make the delivery you will need to change the `Waypoint` to a `Land` mission item.
|
||||||
Do this by selecting the mission item heading, then selecting `Land` in the popup dialog.
|
Do this by selecting the mission item heading, then selecting `Land` in the popup dialog.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
3. Add a waypoint on the map (anywhere) for the gripper release.
|
3. Add a waypoint on the map (anywhere) for the gripper release.
|
||||||
To change this to a `Gripper Mechanism` select the "Waypoint" heading, and in the popup changing the group to "Advanced", then selecting `Gripper Mechanism`.
|
To change this to a `Gripper Mechanism` select the "Waypoint" heading, and in the popup changing the group to "Advanced", then selecting `Gripper Mechanism`.
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ Key information
|
|||||||
|
|
||||||
The components needed for this build are:
|
The components needed for this build are:
|
||||||
|
|
||||||
- Flight controller: [CUAV V5+](https://store.cuav.net/index.php?id_product=95\&id_product_attribute=0\&rewrite=cuav-new-pixhack-v5-autopilot-m8n-gps-for-fpv-rc-drone-quadcopter-helicopter-flight-simulator-free-shipping-whole-sale\&controller=product\&id_lang=1):
|
- Flight controller: CUAV V5+:
|
||||||
- GPS: [CUAV NEO V2 GPS](https://store.cuav.net/index.php?id_product=97\&id_product_attribute=0\&rewrite=cuav-new-ublox-neo-m8n-gps-module-with-shell-stand-holder-for-flight-controller-gps-compass-for-pixhack-v5-plus-rc-parts-px4\&controller=product\&id_lang=1)
|
- GPS: [CUAV NEO V2 GPS](https://store.cuav.net/index.php?id_product=97&id_product_attribute=0&rewrite=cuav-new-ublox-neo-m8n-gps-module-with-shell-stand-holder-for-flight-controller-gps-compass-for-pixhack-v5-plus-rc-parts-px4&controller=product&id_lang=1)
|
||||||
- Power Module
|
- Power Module
|
||||||
- Frame: [DJI F450](https://www.amazon.com/Flame-Wheel-Basic-Quadcopter-Drone/dp/B00HNMVQHY)
|
- Frame: [DJI F450](https://www.amazon.com/Flame-Wheel-Basic-Quadcopter-Drone/dp/B00HNMVQHY)
|
||||||
- Propellers: [DJI Phantom Built-in Nut Upgrade Propellers 9.4x5](https://www.masterairscrew.com/products/dji-phantom-built-in-nut-upgrade-propellers-in-black-mr-9-4x5-prop-set-x4-phantom)
|
- Propellers: [DJI Phantom Built-in Nut Upgrade Propellers 9.4x5](https://www.masterairscrew.com/products/dji-phantom-built-in-nut-upgrade-propellers-in-black-mr-9-4x5-prop-set-x4-phantom)
|
||||||
@@ -108,53 +108,53 @@ Estimated time to assemble is approximately 90 minutes (about 45 minutes for the
|
|||||||
|
|
||||||
1. Attach the 4 arms to the bottom plate using the provided screws.
|
1. Attach the 4 arms to the bottom plate using the provided screws.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
2. Solder ESC (Electronic Speed Controller) to the board, positive (red) and negative (black).
|
2. Solder ESC (Electronic Speed Controller) to the board, positive (red) and negative (black).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
3. Solder the Power Module, positive (red) and negative (black).
|
3. Solder the Power Module, positive (red) and negative (black).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
4. Plug in the motors to the ESCs according to their positions.
|
4. Plug in the motors to the ESCs according to their positions.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
5. Attach the motors to the corresponding arms.
|
5. Attach the motors to the corresponding arms.
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
6. Add the top board (screw into the top of the legs).
|
6. Add the top board (screw into the top of the legs).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
7. Add double-sided tape (3M) to the CUAV V5+ flight controller (it has internal vibration damping, so no need to use foam).
|
7. Add double-sided tape (3M) to the CUAV V5+ flight controller (it has internal vibration damping, so no need to use foam).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
8. Attach the FrSky receiver to the bottom board with double-sided tape.
|
8. Attach the FrSky receiver to the bottom board with double-sided tape.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
9. Attach the telemetry module to the vehicle’s bottom board using double-sided tape.
|
9. Attach the telemetry module to the vehicle’s bottom board using double-sided tape.
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
10. Put the aluminium standoffs on the button plate.
|
10. Put the aluminium standoffs on the button plate.
|
||||||
|
|
||||||
11. Plug in Telemetry (`TELEM1`) and GPS module (`GPS/SAFETY`) to the flight controller.
|
11. Plug in Telemetry (`TELEM1`) and GPS module (`GPS/SAFETY`) to the flight controller.
|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
12. Plug in the RC receiver (`RC`), all 4 ESC’s (`M1-M4`), and the power module (`Power1`) into the flight controller.
|
12. Plug in the RC receiver (`RC`), all 4 ESC’s (`M1-M4`), and the power module (`Power1`) into the flight controller.
|
||||||

|

|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
The motor order is defined in the [Airframe Reference > Quadrotor x](../airframes/airframe_reference.md#quadrotor-x)
|
The motor order is defined in the [Airframe Reference > Quadrotor x](../airframes/airframe_reference.md#quadrotor-x)
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|||||||
@@ -26,13 +26,13 @@ The ARF kit can be used with most flight controllers supported by PX4.
|
|||||||
The Holybro [X500 V2 Kit](https://holybro.com/collections/x500-kits) includes almost all the required components:
|
The Holybro [X500 V2 Kit](https://holybro.com/collections/x500-kits) includes almost all the required components:
|
||||||
|
|
||||||
- X500V2 Frame Kit
|
- X500V2 Frame Kit
|
||||||
- Body - Full Carbon Fiber Top & Bottom plate (144 x 144mm, 2mm thick)
|
- Body - Full Carbon Fiber Top & Bottom plate (144 x 144mm, 2mm thick)
|
||||||
- Arm - High strength & ultra-lightweight 16mm carbon fiber tubes
|
- Arm - High strength & ultra-lightweight 16mm carbon fiber tubes
|
||||||
- Landing gear - 16mm & 10mm diameter carbon fiber tubes
|
- Landing gear - 16mm & 10mm diameter carbon fiber tubes
|
||||||
- Platform board - With mounting holes for GPS & popular companion computer
|
- Platform board - With mounting holes for GPS & popular companion computer
|
||||||
- Dual 10mm Ø rod x 250 mm long rail mounting system
|
- Dual 10mm Ø rod x 250 mm long rail mounting system
|
||||||
- Battery mount with two Battery Straps
|
- Battery mount with two Battery Straps
|
||||||
- Hand tools for installation
|
- Hand tools for installation
|
||||||
- Holybro Motors - 2216 KV880 x6 (superseded - check [spare parts list](https://holybro.com/products/spare-parts-x500-v2-kit) for current version).
|
- Holybro Motors - 2216 KV880 x6 (superseded - check [spare parts list](https://holybro.com/products/spare-parts-x500-v2-kit) for current version).
|
||||||
- Holybro BLHeli S ESC 20A x4 (superseded - check [spare parts list](https://holybro.com/products/spare-parts-x500-v2-kit) for current version).
|
- Holybro BLHeli S ESC 20A x4 (superseded - check [spare parts list](https://holybro.com/products/spare-parts-x500-v2-kit) for current version).
|
||||||
- Propellers - 1045 x4 (superseded - check [spare parts list](https://holybro.com/products/spare-parts-x500-v2-kit) for current version).
|
- Propellers - 1045 x4 (superseded - check [spare parts list](https://holybro.com/products/spare-parts-x500-v2-kit) for current version).
|
||||||
@@ -93,92 +93,92 @@ Tools are included to do the assembly, however you may need:
|
|||||||
Estimate time to assemble is 55 min (25 minutes for frame, 30 minutes for autopilot installation/configuration)
|
Estimate time to assemble is 55 min (25 minutes for frame, 30 minutes for autopilot installation/configuration)
|
||||||
|
|
||||||
1. Start by assembling the payload & battery holder.
|
1. Start by assembling the payload & battery holder.
|
||||||
Push the rubbers into grippers (Do not use sharp items to push them in!).
|
Push the rubbers into grippers (Do not use sharp items to push them in!).
|
||||||
Next, pass the holders through the holder bars with the battery holder bases as Figure 3.
|
Next, pass the holders through the holder bars with the battery holder bases as Figure 3.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Figure 2_: Payload holder components
|
_Figure 2_: Payload holder components
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Figure 3_: Payload holder assembled
|
_Figure 3_: Payload holder assembled
|
||||||
|
|
||||||
2. The next is to go for attaching the bottom plate to the payload holder.
|
2. The next is to go for attaching the bottom plate to the payload holder.
|
||||||
|
|
||||||
You will need the parts as shown in Figure 4.
|
You will need the parts as shown in Figure 4.
|
||||||
Then mount the base for power distribution board using nylon nuts as Figure 5.
|
Then mount the base for power distribution board using nylon nuts as Figure 5.
|
||||||
Finally using 8 hex screws you can join the bottom plate to the payload holder (Figure 7)
|
Finally using 8 hex screws you can join the bottom plate to the payload holder (Figure 7)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Figure 4_: Needed Materials
|
_Figure 4_: Needed Materials
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Figure 5_: PDB mount base
|
_Figure 5_: PDB mount base
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Figure 6_: Mounted pdb with nylon nuts
|
_Figure 6_: Mounted pdb with nylon nuts
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Figure 7_: Mounted Plate on payload holder
|
_Figure 7_: Mounted Plate on payload holder
|
||||||
|
|
||||||
3. Let's gather the stuff needed for mounting landing gear as Figure 8.
|
3. Let's gather the stuff needed for mounting landing gear as Figure 8.
|
||||||
Use the hex screws to join landing gears to the bottom plate.
|
Use the hex screws to join landing gears to the bottom plate.
|
||||||
You also need to open three hex screws on each of the leg stands so you can push them into carbon fiber pipes.
|
You also need to open three hex screws on each of the leg stands so you can push them into carbon fiber pipes.
|
||||||
Do not forget to tighten them back again.
|
Do not forget to tighten them back again.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Figure 8_: Required parts for landing gear attachment
|
_Figure 8_: Required parts for landing gear attachment
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Figure 9_: Landing gear attachment to the body
|
_Figure 9_: Landing gear attachment to the body
|
||||||
|
|
||||||
4. We will gather all the arms now to mount the top plate.
|
4. We will gather all the arms now to mount the top plate.
|
||||||
Please pay attention that the motor numbers on arms are a match with the ones mentioned on the top plate.
|
Please pay attention that the motor numbers on arms are a match with the ones mentioned on the top plate.
|
||||||
Fortunately, motors are mounted and ESCs have been connected in advance.
|
Fortunately, motors are mounted and ESCs have been connected in advance.
|
||||||
Start by passing through all the screws as you have the arms fixed in their own places (They have a guide as shown in Figure 11 to ensure they are in place) and tighten all nylon nuts a bit.
|
Start by passing through all the screws as you have the arms fixed in their own places (They have a guide as shown in Figure 11 to ensure they are in place) and tighten all nylon nuts a bit.
|
||||||
Then you can connect XT30 power connectors to the power board.
|
Then you can connect XT30 power connectors to the power board.
|
||||||
Please keep in mind that the signal wires have to be passed through the top plate such that we can connect them later to Pixhawk.
|
Please keep in mind that the signal wires have to be passed through the top plate such that we can connect them later to Pixhawk.
|
||||||
|
|
||||||
<img src="../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/needed_stuff_top_plate.png" width="700" title="Arms and top plate materials">
|
<img src="../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/needed_stuff_top_plate.png" width="700" title="Arms and top plate materials">
|
||||||
|
|
||||||
_Figure 10_: Connecting arms needed materials.
|
_Figure 10_: Connecting arms needed materials.
|
||||||
|
|
||||||
<img src="../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/guide_for_arm_mount.png" width="700" title="Guide for the arms mount">
|
<img src="../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/guide_for_arm_mount.png" width="700" title="Guide for the arms mount">
|
||||||
|
|
||||||
_Figure 11_: Guide for the arms mount
|
_Figure 11_: Guide for the arms mount
|
||||||
|
|
||||||
5. Tighten all 16 screws and nuts by using both hex wrench and nut driver.
|
5. Tighten all 16 screws and nuts by using both hex wrench and nut driver.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Figure 12_: Mounted top plate
|
_Figure 12_: Mounted top plate
|
||||||
|
|
||||||
6. Next you can mount your pixhawk on the top plate by using the stickers.
|
6. Next you can mount your pixhawk on the top plate by using the stickers.
|
||||||
It is recommended to have the direction of your Pixhawk's arrow the same as the one mentioned on the top plate.
|
It is recommended to have the direction of your Pixhawk's arrow the same as the one mentioned on the top plate.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
_Figure 13_: Sticker tapes on Pixhawk
|
_Figure 13_: Sticker tapes on Pixhawk
|
||||||
|
|
||||||
7. If you want to mount the GPS on the companion computer plate, you can now secure the GPS mount onto it using 4 screws and nuts.
|
7. If you want to mount the GPS on the companion computer plate, you can now secure the GPS mount onto it using 4 screws and nuts.
|
||||||
|
|
||||||
<img src="../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/gps_mount_plate.png" width="400" title="Secure GPS mount onto companion plate">
|
<img src="../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/gps_mount_plate.png" width="400" title="Secure GPS mount onto companion plate">
|
||||||
|
|
||||||
_Figure 14_: Secure GPS mount onto companion plate
|
_Figure 14_: Secure GPS mount onto companion plate
|
||||||
|
|
||||||
8. Use the tape and stick the GPS to the top of the GPS mast and mount the GPS mast.
|
8. Use the tape and stick the GPS to the top of the GPS mast and mount the GPS mast.
|
||||||
Make sure the arrow on the gps is pointing forward (Figure 15).
|
Make sure the arrow on the gps is pointing forward (Figure 15).
|
||||||
|
|
||||||
<img src="../../assets/airframes/multicopter/x500_holybro_pixhawk4/gps2.jpg" width="400" title="Figure 16: GPS and mast">
|
<img src="../../assets/airframes/multicopter/x500_holybro_pixhawk4/gps2.jpg" width="400" title="Figure 16: GPS and mast">
|
||||||
|
|
||||||
_Figure 15_: GPS and mast
|
_Figure 15_: GPS and mast
|
||||||
|
|
||||||
9. Finally, you can connect the Pixhawk interfaces such as telemetry radio to 'TELEM1' and motors signal cables accordingly.
|
9. Finally, you can connect the Pixhawk interfaces such as telemetry radio to 'TELEM1' and motors signal cables accordingly.
|
||||||
|
|
||||||
@@ -204,14 +204,14 @@ First update the firmware, airframe, and actuator mappings:
|
|||||||
|
|
||||||
- [Airframe](../config/airframe.md)
|
- [Airframe](../config/airframe.md)
|
||||||
|
|
||||||
You will need to select the _Holybro X500 V2_ airframe (**Quadrotor x > Holybro 500 V2**)
|
You will need to select the _Holybro X500 V2_ airframe (**Quadrotor x > Holybro 500 V2**)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
- [Actuators](../config/actuators.md)
|
- [Actuators](../config/actuators.md)
|
||||||
- You should not need to update the vehicle geometry (as this is a preconfigured airframe).
|
- You should not need to update the vehicle geometry (as this is a preconfigured airframe).
|
||||||
- Assign actuator functions to outputs to match your wiring.
|
- Assign actuator functions to outputs to match your wiring.
|
||||||
- Test the configuration using the sliders.
|
- Test the configuration using the sliders.
|
||||||
|
|
||||||
Then perform the mandatory setup/calibration:
|
Then perform the mandatory setup/calibration:
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user