diff --git a/docs/zh/SUMMARY.md b/docs/zh/SUMMARY.md index 13288443e8..88cb6dc8d8 100644 --- a/docs/zh/SUMMARY.md +++ b/docs/zh/SUMMARY.md @@ -843,6 +843,8 @@ - [测试 MC_04 -故障安全测试](test_cards/mc_04_failsafe_testing.md) - [Test MC_05 - Manual Modes (Inside)](test_cards/mc_05_indoor_flight_manual_modes.md) - [Test MC_06 - Optical Flow (Inside)](test_cards/mc_06_optical_flow.md) + - [Test MC_07 - VIO (Inside)](test_cards/mc_07_vio.md) + - [Test MC_08 - DSHOT ESC](test_cards/mc_08_dshot.md) - [单元测试](test_and_ci/unit_tests.md) - [Fuzz Tests](test_and_ci/fuzz_tests.md) - [持续集成](test_and_ci/continous_integration.md) diff --git a/docs/zh/advanced/gimbal_control.md b/docs/zh/advanced/gimbal_control.md index 5965f81264..aa7fe7ad8c 100644 --- a/docs/zh/advanced/gimbal_control.md +++ b/docs/zh/advanced/gimbal_control.md @@ -131,7 +131,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). - ![Quadrotor(x500) with gimbal (Front-facing) in Gazebo](../../assets/qgc/fly/gimbal_control_x500gz.png) + ![Quadrotor(x500) with gimbal (Front-facing) in Gazebo](../../assets/qgc/fly/gimbal_control_x500gz.png) 3. Make sure the vehicle is armed and flying, e.g. by entering with `commander takeoff`. diff --git a/docs/zh/advanced/system_tunes.md b/docs/zh/advanced/system_tunes.md index 3feb974a11..70548c0b22 100644 --- a/docs/zh/advanced/system_tunes.md +++ b/docs/zh/advanced/system_tunes.md @@ -52,7 +52,7 @@ On Windows, one option is to use _Melody Master_ within _Dosbox_. 7. 当您准备好时保存音乐: - 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. - 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. 打开文件。 输出可能看起来像这样: diff --git a/docs/zh/advanced_config/advanced_flight_controller_orientation_leveling.md b/docs/zh/advanced_config/advanced_flight_controller_orientation_leveling.md index 4deace6e1d..763c210c77 100644 --- a/docs/zh/advanced_config/advanced_flight_controller_orientation_leveling.md +++ b/docs/zh/advanced_config/advanced_flight_controller_orientation_leveling.md @@ -23,7 +23,7 @@ You can locate the parameters in QGroundControl as shown below: 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): - ![FC Orientation QGC v2](../../assets/qgc/setup/sensor/fc_orientation_qgc_v2.png) + ![FC Orientation QGC v2](../../assets/qgc/setup/sensor/fc_orientation_qgc_v2.png) ## Parameter Summary diff --git a/docs/zh/advanced_config/bootloader_update.md b/docs/zh/advanced_config/bootloader_update.md index 0820bdcb0c..70cb5689af 100644 --- a/docs/zh/advanced_config/bootloader_update.md +++ b/docs/zh/advanced_config/bootloader_update.md @@ -37,8 +37,8 @@ You can enable this key in your own custom firmware if needed. 2. [Update the Firmware](../config/firmware.md#custom) with an image containing the new/desired bootloader. - ::: info - The updated bootloader might be included the default firmware for your board or supplied in custom firmware. + ::: info + The updated bootloader might be included the default firmware for your board or supplied in custom firmware. ::: @@ -47,7 +47,7 @@ You can enable this key in your own custom firmware if needed. 4. [Find and enable](../advanced_config/parameters.md) the parameter [SYS_BL_UPDATE](../advanced_config/parameter_reference.md#SYS_BL_UPDATE). 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. @@ -89,80 +89,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)). 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: - - FMUv6X + - FMUv6X - ```sh - arm-none-eabi-gdb px4_fmu-v6x_bootloader.elf - ``` + ```sh + arm-none-eabi-gdb px4_fmu-v6x_bootloader.elf + ``` - - FMUv6X-RT + - FMUv6X-RT - ```sh - arm-none-eabi-gdb px4_fmu-v6xrt_bootloader.elf - ``` + ```sh + arm-none-eabi-gdb px4_fmu-v6xrt_bootloader.elf + ``` - - FMUv5 + - FMUv5 - ```sh - ``` + ```sh + ``` - ::: info - 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`. + ::: info + 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`. ::: 4. The _gdb terminal_ appears and it should display (something like) the following output: - ```sh - GNU gdb (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 8.0.50.20171128-git - Copyright (C) 2017 Free Software Foundation, Inc. - License GPLv3+: GNU GPL version 3 or later - This is free software: you are free to change and redistribute it. - There is NO WARRANTY, to the extent permitted by law. - Type "show copying" and "show warranty" for details. - This GDB was configured as "--host=x86_64-linux-gnu --target=arm-none-eabi". - Type "show configuration" for configuration details. - For bug reporting instructions, please see: - . - Find the GDB manual and other documentation resources online at: - . - For help, type "help". - Type "apropos word" to search for commands related to "word"... - Reading symbols from px4fmuv5_bl.elf...done. - ``` + ```sh + GNU gdb (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 8.0.50.20171128-git + Copyright (C) 2017 Free Software Foundation, Inc. + License GPLv3+: GNU GPL version 3 or later + This is free software: you are free to change and redistribute it. + There is NO WARRANTY, to the extent permitted by law. + Type "show copying" and "show warranty" for details. + This GDB was configured as "--host=x86_64-linux-gnu --target=arm-none-eabi". + Type "show configuration" for configuration details. + For bug reporting instructions, please see: + . + Find the GDB manual and other documentation resources online at: + . + For help, type "help". + Type "apropos word" to search for commands related to "word"... + Reading symbols from px4fmuv5_bl.elf...done. + ``` 5. Find your `` by running an `ls` command in the **/dev/serial/by-id** directory. 6. Now connect to the debug probe with the following command: - ```sh - tar ext /dev/serial/by-id/ - ``` + ```sh + tar ext /dev/serial/by-id/ + ``` 7. Power on the Pixhawk with another USB cable and connect the probe to the `FMU-DEBUG` port. - ::: info - If using a Zubax BugFace BF1 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). + ::: info + If using a Zubax BugFace BF1 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: - ```sh - (gdb) mon swdp_scan - (gdb) attach 1 - ``` + ```sh + (gdb) mon swdp_scan + (gdb) attach 1 + ``` 9. 将二进制文件加载到 Pixhawk 中 : - ```sh - (gdb) load - ``` + ```sh + (gdb) load + ``` After the bootloader has updated you can [Load PX4 Firmware](../config/firmware.md) using _QGroundControl_. @@ -181,25 +181,25 @@ Early FMUv2 [Pixhawk-series](../flight_controller/pixhawk_series.md#fmu_versions 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). - _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. - ![FMUv2 update](../../assets/qgc/setup/firmware/bootloader_update.jpg) + ![FMUv2 update](../../assets/qgc/setup/firmware/bootloader_update.jpg) - 等待飞控重启。 + 等待飞控重启。 3. [Find and enable](../advanced_config/parameters.md) the parameter [SYS_BL_UPDATE](../advanced_config/parameter_reference.md#SYS_BL_UPDATE). 4. 重新启动(断开/重新连接飞控板)。 - Bootloader 更新只需要几秒钟即可完成。 + Bootloader 更新只需要几秒钟即可完成。 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. - ![FMUv3 update](../../assets/qgc/setup/firmware/bootloader_fmu_v3_update.jpg) + ![FMUv3 update](../../assets/qgc/setup/firmware/bootloader_fmu_v3_update.jpg) - ::: 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). - 在这种情况下,您将无法安装 FMUv3 硬件。 + ::: 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). + 在这种情况下,您将无法安装 FMUv3 硬件。 ::: diff --git a/docs/zh/advanced_config/compass_power_compensation.md b/docs/zh/advanced_config/compass_power_compensation.md index 35b987cde5..e5dcdbdaa0 100644 --- a/docs/zh/advanced_config/compass_power_compensation.md +++ b/docs/zh/advanced_config/compass_power_compensation.md @@ -44,7 +44,7 @@ The process is demonstrated for a multicopter, but is equally valid for other ve - 解锁无人机,然后缓缓将油门推到最大。 - 慢慢将油门降到0 - 给无人机加锁 - > Note 谨慎地进行测试,并密切注意振动情况。 + > Note 谨慎地进行测试,并密切注意振动情况。 ::: info Perform the test carefully and closely monitor the vibrations. diff --git a/docs/zh/advanced_config/esc_calibration.md b/docs/zh/advanced_config/esc_calibration.md index 36d417a5d9..27bda2805d 100644 --- a/docs/zh/advanced_config/esc_calibration.md +++ b/docs/zh/advanced_config/esc_calibration.md @@ -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. - 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). - Enter this value into the `minimum` setting for all the motor PWM outputs, and restore the `disarmed` output to `1100us`. + 要找到“最佳”最小值,请将滑块移动到底部(禁用)。 + 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`. - 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). - 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). - 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`. + 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. + 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. + 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. - 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 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 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). ::: info VTOL and fixed-wing motors do not need any special PWM configuration. diff --git a/docs/zh/advanced_config/ethernet_setup.md b/docs/zh/advanced_config/ethernet_setup.md index 077421a3db..ac1fca8e67 100644 --- a/docs/zh/advanced_config/ethernet_setup.md +++ b/docs/zh/advanced_config/ethernet_setup.md @@ -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): - ```sh - echo DEVICE=eth0 > /fs/microsd/net.cfg - echo BOOTPROTO=fallback >> /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 ROUTER=10.41.10.254 >>/fs/microsd/net.cfg - echo DNS=10.41.10.254 >>/fs/microsd/net.cfg - ``` + ```sh + echo DEVICE=eth0 > /fs/microsd/net.cfg + echo BOOTPROTO=fallback >> /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 ROUTER=10.41.10.254 >>/fs/microsd/net.cfg + echo DNS=10.41.10.254 >>/fs/microsd/net.cfg + ``` 4. 一旦设置了网络配置,您可以断开 USB 电缆。 @@ -113,36 +113,36 @@ Note that there are many more [examples](https://github.com/canonical/netplan/tr 设置Ubuntu计算机: 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. 将以下配置信息复制并粘贴到文件中(注意:缩进很重要!): - ``` - network: - version: 2 - renderer: NetworkManager - ethernets: - enp2s0: - addresses: - - 10.41.10.1/24 - nameservers: - addresses: [10.41.10.1] - routes: - - to: 10.41.10.1 - via: 10.41.10.1 - ``` + ``` + network: + version: 2 + renderer: NetworkManager + ethernets: + enp2s0: + addresses: + - 10.41.10.1/24 + nameservers: + addresses: [10.41.10.1] + routes: + - to: 10.41.10.1 + via: 10.41.10.1 + ``` - 保存并退出编辑器。 + 保存并退出编辑器。 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. - 假设值已按本主题其余部分所述设置,设置将如下所示: + 假设值已按本主题其余部分所述设置,设置将如下所示: - ![QGC comm link for ethernet setup](../../assets/qgc/settings/comm_link/px4_ethernet_link_config.png) + ![QGC comm link for ethernet setup](../../assets/qgc/settings/comm_link/px4_ethernet_link_config.png) 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. 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. - 例如,您的代码将使用以下方式连接到PX4: + 例如,您的代码将使用以下方式连接到PX4: - ```python - await drone.connect(system_address="udp://10.41.10.2:14540") - ``` + ```python + await drone.connect(system_address="udp://10.41.10.2:14540") + ``` :::info 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. 通过以太网连接您的飞行控制器和机载计算机。 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). - 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 - MicroXRCEAgent udp4 -p 8888 - ``` + ```sh + 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: - ```sh - source ~/ws_sensor_combined/install/setup.bash - ros2 launch px4_ros_com sensor_combined_listener.launch.py - ``` + ```sh + source ~/ws_sensor_combined/install/setup.bash + ros2 launch px4_ros_com sensor_combined_listener.launch.py + ``` - 如果所有设置都正确,终端应显示如下输出: + 如果所有设置都正确,终端应显示如下输出: - ```sh - RECEIVED SENSOR COMBINED DATA - ============================= - ts: 855801598 - gyro_rad[0]: -0.00339938 - gyro_rad[1]: 0.00440091 - gyro_rad[2]: 0.00513893 - gyro_integral_dt: 4997 - accelerometer_timestamp_relative: 0 - accelerometer_m_s2[0]: -0.0324082 - accelerometer_m_s2[1]: 0.0392213 - accelerometer_m_s2[2]: -9.77914 - accelerometer_integral_dt: 4997 - ``` + ```sh + RECEIVED SENSOR COMBINED DATA + ============================= + ts: 855801598 + gyro_rad[0]: -0.00339938 + gyro_rad[1]: 0.00440091 + gyro_rad[2]: 0.00513893 + gyro_integral_dt: 4997 + accelerometer_timestamp_relative: 0 + accelerometer_m_s2[0]: -0.0324082 + accelerometer_m_s2[1]: 0.0392213 + accelerometer_m_s2[2]: -9.77914 + accelerometer_integral_dt: 4997 + ``` ## See Also diff --git a/docs/zh/advanced_config/prearm_arm_disarm.md b/docs/zh/advanced_config/prearm_arm_disarm.md index 71ac176329..f4070e7130 100644 --- a/docs/zh/advanced_config/prearm_arm_disarm.md +++ b/docs/zh/advanced_config/prearm_arm_disarm.md @@ -153,14 +153,14 @@ It corresponds to: [COM_PREARM_MODE=1](#COM_PREARM_MODE) (safety switch) and [CB The default startup sequence is: 1. Power-up. - - All actuators locked into disarmed position - - Not possible to arm. + - All actuators locked into disarmed position + - Not possible to arm. 2. Safety switch is pressed. - - System now prearmed: non-throttling actuators can move (e.g. ailerons). - - System safety is off: Arming possible. + - System now prearmed: non-throttling actuators can move (e.g. ailerons). + - System safety is off: Arming possible. 3. Arm command is issued. - - The system is armed. - - All motors and actuators can move. + - The system is armed. + - All motors and actuators can move. ### COM_PREARM_MODE=Disabled and Safety Switch @@ -170,14 +170,14 @@ This corresponds to [COM_PREARM_MODE=0](#COM_PREARM_MODE) (Disabled) and [CBRK_I The startup sequence is: 1. Power-up. - - All actuators locked into disarmed position - - Not possible to arm. + - All actuators locked into disarmed position + - Not possible to arm. 2. Safety switch is pressed. - - _All actuators stay locked into disarmed position (same as disarmed)._ - - System safety is off: Arming possible. + - _All actuators stay locked into disarmed position (same as disarmed)._ + - System safety is off: Arming possible. 3. Arm command is issued. - - The system is armed. - - All motors and actuators can move. + - The system is armed. + - All motors and actuators can move. ### COM_PREARM_MODE=Always and Safety Switch @@ -188,13 +188,13 @@ This corresponds to [COM_PREARM_MODE=2](#COM_PREARM_MODE) (Always) and [CBRK_IO_ The startup sequence is: 1. Power-up. - - System now prearmed: non-throttling actuators can move (e.g. ailerons). - - Not possible to arm. + - System now prearmed: non-throttling actuators can move (e.g. ailerons). + - Not possible to arm. 2. Safety switch is pressed. - - System safety is off: Arming possible. + - System safety is off: Arming possible. 3. Arm command is issued. - - The system is armed. - - All motors and actuators can move. + - The system is armed. + - All motors and actuators can move. ### COM_PREARM_MODE=Safety or Disabled and No Safety Switch @@ -204,11 +204,11 @@ This corresponds to [COM_PREARM_MODE=0 or 1](#COM_PREARM_MODE) (Disabled/Safety The startup sequence is: 1. Power-up. - - All actuators locked into disarmed position - - System safety is off: Arming possible. + - All actuators locked into disarmed position + - System safety is off: Arming possible. 2. Arm command is issued. - - The system is armed. - - All motors and actuators can move. + - The system is armed. + - All motors and actuators can move. ### COM_PREARM_MODE=Always and No Safety Switch @@ -218,11 +218,11 @@ This corresponds to [COM_PREARM_MODE=2](#COM_PREARM_MODE) (Always) and [CBRK_IO_ The startup sequence is: 1. Power-up. - - System now prearmed: non-throttling actuators can move (e.g. ailerons). - - System safety is off: Arming possible. + - System now prearmed: non-throttling actuators can move (e.g. ailerons). + - System safety is off: Arming possible. 2. Arm command is issued. - - The system is armed. - - All motors and actuators can move. + - The system is armed. + - All motors and actuators can move. ### 参数 diff --git a/docs/zh/advanced_config/sensor_thermal_calibration.md b/docs/zh/advanced_config/sensor_thermal_calibration.md index 3a43b02555..f5f4be91a1 100644 --- a/docs/zh/advanced_config/sensor_thermal_calibration.md +++ b/docs/zh/advanced_config/sensor_thermal_calibration.md @@ -94,11 +94,11 @@ To perform an offboard calibration: 9. Open a terminal window in the **Firmware/Tools** directory and run the python calibration script: - ```sh - python process_sensor_caldata.py - ``` + ```sh + python process_sensor_caldata.py + ``` - 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_. 由于参数的数量,加载它们可能需要一些时间。 diff --git a/docs/zh/advanced_config/tuning_the_ecl_ekf.md b/docs/zh/advanced_config/tuning_the_ecl_ekf.md index ba875b161b..4f91ebfd61 100644 --- a/docs/zh/advanced_config/tuning_the_ecl_ekf.md +++ b/docs/zh/advanced_config/tuning_the_ecl_ekf.md @@ -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): 0. Automatic: - - 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. - - Incorrect magnetic field measurements can degrade the tilt estimate. - - The magnetometer biases are estimated whenever observable. + - 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. + - Incorrect magnetic field measurements can degrade the tilt estimate. + - The magnetometer biases are estimated whenever observable. 1. Magnetic heading: - - Only the heading is corrected. - 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. - - The magnetometer biases are estimated whenever observable. + - Only the heading is corrected. + 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. + - The magnetometer biases are estimated whenever observable. 2. Deprecated 3. Deprecated 4. Deprecated 5. None: - - 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). - - 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. - See [Estimate yaw from vehicle movement](#yaw-from-gps-velocity) below. + - 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). + - 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. + See [Estimate yaw from vehicle movement](#yaw-from-gps-velocity) below. 6. Init only: - - 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). - - 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. + - 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). + - 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. 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) - ::: info - The same log file can be used to tune the [multirotor wind estimator](#mc_wind_estimation_using_drag). + ::: info + The same log file can be used to tune the [multirotor wind estimator](#mc_wind_estimation_using_drag). ::: @@ -457,8 +457,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). 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 - The same **.ulg** log file can also be used to tune the [static pressure position error coefficients](#correction-for-static-pressure-position-error). + ::: info + 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. diff --git a/docs/zh/advanced_features/precland.md b/docs/zh/advanced_features/precland.md index 821d15a25c..cce0c92e20 100644 --- a/docs/zh/advanced_features/precland.md +++ b/docs/zh/advanced_features/precland.md @@ -38,14 +38,14 @@ If it is not visible the vehicle immediately performs a _normal_ landing at the A precision landing has three phases: 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. - 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). + 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). 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. - 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. Landing Phases Flow Diagram diff --git a/docs/zh/advanced_features/satcom_roadblock.md b/docs/zh/advanced_features/satcom_roadblock.md index fcb45ba7cf..47afa7adcf 100644 --- a/docs/zh/advanced_features/satcom_roadblock.md +++ b/docs/zh/advanced_features/satcom_roadblock.md @@ -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/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`. - The response should be: `OK`. + The response should be: `OK`. 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: - ``` - AT&W0 - ``` + ``` + AT&W0 + ``` The module is now ready to be used with PX4. @@ -101,55 +101,55 @@ Set up a delivery group for the message relay server and add the module to that 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: - - `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) + - `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) 2. Install the required python modules: - ```sh - sudo pip install pika tornado future - ``` + ```sh + sudo pip install pika tornado future + ``` 3. Install the `rabbitmq` message broker: - ```sh - sudo apt install rabbitmq-server - ``` + ```sh + sudo apt install rabbitmq-server + ``` 4. Configure the broker's credentials (change PWD to your preferred password): - ```sh - sudo rabbitmqctl add_user iridiumsbd PWD - sudo rabbitmqctl set_permissions iridiumsbd ".*" ".*" ".*" - ``` + ```sh + sudo rabbitmqctl add_user iridiumsbd PWD + sudo rabbitmqctl set_permissions iridiumsbd ".*" ".*" ".*" + ``` 5. Clone the [SatComInfrastructure](https://github.com/acfloria/SatComInfrastructure) repository: - ```sh - git clone https://github.com/acfloria/SatComInfrastructure.git - ``` + ```sh + git clone https://github.com/acfloria/SatComInfrastructure.git + ``` 6. Go to the location of the _SatComInfrastructure_ repo and configure the broker's queues: - ```sh - ./setup_rabbit.py localhost iridiumsbd PWD - ``` + ```sh + ./setup_rabbit.py localhost iridiumsbd PWD + ``` 7. Verify the setup: - ```sh - sudo rabbitmqctl list_queues - ``` + ```sh + 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. 9. Start the relay script in the detached mode: - ```sh - screen -dm bash -c 'cd SatcomInfrastructure/; ./relay.py - ``` + ```sh + screen -dm bash -c 'cd SatcomInfrastructure/; ./relay.py + ``` Other instructions include: @@ -177,15 +177,15 @@ To setup the ground station: 1. Install the required python modules: - ```sh - sudo pip install pika tornado future - ``` + ```sh + sudo pip install pika tornado future + ``` 2. Clone the SatComInfrastructure repository: - ```sh - git clone https://github.com/acfloria/SatComInfrastructure.git - ``` + ```sh + git clone https://github.com/acfloria/SatComInfrastructure.git + ``` 3. Edit the **udp2rabbit.cfg** configuration file to reflect your settings. @@ -193,20 +193,20 @@ To setup the ground station: 5. Add a UDP connection in QGC with the parameters: - - Listening port: 10000 - - Target hosts: 127.0.0.1:10001 - - High Latency: checked + - Listening port: 10000 + - Target hosts: 127.0.0.1:10001 + - High Latency: checked - ![High Latency Link Settings](../../assets/satcom/linksettings.png) + ![High Latency Link Settings](../../assets/satcom/linksettings.png) ### 验证 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 - ./udp2rabbit.py - ``` + ```sh + ./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. @@ -217,36 +217,36 @@ If in the terminal where the `udp2rabbit.py` script is running within a couple o ## Running the System 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: - ![Connect the High Latency link](../../assets/satcom/linkconnect.png) + ![Connect the High Latency link](../../assets/satcom/linkconnect.png) 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 - ./udp2rabbit.py - ``` + ```sh + ./udp2rabbit.py + ``` 3. Power up the vehicle. 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_. - 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: + 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: - ![Link Toolbar](../../assets/satcom/linkindicator.jpg) + ![Link Toolbar](../../assets/satcom/linkindicator.jpg) - 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. - 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. - - 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. - - 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: + 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. + - 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. + - 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: - ![Prioritylink Selection](../../assets/satcom/linkselection.png) + ![Prioritylink Selection](../../assets/satcom/linkselection.png) ## 故障处理 diff --git a/docs/zh/camera/fc_connected_camera.md b/docs/zh/camera/fc_connected_camera.md index 8645b80e94..f6254eb86b 100644 --- a/docs/zh/camera/fc_connected_camera.md +++ b/docs/zh/camera/fc_connected_camera.md @@ -188,16 +188,16 @@ The following sections are out of date and need retesting. 1. On the PX4 console: - ```shell - camera_trigger test - ``` + ```shell + camera_trigger test + ``` 2. From _QGroundControl_: - Click on **Trigger Camera** in the main instrument panel. - These shots are not logged or counted for geotagging. + Click on **Trigger Camera** in the main instrument panel. + These shots are not logged or counted for geotagging. - ![QGC Test Camera](../../assets/camera/qgc_test_camera.png) + ![QGC Test Camera](../../assets/camera/qgc_test_camera.png) ## Sony QX-1 example (Photogrammetry) diff --git a/docs/zh/camera/mavlink_v1_camera.md b/docs/zh/camera/mavlink_v1_camera.md index f7a20dcc0a..2c1289fa32 100644 --- a/docs/zh/camera/mavlink_v1_camera.md +++ b/docs/zh/camera/mavlink_v1_camera.md @@ -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),使其分配给相机连接的端口。 2. 将对应的 [MAV_2_MODE](../advanced_config/parameter_reference.md#MAV_2_MODE) 设置为 `2` (板载)。 - 这确保正确的 MAVLink 消息集被发出和转发。 + 这确保正确的 MAVLink 消息集被发出和转发。 3. 您可能需要设置一些其他参数,取决于您的连接 - 例如波特率。 然后按照其用户指南中的建议连接和配置相机。 diff --git a/docs/zh/camera/mavlink_v2_camera.md b/docs/zh/camera/mavlink_v2_camera.md index 5935a2d75c..abf7eb0490 100644 --- a/docs/zh/camera/mavlink_v2_camera.md +++ b/docs/zh/camera/mavlink_v2_camera.md @@ -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. 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. 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. diff --git a/docs/zh/companion_computer/holybro_pixhawk_jetson_baseboard.md b/docs/zh/companion_computer/holybro_pixhawk_jetson_baseboard.md index 5a49dd739d..93dd15e4e2 100644 --- a/docs/zh/companion_computer/holybro_pixhawk_jetson_baseboard.md +++ b/docs/zh/companion_computer/holybro_pixhawk_jetson_baseboard.md @@ -892,95 +892,95 @@ These instructions approximately mirror the [PX4 Ethernet setup](../advanced_con Next we modify the Jetson IP address to be on the same network as the Pixhawk: 1. Make sure `netplan` is installed. - You can check by running the following command: + You can check by running the following command: - ```sh - netplan -h - ``` + ```sh + netplan -h + ``` - If not, install it using the commands: + If not, install it using the commands: - ```sh - sudo apt update - sudo apt install netplan.io - ``` + ```sh + sudo apt update + sudo apt install netplan.io + ``` 2. Check `system_networkd` is running: - ```sh - sudo systemctl status systemd-networkd - ``` + ```sh + sudo systemctl status systemd-networkd + ``` - You should see output like below if it is active: + You should see output like below if it is active: - ```sh - ● systemd-networkd.service - Network Configuration - Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled) - Active: active (running) since Wed 2024-09-11 23:32:44 EDT; 23min ago - TriggeredBy: ● systemd-networkd.socket - Docs: man:systemd-networkd.service(8) - Main PID: 2452 (systemd-network) - Status: "Processing requests..." - Tasks: 1 (limit: 18457) - Memory: 2.7M - CPU: 157ms - CGroup: /system.slice/systemd-networkd.service - └─2452 /lib/systemd/systemd-networkd + ```sh + ● systemd-networkd.service - Network Configuration + Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled) + Active: active (running) since Wed 2024-09-11 23:32:44 EDT; 23min ago + TriggeredBy: ● systemd-networkd.socket + Docs: man:systemd-networkd.service(8) + Main PID: 2452 (systemd-network) + Status: "Processing requests..." + Tasks: 1 (limit: 18457) + Memory: 2.7M + CPU: 157ms + CGroup: /system.slice/systemd-networkd.service + └─2452 /lib/systemd/systemd-networkd - Sep 11 23:32:44 ubuntu systemd-networkd[2452]: lo: Gained carrier - Sep 11 23:32:44 ubuntu systemd-networkd[2452]: wlan0: Gained IPv6LL - Sep 11 23:32:44 ubuntu systemd-networkd[2452]: eth0: Gained IPv6LL - Sep 11 23:32:44 ubuntu systemd-networkd[2452]: Enumeration completed - Sep 11 23:32:44 ubuntu systemd[1]: Started Network Configuration. - Sep 11 23:32:44 ubuntu systemd-networkd[2452]: wlan0: Connected WiFi access point: Verizon_7YLWWD (78:67:0e:ea:a6:0> - Sep 11 23:34:16 ubuntu systemd-networkd[2452]: eth0: Re-configuring with /run/systemd/network/10-netplan-eth0.netwo> - Sep 11 23:34:16 ubuntu systemd-networkd[2452]: eth0: DHCPv6 lease lost - Sep 11 23:34:16 ubuntu systemd-networkd[2452]: eth0: Re-configuring with /run/systemd/network/10-netplan-eth0.netwo> - Sep 11 23:34:16 ubuntu systemd-networkd[2452]: eth0: DHCPv6 lease lost - ``` + Sep 11 23:32:44 ubuntu systemd-networkd[2452]: lo: Gained carrier + Sep 11 23:32:44 ubuntu systemd-networkd[2452]: wlan0: Gained IPv6LL + Sep 11 23:32:44 ubuntu systemd-networkd[2452]: eth0: Gained IPv6LL + Sep 11 23:32:44 ubuntu systemd-networkd[2452]: Enumeration completed + Sep 11 23:32:44 ubuntu systemd[1]: Started Network Configuration. + Sep 11 23:32:44 ubuntu systemd-networkd[2452]: wlan0: Connected WiFi access point: Verizon_7YLWWD (78:67:0e:ea:a6:0> + Sep 11 23:34:16 ubuntu systemd-networkd[2452]: eth0: Re-configuring with /run/systemd/network/10-netplan-eth0.netwo> + Sep 11 23:34:16 ubuntu systemd-networkd[2452]: eth0: DHCPv6 lease lost + Sep 11 23:34:16 ubuntu systemd-networkd[2452]: eth0: Re-configuring with /run/systemd/network/10-netplan-eth0.netwo> + Sep 11 23:34:16 ubuntu systemd-networkd[2452]: eth0: DHCPv6 lease lost + ``` - If `system_networkd` is not running, it can be enabled using: + If `system_networkd` is not running, it can be enabled using: - ```sh - sudo systemctl start systemd-networkd - sudo systemctl enable systemd-networkd - ``` + ```sh + sudo systemctl start systemd-networkd + sudo systemctl enable systemd-networkd + ``` 3. Open the Netplan configuration file (so we can set up a static IP for the Jetson). - The Netplan configuration file is usually located in the `/etc/netplan/` directory and named something like `01-netcfg.yaml` (the name can vary). - Below we use `nano` to open the file, but you can use your preferred text editor: + The Netplan configuration file is usually located in the `/etc/netplan/` directory and named something like `01-netcfg.yaml` (the name can vary). + Below we use `nano` to open the file, but you can use your preferred text editor: - ```sh - sudo nano /etc/netplan/01-netcfg.yaml - ``` + ```sh + sudo nano /etc/netplan/01-netcfg.yaml + ``` 4. Modify the yaml configuration, by overwriting the contents with the following information and then saving: - ```sh - network: - version: 2 - renderer: networkd - ethernets: - eth0: - dhcp4: no - addresses: - - 10.41.10.1/24 - routes: - - to: 0.0.0.0/0 - via: 10.41.10.254 - nameservers: - addresses: - - 10.41.10.254 - ``` + ```sh + network: + version: 2 + renderer: networkd + ethernets: + eth0: + dhcp4: no + addresses: + - 10.41.10.1/24 + routes: + - to: 0.0.0.0/0 + via: 10.41.10.254 + nameservers: + addresses: + - 10.41.10.254 + ``` - This gives the Jetson a static IP address on the Ethernet interface of `10.41.10.1` . + This gives the Jetson a static IP address on the Ethernet interface of `10.41.10.1` . 5. Apply the changes using the following command: - ```sh - sudo netplan apply - ``` + ```sh + sudo netplan apply + ``` The Pixhawk Ethernet address is set to `10.41.10.2` by default, which is on the same subnet. We can test our changes above by pinging the Pixhawk from within the Jetson terminal: diff --git a/docs/zh/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md b/docs/zh/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md index 5c331fd9bb..edece004af 100644 --- a/docs/zh/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md +++ b/docs/zh/companion_computer/holybro_pixhawk_rpi_cm4_baseboard.md @@ -69,15 +69,15 @@ To install the RPi CM4 companion computer: 1. Disconnect the `FAN` wiring. - ![HB_Pixhawk_CM4_Fan](../../assets/companion_computer/holybro_pixhawk_rpi_cm4_baseboard/baseboard_fan.jpg) + ![HB_Pixhawk_CM4_Fan](../../assets/companion_computer/holybro_pixhawk_rpi_cm4_baseboard/baseboard_fan.jpg) 2. Remove these 4 screws on the back side of the baseboard. - ![Bottom of the board showing screws in corners holding the cover](../../assets/companion_computer/holybro_pixhawk_rpi_cm4_baseboard/baseboard_bottom.jpg) + ![Bottom of the board showing screws in corners holding the cover](../../assets/companion_computer/holybro_pixhawk_rpi_cm4_baseboard/baseboard_bottom.jpg) 3. Remove the baseboard case, install the CM4, and use the 4 screws to attach it (as shown): - ![HB_Pixhawk_CM4_Screws](../../assets/companion_computer/holybro_pixhawk_rpi_cm4_baseboard/baseboard_screws.jpg) + ![HB_Pixhawk_CM4_Screws](../../assets/companion_computer/holybro_pixhawk_rpi_cm4_baseboard/baseboard_screws.jpg) 4. Reattach the cover. @@ -115,29 +115,29 @@ To flash a RPi image onto EMMC. 1. Switch Dip-Switch to `RPI`. - ![](../../assets/companion_computer/holybro_pixhawk_rpi_cm4_baseboard/cm4_dip_switch.png) + ![](../../assets/companion_computer/holybro_pixhawk_rpi_cm4_baseboard/cm4_dip_switch.png) 2. Connect computer to USB-C _CM4 Slave_ port used to power & flash the RPi. - ![](../../assets/companion_computer/holybro_pixhawk_rpi_cm4_baseboard/cm4_usbc_slave_port.png) + ![](../../assets/companion_computer/holybro_pixhawk_rpi_cm4_baseboard/cm4_usbc_slave_port.png) 3. Get `usbboot`, build it and run it. - ```sh - sudo apt install libusb-1.0-0-dev - git clone --depth=1 https://github.com/raspberrypi/usbboot - cd usbboot - make - sudo ./rpiboot - ``` + ```sh + sudo apt install libusb-1.0-0-dev + git clone --depth=1 https://github.com/raspberrypi/usbboot + cd usbboot + make + sudo ./rpiboot + ``` 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 - sudo apt install rpi-imager - rpi-imager - ``` + ```sh + sudo apt install rpi-imager + rpi-imager + ``` 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. 8. To check if it's booting/working you can either: - - Check there is HDMI output - - Connect via SSH (if set up in rpi-imager, and WiFi is available). + - Check there is HDMI output + - Connect via SSH (if set up in rpi-imager, and WiFi is available). ## 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` - ![Image of baseboard showing FC USB-C connector](../../assets/companion_computer/holybro_pixhawk_rpi_cm4_baseboard/baseboard_fc_usb_c.jpg) + ![Image of baseboard showing FC USB-C connector](../../assets/companion_computer/holybro_pixhawk_rpi_cm4_baseboard/baseboard_fc_usb_c.jpg) 2. [Set the parameters](../advanced_config/parameters.md): - - `MAV_1_CONFIG` = `102` - - `MAV_1_MODE = 2` - - `SER_TEL2_BAUD` = `921600` + - `MAV_1_CONFIG` = `102` + - `MAV_1_MODE = 2` + - `SER_TEL2_BAUD` = `921600` 3. Reboot the FC. @@ -185,13 +185,13 @@ On the RPi side: 2. Enable the RPi serial port by running `RPi-config` - - Go to `3 Interface Options`, then `I6 Serial Port`. - Then choose: - - `login shell accessible over serial → No` - - `serial port hardware enabled` → `Yes` + - Go to `3 Interface Options`, then `I6 Serial Port`. + Then choose: + - `login shell accessible over serial → No` + - `serial port hardware enabled` → `Yes` 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. @@ -201,9 +201,9 @@ On the RPi side: 2. Install MAVSDK Python: - ```sh - python3 -m pip install mavsdk - ``` + ```sh + python3 -m pip install mavsdk + ``` 3. Copy an example from the [MAVSDK-Python examples](https://github.com/mavlink/MAVSDK-Python/tree/main/examples). diff --git a/docs/zh/companion_computer/pixhawk_rpi.md b/docs/zh/companion_computer/pixhawk_rpi.md index 26948bd350..beb8a1f7fe 100644 --- a/docs/zh/companion_computer/pixhawk_rpi.md +++ b/docs/zh/companion_computer/pixhawk_rpi.md @@ -132,50 +132,50 @@ Enter the following commands (in sequence) a terminal to configure Ubuntu for RP 1. Install `raspi-config`: - ```sh - sudo apt update - sudo apt upgrade - sudo apt-get install raspi-config - ``` + ```sh + sudo apt update + sudo apt upgrade + sudo apt-get install raspi-config + ``` 2. Open `raspi-config`: - ```sh - sudo raspi-config - ``` + ```sh + sudo raspi-config + ``` 3. Go to the **Interface Option** and then click **Serial Port**. - - Select **No** to disable serial login shell. - - Select **Yes** to enable the serial interface. - - Click **Finish** and restart the RPi. + - Select **No** to disable serial login shell. + - Select **Yes** to enable the serial interface. + - Click **Finish** and restart the RPi. 4. Open the firmware boot configuration file in the `nano` editor on RPi: - ```sh - sudo nano /boot/firmware/config.txt - ``` + ```sh + sudo nano /boot/firmware/config.txt + ``` 5. Append the following text to the end of the file (after the last line): - ```sh - enable_uart=1 - dtoverlay=disable-bt - ``` + ```sh + enable_uart=1 + dtoverlay=disable-bt + ``` 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. - 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 - cd / - ls /dev/ttyAMA0 - ``` + ```sh + cd / + 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. 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). 3. [Check/change the following parameters](../advanced_config/parameters.md) in QGroundControl: - ```ini - MAV_1_CONFIG = TELEM2 - UXRCE_DDS_CFG = 0 (Disabled) - SER_TEL2_BAUD = 57600 - ``` + ```ini + MAV_1_CONFIG = TELEM2 + UXRCE_DDS_CFG = 0 (Disabled) + SER_TEL2_BAUD = 57600 + ``` - 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). + 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). Then install setup MAVProxy on the RPi using the following terminal commands: 1. Install MAVProxy: - ```sh - sudo apt install python3-pip - sudo pip3 install mavproxy - sudo apt remove modemmanager - ``` + ```sh + sudo apt install python3-pip + sudo pip3 install mavproxy + sudo apt remove modemmanager + ``` 2. Run MAVProxy, setting the port to connect to `/dev/ttyAMA0` and the baud rate to match the PX4: - ```sh - sudo mavproxy.py --master=/dev/serial0 --baudrate 57600 - ``` + ```sh + sudo mavproxy.py --master=/dev/serial0 --baudrate 57600 + ``` - ::: info - 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`: + ::: info + 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`: - ```sh - sudo chmod a+rw /dev/ttyACM0 - sudo mavproxy.py --master=/dev/ttyACM0 --baudrate 57600 - ``` + ```sh + sudo chmod a+rw /dev/ttyACM0 + 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: - ```ini - MAV_1_CONFIG = 0 (Disabled) - UXRCE_DDS_CFG = 102 (TELEM2) - SER_TEL2_BAUD = 921600 - ``` + ```ini + MAV_1_CONFIG = 0 (Disabled) + UXRCE_DDS_CFG = 102 (TELEM2) + 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. - 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`. + [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.\ + You could similarly configure a connection to `TELEM1` using either `MAV_1_CONFIG` or `MAV_0_CONFIG`. - ::: info - You will need to reboot the flight controller to apply any changes to these parameters. + ::: info + 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. - 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 - uxrce_dds_client status - ``` + ```sh + uxrce_dds_client status + ``` :::info 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: - ```sh - sudo apt install git - ``` + ```sh + sudo apt install git + ``` 3. Install the uXRCE_DDS agent: - ```sh - git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git - cd Micro-XRCE-DDS-Agent - mkdir build - cd build - cmake .. - make - sudo make install - sudo ldconfig /usr/local/lib/ - ``` + ```sh + git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git + cd Micro-XRCE-DDS-Agent + mkdir build + cd build + cmake .. + make + sudo make install + 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: - ```sh - sudo MicroXRCEAgent serial --dev /dev/serial0 -b 921600 - ``` + ```sh + 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. You can view the available topics using the following command on the RPi: diff --git a/docs/zh/companion_computer/video_streaming_wfb_ng_wifi.md b/docs/zh/companion_computer/video_streaming_wfb_ng_wifi.md index 80227c2b6d..86982c4b20 100644 --- a/docs/zh/companion_computer/video_streaming_wfb_ng_wifi.md +++ b/docs/zh/companion_computer/video_streaming_wfb_ng_wifi.md @@ -80,18 +80,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) 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). - Connect Pixhawk UART to Raspberry Pi UART. - In `/etc/wifibroadcast.cfg` uncomment `peer = 'serial:ttyS0:1500000'` in `[drone_mavlink]` section. + Connect Pixhawk UART to Raspberry Pi UART. + In `/etc/wifibroadcast.cfg` uncomment `peer = 'serial:ttyS0:1500000'` in `[drone_mavlink]` section. ### Using a Linux Laptop as GCS (Harder than using a RPi) 1. On **ground** Linux development computer: - ```sh - sudo apt install libpcap-dev libsodium-dev python3-all python3-twisted - git clone -b stable https://github.com/svpcom/wfb-ng.git - cd wfb-ng && make deb && sudo apt install ./deb_dist/wfb-ng*.deb - ``` + ```sh + sudo apt install libpcap-dev libsodium-dev python3-all python3-twisted + git clone -b stable https://github.com/svpcom/wfb-ng.git + 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 diff --git a/docs/zh/complete_vehicles_mc/amov_F410_drone.md b/docs/zh/complete_vehicles_mc/amov_F410_drone.md index 1a64d3a506..8c90fbf1bd 100644 --- a/docs/zh/complete_vehicles_mc/amov_F410_drone.md +++ b/docs/zh/complete_vehicles_mc/amov_F410_drone.md @@ -22,7 +22,7 @@ It is pre-installed with PX4 v1.15.4 at time of writing (a more recent version m - Compatibility with many different components, providing platform for loading other user sensors, preparing for functional model development. - Abundant power supply making it perfect for installing additional sensors and onboard computers (including 5 external output voltages, 3 channels of 5V, 2 channels of 12V). - Pc-SDK support. - This is a PC-based Python SDK Library based on MAVSDK that significantly simplifies UAV development compared to other approaches, such as using ROS or using C++. All you need is a basic understanding of Python programming and some simple coordinate system principles! + This is a PC-based Python SDK Library based on MAVSDK that significantly simplifies UAV development compared to other approaches, such as using ROS or using C++. All you need is a basic understanding of Python programming and some simple coordinate system principles! - The [documentation](https://docs.amovlab.com/f450-v6c-wiki/#/en/) shows many of the options. 7. Quasi-smart battery. The battery has a hard housing design that makes easy to install and remove. It provides accurate power estimates, but does not have some more advanced "smart battery" features. diff --git a/docs/zh/complete_vehicles_mc/crazyflie2.md b/docs/zh/complete_vehicles_mc/crazyflie2.md index 57e7af9c1d..67534784c5 100644 --- a/docs/zh/complete_vehicles_mc/crazyflie2.md +++ b/docs/zh/complete_vehicles_mc/crazyflie2.md @@ -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: - ```sh - git clone https://github.com/PX4/PX4-Bootloader.git - ``` + ```sh + git clone https://github.com/PX4/PX4-Bootloader.git + ``` 2. Navigate into the top directory of the source code and compile it using: - ```sh - make crazyflie_bl - ``` + ```sh + make crazyflie_bl + ``` 3. Put the Crazyflie 2.0 into DFU mode by following these steps: - - Ensure it is initially unpowered. - - Hold down the reset button (see figure below...). - ![Crazyflie2 Reset Button](../../assets/flight_controller/crazyflie/crazyflie_reset_button.jpg) - - Plug into computer's USB port. - - After a second, the blue LED should start blinking and after 5 seconds should start blinking faster. - - Release button. + - Ensure it is initially unpowered. + - Hold down the reset button (see figure below...). + ![Crazyflie2 Reset Button](../../assets/flight_controller/crazyflie/crazyflie_reset_button.jpg) + - Plug into computer's USB port. + - After a second, the blue LED should start blinking and after 5 seconds should start blinking faster. + - Release button. 4. Install _dfu-util_: - ```sh - sudo apt-get update - sudo apt-get install dfu-util - ``` + ```sh + sudo apt-get update + sudo apt-get install dfu-util + ``` 5. Flash bootloader using _dfu-util_ and unplug Crazyflie 2.0 when done: - ```sh - sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D ./build/crazyflie_bl/crazyflie_bl.bin - ``` + ```sh + 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: - ```sh - git clone https://github.com/PX4/PX4-Autopilot.git - ``` + ```sh + git clone https://github.com/PX4/PX4-Autopilot.git + ``` 7. Navigate into the top directory of the source code and compile it using: - ```sh - make bitcraze_crazyflie_default upload - ``` + ```sh + make bitcraze_crazyflie_default upload + ``` 8. When prompted to plug in device, plug in Crazyflie 2.0. - The yellow LED should start blinking indicating bootloader mode. - Then the red LED should turn on indicating that the flashing process has started. + The yellow LED should start blinking indicating bootloader mode. + Then the red LED should turn on indicating that the flashing process has started. 9. Wait for completion. diff --git a/docs/zh/complete_vehicles_mc/crazyflie21.md b/docs/zh/complete_vehicles_mc/crazyflie21.md index 3002164a54..370c0b61d1 100644 --- a/docs/zh/complete_vehicles_mc/crazyflie21.md +++ b/docs/zh/complete_vehicles_mc/crazyflie21.md @@ -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: - ```sh - git clone https://github.com/PX4/PX4-Bootloader.git --recurse-submodules - ``` + ```sh + git clone https://github.com/PX4/PX4-Bootloader.git --recurse-submodules + ``` 2. Navigate into the top directory of the source code and compile it using: - ```sh - make crazyflie21_bl - ``` + ```sh + make crazyflie21_bl + ``` 3. Put the Crazyflie 2.1 into DFU mode by following these steps: - - Ensure it is initially unpowered. - - Ensure battery is disconnected. - - Hold down the reset button (see figure below...). - ![Crazyflie2 Reset Button](../../assets/flight_controller/crazyflie/crazyflie_reset_button.jpg) - - Plug into computer's USB port. - - After a second, the blue LED should start blinking and after 5 seconds should start blinking faster. - - Release button. + - Ensure it is initially unpowered. + - Ensure battery is disconnected. + - Hold down the reset button (see figure below...). + ![Crazyflie2 Reset Button](../../assets/flight_controller/crazyflie/crazyflie_reset_button.jpg) + - Plug into computer's USB port. + - After a second, the blue LED should start blinking and after 5 seconds should start blinking faster. + - Release button. 4. Install _dfu-util_: - ```sh - sudo apt-get update - sudo apt-get install dfu-util - ``` + ```sh + sudo apt-get update + sudo apt-get install dfu-util + ``` 5. Flash bootloader using _dfu-util_ and unplug Crazyflie 2.1 when done: - ```sh - sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D ./build/crazyflie21_bl/crazyflie21_bl.bin - ``` + ```sh + 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: - ```sh - git clone https://github.com/PX4/PX4-Autopilot.git - ``` + ```sh + git clone https://github.com/PX4/PX4-Autopilot.git + ``` 7. Navigate into the top directory of the source code and compile it using: - ```sh - cd PX4-Autopilot/ - make bitcraze_crazyflie21_default upload - ``` + ```sh + cd PX4-Autopilot/ + make bitcraze_crazyflie21_default upload + ``` 8. When prompted to plug in device, plug in Crazyflie 2.1. - The yellow LED should start blinking indicating bootloader mode. - Then the red LED should turn on indicating that the flashing process has started. + The yellow LED should start blinking indicating bootloader mode. + Then the red LED should turn on indicating that the flashing process has started. 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) 2. Put the Crazyflie 2.1 into DFU mode by following these steps: - - Ensure it is initially unpowered. - - Ensure battery is disconnected. - - Hold down the reset button. - - Plug into computer's USB port. - - After a second, the blue LED should start blinking and after 5 seconds should start blinking faster. - - Release button. + - Ensure it is initially unpowered. + - Ensure battery is disconnected. + - Hold down the reset button. + - Plug into computer's USB port. + - After a second, the blue LED should start blinking and after 5 seconds should start blinking faster. + - Release button. 3. Flash bootloader using _dfu-util_ and unplug Crazyflie 2.1 when done: - ```sh - sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D cf2loader-1.0.bin - ``` + ```sh + 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. diff --git a/docs/zh/complete_vehicles_mc/modalai_starling.md b/docs/zh/complete_vehicles_mc/modalai_starling.md index 3791ce71f9..b77b081501 100644 --- a/docs/zh/complete_vehicles_mc/modalai_starling.md +++ b/docs/zh/complete_vehicles_mc/modalai_starling.md @@ -84,26 +84,26 @@ Follow this guide to bind your ELRS receiver to your transmitter. #### 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. - 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. - ![Starling Receiver](../../assets/hardware/complete_vehicles/modalai_starling/starling-photo.png) + ![Starling Receiver](../../assets/hardware/complete_vehicles/modalai_starling/starling-photo.png) 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. - ![Boot Screenshot](../../assets/hardware/complete_vehicles/modalai_starling/screenshot-boot.png) + ![Boot Screenshot](../../assets/hardware/complete_vehicles/modalai_starling/screenshot-boot.png) #### 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. - ![Press Menu on RC](../../assets/hardware/complete_vehicles/modalai_starling/radio-1.png) + ![Press Menu on RC](../../assets/hardware/complete_vehicles/modalai_starling/radio-1.png) 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. - ![Press Binding on RC](../../assets/hardware/complete_vehicles/modalai_starling/radio-2.png) + ![Press Binding on RC](../../assets/hardware/complete_vehicles/modalai_starling/radio-2.png) 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. diff --git a/docs/zh/complete_vehicles_mc/px4_vision_kit.md b/docs/zh/complete_vehicles_mc/px4_vision_kit.md index 4a1fb66457..422ed34af2 100644 --- a/docs/zh/complete_vehicles_mc/px4_vision_kit.md +++ b/docs/zh/complete_vehicles_mc/px4_vision_kit.md @@ -42,17 +42,17 @@ This kit is still highly recommended for developing and testing vision solutions ## 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). - 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). - 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). - 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. - ![RC Number](../../assets/hardware/px4_vision_devkit/rc.png) ![ECN Number](../../assets/hardware/px4_vision_devkit/serial_number_update.jpg) + ![RC Number](../../assets/hardware/px4_vision_devkit/rc.png) ![ECN Number](../../assets/hardware/px4_vision_devkit/serial_number_update.jpg) 5. All PX4 Vision v1.5 _UP Core_ can be powered by either the DC plug or with battery. @@ -132,37 +132,37 @@ In addition, users will need ground station hardware/software: ## First-time Setup 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. - - [Connect the receiver to the flight controller](../assembly/quick_start_pixhawk4.md#radio-control). - - 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). - - 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). + - 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). + - 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). + - 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). - 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) - ![Raise GPS mast](../../assets/hardware/px4_vision_devkit/raise_gps_mast.jpg) + ![Raise GPS mast](../../assets/hardware/px4_vision_devkit/raise_gps_mast.jpg) 4. Insert the pre-imaged USB2.0 stick from the kit into the _UP Core_ port labeled `USB1` (highlighted below). - ![UP Core: USB1 Port ](../../assets/hardware/px4_vision_devkit/upcore_port_usb1.png) + ![UP Core: USB1 Port ](../../assets/hardware/px4_vision_devkit/upcore_port_usb1.png) 5. Power the vehicle with a fully charged battery. - ::: info - Ensure propellers are removed before connecting the battery. + ::: info + 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: - - **SSID:** pixhawk4 - - **Password:** pixhawk4 + - **SSID:** pixhawk4 + - **Password:** pixhawk4 - :::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`. - The baud rate must not be changed from 921600. + :::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`. + The baud rate must not be changed from 921600. ::: @@ -170,39 +170,39 @@ In addition, users will need ground station hardware/software: 8. [Configure/calibrate](../config/index.md) the vehicle: - ::: info - 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. + ::: info + 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. ::: - - [Calibrate the Radio System](../config/radio.md) - - [Calibrate the Compass](../config/compass.md) + - [Calibrate the Radio System](../config/radio.md) + - [Calibrate the Compass](../config/compass.md) 9. (Optional) Configure a [Flight Mode selector switch](../config/flight_mode.md) on the remote controller. - ::: info - Modes can also be changed using _QGroundControl_ + ::: info + 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. - - [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. + - [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. + - [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: - ![Motor Order Diagram](../../assets/hardware/px4_vision_devkit/motor_order_diagram.png) + ![Motor Order Diagram](../../assets/hardware/px4_vision_devkit/motor_order_diagram.png) - - 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). - ![Propeller identification](../../assets/hardware/px4_vision_devkit/propeller_directions.jpg) + ![Propeller identification](../../assets/hardware/px4_vision_devkit/propeller_directions.jpg) - - Screw down firmly using the provided propellor nuts: + - Screw down firmly using the provided propellor nuts: - ![Propeller nuts](../../assets/hardware/px4_vision_devkit/propeller_nuts.png) + ![Propeller nuts](../../assets/hardware/px4_vision_devkit/propeller_nuts.png) ## Fly the Drone with Avoidance @@ -212,30 +212,30 @@ 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). - :::tip - The boot/startup process takes around 1 minute from the supplied USB stick (or 30 seconds from [internal memory](#install_image_mission_computer)). + :::tip + 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: - - The _QGroundControl_ notification log displays the message: **Avoidance system connected**. + - The _QGroundControl_ notification log displays the message: **Avoidance system connected**. - ![QGC Log showing avoidance system has started](../../assets/hardware/px4_vision_devkit/qgc_console_vision_system_started.jpg) + ![QGC Log showing avoidance system has started](../../assets/hardware/px4_vision_devkit/qgc_console_vision_system_started.jpg) - - 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. - 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. 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. - 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. - 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 @@ -280,22 +280,22 @@ To flash the USB image to the _UP Core_: 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). - 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 - cd ~/catkin_ws/src/px4vision_ros/tools - sudo ./flash_emmc.sh - ``` + ```sh + cd ~/catkin_ws/src/px4vision_ros/tools + sudo ./flash_emmc.sh + ``` - ::: info - All information saved in the _UP Core_ computer will be removed when executing this script. + ::: info + All information saved in the _UP Core_ computer will be removed when executing this script. ::: 4. Pull out the USB stick. 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 @@ -319,23 +319,23 @@ To login to the companion computer: 1. Connect a keyboard and mouse to the _UP Core_ via port `USB2`: - ![UP Core: USB2](../../assets/hardware/px4_vision_devkit/upcore_port_usb2.png) + ![UP Core: USB2](../../assets/hardware/px4_vision_devkit/upcore_port_usb2.png) - - 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 - ![USB to JST cable](../../assets/hardware/px4_vision_devkit/usb_jst_cable.jpg) + ![USB to JST cable](../../assets/hardware/px4_vision_devkit/usb_jst_cable.jpg) - - 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. - ![UP Core: HDMI port](../../assets/hardware/px4_vision_devkit/upcore_port_hdmi.png) + ![UP Core: HDMI port](../../assets/hardware/px4_vision_devkit/upcore_port_hdmi.png) - 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: - - **Username:** px4vision - - **Password:** px4vision + - **Username:** px4vision + - **Password:** px4vision ### Developing/Extending PX4 Avoidance @@ -350,39 +350,39 @@ To integrate a different planner, this needs to be disabled. 1. Disable the avoidance process using the following command: - ```sh - systemctl stop avoidance.service - ``` + ```sh + 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 - # restart service - systemctl start avoidance.service + ```sh + # restart service + systemctl start avoidance.service - # disable service (stop service and do not restart after boot) - systemctl disable avoidance.service + # disable service (stop service and do not restart after boot) + systemctl disable avoidance.service - # enable service (start service and enable restart after boot) - systemctl enable avoidance.service - ``` + # enable service (start service and enable restart after boot) + 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`. 3. Make changes to the code! To get the latest code of avoidance pull the code from the avoidance repo: - ```sh - git pull origin - git checkout origin/master - ``` + ```sh + git pull origin + git checkout origin/master + ``` 4. Build the package - ```sh - catkin build local_planner - ``` + ```sh + catkin build local_planner + ``` The ROS workspace is placed in `~/catkin_ws`. For reference on developing in ROS and using the catkin workspace, see the [ROS catkin tutorials](https://wiki.ros.org/catkin/Tutorials). diff --git a/docs/zh/complete_vehicles_rover/aion_r1.md b/docs/zh/complete_vehicles_rover/aion_r1.md index 0e4f89b899..e6bc0298cb 100644 --- a/docs/zh/complete_vehicles_rover/aion_r1.md +++ b/docs/zh/complete_vehicles_rover/aion_r1.md @@ -54,15 +54,15 @@ Use _QGroundControl_ for rover configuration: First configure the serial connection: 1. Navigate to the [Parameters](../advanced_config/parameters.md) section in QGroundControl. - - Set the [RBCLW_SER_CFG](../advanced_config/parameter_reference.md#RBCLW_SER_CFG) parameter to the serial port to which the RoboClaw is connected (such as `GPS2`). - - [RBCLW_COUNTS_REV](../advanced_config/parameter_reference.md#RBCLW_COUNTS_REV) specifies the number of encoder counts required for one wheel revolution. - This value should be left at `1200` for the tested `RoboClaw 2x15A Motor Controller`. - Adjust the value based on your specific encoder and wheel setup. - - RoboClaw motor controllers must be assigned a unique address on the bus. - The default address is 128 and you should not need to change this (if you do, update the PX4 parameter [RBCLW_ADDRESS](../advanced_config/parameter_reference.md#RBCLW_ADDRESS) to match). + - Set the [RBCLW_SER_CFG](../advanced_config/parameter_reference.md#RBCLW_SER_CFG) parameter to the serial port to which the RoboClaw is connected (such as `GPS2`). + - [RBCLW_COUNTS_REV](../advanced_config/parameter_reference.md#RBCLW_COUNTS_REV) specifies the number of encoder counts required for one wheel revolution. + This value should be left at `1200` for the tested `RoboClaw 2x15A Motor Controller`. + Adjust the value based on your specific encoder and wheel setup. + - RoboClaw motor controllers must be assigned a unique address on the bus. + The default address is 128 and you should not need to change this (if you do, update the PX4 parameter [RBCLW_ADDRESS](../advanced_config/parameter_reference.md#RBCLW_ADDRESS) to match). - ::: info - PX4 does not support multiple RoboClaw motor controllers in the same vehicle — each controller needs a unique address on the bus, and there is only one parameter for setting the address in PX4 (`RBCLW_ADDRESS`). + ::: info + PX4 does not support multiple RoboClaw motor controllers in the same vehicle — each controller needs a unique address on the bus, and there is only one parameter for setting the address in PX4 (`RBCLW_ADDRESS`). ::: @@ -71,12 +71,12 @@ Then configure the actuator configuration: 1. Navigate to [Actuators Configuration & Testing](../config/actuators.md) in QGroundControl. 2. Select the RoboClaw driver from the list of _Actuator Outputs_. - For the channel assignments, disarm, minimum, and maximum values, please refer to the image below. + For the channel assignments, disarm, minimum, and maximum values, please refer to the image below. - ![RoboClaw QGC](../../assets/airframes/rover/aion_r1/roboclaw_actuator_config_qgc.png) + ![RoboClaw QGC](../../assets/airframes/rover/aion_r1/roboclaw_actuator_config_qgc.png) - For systems with more than two motors, it is possible to assign the same function to several motors. - The reason for the unusual values, can be found in the [RoboClaw User Manual](https://downloads.basicmicro.com/docs/roboclaw_user_manual.pdf) under `Compatibility Commands` for `Packet Serial`: + For systems with more than two motors, it is possible to assign the same function to several motors. + The reason for the unusual values, can be found in the [RoboClaw User Manual](https://downloads.basicmicro.com/docs/roboclaw_user_manual.pdf) under `Compatibility Commands` for `Packet Serial`: ```plain Drive motor forward. Valid data range is 0 - 127. A value of 127 = full speed forward, 64 = diff --git a/docs/zh/computer_vision/collision_prevention.md b/docs/zh/computer_vision/collision_prevention.md index f2eb057d4c..53c5572090 100644 --- a/docs/zh/computer_vision/collision_prevention.md +++ b/docs/zh/computer_vision/collision_prevention.md @@ -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): - 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 - - topic: /fmu/out/obstacle_distance_fused - type: px4_msgs::msg::ObstacleDistance - ``` + ```sh + - topic: /fmu/out/obstacle_distance_fused + type: px4_msgs::msg::ObstacleDistance + ``` - For more information see [DDS Topics YAML](../middleware/uxrce_dds.md#dds-topics-yaml) in [uXRCE-DDS](../middleware/uxrce_dds.md) (PX4-ROS 2/DDS Bridge)\_. + For more information see [DDS Topics YAML](../middleware/uxrce_dds.md#dds-topics-yaml) in [uXRCE-DDS](../middleware/uxrce_dds.md) (PX4-ROS 2/DDS Bridge)\_. 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 - obs_dist_fused_xy = ScatterXY.new("obstacle_distance_fused_xy") - obs_dist_min = Timeseries.new("obstacle_distance_minimum") - ``` + ```lua + obs_dist_fused_xy = ScatterXY.new("obstacle_distance_fused_xy") + obs_dist_min = Timeseries.new("obstacle_distance_minimum") + ``` - - **function(tracker_time)** + - **function(tracker_time)** - ```lua - obs_dist_fused_xy:clear() + ```lua + obs_dist_fused_xy:clear() - i = 0 - angle_offset = TimeseriesView.find("/fmu/out/obstacle_distance_fused/angle_offset") - increment = TimeseriesView.find("/fmu/out/obstacle_distance_fused/increment") - min_dist = 65535 + i = 0 + angle_offset = TimeseriesView.find("/fmu/out/obstacle_distance_fused/angle_offset") + increment = TimeseriesView.find("/fmu/out/obstacle_distance_fused/increment") + min_dist = 65535 - -- Cache increment and angle_offset values at tracker_time to avoid repeated calls - local angle_offset_value = angle_offset:atTime(tracker_time) - local increment_value = increment:atTime(tracker_time) + -- Cache increment and angle_offset values at tracker_time to avoid repeated calls + local angle_offset_value = angle_offset:atTime(tracker_time) + local increment_value = increment:atTime(tracker_time) - if increment_value == nil or increment_value <= 0 then - print("Invalid increment value: " .. tostring(increment_value)) - return - end + if increment_value == nil or increment_value <= 0 then + print("Invalid increment value: " .. tostring(increment_value)) + return + end - local max_steps = math.floor(360 / increment_value) + local max_steps = math.floor(360 / increment_value) - while i < max_steps do - local str = string.format("/fmu/out/obstacle_distance_fused/distances[%d]", i) - local distance = TimeseriesView.find(str) - if distance == nil then - print("No distance data for: " .. str) - break - end + while i < max_steps do + local str = string.format("/fmu/out/obstacle_distance_fused/distances[%d]", i) + local distance = TimeseriesView.find(str) + if distance == nil then + print("No distance data for: " .. str) + break + end - local dist = distance:atTime(tracker_time) - if dist ~= nil and dist < 65535 then - -- Calculate angle and Cartesian coordinates - local angle = angle_offset_value + i * increment_value - local y = dist * math.cos(math.rad(angle)) - local x = dist * math.sin(math.rad(angle)) + local dist = distance:atTime(tracker_time) + if dist ~= nil and dist < 65535 then + -- Calculate angle and Cartesian coordinates + local angle = angle_offset_value + i * increment_value + local y = dist * math.cos(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 - if dist < min_dist then - min_dist = dist - end - end + -- Update minimum distance + if dist < min_dist then + min_dist = dist + end + end - i = i + 1 - end + i = i + 1 + end - -- Push minimum distance once after the loop - if min_dist < 65535 then - obs_dist_min:push_back(tracker_time, min_dist) - else - print("No valid minimum distance found") - end - ``` + -- Push minimum distance once after the loop + if min_dist < 65535 then + obs_dist_min:push_back(tracker_time, min_dist) + else + print("No valid minimum distance found") + end + ``` 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). - 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. diff --git a/docs/zh/computer_vision/visual_inertial_odometry.md b/docs/zh/computer_vision/visual_inertial_odometry.md index 3e6c5f0237..0c91c383be 100644 --- a/docs/zh/computer_vision/visual_inertial_odometry.md +++ b/docs/zh/computer_vision/visual_inertial_odometry.md @@ -125,15 +125,15 @@ Perform the following checks to verify that VIO is working properly _before_ you 可以通过更改参数来进一步调整该值,以找到在动态变化中最低的EKF更新值。 1. Put the vehicle on the ground and start streaming `ODOMETRY` feedback (as above). - 油门杆推到最低并解锁。 + 油门杆推到最低并解锁。 - 此时,设置为位置控制模式。 - 如果切换成功,飞控会闪绿灯。 - 绿灯代表:你的外部位置信息已经注入到飞控中,并且位置控制模式已经切换成功。 + 此时,设置为位置控制模式。 + 如果切换成功,飞控会闪绿灯。 + 绿灯代表:你的外部位置信息已经注入到飞控中,并且位置控制模式已经切换成功。 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. diff --git a/docs/zh/concept/flight_tasks.md b/docs/zh/concept/flight_tasks.md index 7e25faa449..a2aeecea79 100644 --- a/docs/zh/concept/flight_tasks.md +++ b/docs/zh/concept/flight_tasks.md @@ -38,24 +38,24 @@ The instructions below might be used to create a task named _MyTask_: - Update the copyright to the current year - ```cmake - ############################################################################ - # - # Copyright (c) 2021 PX4 Development Team. All rights reserved. - # - ``` + ```cmake + ############################################################################ + # + # Copyright (c) 2021 PX4 Development Team. All rights reserved. + # + ``` - 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 - px4_add_library(FlightTaskMyTask - FlightTaskMyTask.cpp - ) + ```cmake + px4_add_library(FlightTaskMyTask + FlightTaskMyTask.cpp + ) - target_link_libraries(FlightTaskMyTask PUBLIC FlightTask) - target_include_directories(FlightTaskMyTask PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) - ``` + target_link_libraries(FlightTaskMyTask PUBLIC FlightTask) + target_include_directories(FlightTaskMyTask PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) + ``` 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. @@ -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: - ```c - ... - * @value 0 Direct velocity - * @value 3 Smoothed velocity - * @value 4 Acceleration based - * @value 5 My task - * @group Multicopter Position Control - */ - PARAM_DEFINE_INT32(MPC_POS_MODE, 5); - ``` + ```c + ... + * @value 0 Direct velocity + * @value 3 Smoothed velocity + * @value 4 Acceleration based + * @value 5 My task + * @group Multicopter Position Control + */ + 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. - ```cpp - ... - // manual position control - ... - switch (_param_mpc_pos_mode.get()) { - ... - case 3: - error = switchTask(FlightTaskIndex::ManualPositionSmoothVel); - break; - case 5: // Add case for new task: MyTask - error = switchTask(FlightTaskIndex::MyTask); - break; - case 4: - .... - ... - ``` + ```cpp + ... + // manual position control + ... + switch (_param_mpc_pos_mode.get()) { + ... + case 3: + error = switchTask(FlightTaskIndex::ManualPositionSmoothVel); + break; + case 5: // Add case for new task: MyTask + error = switchTask(FlightTaskIndex::MyTask); + break; + case 4: + .... + ... + ``` ## Test New Flight Task diff --git a/docs/zh/concept/system_startup.md b/docs/zh/concept/system_startup.md index 381ecdeeb9..e635ca3b23 100644 --- a/docs/zh/concept/system_startup.md +++ b/docs/zh/concept/system_startup.md @@ -95,6 +95,8 @@ The whole boot can be replaced by creating a file `/etc/rc.txt` on the microSD c The best way to customize the system startup is to introduce a [new frame configuration](../dev_airframes/adding_a_new_frame.md). 机架配置文件可以在固件中,也可以在SD卡上。 +#### Dynamic customization + If you only need to "tweak" the existing configuration, such as starting one more application or setting the value of a few parameters, you can specify these by creating two files in the `/etc/` directory of the SD Card: - [/etc/config.txt](#customizing-the-configuration-config-txt): modify parameter values @@ -111,7 +113,7 @@ The system boot files are UNIX FILES which require UNIX LINE ENDINGS. These files are referenced in PX4 code as `/fs/microsd/etc/config.txt` and `/fs/microsd/etc/extras.txt`, where the root folder of the microsd card is identified by the path `/fs/microsd`. ::: -#### 自定义配置(config.txt) +##### 自定义配置(config.txt) The `config.txt` file can be used to modify parameters. It is loaded after the main system has been configured and _before_ it is booted. @@ -123,7 +125,7 @@ param set-default PWM_MAIN_DIS3 1000 param set-default PWM_MAIN_MIN3 1120 ``` -#### 启动附加应用程序 (extras.txt) +##### 启动附加应用程序 (extras.txt) The `extras.txt` can be used to start additional applications after the main system boot. 通常,额外启动的将是有效载荷控制器或类似的可选自定义组件。 @@ -150,3 +152,28 @@ Calling an unknown command in system boot files may result in boot failure. mandatory_app start # Will abort boot if mandatory_app is unknown or fails ``` + +#### Additional customization + +In rare cases where the desired setup cannot be achieved through frame configuration or dynamic customization, +you can add a script that will be contained in the binary. + +**Note**: In almost all cases, you should use a frame configuration. This method should only be used for +edge-cases such as customizing `cannode` based boards. + +- Add a new init script in `boards///init` that will run during board startup. 例如: + ```sh + # File: boards///init/rc.additional + param set-default + ``` + +- Add a new board variant in `boards///.px4board` that includes the additional script. 例如: + ```sh + # File: boards///var.px4board + CONFIG_BOARD_ADDITIONAL_INIT="rc.additional" + ``` + +- Compile the firmware with your new variant by appending the variant name to the compile target. 例如: + ```sh + make _var + ``` diff --git a/docs/zh/config/_autotune.md b/docs/zh/config/_autotune.md index 6495d5ae91..8c5df070ae 100644 --- a/docs/zh/config/_autotune.md +++ b/docs/zh/config/_autotune.md @@ -43,13 +43,13 @@ To make sure the vehicle is stable enough for auto-tuning: 2. Take off and
hover at 1m above ground in [Altitude mode](../flight_modes_mc/altitude.md) or [Stabilized mode](../flight_modes_mc/manual_stabilized.md)
fly at cruise speed in [Position mode](../flight_modes_fw/position.md) or [Altitude mode](../flight_modes_fw/altitude.md)
. 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. - 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. - 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). @@ -72,41 +72,41 @@ The test steps are: 1. Perform the [pre-tuning test](#pre-tuning-test). 2. Takeoff using RC control
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).
- 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.
+ Hover the vehicle at a safe distance and at a few meters above ground (between 4 and 20m).
+ 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.
3. Enable autotune. -
-

TIP

+
+

TIP

- 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. -
+
- 1. In QGroundControl, open the menu **Vehicle setup > PID Tuning**: + 1. In QGroundControl, open the menu **Vehicle setup > PID Tuning**: - ![Tuning Setup > Autotune Enabled](../../assets/qgc/setup/autotune/autotune.png) + ![Tuning Setup > Autotune Enabled](../../assets/qgc/setup/autotune/autotune.png) - 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. - 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. Manually land and disarm to apply the new tuning parameters. - Takeoff carefully and manually test that the vehicle is stable. + Takeoff carefully and manually test that the vehicle is stable.
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. + PX4 will then run a 4 second test and revert the new tuning if a problem is detected.
diff --git a/docs/zh/config/actuators.md b/docs/zh/config/actuators.md index 298f878b1b..9a224e8ed4 100644 --- a/docs/zh/config/actuators.md +++ b/docs/zh/config/actuators.md @@ -448,9 +448,9 @@ Instructions: 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. - ![Screenshot showing how to identify/assign motors](../../assets/config/actuators/identify_motors_in_progress.png) + ![Screenshot showing how to identify/assign motors](../../assets/config/actuators/identify_motors_in_progress.png) 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. 2. Toggle the **Enable sliders** switch in _Actuator Testing_ section. 3. Move the slider for the actuator you want to test: - - Motors should be moved to the minimum thrust position. - - Servos should be moved near the middle position. + - Motors should be moved to the minimum thrust position. + - Servos should be moved near the middle position. 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). - - If the correct actuator moves, then proceed to the next step. - - 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 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). + 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 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 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). 5. Return the slider to the "disarmed" position (bottom of slider for motors, centre of slider for servos). 6. Repeat for all actuators @@ -501,32 +501,32 @@ The motor configuration sets output values such that motors: For each motor: 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. - - 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. + In this position the motor is set to the outputs `disarmed` value. + - 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. 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. - - 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. + In this position the motor is set to the outputs `minimum` value. + - 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. - ![PWM Minimum Output](../../assets/config/actuators/pwm_minimum_output.png) - ::: info - For DShot output, this is not required. + ![PWM Minimum Output](../../assets/config/actuators/pwm_minimum_output.png) + ::: info + 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. - - 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 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. - - If thrust is in the wrong direction, you may need to [reverse the motors](#reversing-motors). + - 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 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. + - 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. - 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. - The "optimal" maximum value is the value at which you last hear a change in the tone. + 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. + The "optimal" maximum value is the value at which you last hear a change in the tone. ### Control Surface Setup @@ -549,33 +549,33 @@ Control surfaces that move either direction around a neutral point include: aile To set these up: 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). - ![Control Surface Disarmed 1500 Setting](../../assets/config/actuators/control_surface_aileron_setup.png) + ![Control Surface Disarmed 1500 Setting](../../assets/config/actuators/control_surface_aileron_setup.png) 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. - - Rudders and other "purely vertical" surfaces should move right. + - Ailerons, elevons, V-Tails, A-Tails, and other horizontal surfaces should move up. + - Rudders and other "purely vertical" surfaces should move right. - ::: 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). + ::: 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). ::: - 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. - - 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 - This is done in the `Trim` setting of the Geometry panel, usually by "trial and error". - ![Control Surface Trimming](../../assets/config/actuators/control_surface_trim.png) + ::: info + This is done in the `Trim` setting of the Geometry panel, usually by "trial and error". + ![Control Surface Trimming](../../assets/config/actuators/control_surface_trim.png) ::: - - 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. + - 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. :::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`: @@ -597,13 +597,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. 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. - 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 increased towards `Max`, then set `Max` to match `Disarmed`. + 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 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. - 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 In some vehicle builds, flaps may be configured such that both flaps are controlled from a single output. @@ -627,7 +627,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). - ![Tilt Servo Geometry Setup](../../assets/config/actuators/tilt_servo_geometry_config.png) + ![Tilt Servo Geometry Setup](../../assets/config/actuators/tilt_servo_geometry_config.png) 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). diff --git a/docs/zh/config/airspeed.md b/docs/zh/config/airspeed.md index 90e3006948..bde7aa8f9c 100644 --- a/docs/zh/config/airspeed.md +++ b/docs/zh/config/airspeed.md @@ -27,18 +27,18 @@ To calibrate the airspeed sensor: 4. Click the **Airspeed** sensor button. - ![Airspeed calibration](../../assets/qgc/setup/sensor/sensor_airspeed.jpg) + ![Airspeed calibration](../../assets/qgc/setup/sensor/sensor_airspeed.jpg) 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. 7. Once asked for, blow into the tip of the pitot tube to signal the end of calibration. - :::tip - 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. + :::tip + 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. ::: diff --git a/docs/zh/config/compass.md b/docs/zh/config/compass.md index adfeb33028..bc93879e96 100644 --- a/docs/zh/config/compass.md +++ b/docs/zh/config/compass.md @@ -23,9 +23,9 @@ If any external magnetometers are available, it then disables the internal magne 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. - 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. - 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. ## 执行校准 @@ -35,13 +35,13 @@ Several types of compass calibration are available: Before starting the calibration: 1. Choose a location away from large metal objects or magnetic fields. - :::tip - 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. + :::tip + 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. ::: 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_. ### Complete Calibration @@ -54,10 +54,10 @@ The calibration steps are: 3. Click the **Compass** sensor button. - ![Select Compass calibration PX4](../../assets/qgc/setup/sensor/sensor_compass_select_px4.png) + ![Select Compass calibration PX4](../../assets/qgc/setup/sensor/sensor_compass_select_px4.png) - ::: info - You should already have set the [Autopilot Orientation](../config/flight_controller_orientation.md). If not, you can also set it here. + ::: info + 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. 把你的飞机放置在下面显示的某一个方向,并保持静止。 随后提示(方向图像变为黄色)在指定方向旋转飞行器。 该位置标定完成后,屏幕上的相应图示将变成绿色。 - ![Compass calibration steps on PX4](../../assets/qgc/setup/sensor/sensor_compass_calibrate_px4.png) + ![Compass calibration steps on PX4](../../assets/qgc/setup/sensor/sensor_compass_calibrate_px4.png) 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: 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). 备注: @@ -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. 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: - ```sh - commander calibrate mag quick - ``` + ```sh + commander calibrate mag quick + ``` 备注: diff --git a/docs/zh/config/firmware.md b/docs/zh/config/firmware.md index 55dc6039ec..0244ee351a 100644 --- a/docs/zh/config/firmware.md +++ b/docs/zh/config/firmware.md @@ -61,10 +61,10 @@ To install a different version of PX4: 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!) - **Beta Testing (beta):** A beta/candidate release. - 只有当新版本准备完毕时才可用。 + 只有当新版本准备完毕时才可用。 - **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 ,您需要在下一步中从文件系统中选择自定义固件。 + 如果选择 Custom firmware file ,您需要在下一步中从文件系统中选择自定义固件。 Firmware update then continues as before. diff --git a/docs/zh/config/flight_mode.md b/docs/zh/config/flight_mode.md index a418f4c3b1..557577e9ad 100644 --- a/docs/zh/config/flight_mode.md +++ b/docs/zh/config/flight_mode.md @@ -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_. - ![Flight modes single-channel](../../assets/qgc/setup/flight_modes/flight_modes_single_channel.jpg) + ![Flight modes single-channel](../../assets/qgc/setup/flight_modes/flight_modes_single_channel.jpg) 4. Specify _Flight Mode Settings_: - - 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. - The mode slot matching your current switch position will be highlighted (above this is _Flight Mode 1_). - ::: 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. + - 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. + The mode slot matching your current switch position will be highlighted (above this is _Flight Mode 1_). + ::: 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. ::: - - 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_: - - 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: - - 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). + - 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). All values are automatically saved as they are changed. diff --git a/docs/zh/config/safety_simulation.md b/docs/zh/config/safety_simulation.md index be2f6cb89a..bee01fc8d3 100644 --- a/docs/zh/config/safety_simulation.md +++ b/docs/zh/config/safety_simulation.md @@ -14,7 +14,7 @@ To use it: 2. Set the vehicle type 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 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** 5. Check what happens when changing mode or **Move the RC sticks** 6. Play with different settings and conditions! diff --git a/docs/zh/config_fw/trimming_guide_fixedwing.md b/docs/zh/config_fw/trimming_guide_fixedwing.md index 833f5f1cb0..e8e7f0c00b 100644 --- a/docs/zh/config_fw/trimming_guide_fixedwing.md +++ b/docs/zh/config_fw/trimming_guide_fixedwing.md @@ -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. 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可以在步骤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. diff --git a/docs/zh/config_heli/index.md b/docs/zh/config_heli/index.md index 1d594e1885..f2c5ac697e 100644 --- a/docs/zh/config_heli/index.md +++ b/docs/zh/config_heli/index.md @@ -53,15 +53,15 @@ To setup and configure a helicopter: 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. - 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 | - | ------- | ----- | - | Servo 1 | 60° | - | Servo 2 | 180° | - | Servo 3 | 300° | + | # | Angle | + | ------- | ----- | + | Servo 1 | 60° | + | Servo 2 | 180° | + | Servo 3 | 300° | - warning and requirement + warning and requirement - `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. - `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. - A larger value may improve user experience. + A larger value may improve user experience. 3. Remove the rotor blades and propellers diff --git a/docs/zh/config_mc/filter_tuning.md b/docs/zh/config_mc/filter_tuning.md index d7fe6deca3..034fe29163 100644 --- a/docs/zh/config_mc/filter_tuning.md +++ b/docs/zh/config_mc/filter_tuning.md @@ -166,11 +166,11 @@ The low pass filters and the notch filter can be tuned independently (i.e. you d ## Additional Tips 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). - For bigger vehicles latency is less critical and `IMU_GYRO_CUTOFF` of around 80 might be acceptable. + 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. 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: - - Don't fly for more than 20-30 seconds - - Check that the motors are not getting to hot - - Listen for odd sounds and symptoms of excessive noise, as discussed above. + The only caveat is that you must be aware of the risks: + - Don't fly for more than 20-30 seconds + - Check that the motors are not getting to hot + - Listen for odd sounds and symptoms of excessive noise, as discussed above. diff --git a/docs/zh/config_mc/pid_tuning_guide_multicopter_basic.md b/docs/zh/config_mc/pid_tuning_guide_multicopter_basic.md index 6f31c50c9e..2a7602bae5 100644 --- a/docs/zh/config_mc/pid_tuning_guide_multicopter_basic.md +++ b/docs/zh/config_mc/pid_tuning_guide_multicopter_basic.md @@ -72,7 +72,7 @@ The tuning procedure is: 1. Arm the vehicle, takeoff, and hover (typically in [Position mode](../flight_modes_mc/position.md)). 2. Open _QGroundControl_ **Vehicle Setup > PID Tuning** - ![QGC Rate Controller Tuning UI](../../assets/mc_pid_tuning/qgc_mc_pid_tuning_rate_controller.png) + ![QGC Rate Controller Tuning UI](../../assets/mc_pid_tuning/qgc_mc_pid_tuning_rate_controller.png) 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) - ::: info - 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. + ::: info + 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. - 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 RPM-based controllers, use 1 (no further tuning is required as these have a quadratic 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 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**. 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). 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. - :::tip - Stop tracking to enable easier inspection of the plots. - This happens automatically when you zoom/pan. - Use the **Start** button to restart the plots, and **Clear** to reset them. + :::tip + Stop tracking to enable easier inspection of the plots. + This happens automatically when you zoom/pan. + 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. - The values are saved to the vehicle as soon as the sliders are moved. - ::: 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 values are saved to the vehicle as soon as the sliders are moved. + ::: 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 PID values can be adjusted as follows: - - P (proportional) or K gain: - - 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). - - D (derivative) gain: - - 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) - - I (integral) gain: - - used to reduce steady-state error - - if too low, the response might never reach the setpoint (e.g. in wind) - - if too high, slow oscillations can occur + The PID values can be adjusted as follows: + - P (proportional) or K gain: + - 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). + - D (derivative) gain: + - 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) + - I (integral) gain: + - used to reduce steady-state error + - if too low, the response might never reach the setpoint (e.g. in wind) + - if too high, slow oscillations can occur 12. Repeat the tuning process above for the pitch and yaw: - - 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). - - For pitch tuning, start with the same values as for roll. - :::tip - Use the **Save to Clipboard** and **Reset from Clipboard** buttons to copy the roll settings for initial pitch settings. + - 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). + - For pitch tuning, start with the same values as for roll. + :::tip + 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). - - 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) + - 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) - ![QGC PID tuning: Simple control selector](../../assets/mc_pid_tuning/qgc_mc_pid_tuning_simple_control.png) + ![QGC PID tuning: Simple control selector](../../assets/mc_pid_tuning/qgc_mc_pid_tuning_simple_control.png) All done! Remember to re-enable airmode before leaving the setup. diff --git a/docs/zh/config_rover/basic_setup.md b/docs/zh/config_rover/basic_setup.md index 17aa6490bb..e68cbb1ead 100644 --- a/docs/zh/config_rover/basic_setup.md +++ b/docs/zh/config_rover/basic_setup.md @@ -27,10 +27,18 @@ That is the minimum setup to use the rover in [Manual mode](../flight_modes_rover/manual.md#manual-mode). +:::info +The rest of the tuning on this page is not mandatory for [Manual mode](../flight_modes_rover/manual.md#manual-mode), but it will have an effect on the behaviour of the rover. +::: + +:::warning +Do not skip the rest of this setup if you intend to use more sophisticated modes! +All parameters will be mandatory for all subsequent modes, except those tagged as `(Optional)`. +::: + ## Geometric Parameters -Manual mode is also affected by (optional) acceleration/deceleration limits set using the geometric described below. -These limits are mandatory for all other modes. +First, we set up the geometric parameters of the rover: ![Geometric parameters](../../assets/config/rover/geometric_parameters.png) @@ -42,7 +50,7 @@ Navigate to [Parameters](../advanced_config/parameters.md) in QGroundControl and 2. [RA_MAX_STR_ANG](#RA_MAX_STR_ANG) [deg]: Measure the maximum steering angle. 3. (Optional) [RA_STR_RATE_LIM](#RA_STR_RATE_LIM) [deg/s]: Maximum steering rate you want to allow for your rover. - :::tip + ::: tip This value depends on your rover and use case. For bigger rovers there might be a mechanical limit that is easy to identify by steering the rover at a standstill and increasing [RA_STR_RATE_LIM](#RA_STR_RATE_LIM) until you observe the steering rate to no longer be limited by the parameter. @@ -51,7 +59,7 @@ Navigate to [Parameters](../advanced_config/parameters.md) in QGroundControl and ::: - :::warning + ::: warning A low maximum steering rate makes the rover worse at tracking steering setpoints, which can lead to a poor performance in the subsequent modes. ::: @@ -109,6 +117,39 @@ Navigate to [Parameters](../advanced_config/parameters.md) in QGroundControl and ::: +## (Optional) Stick Input Mapping + +Input shaping can be used to adjust the default linear mapping from stick inputs $\in [-1, 1]$ to normalized setpoints $\in [-1, 1]$. Applying this specifically to the steering input, can provide a smoother driving experience, by enabling the user to make small adjustments when the stick is close to the center, but still send large inputs when moving them to the edges. +We provide this input shaping through the super exponential function: + +$$ +\delta = \frac{(f \cdot x^3 + x(1-f)) \cdot (1-g)}{1-g \cdot |x|} +$$ + +with: + +- $\delta \in [-1, 1]=$ Normalized steering setpoint. +- $x \in [-1, 1]=$ Normalized stick input. +- $f=$ [RO_YAW_EXPO](#RO_YAW_EXPO): `0` Purely linear input curve, `1` Purely cubic input curve. +- $g=$ [RO_YAW_SUPEXPO](#RO_YAW_SUPEXPO): `0` Pure Expo function, `0.7` reasonable shape enhancement for intuitive stick feel, `0.95` very strong bent input curve only near maxima have effect. + +In [Manual mode](../flight_modes_rover/manual.md#manual-mode) we can additionally scale $\delta$ with an additional parameter $r$: + +- Differential Rover: $r=$ [RD_YAW_STK_GAIN](#RD_YAW_STK_GAIN), which enables adjusting the slope of the input mapping. This leads to a normalized steering input $\hat{\delta} = \delta \cdot r \in$ [-[RD_YAW_STK_GAIN](#RD_YAW_STK_GAIN), [RD_YAW_STK_GAIN](#RD_YAW_STK_GAIN)]. +- Mecanum Rover: $r=$ [RM_YAW_STK_GAIN](#RM_YAW_STK_GAIN), which enables adjusting the slope of the input mapping. This leads to a normalized steering input $\hat{\delta} = \delta \cdot r \in$ [-[RM_YAW_STK_GAIN](#RM_YAW_STK_GAIN), [RM_YAW_STK_GAIN](#RM_YAW_STK_GAIN)]. + +This scaling is useful to limit the normalized steering setpoint, if it is too aggresive for your rover in manual mode. + +You can experiment with the relationships graphically using the [PX4 SuperExpo Rover calculator](https://www.desmos.com/calculator/gwm8lrlanx). + +:::info +In [Acro](../flight_modes_rover/manual.md#acro-mode), [Stabilized](../flight_modes_rover/manual.md#stabilized-mode) and [Position](../flight_modes_rover/manual.md#position-mode) Mode, $\delta$ is instead scaled by $r=$ [RO_YAW_RATE_LIM](../advanced_config/parameter_reference.md#RO_MAX_THR_SPEED) for all rovers. This leads to a yaw rate setpoint $\dot{\psi} = \delta \cdot r \in$ [-[RO_YAW_RATE_LIM](../advanced_config/parameter_reference.md#RO_MAX_THR_SPEED), [RO_YAW_RATE_LIM](../advanced_config/parameter_reference.md#RO_MAX_THR_SPEED)]. This parameter is setup during [rate tuning](rate_tuning.md). +::: + +:::info +The input shaping through [RO_YAW_EXPO](#RO_YAW_EXPO) and [RO_YAW_SUPEXPO](#RO_YAW_SUPEXPO) applies for all manual modes, while [RD_YAW_STK_GAIN](#RD_YAW_STK_GAIN)/[RM_YAW_STK_GAIN](#RM_YAW_STK_GAIN) only affects full manual mode. +::: + You can now continue the configuration process with [rate tuning](rate_tuning.md). ## Parameter Overview @@ -118,6 +159,8 @@ You can now continue the configuration process with [rate tuning](rate_tuning.md | [RO_MAX_THR_SPEED](../advanced_config/parameter_reference.md#RO_MAX_THR_SPEED) | Speed the rover drives at maximum throttle | $m/s$ | | [RO_ACCEL_LIM](../advanced_config/parameter_reference.md#RO_ACCEL_LIM) | (Optional) Maximum allowed acceleration | $m/s^2$ | | [RO_DECEL_LIM](../advanced_config/parameter_reference.md#RO_DECEL_LIM) | (Optional) Maximum allowed deceleration | $m/s^2$ | +| [RO_YAW_EXPO](../advanced_config/parameter_reference.md#RO_YAW_EXPO) | (Optional) Yaw rate expo factor | $-$ | +| [RO_YAW_SUPEXPO](../advanced_config/parameter_reference.md#RO_YAW_SUPEXPO) | (Optional) Yaw rate super expo factor | $-$ | ### Ackermann Specific @@ -129,12 +172,14 @@ You can now continue the configuration process with [rate tuning](rate_tuning.md ### Differential Specific -| 参数 | 描述 | Unit | -| ----------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---- | -| [RD_WHEEL_TRACK](../advanced_config/parameter_reference.md#RD_WHEEL_TRACK) | Wheel track | m | +| 参数 | 描述 | Unit | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | ---- | +| [RD_WHEEL_TRACK](../advanced_config/parameter_reference.md#RD_WHEEL_TRACK) | Wheel track | $m$ | +| [RD_YAW_STK_GAIN](../advanced_config/parameter_reference.md#RD_YAW_STK_GAIN) | (Optional) Yaw stick gain for Manual mode | $-$ | ### Mecanum Specific -| 参数 | 描述 | Unit | -| ----------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---- | -| [RM_WHEEL_TRACK](../advanced_config/parameter_reference.md#RM_WHEEL_TRACK) | Wheel track | m | +| 参数 | 描述 | Unit | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | ---- | +| [RM_WHEEL_TRACK](../advanced_config/parameter_reference.md#RM_WHEEL_TRACK) | Wheel track | $m$ | +| [RM_YAW_STK_GAIN](../advanced_config/parameter_reference.md#RM_YAW_STK_GAIN) | (Optional) Yaw stick gain for Manual mode | $-$ | diff --git a/docs/zh/config_rover/index.md b/docs/zh/config_rover/index.md index 3dadee2f53..212839bc12 100644 --- a/docs/zh/config_rover/index.md +++ b/docs/zh/config_rover/index.md @@ -25,18 +25,18 @@ Rovers use a custom build that must be flashed onto your flight controller inste To build for rover with the `make` command, replace the `_default` suffix with `_rover`. For example, to build rover for px4_fmu-v6x boards, you would use the command: - ```sh - make px4_fmu-v6x_rover - ``` + ```sh + make px4_fmu-v6x_rover + ``` ::: info You can also enable the modules in default builds by adding these lines to your [board configuration](../hardware/porting_guide_config.md) (e.g. for fmu-v6x you might add them to [`main/boards/px4/fmu-v6x/default.px4board`](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v6x/default.px4board)): - ```sh - CONFIG_MODULES_ROVER_ACKERMANN=y - CONFIG_MODULES_ROVER_DIFFERENTIAL=y - CONFIG_MODULES_ROVER_MECANUM=y - ``` + ```sh + CONFIG_MODULES_ROVER_ACKERMANN=y + CONFIG_MODULES_ROVER_DIFFERENTIAL=y + CONFIG_MODULES_ROVER_MECANUM=y + ``` Note that adding the rover modules may lead to flash overflow, in which case you will need to disable modules that you do not plan to use (such as those related to multicopter or fixed wing). diff --git a/docs/zh/config_rover/velocity_tuning.md b/docs/zh/config_rover/velocity_tuning.md index cc265361d5..5b4b1361d8 100644 --- a/docs/zh/config_rover/velocity_tuning.md +++ b/docs/zh/config_rover/velocity_tuning.md @@ -94,7 +94,7 @@ These steps are only necessary if you are tuning/want to unlock the manual [Posi The rover is now ready to drive in [Position mode](../flight_modes_rover/manual.md#position-mode) and the configuration can be continued with [position tuning](position_tuning.md). -## Attitude Controller Structure (Info Only) +## Velocity Controller Structure (Info Only) This section provides additional information for developers and people with experience in control system design. diff --git a/docs/zh/config_vtol/vtol_quad_configuration.md b/docs/zh/config_vtol/vtol_quad_configuration.md index aa580ddc12..ecb9ce0df1 100644 --- a/docs/zh/config_vtol/vtol_quad_configuration.md +++ b/docs/zh/config_vtol/vtol_quad_configuration.md @@ -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). 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. ### 飞行模式/模式转换 diff --git a/docs/zh/contribute/docs.md b/docs/zh/contribute/docs.md index bbaa75151e..91805dff44 100644 --- a/docs/zh/contribute/docs.md +++ b/docs/zh/contribute/docs.md @@ -63,33 +63,33 @@ 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: - ```sh - cd ~/wherever/ - git clone https://github.com//PX4-Autopilot.git - ``` + ```sh + cd ~/wherever/ + git clone https://github.com//PX4-Autopilot.git + ``` - For example, to clone PX4 source fork for a user with Github account "john_citizen": + For example, to clone PX4 source fork for a user with Github account "john_citizen": - ```sh - git clone https://github.com/john_citizen/PX4-Autopilot.git - ``` + ```sh + git clone https://github.com/john_citizen/PX4-Autopilot.git + ``` 5. Navigate to your local repository: - ```sh - cd ~/wherever/PX4-Autopilot - ``` + ```sh + cd ~/wherever/PX4-Autopilot + ``` 6. Add a _remote_ called "upstream" to point to the "official" PX4 version of the library: - ```sh - git remote add upstream https://github.com/PX4/PX4-Autopilot.git - ``` + ```sh + git remote add upstream https://github.com/PX4/PX4-Autopilot.git + ``` - :::tip - 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. - Above you create a new remote _upstream_ that points to the PX4 project version of the documents. + :::tip + 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. + Above you create a new remote _upstream_ that points to the PX4 project version of the documents. ::: @@ -99,111 +99,111 @@ Within the repository you created above: 1. Bring your copy of the repository `main` branch up to date: - ```sh - git checkout main - git fetch upstream main - git pull upstream main - ``` + ```sh + git checkout main + git fetch upstream main + git pull upstream main + ``` 2. Create a new branch for your changes: - ```sh - git checkout -b - ``` + ```sh + git checkout -b + ``` - 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`. 3. Make changes to the documentation as needed (general guidance on this in following sections) 4. Once you are satisfied with your changes, you can add them to your local branch using a "commit": - ```sh - git add - git commit -m "" - ``` + ```sh + git add + git commit -m "" + ``` - 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. 5. Push your local branch (including commits added to it) to your forked repository on Github. - ```sh - git push origin your_feature_branch_name - ``` + ```sh + git push origin your_feature_branch_name + ``` 6. Go to your forked repository on Github in a web browser, e.g.: `https://github.com//PX4-Autopilot.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. 7. 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". - Press it. - - 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 (explain what you did for what reason. - Check [other pull requests](https://github.com/PX4/PX4-Autopilot/pulls) for comparison). - - Add the "Documentation" label. + - 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. + - 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 (explain what you did for what reason. + Check [other pull requests](https://github.com/PX4/PX4-Autopilot/pulls) for comparison). + - Add the "Documentation" label. 8. 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. - Check if they have questions on your changes every once in a while. + 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. ### Gitbook Documentation Toolchain 概述: 1. Install the [Vitepress prerequisites](https://vitepress.dev/guide/getting-started#prerequisites): - - [Nodejs 18+](https://nodejs.org/en) - - [Yarn classic](https://classic.yarnpkg.com/en/docs/install) + - [Nodejs 18+](https://nodejs.org/en) + - [Yarn classic](https://classic.yarnpkg.com/en/docs/install) 2. Navigate to your local repository and the `/docs` subdirectory: - ```sh - cd ~/wherever/PX4-Autopilot/docs - ``` + ```sh + cd ~/wherever/PX4-Autopilot/docs + ``` 3. Install dependencies (including Vitepress): - ```sh - yarn install - ``` + ```sh + yarn install + ``` 4. Preview and serve the library: - ```sh - yarn start - ``` + ```sh + 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. - This will be something like: `http://localhost:5173/px4_user_guide/`. - - Stop serving using **CTRL+C** in the terminal prompt. + - 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/`. + - Stop serving using **CTRL+C** in the terminal prompt. 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. - For example, you can enable VSCode as your default editor by entering: + First specify a local text editor file using the `EDITOR` environment variable, before calling `yarn start` to preview the library. + For example, you can enable VSCode as your default editor by entering: - - Windows: + - Windows: - ```sh - set EDITOR=code - ``` + ```sh + set EDITOR=code + ``` - - Linux: + - Linux: - ```sh - export EDITOR=code - ``` + ```sh + export 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: - ```sh - # Ubuntu - yarn docs:build + ```sh + # Ubuntu + yarn docs:build - # Windows - yarn docs:buildwin - ``` + # Windows + yarn docs:buildwin + ``` :::tip Use `yarn start` to preview changes _as you make them_ (documents are updated and served very quickly). @@ -256,38 +256,38 @@ When you add a new page you must also add it to `en/SUMMARY.md`! ## 翻译 1. 图片 - - Put new markdown files in an appropriate sub-folder of `/en/`, such as `/en/contribute/`. - Do not further nest folders. - - Put new image files in an appropriate nested sub-folder of `/assets/`. - Deeper nesting is allowed/encouraged. - - Use descriptive names for folders and files. - In particular, image filenames should describe what they contain (don't name as "image1.png") - - Use lower case filenames and separate words using underscores (`_`). + - Put new markdown files in an appropriate sub-folder of `/en/`, such as `/en/contribute/`. + Do not further nest folders. + - Put new image files in an appropriate nested sub-folder of `/assets/`. + Deeper nesting is allowed/encouraged. + - Use descriptive names for folders and files. + In particular, image filenames should describe what they contain (don't name as "image1.png") + - Use lower case filenames and separate words using underscores (`_`). 2. 内容: - - 将新文件放入相应的子文件夹 - - New images should be created in a sub-folder of `/assets/` (so they can be shared between translations). - - SVG files are preferred for diagrams. - PNG files are preferred over JPG for screenshots. + - 将新文件放入相应的子文件夹 + - New images should be created in a sub-folder of `/assets/` (so they can be shared between translations). + - SVG files are preferred for diagrams. + PNG files are preferred over JPG for screenshots. 3. Content: - - Use "style" (**bold**, _emphasis_, etc.) consistently and sparingly (as little as possible). - - **Bold** for button presses and menu definitions. - - _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`. - - Headings and page titles should use "First Letter Capitalisation". - - The page title should be a first level heading (`#`). - All other headings should be h2 (`##`) or lower. - - 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. - - Break lines on sentences by preference. - Don't break lines based on some arbitrary line length. - - Format using _prettier_ (_VSCode_ is a has extensions can be used for this). + - Use "style" (**bold**, _emphasis_, etc.) consistently and sparingly (as little as possible). + - **Bold** for button presses and menu definitions. + - _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`. + - Headings and page titles should use "First Letter Capitalisation". + - The page title should be a first level heading (`#`). + All other headings should be h2 (`##`) or lower. + - 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. + - Break lines on sentences by preference. + Don't break lines based on some arbitrary line length. + - Format using _prettier_ (_VSCode_ is a has extensions can be used for this). 4. Videos: - - Youtube videos can be added using the format `` (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. - - Cool videos of airframes in flight are always welcome. + - Youtube videos can be added using the format `` (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. + - Cool videos of airframes in flight are always welcome. ## 许可证 diff --git a/docs/zh/contribute/git_examples.md b/docs/zh/contribute/git_examples.md index 5fd7c15f6e..328d3e11c1 100644 --- a/docs/zh/contribute/git_examples.md +++ b/docs/zh/contribute/git_examples.md @@ -109,23 +109,23 @@ To switch between branches: 1. Clean up the current branch, de-initializing submodule and removing all build artifacts: - ```sh - make clean - make distclean - ``` + ```sh + make clean + make distclean + ``` 2. Switch to a new branch or tag (here we first fetch the fictional branch "PR_test_branch" from the `upstream` remote): - ```sh - git fetch upstream PR_test_branch - git checkout PR_test_branch - ``` + ```sh + git fetch upstream PR_test_branch + git checkout PR_test_branch + ``` 3. Get the submodules for the new branch: - ```sh - make submodulesclean - ``` + ```sh + make submodulesclean + ``` @@ -138,35 +138,35 @@ To get the source code for a _specific older release_ (tag): 1. Clone the PX4-Autopilot repo and navigate into _PX4-Autopilot_ directory: - ```sh - git clone https://github.com/PX4/PX4-Autopilot.git - cd PX4-Autopilot - ``` + ```sh + git clone https://github.com/PX4/PX4-Autopilot.git + cd PX4-Autopilot + ``` - :::note + :::note - 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)): + 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)): - ```sh - make clean - make distclean - ``` + ```sh + make clean + make distclean + ``` ::: 2. Checkout code for particular tag (e.g. for tag v1.13.0-beta2) - ```sh - git checkout v1.13.0-beta2 - ``` + ```sh + git checkout v1.13.0-beta2 + ``` 3. Update submodules: - ```sh - make submodulesclean - ``` + ```sh + make submodulesclean + ``` ## Get a Release Branch diff --git a/docs/zh/debug/eclipse_jlink.md b/docs/zh/debug/eclipse_jlink.md index bf292df0e3..e23e23833d 100644 --- a/docs/zh/debug/eclipse_jlink.md +++ b/docs/zh/debug/eclipse_jlink.md @@ -53,17 +53,17 @@ For more information, see: [https://gnu-mcu-eclipse.github.io/debug/jlink/instal 7. Update packs: - Click the small icon on the top right called _Open Perspective_ and open the _Packs_ perspective. - ![Eclipse: Workspace](../../assets/debug/eclipse_workspace_perspective.png) + ![Eclipse: Workspace](../../assets/debug/eclipse_workspace_perspective.png) - Click the **update all** button. - :::tip - This takes a VERY LONG TIME (10 minutes). - Ignore all the errors about missing packages that pop up. + :::tip + This takes a VERY LONG TIME (10 minutes). + Ignore all the errors about missing packages that pop up. ::: - ![Eclipse: Workspace Packs Perspective](../../assets/debug/eclipse_packs_perspective.jpg) + ![Eclipse: Workspace Packs Perspective](../../assets/debug/eclipse_packs_perspective.jpg) - 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. @@ -79,24 +79,24 @@ For more information, see: [https://gnu-mcu-eclipse.github.io/debug/jlink/instal ![Eclipse: Debug config](../../assets/debug/eclipse_settings_debug_config.png) 10. Then select _GDB SEGGER J-Link Debugging_ and then the **New config** button on the top left. - ![Eclipse: GDB Segger Debug config](../../assets/debug/eclipse_settings_debug_config_gdb_segger.png) + ![Eclipse: GDB Segger Debug config](../../assets/debug/eclipse_settings_debug_config_gdb_segger.png) 11. Setup build config: - - Give it a name and set the _C/C++ Application_ to the corresponding **.elf** file. - - Choose _Disable Auto build_ + - Give it a name and set the _C/C++ Application_ to the corresponding **.elf** file. + - Choose _Disable Auto build_ ::: info Remember that you must build the target from the command line before starting a debug session. ::: - ![Eclipse: GDB Segger Debug config](../../assets/debug/eclipse_settings_debug_config_gdb_segger_build_config.png) + ![Eclipse: GDB Segger Debug config](../../assets/debug/eclipse_settings_debug_config_gdb_segger_build_config.png) 12. The _Debugger_ and _Startup_ tabs shouldn’t need any modifications (just verify your settings with the screenshots below) - ![Eclipse: GDB Segger Debug config: debugger tab](../../assets/debug/eclipse_settings_debug_config_gdb_segger_build_config_debugger_tab.png) - ![Eclipse: GDB Segger Debug config: startup tab](../../assets/debug/eclipse_settings_debug_config_gdb_segger_build_config_startup_tab.png) + ![Eclipse: GDB Segger Debug config: debugger tab](../../assets/debug/eclipse_settings_debug_config_gdb_segger_build_config_debugger_tab.png) + ![Eclipse: GDB Segger Debug config: startup tab](../../assets/debug/eclipse_settings_debug_config_gdb_segger_build_config_startup_tab.png) ## SEGGER Task-aware debugging @@ -109,16 +109,16 @@ To enable this feature for use in Eclipse: - 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. - This will be something like: + This will be something like: - ```sh - make px4_fmu-v5_default boardguiconfig - ``` + ```sh + 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: - ![NuttX: Menuconfig: CONFIG_DEBUG_TCBINFO](../../assets/debug/nuttx_tcb_task_aware.png) + ![NuttX: Menuconfig: CONFIG_DEBUG_TCBINFO](../../assets/debug/nuttx_tcb_task_aware.png) 2. Compile the **jlink-nuttx.so** library in the terminal by running the following command in the terminal: `make jlink-nuttx` diff --git a/docs/zh/debug/failure_injection.md b/docs/zh/debug/failure_injection.md index 62db0208cc..e013753243 100644 --- a/docs/zh/debug/failure_injection.md +++ b/docs/zh/debug/failure_injection.md @@ -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). 2. Enter the following commands on the MAVLink console or SITL _pxh shell_: - ```sh - # Fail RC (turn publishing off) - failure rc_signal off + ```sh + # Fail RC (turn publishing off) + failure rc_signal off - # Restart RC publishing - failure rc_signal ok - ``` + # Restart RC publishing + failure rc_signal ok + ``` ## MAVSDK Failure Plugin diff --git a/docs/zh/dev_airframes/adding_a_new_frame.md b/docs/zh/dev_airframes/adding_a_new_frame.md index 6681de2605..6bc2662d6d 100644 --- a/docs/zh/dev_airframes/adding_a_new_frame.md +++ b/docs/zh/dev_airframes/adding_a_new_frame.md @@ -37,8 +37,8 @@ Alternatively you can just append the modified parameters to the startup configu 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. - - 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). + - 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). 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. @@ -292,37 +292,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): - ```python - def GetImageName(self): - """ - Get parameter group image base name (w/o extension) - """ - if (self.name == "Standard Plane"): - return "Plane" - elif (self.name == "Flying Wing"): - return "FlyingWing" - ... - ... - return "AirframeUnknown" - ``` + ```python + def GetImageName(self): + """ + Get parameter group image base name (w/o extension) + """ + if (self.name == "Standard Plane"): + return "Plane" + elif (self.name == "Flying Wing"): + return "FlyingWing" + ... + ... + return "AirframeUnknown" + ``` 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 reference to the svg image into [qgcimages.qrc](https://github.com/mavlink/qgroundcontrol/blob/master/qgcimages.qrc), following the pattern below: + - 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: - ```xml - - ... - src/AutoPilotPlugins/Common/Images/AirframeSimulation.svg - src/AutoPilotPlugins/Common/Images/AirframeUnknown.svg - src/AutoPilotPlugins/Common/Images/Boat.svg - src/AutoPilotPlugins/Common/Images/FlyingWing.svg - ... - ``` + ```xml + + ... + src/AutoPilotPlugins/Common/Images/AirframeSimulation.svg + src/AutoPilotPlugins/Common/Images/AirframeUnknown.svg + src/AutoPilotPlugins/Common/Images/Boat.svg + src/AutoPilotPlugins/Common/Images/FlyingWing.svg + ... + ``` - ::: info - The remaining airframe metadata should be automatically included in the firmware (once **srcparser.py** is updated). + ::: info + The remaining airframe metadata should be automatically included in the firmware (once **srcparser.py** is updated). ::: diff --git a/docs/zh/dev_log/log_encryption.md b/docs/zh/dev_log/log_encryption.md index be7cba82e7..bc4380f471 100644 --- a/docs/zh/dev_log/log_encryption.md +++ b/docs/zh/dev_log/log_encryption.md @@ -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: 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. After the flight, the `.ulge` file containing both the wrapped symmetric key and the encrypted log data can be found on the SD card. @@ -356,26 +356,26 @@ This section explains how you might manually run the same steps as the script (s 2. Use OpenSSL to generate a RSA2048 private and public key: - ```sh - openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048 - ``` + ```sh + openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048 + ``` 3. Create a public key from this private key: - ```sh - # Convert private_key.pem to a DER file - openssl rsa -pubout -in private_key.pem -outform DER -out public_key.der - # From the DER file, generate a public key in hex format, separated by commas - xxd -p public_key.der | tr -d '\n' | sed 's/\(..\)/0x\1, /g' > public_key.pub - ``` + ```sh + # Convert private_key.pem to a DER file + openssl rsa -pubout -in private_key.pem -outform DER -out public_key.der + # From the DER file, generate a public key in hex format, separated by commas + xxd -p public_key.der | tr -d '\n' | sed 's/\(..\)/0x\1, /g' > public_key.pub + ``` 4. Copy the keys into the appropriate locations expected by the rest of the toolchain (as shown in previous section). 5. To use this key, modify your `.px4board` file to point `CONFIG_PUBLIC_KEY1` to the file location of `public_key.pub`. - ```sh - CONFIG_PUBLIC_KEY1="../../../keys/public/public_key.pub" - ``` + ```sh + CONFIG_PUBLIC_KEY1="../../../keys/public/public_key.pub" + ``` ## Flight Review & Encrypted logs @@ -397,10 +397,10 @@ This can use logs that you have downloaded and decrypted yourself, or you can in 3. Add this key location into the server config file: `flight_review/app/config_default.ini`. - The line to add should look something like this (for the file above): + The line to add should look something like this (for the file above): - ```sh - ulge_private_key = ../private_key/private_key.pem - ``` + ```sh + ulge_private_key = ../private_key/private_key.pem + ``` 4. Follow the Flight Review Instructions to start your server. diff --git a/docs/zh/dev_log/logging.md b/docs/zh/dev_log/logging.md index 44af24829b..cfc8cc19a8 100644 --- a/docs/zh/dev_log/logging.md +++ b/docs/zh/dev_log/logging.md @@ -33,16 +33,17 @@ The logging system is configured by default to collect sensible logs for [flight Logging may further be configured using the [SD Logging](../advanced_config/parameter_reference.md#sd-logging) parameters. The parameters you are most likely to change are listed below. -| 参数 | 描述 | -| --------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [SDLOG_MODE](../advanced_config/parameter_reference.md#SDLOG_MODE) | 日志模式 Defines when logging starts and stops.
- `-1`: Logging disabled.
- `0`: Log when armed until disarm (default).
- `1`: Log from boot until disarm.
- `2`: Log from boot until shutdown.
- `3`: Log based on the [AUX1 RC channel](../advanced_config/parameter_reference.md#RC_MAP_AUX1).
- `4`: Log from first armed until shutdown. | -| [SDLOG_PROFILE](../advanced_config/parameter_reference.md#SDLOG_PROFILE) | Logging profile. Use this to enable less common logging/analysis (e.g. for EKF2 replay, high rate logging for PID & filter tuning, thermal temperature calibration). | -| [SDLOG_MISSION](../advanced_config/parameter_reference.md#SDLOG_MISSION) | Create very small additional "Mission Log".
This log can _not_ be used with [Flight Review](../log/flight_log_analysis.md#flight-review-online-tool), but is useful when you need a small log for geotagging or regulatory compliance. | +| 参数 | 描述 | +| --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [SDLOG_MODE](../advanced_config/parameter_reference.md#SDLOG_MODE) | 日志模式 Defines when logging starts and stops.
- `0`: Log when armed until disarm (default).
- `1`: Log from boot until disarm.
- `2`: Log from boot until shutdown.
- `3`: Log based on the [AUX1 RC channel](../advanced_config/parameter_reference.md#RC_MAP_AUX1).
- `4`: Log from first armed until shutdown. | +| [SDLOG_BACKEND](../advanced_config/parameter_reference.md#SDLOG_BACKEND) | Logging Backend (bitmask). Setting a bit enables the corresponding backend. If no backend is selected, the logger is disabled.
- bit `0`: SD card logging.
- bit `1`: Mavlink logging. | +| [SDLOG_PROFILE](../advanced_config/parameter_reference.md#SDLOG_PROFILE) | Logging profile. Use this to enable less common logging/analysis (e.g. for EKF2 replay, high rate logging for PID & filter tuning, thermal temperature calibration). | +| [SDLOG_MISSION](../advanced_config/parameter_reference.md#SDLOG_MISSION) | Create very small additional "Mission Log".
This log can _not_ be used with [Flight Review](../log/flight_log_analysis.md#flight-review-online-tool), but is useful when you need a small log for geotagging or regulatory compliance. | Useful settings for specific cases: - Raw sensor data for comparison: [SDLOG_MODE=1](../advanced_config/parameter_reference.md#SDLOG_MODE) and [SDLOG_PROFILE=64](../advanced_config/parameter_reference.md#SDLOG_PROFILE). -- Disabling logging altogether: [SDLOG_MODE=`-1`](../advanced_config/parameter_reference.md#SDLOG_MODE) +- Disabling logging altogether: [SDLOG_BACKEND=`0`](../advanced_config/parameter_reference.md#SDLOG_BACKEND) ### Logger module diff --git a/docs/zh/dev_setup/dev_env_linux_ubuntu.md b/docs/zh/dev_setup/dev_env_linux_ubuntu.md index 3c01f2f634..85e5d3670e 100644 --- a/docs/zh/dev_setup/dev_env_linux_ubuntu.md +++ b/docs/zh/dev_setup/dev_env_linux_ubuntu.md @@ -33,24 +33,24 @@ To install the toolchain: 1. [Download PX4 Source Code](../dev_setup/building_px4.md): - ```sh - git clone https://github.com/PX4/PX4-Autopilot.git --recursive - ``` + ```sh + git clone https://github.com/PX4/PX4-Autopilot.git --recursive + ``` - ::: info - 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). + ::: info + 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). ::: 2. Run the **ubuntu.sh** with no arguments (in a bash shell) to install everything: - ```sh - bash ./PX4-Autopilot/Tools/setup/ubuntu.sh - ``` + ```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. If you need Gazebo Classic (Ubuntu 22.04 only) then you can manually remove Gazebo and install it by following the instructions in [Gazebo Classic > Installation](../sim_gazebo_classic/index.md#installation). diff --git a/docs/zh/dev_setup/dev_env_mac.md b/docs/zh/dev_setup/dev_env_mac.md index f379cceb75..8d1b5a0c74 100644 --- a/docs/zh/dev_setup/dev_env_mac.md +++ b/docs/zh/dev_setup/dev_env_mac.md @@ -38,21 +38,21 @@ First set up the environment 1. Enable more open files by appending the following line to the `~/.zshenv` file (creating it if necessary): - ```sh - echo ulimit -S -n 2048 >> ~/.zshenv - ``` + ```sh + echo ulimit -S -n 2048 >> ~/.zshenv + ``` - ::: info - If you don't do this, the build toolchain may report the error: `"LD: too many open files"` + ::: info + If you don't do this, the build toolchain may report the error: `"LD: too many open files"` ::: 2. Enforce Python 3 by appending the following lines to `~/.zshenv` - ```sh - # Point pip3 to MacOS system python 3 pip - alias pip3=/usr/bin/pip3 - ``` + ```sh + # Point pip3 to MacOS system python 3 pip + alias pip3=/usr/bin/pip3 + ``` ### 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: - ```sh - brew tap PX4/px4 - brew install px4-dev - ``` + ```sh + brew tap PX4/px4 + brew install px4-dev + ``` 3. Install the required Python packages: - ```sh - # install required packages using pip3 - python3 -m pip install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging kconfiglib future jsonschema - # if this fails with a permissions error, your Python install is in a system path - use this command instead: - sudo -H python3 -m pip install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging kconfiglib future jsonschema - ``` + ```sh + # install required packages using pip3 + python3 -m pip install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging kconfiglib future jsonschema + # if this fails with a permissions error, your Python install is in a system path - use this command instead: + sudo -H python3 -m pip install --user pyserial empty toml numpy pandas jinja2 pyyaml pyros-genmsg packaging kconfiglib future jsonschema + ``` ## Gazebo Classic 模拟 @@ -82,35 +82,35 @@ To setup the environment for [Gazebo Classic](../sim_gazebo_classic/index.md) si 1. Run the following commands in your shell: - ```sh - brew unlink tbb - sed -i.bak '/disable! date:/s/^/ /; /disable! date:/s/./#/3' $(brew --prefix)/Library/Taps/homebrew/homebrew-core/Formula/tbb@2020.rb - brew install tbb@2020 - brew link tbb@2020 - ``` + ```sh + brew unlink tbb + sed -i.bak '/disable! date:/s/^/ /; /disable! date:/s/./#/3' $(brew --prefix)/Library/Taps/homebrew/homebrew-core/Formula/tbb@2020.rb + brew install tbb@2020 + brew link tbb@2020 + ``` - ::: info - September 2021: The commands above are a workaround to this bug: [PX4-Autopilot#17644](https://github.com/PX4/PX4-Autopilot/issues/17644). - They can be removed once it is fixed (along with this note). + ::: info + September 2021: The commands above are a workaround to this bug: [PX4-Autopilot#17644](https://github.com/PX4/PX4-Autopilot/issues/17644). + They can be removed once it is fixed (along with this note). ::: 2. To install SITL simulation with Gazebo Classic: - ```sh - brew install --cask temurin - brew install --cask xquartz - brew install px4-sim-gazebo - ``` + ```sh + brew install --cask temurin + brew install --cask xquartz + brew install px4-sim-gazebo + ``` 3. Run the macOS setup script: `PX4-Autopilot/Tools/setup/macos.sh` - The easiest way to do this is to clone the PX4 source, and then run the script from the directory, as shown: + The easiest way to do this is to clone the PX4 source, and then run the script from the directory, as shown: - ```sh - git clone https://github.com/PX4/PX4-Autopilot.git --recursive - cd PX4-Autopilot/Tools/setup - sh macos.sh - ``` + ```sh + git clone https://github.com/PX4/PX4-Autopilot.git --recursive + cd PX4-Autopilot/Tools/setup + sh macos.sh + ``` ## Gazebo dependencies diff --git a/docs/zh/dev_setup/dev_env_windows_cygwin_packager_setup.md b/docs/zh/dev_setup/dev_env_windows_cygwin_packager_setup.md index fef641a137..1e69010fb9 100644 --- a/docs/zh/dev_setup/dev_env_windows_cygwin_packager_setup.md +++ b/docs/zh/dev_setup/dev_env_windows_cygwin_packager_setup.md @@ -135,31 +135,31 @@ 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`. - :::tip - Make sure you don't have an additional folder layer from the folder which is inside the downloaded archive. + :::tip + Make sure you don't have an additional folder layer from the folder which is inside the downloaded archive. ::: - ::: info - This is what the toolchain does in: [apache-ant/install-apache-ant.bat](https://github.com/PX4/PX4-windows-toolchain/blob/master/toolchain/apache-ant/install-apache-ant.bat). + ::: info + This is what the toolchain does in: [apache-ant/install-apache-ant.bat](https://github.com/PX4/PX4-windows-toolchain/blob/master/toolchain/apache-ant/install-apache-ant.bat). ::: 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 cd /c/toolchain/genromfs git clone https://github.com/chexum/genromfs.git genromfs-src ``` - - Compile it with: + - Compile it with: ```sh cd genromfs-src 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/PX4-windows-toolchain/blob/master/toolchain/scripts/setup-environment.bat). diff --git a/docs/zh/dev_setup/dev_env_windows_vm.md b/docs/zh/dev_setup/dev_env_windows_vm.md index c9190d5ea5..8bfc9a4148 100644 --- a/docs/zh/dev_setup/dev_env_windows_vm.md +++ b/docs/zh/dev_setup/dev_env_windows_vm.md @@ -57,12 +57,12 @@ 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. 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: - - Significantly enhanced graphics performance - - 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 - - Clipboard sharing to host system - - File sharing to host system + This will enhance performance and usability of your VM usage: + - Significantly enhanced graphics performance + - 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 + - Clipboard sharing to host system + - File sharing to host system 11. Continue with [PX4 environment setup for Linux](../dev_setup/dev_env_linux.md) @@ -96,11 +96,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**. - 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 - 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. + ::: info + 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. ::: diff --git a/docs/zh/dev_setup/dev_env_windows_wsl.md b/docs/zh/dev_setup/dev_env_windows_wsl.md index 6c1083f1e2..d0800244f0 100644 --- a/docs/zh/dev_setup/dev_env_windows_wsl.md +++ b/docs/zh/dev_setup/dev_env_windows_wsl.md @@ -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: 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. - 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: - - Default version (Ubuntu 22.04): + - Default version (Ubuntu 22.04): - ```sh - wsl --install - ``` + ```sh + 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 - wsl --install -d Ubuntu-20.04 - ``` + ```sh + 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 - wsl --install -d Ubuntu-22.04 - ``` + ```sh + wsl --install -d Ubuntu-22.04 + ``` - ::: 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: + ::: 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: ::: 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. @@ -94,26 +94,26 @@ If you're using [Windows Terminal](https://learn.microsoft.com/en-us/windows/ter To open a WSL shell using a command prompt: 1. Open a command prompt: - - Press the Windows **Start** key. - - Type `cmd` and press **Enter** to open the prompt. + - Press the Windows **Start** key. + - Type `cmd` and press **Enter** to open the prompt. 2. To start WSL and access the WSL shell, execute the command: - ```sh - wsl -d - ``` + ```sh + wsl -d + ``` - 例如: + 例如: - ```sh - wsl -d Ubuntu - ``` + ```sh + wsl -d Ubuntu + ``` - ```sh - wsl -d Ubuntu-20.04 - ``` + ```sh + 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: @@ -135,57 +135,57 @@ To install the development toolchain: 2. Execute the command `cd ~` to switch to the home folder of WSL for the next steps. - :::warning - 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. + :::warning + 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. ::: 3. Download the PX4 source code using `git` (which is already installed in WSL2): - ```sh - git clone https://github.com/PX4/PX4-Autopilot.git --recursive - ``` + ```sh + git clone https://github.com/PX4/PX4-Autopilot.git --recursive + ``` - ::: info - 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). + ::: info + 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). ::: 4. Run the **ubuntu.sh** installer script and acknowledge any prompts as the script progresses: - ```sh - bash ./PX4-Autopilot/Tools/setup/ubuntu.sh - ``` + ```sh + bash ./PX4-Autopilot/Tools/setup/ubuntu.sh + ``` - ::: info - This installs tools to build PX4 for Pixhawk and either Gazebo or Gazebo Classic targets: + ::: info + 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. - - 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). + - 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). ::: 5. Restart the "WSL computer" after the script completes (exit the shell, shutdown WSL, and restart WSL): - ```sh - exit - wsl --shutdown - wsl - ``` + ```sh + exit + wsl --shutdown + wsl + ``` 6. Switch to the PX4 repository in the WSL home folder: - ```sh - cd ~/PX4-Autopilot - ``` + ```sh + cd ~/PX4-Autopilot + ``` 7. Build the PX4 SITL target and test your environment: - ```sh - make px4_sitl - ``` + ```sh + make px4_sitl + ``` For more build options see [Building PX4 Software](../dev_setup/building_px4.md). @@ -205,26 +205,26 @@ To set up the integration: 5. In the WSL shell, switch to the PX4 folder: - ```sh - cd ~/PX4-Autopilot - ``` + ```sh + cd ~/PX4-Autopilot + ``` 6. In the WSL shell, start VS Code: - ```sh - code . - ``` + ```sh + 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). - This will start WSL for you. + This will start WSL for you. - ![](../../assets/toolchain/vscode/vscode_wsl.png) + ![](../../assets/toolchain/vscode/vscode_wsl.png) - 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 @@ -240,21 +240,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) 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): - ```sh - cd ~ - wget - chmod +x QGroundControl.AppImage - ``` + ```sh + cd ~ + wget + chmod +x QGroundControl.AppImage + ``` 4. Run QGroundControl: - ```sh - ./QGroundControl.AppImage - ``` + ```sh + ./QGroundControl.AppImage + ``` QGroundControl will launch and automatically connect to a running simulation and allow you to monitor and control your vehicle(s). @@ -270,15 +270,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`: - ```sh - $ ip addr | grep eth0 + ```sh + $ ip addr | grep eth0 - 6: eth0: mtu 1500 qdisc mq state UP group default qlen 1000 - inet 172.18.46.131/20 brd 172.18.47.255 scope global eth0 - ``` + 6: eth0: mtu 1500 qdisc mq state UP group default qlen 1000 + 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. - In this case: `172.18.46.131`. + Copy the first part of the `eth0` interface `inet` address to the clipboard. + In this case: `172.18.46.131`. 3. In QGC go to **Q > Application Settings > Comm Links** @@ -304,14 +304,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: - ```sh - cd ~/PX4-Autopilot - make px4_fmu-v5 - ``` + ```sh + cd ~/PX4-Autopilot + make px4_fmu-v5 + ``` - ::: tip - Use the correct `make` target for your board. - `px4_fmu-v5` can be used for a Pixhawk 4 board. + ::: tip + Use the correct `make` target for your board. + `px4_fmu-v5` can be used for a Pixhawk 4 board. ::: @@ -325,12 +325,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. - 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. - Choose the file in the path: `Ubuntu\home\{your WSL user name}\PX4-Autopilot\build\{your build target}\{your build target}.px4` + 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. + Choose the file in the path: `Ubuntu\home\{your WSL user name}\PX4-Autopilot\build\{your build target}\{your build target}.px4` - ::: info - You can add the folder to the favourites to access it quickly next time. + ::: info + You can add the folder to the favourites to access it quickly next time. ::: diff --git a/docs/zh/dev_setup/vscode.md b/docs/zh/dev_setup/vscode.md index 634709f834..4b699c246b 100644 --- a/docs/zh/dev_setup/vscode.md +++ b/docs/zh/dev_setup/vscode.md @@ -27,10 +27,10 @@ You must already have installed the command line [PX4 developer environment](../ - Select _Open folder ..._ option on the welcome page (or using the menu: **File > Open Folder**): - ![Open Folder](../../assets/toolchain/vscode/welcome_open_folder.jpg) + ![Open Folder](../../assets/toolchain/vscode/welcome_open_folder.jpg) - 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_. @@ -49,9 +49,9 @@ You must already have installed the command line [PX4 developer environment](../ ::: - 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: - - 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. @@ -63,21 +63,21 @@ To build: 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). - ![Select Cmake build target](../../assets/toolchain/vscode/cmake_build_config.jpg) + ![Select Cmake build target](../../assets/toolchain/vscode/cmake_build_config.jpg) - ::: 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`). + ::: 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`). ::: - 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 config project](../../assets/toolchain/vscode/cmake_configuring_project.jpg) + ![Cmake config project](../../assets/toolchain/vscode/cmake_configuring_project.jpg) - Wait until configuration completes. - When this is done the notification will disappear and you'll be shown the build location: - ![Cmake config project](../../assets/toolchain/vscode/cmake_configuring_project_done.jpg). + When this is done the notification will disappear and you'll be shown the build location: + ![Cmake config project](../../assets/toolchain/vscode/cmake_configuring_project_done.jpg). 2. You can then kick off a build from the config bar (select either **Build** or **Debug**). ![Run debug or build](../../assets/toolchain/vscode/run_debug_build.jpg) diff --git a/docs/zh/dronecan/holybro_h_rtk_zed_f9p_gps.md b/docs/zh/dronecan/holybro_h_rtk_zed_f9p_gps.md index 12c43945c6..9418fab0b8 100644 --- a/docs/zh/dronecan/holybro_h_rtk_zed_f9p_gps.md +++ b/docs/zh/dronecan/holybro_h_rtk_zed_f9p_gps.md @@ -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/). 2. Update the firmware using either of the following approaches: - - Using ArduPilot: - 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. - - 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/). + - Using ArduPilot: + 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. + - 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. @@ -98,14 +98,14 @@ In order to use dual ZED-F9P GPS heading in PX4, follow these steps: 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). 3. Components should be visible on the left panel. - Click on the first `_Component_` that maps to the ZED-F9P DroneCAN node (below shown as _Component 124_). + Click on the first `_Component_` 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: - - `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_. - - `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. - This is the local offset (FRD) with respect to the autopilot. + - `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_. + - `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. + This is the local offset (FRD) with respect to the autopilot. ![QGC Setup](../../assets/hardware/gps/holybro_h_rtk_zed_f9p_rover/holybro_f9p_gps_qgc_setup.png) diff --git a/docs/zh/dronecan/pomegranate_systems_pm.md b/docs/zh/dronecan/pomegranate_systems_pm.md index d63d011d6c..3550f395b3 100644 --- a/docs/zh/dronecan/pomegranate_systems_pm.md +++ b/docs/zh/dronecan/pomegranate_systems_pm.md @@ -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`. 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): - - Battery capacity in mAh: `battery_capacity_mAh` - - Battery voltage when _full_: `battery_full_V`, - - Battery voltage when _empty_: `battery_empty_V` - - Turn on current integration: `enable_current_track` - - (optional) Turn Off CANbus termination resistor :`enable_can_term` + - Battery capacity in mAh: `battery_capacity_mAh` + - Battery voltage when _full_: `battery_full_V`, + - Battery voltage when _empty_: `battery_empty_V` + - Turn on current integration: `enable_current_track` + - (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: diff --git a/docs/zh/dronecan/raccoonlab_power.md b/docs/zh/dronecan/raccoonlab_power.md index 6fb21706eb..e40ded7c3d 100644 --- a/docs/zh/dronecan/raccoonlab_power.md +++ b/docs/zh/dronecan/raccoonlab_power.md @@ -7,9 +7,9 @@ CAN power connectors are designed for light unmanned aerial (UAV) and other vehi There are two types of devices: 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. - 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. diff --git a/docs/zh/flight_modes_fw/mission.md b/docs/zh/flight_modes_fw/mission.md index 991a4bb846..63425174ba 100644 --- a/docs/zh/flight_modes_fw/mission.md +++ b/docs/zh/flight_modes_fw/mission.md @@ -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): - - If flying the vehicle will loiter. - - If landed the vehicle will "wait". + - If flying the vehicle will loiter. + - 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. - - 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`. - 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: - - If flying the vehicle will loiter. - - If landed the vehicle will "wait". + - If flying the vehicle will loiter. + - If landed the vehicle will "wait". 5. You can manually change the current mission command by selecting it in _QGroundControl_. - ::: info - 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. + ::: info + 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. ::: 6. The mission will only reset when the vehicle is disarmed or when a new mission is uploaded. - :::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_. - Enter the time to wait after landing before disarming the vehicle. + :::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_. + 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. 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. 4. **Flare**: The vehicle flares until it touches down. diff --git a/docs/zh/flight_modes_fw/takeoff.md b/docs/zh/flight_modes_fw/takeoff.md index 010e4793ff..593c1f61e0 100644 --- a/docs/zh/flight_modes_fw/takeoff.md +++ b/docs/zh/flight_modes_fw/takeoff.md @@ -93,7 +93,7 @@ To launch in this mode: 1. Arm the vehicle 2. Put the vehicle into _Takeoff mode_ 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) diff --git a/docs/zh/flight_modes_mc/follow_me.md b/docs/zh/flight_modes_mc/follow_me.md index 3e8b4ecab5..a356ffd919 100644 --- a/docs/zh/flight_modes_mc/follow_me.md +++ b/docs/zh/flight_modes_mc/follow_me.md @@ -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"). - 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. - 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. + 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. - 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. - + - 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. ## 已知的问题 diff --git a/docs/zh/flight_modes_mc/mission.md b/docs/zh/flight_modes_mc/mission.md index 5f6088aded..77cd340405 100644 --- a/docs/zh/flight_modes_mc/mission.md +++ b/docs/zh/flight_modes_mc/mission.md @@ -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): - - If flying the vehicle will hold. - - If landed the vehicle will "wait". + - If flying the vehicle will hold. + - 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. - - 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: - - 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. + - 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. 4. If no mission is stored, or if PX4 has finished executing all mission commands: - - If flying the vehicle will hold. - - If landed the vehicle will "wait". + - If flying the vehicle will hold. + - If landed the vehicle will "wait". 5. You can manually change the current mission command by selecting it in _QGroundControl_. - ::: info - 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. + ::: info + 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. ::: 6. The mission will only reset when the vehicle is disarmed or when a new mission is uploaded. - :::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_. - Enter the time to wait after landing before disarming the vehicle. + :::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_. + Enter the time to wait after landing before disarming the vehicle. ::: diff --git a/docs/zh/flight_modes_mc/throw_launch.md b/docs/zh/flight_modes_mc/throw_launch.md index 68454dc735..8bfa6c55f3 100644 --- a/docs/zh/flight_modes_mc/throw_launch.md +++ b/docs/zh/flight_modes_mc/throw_launch.md @@ -43,16 +43,16 @@ Also ensure that the propellers do not spin on arming after enabling the feature In addition: 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). - 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! + 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! 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. 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. - Keep a safe distance! + 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! 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. 2. Set [COM_THROW_EN](../advanced_config/parameter_reference.md#COM_THROW_EN) to `Enabled`. 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. - 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. 6. Engage the kill switch (ideally a second person operating the RC should do this). 7. Catch the drone. - Remember to use safety gloves! + Remember to use safety gloves! ## 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`. 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). - - 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. - - 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 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. + - 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. 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. ## 参数 diff --git a/docs/zh/flying/geofence.md b/docs/zh/flying/geofence.md index 14f87a4a75..28f29608ce 100644 --- a/docs/zh/flying/geofence.md +++ b/docs/zh/flying/geofence.md @@ -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). 6. 可添加任意数量的围栏 7. Once finished, click on the **Upload** button (top right) to send the fence (along with rally points and mission) to the vehicle. diff --git a/docs/zh/flying/package_delivery_mission.md b/docs/zh/flying/package_delivery_mission.md index 7579495f9e..a04437f19f 100644 --- a/docs/zh/flying/package_delivery_mission.md +++ b/docs/zh/flying/package_delivery_mission.md @@ -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). - 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. - ![Waypoint to Land mission item](../../assets/flying/package_delivery_land_waypoint.png) + ![Waypoint to Land mission item](../../assets/flying/package_delivery_land_waypoint.png) 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`. diff --git a/docs/zh/frames_multicopter/dji_f450_cuav_5nano.md b/docs/zh/frames_multicopter/dji_f450_cuav_5nano.md index 43f4d0e036..d0310b1cb2 100644 --- a/docs/zh/frames_multicopter/dji_f450_cuav_5nano.md +++ b/docs/zh/frames_multicopter/dji_f450_cuav_5nano.md @@ -106,52 +106,52 @@ 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. - ![Arms to bottom plate](../../assets/airframes/multicopter/dji_f450_cuav_5nano/1_attach_arms_bottom_plate.jpg) + ![Arms to bottom plate](../../assets/airframes/multicopter/dji_f450_cuav_5nano/1_attach_arms_bottom_plate.jpg) 2. Solder ESC (Electronic Speed Controller) to the board, positive (red) and negative (black). - ![Solder ESCs](../../assets/airframes/multicopter/dji_f450_cuav_5nano/2_solder_esc.jpg) + ![Solder ESCs](../../assets/airframes/multicopter/dji_f450_cuav_5nano/2_solder_esc.jpg) 3. Solder the Power Module, positive (red) and negative (black). - ![Solder power module](../../assets/airframes/multicopter/dji_f450_cuav_5nano/3_solder_power_module.jpg) + ![Solder power module](../../assets/airframes/multicopter/dji_f450_cuav_5nano/3_solder_power_module.jpg) 4. Plug in the motors to the ESCs according to their positions. - ![Plug in motors](../../assets/airframes/multicopter/dji_f450_cuav_5nano/4_plug_in_motors.jpg) + ![Plug in motors](../../assets/airframes/multicopter/dji_f450_cuav_5nano/4_plug_in_motors.jpg) 5. Attach the motors to the corresponding arms. - ![Attach motors to arms (white)](../../assets/airframes/multicopter/dji_f450_cuav_5nano/5a_attach_motors_to_arms.jpg) - ![Attach motors to arms (red)](../../assets/airframes/multicopter/dji_f450_cuav_5nano/5b_attach_motors_to_arms.jpg) + ![Attach motors to arms (white)](../../assets/airframes/multicopter/dji_f450_cuav_5nano/5a_attach_motors_to_arms.jpg) + ![Attach motors to arms (red)](../../assets/airframes/multicopter/dji_f450_cuav_5nano/5b_attach_motors_to_arms.jpg) 6. Add the top board (screw into the top of the legs). - ![Add top board](../../assets/airframes/multicopter/dji_f450_cuav_5nano/6_add_top_board.jpg) + ![Add top board](../../assets/airframes/multicopter/dji_f450_cuav_5nano/6_add_top_board.jpg) 7. Add damping foam to the _CUAV V5 nano_ flight controller. - ![Damping foam](../../assets/airframes/multicopter/dji_f450_cuav_5nano/7a_attach_cuav5nano.jpg) - ![Damping foam](../../assets/airframes/multicopter/dji_f450_cuav_5nano/7b_attach_cuav5nano.jpg) + ![Damping foam](../../assets/airframes/multicopter/dji_f450_cuav_5nano/7a_attach_cuav5nano.jpg) + ![Damping foam](../../assets/airframes/multicopter/dji_f450_cuav_5nano/7b_attach_cuav5nano.jpg) 8. Attach the FrSky receiver to the bottom board with double-sided tape. - ![Attach FrSky receiver with double-sided tape](../../assets/airframes/multicopter/dji_f450_cuav_5nano/8_attach_frsky.jpg) + ![Attach FrSky receiver with double-sided tape](../../assets/airframes/multicopter/dji_f450_cuav_5nano/8_attach_frsky.jpg) 9. Attach the telemetry module to the vehicle’s bottom board using double-sided tape. - ![Attach telemetry radio](../../assets/airframes/multicopter/dji_f450_cuav_5nano/9a_telemtry_radio.jpg) - ![Attach telemetry radio](../../assets/airframes/multicopter/dji_f450_cuav_5nano/9b_telemtry_radio.jpg) + ![Attach telemetry radio](../../assets/airframes/multicopter/dji_f450_cuav_5nano/9a_telemtry_radio.jpg) + ![Attach telemetry radio](../../assets/airframes/multicopter/dji_f450_cuav_5nano/9b_telemtry_radio.jpg) 10. Put the aluminium standoffs on the button plate and attach GPS. - ![Aluminium standoffs](../../assets/airframes/multicopter/dji_f450_cuav_5nano/10_aluminium_standoffs.jpg) + ![Aluminium standoffs](../../assets/airframes/multicopter/dji_f450_cuav_5nano/10_aluminium_standoffs.jpg) 11. Plug in Telemetry (`TELEM1`), GPS module (`GPS/SAFETY`), RC receiver (`RC`), all 4 ESC’s (`M1-M4`), and the power module (`Power1`) into the flight controller. - ![Attach peripherals to flight controller](../../assets/airframes/multicopter/dji_f450_cuav_5nano/12_fc_attach_periperhals.jpg) + ![Attach peripherals to flight controller](../../assets/airframes/multicopter/dji_f450_cuav_5nano/12_fc_attach_periperhals.jpg) - ::: info - The motor order is defined in the [Airframe Reference > Quadrotor x](../airframes/airframe_reference.md#quadrotor-x) + ::: info + The motor order is defined in the [Airframe Reference > Quadrotor x](../airframes/airframe_reference.md#quadrotor-x) ::: diff --git a/docs/zh/frames_multicopter/dji_f450_cuav_5plus.md b/docs/zh/frames_multicopter/dji_f450_cuav_5plus.md index 4c42eaa365..8fbd134973 100644 --- a/docs/zh/frames_multicopter/dji_f450_cuav_5plus.md +++ b/docs/zh/frames_multicopter/dji_f450_cuav_5plus.md @@ -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. - ![Arms to bottom plate](../../assets/airframes/multicopter/dji_f450_cuav_5plus/1_attach_arms_bottom_plate.jpg) + ![Arms to bottom plate](../../assets/airframes/multicopter/dji_f450_cuav_5plus/1_attach_arms_bottom_plate.jpg) 2. Solder ESC (Electronic Speed Controller) to the board, positive (red) and negative (black). - ![Solder ESCs](../../assets/airframes/multicopter/dji_f450_cuav_5plus/2_solder_esc.jpg) + ![Solder ESCs](../../assets/airframes/multicopter/dji_f450_cuav_5plus/2_solder_esc.jpg) 3. Solder the Power Module, positive (red) and negative (black). - ![Solder power module](../../assets/airframes/multicopter/dji_f450_cuav_5plus/3_solder_power_module.jpg) + ![Solder power module](../../assets/airframes/multicopter/dji_f450_cuav_5plus/3_solder_power_module.jpg) 4. Plug in the motors to the ESCs according to their positions. - ![Plug in motors](../../assets/airframes/multicopter/dji_f450_cuav_5plus/4_plug_in_motors.jpg) + ![Plug in motors](../../assets/airframes/multicopter/dji_f450_cuav_5plus/4_plug_in_motors.jpg) 5. Attach the motors to the corresponding arms. - ![Attach motors to arms (white)](../../assets/airframes/multicopter/dji_f450_cuav_5plus/5a_attach_motors_to_arms.jpg) - ![Attach motors to arms (red)](../../assets/airframes/multicopter/dji_f450_cuav_5plus/5b_attach_motors_to_arms.jpg) + ![Attach motors to arms (white)](../../assets/airframes/multicopter/dji_f450_cuav_5plus/5a_attach_motors_to_arms.jpg) + ![Attach motors to arms (red)](../../assets/airframes/multicopter/dji_f450_cuav_5plus/5b_attach_motors_to_arms.jpg) 6. Add the top board (screw into the top of the legs). - ![Add top board](../../assets/airframes/multicopter/dji_f450_cuav_5plus/6_add_top_board.jpg) + ![Add top board](../../assets/airframes/multicopter/dji_f450_cuav_5plus/6_add_top_board.jpg) 7. Add double-sided tape (3M) to the CUAV V5+ flight controller (it has internal vibration damping, so no need to use foam). - ![Tape CUAV v5+](../../assets/airframes/multicopter/dji_f450_cuav_5plus/7_attach_cuav5plus.jpg) + ![Tape CUAV v5+](../../assets/airframes/multicopter/dji_f450_cuav_5plus/7_attach_cuav5plus.jpg) 8. Attach the FrSky receiver to the bottom board with double-sided tape. - ![Attach FrSky receiver with double-sided tape](../../assets/airframes/multicopter/dji_f450_cuav_5plus/8_attach_frsky.jpg) + ![Attach FrSky receiver with double-sided tape](../../assets/airframes/multicopter/dji_f450_cuav_5plus/8_attach_frsky.jpg) 9. Attach the telemetry module to the vehicle’s bottom board using double-sided tape. - ![Attach telemetry radio](../../assets/airframes/multicopter/dji_f450_cuav_5plus/9a_telemtry_radio.jpg) - ![Attach telemetry radio](../../assets/airframes/multicopter/dji_f450_cuav_5plus/9b_telemtry_radio.jpg) + ![Attach telemetry radio](../../assets/airframes/multicopter/dji_f450_cuav_5plus/9a_telemtry_radio.jpg) + ![Attach telemetry radio](../../assets/airframes/multicopter/dji_f450_cuav_5plus/9b_telemtry_radio.jpg) 10. Put the aluminium standoffs on the button plate. 11. Plug in Telemetry (`TELEM1`) and GPS module (`GPS/SAFETY`) to the flight controller. - ![Attach GPS](../../assets/airframes/multicopter/dji_f450_cuav_5plus/11a_gps.jpg) - ![Attach GPS](../../assets/airframes/multicopter/dji_f450_cuav_5plus/11b_gps.jpg) + ![Attach GPS](../../assets/airframes/multicopter/dji_f450_cuav_5plus/11a_gps.jpg) + ![Attach GPS](../../assets/airframes/multicopter/dji_f450_cuav_5plus/11b_gps.jpg) 12. Plug in the RC receiver (`RC`), all 4 ESC’s (`M1-M4`), and the power module (`Power1`) into the flight controller. - ![Attach peripherals to flight controller](../../assets/airframes/multicopter/dji_f450_cuav_5plus/12_fc_attach_periperhals.jpg) + ![Attach peripherals to flight controller](../../assets/airframes/multicopter/dji_f450_cuav_5plus/12_fc_attach_periperhals.jpg) - ::: info - The motor order is defined in the [Airframe Reference > Quadrotor x](../airframes/airframe_reference.md#quadrotor-x) + ::: info + The motor order is defined in the [Airframe Reference > Quadrotor x](../airframes/airframe_reference.md#quadrotor-x) ::: diff --git a/docs/zh/frames_multicopter/holybro_qav250_pixhawk4_mini.md b/docs/zh/frames_multicopter/holybro_qav250_pixhawk4_mini.md index d229c04192..b211ecf724 100644 --- a/docs/zh/frames_multicopter/holybro_qav250_pixhawk4_mini.md +++ b/docs/zh/frames_multicopter/holybro_qav250_pixhawk4_mini.md @@ -103,78 +103,78 @@ The following tools are used in this assembly: 1. Attach arms to the button plate with the 15mm screws as shown: - ![QAV250 Add arms to button plate](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/1_button_plate_add_arms.jpg) + ![QAV250 Add arms to button plate](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/1_button_plate_add_arms.jpg) 2. Put the short plate over the arms - ![QAV250 Add short plate over arms](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/2_short_plate_over_arms.jpg) + ![QAV250 Add short plate over arms](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/2_short_plate_over_arms.jpg) 3. Put the nuts on the 15mm screws (shown next step) 4. Insert the plastic screws into the indicated holes (note that this part of the frame faces down when the vehicle is complete). - ![QAV250 Add nuts to 15mm screws and put plastic nuts in holes](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/3_nuts_screws_holes.jpg) + ![QAV250 Add nuts to 15mm screws and put plastic nuts in holes](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/3_nuts_screws_holes.jpg) 5. Add the plastic nuts to the screws (turn over, as shown) - ![QAV250 Plastic nuts onto screws](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/4_plastic_nuts_on_screws.jpg) + ![QAV250 Plastic nuts onto screws](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/4_plastic_nuts_on_screws.jpg) 6. Lower the power module over the plastic screws and then add the plastics standoffs - ![QAV250 Add power module and standoffs](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/5_power_module_on_screws.jpg) + ![QAV250 Add power module and standoffs](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/5_power_module_on_screws.jpg) 7. Put the flight controller plate on the standoffs (over the power module) - ![QAV250 Add flight controller plate](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/6_flight_controller_plate.jpg) + ![QAV250 Add flight controller plate](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/6_flight_controller_plate.jpg) 8. Attach the motors. The motors have an arrow indicating the direction of rotation. - ![QAV250 Add motors](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/7_motors.jpg) + ![QAV250 Add motors](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/7_motors.jpg) 9. Use double sided tape from kit to attach the _Pixhawk 4 Mini_ to the flight controller plate. - ![QAV250 Add doublesided tape](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/8_double_sided_tape_controller.jpg) + ![QAV250 Add doublesided tape](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/8_double_sided_tape_controller.jpg) 10. Connect the power module's "power" cable to _Pixhawk 4 mini_. - ![QAV250 Power Pixhawk](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/9_power_module_power_pixhawk.jpg) + ![QAV250 Power Pixhawk](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/9_power_module_power_pixhawk.jpg) 11. Attach the aluminium standoffs to the button plate - ![QAV250 Aluminium standoffs](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/10_aluminium_standoffs.jpg) + ![QAV250 Aluminium standoffs](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/10_aluminium_standoffs.jpg) 12. Connect the Esc’s with the motors and hold. In this image shown the order of the motors and direction of the rotation. - ![QAV250 Connect ESCs](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/11_escs.jpg) + ![QAV250 Connect ESCs](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/11_escs.jpg) - Connect the motors on the ESC’s, make sure the motors turns to the correct side, if the motor turns of the opposite side change the cable A to the pad C and C to the pad A of the ESC. + Connect the motors on the ESC’s, make sure the motors turns to the correct side, if the motor turns of the opposite side change the cable A to the pad C and C to the pad A of the ESC. - :::warning - Test motor directions with propellers removed. + :::warning + Test motor directions with propellers removed. ::: - ![QAV250 Connect ESCs to Power](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/11b_escs.jpg) + ![QAV250 Connect ESCs to Power](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/11b_escs.jpg) 13. Connect the signal ESC cables to the PWM outputs of the Pixhawk in the correct order (see previous image) - ![QAV250 Connect ESCs to Pixhawk PWM](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/12_escs_pixhawk.jpg) + ![QAV250 Connect ESCs to Pixhawk PWM](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/12_escs_pixhawk.jpg) 14. Connect the receiver. - - If using a PPM receiver connect to the PPM port. + - If using a PPM receiver connect to the PPM port. - ![QAV250 Connect Receiver PPM](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/13_rc_receiver_ppm.jpg) + ![QAV250 Connect Receiver PPM](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/13_rc_receiver_ppm.jpg) - - If using the SBUS receiver connect to the RC IN port + - If using the SBUS receiver connect to the RC IN port - ![QAV250 Connect Receiver SBUS](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/13_rc_receiver_sbus.jpg) + ![QAV250 Connect Receiver SBUS](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/13_rc_receiver_sbus.jpg) 15. Connect the telemetry module. Paste the module with double tape and connect on the port of the telemetry. - ![QAV250 Telemetry module](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/14_telemetry.jpg) + ![QAV250 Telemetry module](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/14_telemetry.jpg) 16. Connect the GPS module - ![QAV250 Connect GPS](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/15a_connect_gps.jpg) + ![QAV250 Connect GPS](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/15a_connect_gps.jpg) - Attach the module on the top plate (using provided 3M tape, or paste). Then put the top plate on the standoffs as shown + Attach the module on the top plate (using provided 3M tape, or paste). Then put the top plate on the standoffs as shown - ![QAV250 Connect GPS](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/15b_attach_gps.jpg) + ![QAV250 Connect GPS](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/15b_attach_gps.jpg) 17. The last "mandatory" assembly step is to add the velcro to hold the battery - ![QAV250 Velcro battery strap](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/16_velcro_strap.jpg) + ![QAV250 Velcro battery strap](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/16_velcro_strap.jpg) The "basic" frame build is now complete (though if you need them, you can find more information about connecting components in the [Pixhawk 4 Wiring Quickstart](../assembly/quick_start_pixhawk4.md)). @@ -189,17 +189,17 @@ The "Complete" version of the kit additionally comes with an FPV system, which i The steps to install the kit are: 1. Install the camera bracket on the frame - ![Camera Connection](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/fpv_camera_bracket.jpg) + ![Camera Connection](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/fpv_camera_bracket.jpg) 2. Install the camera on the bracket - ![Camera on Bracket](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/fpv_camera_on_bracket.jpg) + ![Camera on Bracket](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/fpv_camera_on_bracket.jpg) 3. The power module on the complete kit comes with wiring ready to connect the Video Transmitter and Camera: - ![Connecting FPV](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/fpv_connection_board.jpg) - - Attach the camera connector - ![Camera Connection](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/fpv_camera_connection.jpg) - The wires are: blue=voltage sensor, yellow=video out, black=ground, red=+voltage. - - Connect the Video Transmitter (VTX) connector - ![Video Transmitter Connection](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/fpv_video_transmitter_connection.jpg) - The wires are: yellow=video out, black=ground, red=+voltage. + ![Connecting FPV](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/fpv_connection_board.jpg) + - Attach the camera connector + ![Camera Connection](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/fpv_camera_connection.jpg) + The wires are: blue=voltage sensor, yellow=video out, black=ground, red=+voltage. + - Connect the Video Transmitter (VTX) connector + ![Video Transmitter Connection](../../assets/airframes/multicopter/qav250_holybro_pixhawk4_mini/fpv_video_transmitter_connection.jpg) + The wires are: yellow=video out, black=ground, red=+voltage. 4. Secure the Video Transmitter and OSD board to the frame using tape. :::info diff --git a/docs/zh/frames_multicopter/holybro_s500_v2_pixhawk4.md b/docs/zh/frames_multicopter/holybro_s500_v2_pixhawk4.md index ab696b1c26..57b595740f 100644 --- a/docs/zh/frames_multicopter/holybro_s500_v2_pixhawk4.md +++ b/docs/zh/frames_multicopter/holybro_s500_v2_pixhawk4.md @@ -115,11 +115,11 @@ The following tools are used in this assembly: Estimate time to assemble is 90 minutes, about 45 minutes for frame assembly and 45 minutes installing and configuring the autopilot in QGroundControl. 1. Assembling the Landing Gear. - We are going to start by assembling the landing gear to the vertical pole. Unscrew the landing gear screws and insert the vertical pole as shown below. + We are going to start by assembling the landing gear to the vertical pole. Unscrew the landing gear screws and insert the vertical pole as shown below. - ![Figure 1](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig1.jpg) + ![Figure 1](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig1.jpg) - ![Figure 2](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig2.jpg) + ![Figure 2](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig2.jpg) 2. Assemble the Power Management Board to the landing gear. Screw the landing gear with a vertical pole to the Fully assembled Power Management Board. @@ -132,132 +132,132 @@ Connect with the M3X8 screws, a total of 8 pieces, 4 on each side. ![Figure 4](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig4.jpg) 1. Assemble the arms to the Power Management Board. - Attach the arm to the Power Management Board. + Attach the arm to the Power Management Board. - ![Figure 6](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig7.jpg) + ![Figure 6](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig7.jpg) - ![Figure 7](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig8.jpg) + ![Figure 7](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig8.jpg) - Use M2 5X6 screws a total of 2 in each arm. - Insert the screws from the bottom of the plate. + Use M2 5X6 screws a total of 2 in each arm. + Insert the screws from the bottom of the plate. - ![Figure 8](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig9.jpg) + ![Figure 8](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig9.jpg) - Make sure the ESC cables run through the middle of the arm. + Make sure the ESC cables run through the middle of the arm. - ![Figure 9](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig91.jpg) + ![Figure 9](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig91.jpg) 2. Assemble the 8_3 2.54mm pitch Horizontal Pin to the 10 to 10 pin cable (PWM) to the Power Management Board. - Connect the 10 to 10 pin cable (PWM) to the 8_3 2.54mm pitch Horizontal Pin. + Connect the 10 to 10 pin cable (PWM) to the 8_3 2.54mm pitch Horizontal Pin. - ![Figure 10](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig10.jpg) + ![Figure 10](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig10.jpg) - Cut a piece of 3M Tape and attach to the bottom of the Horizontal Pin: + Cut a piece of 3M Tape and attach to the bottom of the Horizontal Pin: - ![Figure 11](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig11.jpg) + ![Figure 11](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig11.jpg) - Stick the Horizontal Pin to the Power Management Board: + Stick the Horizontal Pin to the Power Management Board: - ![Figure 12](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig12.jpg) + ![Figure 12](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig12.jpg) - ![Figure 13](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig13.jpg) + ![Figure 13](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig13.jpg) 3. Assemble the motors to the arms. For this, we will need the 16 screws M3X7, 4 motors, and the 4 arms. - Mount the motors in each arm put the screw through the bottom of the arm: + Mount the motors in each arm put the screw through the bottom of the arm: - ![Figure 14](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig14.jpg) + ![Figure 14](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig14.jpg) - ![Figure 15](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig15.jpg) + ![Figure 15](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig15.jpg) - After the 4 motors are mounted on the arm grab the cables(red, blue, black) and put them through the arm thread. - The 3 cables that are color-coded go connected to the ESC. + After the 4 motors are mounted on the arm grab the cables(red, blue, black) and put them through the arm thread. + The 3 cables that are color-coded go connected to the ESC. - ![Figure 16](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig16.jpg) + ![Figure 16](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig16.jpg) - ![Figure 17](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig17.jpg) + ![Figure 17](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig17.jpg) 4. Mounting the GPS on the frame. - For this, we will need the Pixhawk 4 GPS and the mounting plate. + For this, we will need the Pixhawk 4 GPS and the mounting plate. - ![GPS Parts](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_gpskit.png) + ![GPS Parts](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_gpskit.png) - Mount the GPS mast to the back of the Board, use the 4 screws: + Mount the GPS mast to the back of the Board, use the 4 screws: - ![Figure 18](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig18.jpg) + ![Figure 18](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig18.jpg) - ![Figure 19](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig19.jpg) + ![Figure 19](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig19.jpg) - Use the tape and stick the GPS to the top of the GPS mast: + Use the tape and stick the GPS to the top of the GPS mast: - ![Figure 20](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig20.jpg) + ![Figure 20](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig20.jpg) 5. Paste the FrSky to the Board. Paste FrSky with double-sided tape (3M) to the bottom board. - Attach the FrSky to the frame: + Attach the FrSky to the frame: - ![Figure 21](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig21.jpg) + ![Figure 21](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig21.jpg) - ![Figure 22](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig22.jpg) + ![Figure 22](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig22.jpg) 6. Attach the Telemetry to the frame. - The next step is to take the Holybro telemetry radio and attach it onto the frame, use 3M tape. + The next step is to take the Holybro telemetry radio and attach it onto the frame, use 3M tape. - ![Figure 23](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig23.jpg) + ![Figure 23](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig23.jpg) - ![Figure 24](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig24.jpg) + ![Figure 24](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig24.jpg) - This assembly attached it inside the frame facing outwards to the front of the vehicle. - A picture is shown below of the radio sitting inside the bottom of the frame. + This assembly attached it inside the frame facing outwards to the front of the vehicle. + A picture is shown below of the radio sitting inside the bottom of the frame. - ![Figure 25](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig25.jpg) + ![Figure 25](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig25.jpg) 7. Mounting the Pixhawk 4 to the plate. - Use double-sided tape to attach the Pixhawk 4 to the center plate: + Use double-sided tape to attach the Pixhawk 4 to the center plate: - ![Figure 26](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig26.jpg) + ![Figure 26](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig26.jpg) - ![Figure 27](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig27.jpg) + ![Figure 27](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig27.jpg) - ![Figure 28](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig28.jpg) + ![Figure 28](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig28.jpg) - The next step is to mount the Pixhawk 4 with the plate to the frame. - For this, we will need the M2 5X6 screws. - Align the plate to the frame and insert the screws. - Before you mount the plate we recommend putting tape on the Power Module (that way it's tight). + The next step is to mount the Pixhawk 4 with the plate to the frame. + For this, we will need the M2 5X6 screws. + Align the plate to the frame and insert the screws. + Before you mount the plate we recommend putting tape on the Power Module (that way it's tight). - ![Figure 29](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig29.jpg) + ![Figure 29](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig29.jpg) - ![Figure 30](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig30.jpg) + ![Figure 30](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig30.jpg) 8. Assembling the Battery Mount to the frame. - For this we will need the M2 5X6 screws and the battery mount: + For this we will need the M2 5X6 screws and the battery mount: - ![Figure 31](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig31.jpg) + ![Figure 31](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig31.jpg) - Insert the long rods to the small rings: + Insert the long rods to the small rings: - ![Figure 32](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig32.png) + ![Figure 32](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig32.png) - ![Figure 33](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig33.png) + ![Figure 33](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig33.png) - Attach that to the frame, make sure all four sides are aligned to insert the screws: + Attach that to the frame, make sure all four sides are aligned to insert the screws: - ![Figure 34](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig34.jpg) + ![Figure 34](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig34.jpg) - Assemble the small plate to the legs and screw on all four sides. + Assemble the small plate to the legs and screw on all four sides. - ![Figure 35](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig35.jpg) + ![Figure 35](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig35.jpg) - The final step is to attach the plate: + The final step is to attach the plate: - ![Figure 36](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig36.jpg) + ![Figure 36](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig36.jpg) 9. Pixhawk 4 wiring. The Pixhawk 4, which has several different wires and connections with it. - Included below is a picture of every wire needed with the Pixhawk and how it looks when connected. + Included below is a picture of every wire needed with the Pixhawk and how it looks when connected. 10. Plugin Telemetry and GPS module to the flight controller as seen in Figure 37; plug in the RC receiver, all 4 ESCs to the flight controller as well as the power module. - ![Figure 37](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig37.png) + ![Figure 37](../../assets/airframes/multicopter/s500_holybro_pixhawk4/s500_fig37.png) Fully assembled, the kit looks as shown below: diff --git a/docs/zh/frames_multicopter/holybro_x500V2_pixhawk5x.md b/docs/zh/frames_multicopter/holybro_x500V2_pixhawk5x.md index 42ec97bd34..723a3bb23b 100644 --- a/docs/zh/frames_multicopter/holybro_x500V2_pixhawk5x.md +++ b/docs/zh/frames_multicopter/holybro_x500V2_pixhawk5x.md @@ -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) 1. Start by assembling the payload & battery holder. - 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. + 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. - ![Landing Figure 1: Components](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/payload_holder_required_stuff.png) + ![Landing Figure 1: Components](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/payload_holder_required_stuff.png) - _Figure 2_: Payload holder components + _Figure 2_: Payload holder components - ![Landing Figure 2: Assembled](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/payload_holder_assembled.png) + ![Landing Figure 2: Assembled](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/payload_holder_assembled.png) - _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. - You will need the parts as shown in Figure 4. - 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) + You will need the parts as shown in Figure 4. + 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) - ![Materials to attach bottom plate](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/topplate_holder_stuff.png) + ![Materials to attach bottom plate](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/topplate_holder_stuff.png) - _Figure 4_: Needed Materials + _Figure 4_: Needed Materials - ![PDB mountbase](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/powerboard-mountbase.png) + ![PDB mountbase](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/powerboard-mountbase.png) - _Figure 5_: PDB mount base + _Figure 5_: PDB mount base - ![PDB attachment](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/pdb_bottom_plate.png) + ![PDB attachment](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/pdb_bottom_plate.png) - _Figure 6_: Mounted pdb with nylon nuts + _Figure 6_: Mounted pdb with nylon nuts - ![Bottom plate Final](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/bottom_plate_holder_final.png) + ![Bottom plate Final](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/bottom_plate_holder_final.png) - _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. - 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. - Do not forget to tighten them back again. + 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. + Do not forget to tighten them back again. - ![Attach Landing Gear Stuff](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/landing_gear_materials.png) + ![Attach Landing Gear Stuff](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/landing_gear_materials.png) - _Figure 8_: Required parts for landing gear attachment + _Figure 8_: Required parts for landing gear attachment - ![Lanfing great to bottom plate](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/attached_landing_gear.png) + ![Lanfing great to bottom plate](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/attached_landing_gear.png) - _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. - 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. - 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. - 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 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. + 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. + 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. - + - _Figure 10_: Connecting arms needed materials. + _Figure 10_: Connecting arms needed materials. - + - _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. - ![Top plae mounted](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/finalized_top_plate.png) + ![Top plae mounted](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/finalized_top_plate.png) - _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. - 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. - ![Flight controller mounting stickers](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/pixhawk5x_stickertapes.png) + ![Flight controller mounting stickers](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk5x/pixhawk5x_stickertapes.png) - _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. - + - _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. - Make sure the arrow on the gps is pointing forward (Figure 15). + Make sure the arrow on the gps is pointing forward (Figure 15). - + - _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. diff --git a/docs/zh/frames_multicopter/holybro_x500_pixhawk4.md b/docs/zh/frames_multicopter/holybro_x500_pixhawk4.md index c49543f094..babc343497 100644 --- a/docs/zh/frames_multicopter/holybro_x500_pixhawk4.md +++ b/docs/zh/frames_multicopter/holybro_x500_pixhawk4.md @@ -81,125 +81,125 @@ The following tools are used in this assembly: Estimate time to assemble is 3.75 hours (180 minutes for frame, 45 minutes for autopilot installation/configuration) 1. Start by assembling the landing gear. - Unscrew the landing gear screws and insert the vertical pole (figures 1 and 2). + Unscrew the landing gear screws and insert the vertical pole (figures 1 and 2). - ![Landing Figure 1: Components](../../assets/airframes/multicopter/x500_holybro_pixhawk4/x500_step_1_fig1.jpg) + ![Landing Figure 1: Components](../../assets/airframes/multicopter/x500_holybro_pixhawk4/x500_step_1_fig1.jpg) - _Figure 2_: Landing gear components + _Figure 2_: Landing gear components - ![Landing Figure 2: Assembled](../../assets/airframes/multicopter/x500_holybro_pixhawk4/x500_step_1_fig2.jpg) + ![Landing Figure 2: Assembled](../../assets/airframes/multicopter/x500_holybro_pixhawk4/x500_step_1_fig2.jpg) - _Figure 2_: Landing gear assembled + _Figure 2_: Landing gear assembled 2. Then put the 4 arms through the 4 motor bases shown in figure 3. - Make sure the rods protrude the base slightly and are consistent throughout all 4 arms, and be sure to have the motor wires facing outward. + Make sure the rods protrude the base slightly and are consistent throughout all 4 arms, and be sure to have the motor wires facing outward. - ![Attach arms to motor bases](../../assets/airframes/multicopter/x500_holybro_pixhawk4/x500_step_2_fig3.png) + ![Attach arms to motor bases](../../assets/airframes/multicopter/x500_holybro_pixhawk4/x500_step_2_fig3.png) - _Figure 3_: Attach arms to motor bases + _Figure 3_: Attach arms to motor bases 3. Insert 4 nylon screws and nylon standoffs and attach the power module PM07 to the bottom plate using 4 nylon nuts as shown in Figures 4. - ![Attach power module](../../assets/airframes/multicopter/x500_holybro_pixhawk4/power_module.jpg) + ![Attach power module](../../assets/airframes/multicopter/x500_holybro_pixhawk4/power_module.jpg) - _Figure 4_: Attach power module + _Figure 4_: Attach power module 4. Feed the 4 motor ESCs through each of the arms and connect the 3-wires end to the motors shown in Figure 5. - + - _Figure 5_: Connect motors + _Figure 5_: Connect motors 5. Connect the ESCs power wires onto the power module PM07, black->black and red->red, ESC PWM signal wires goes to "FMU-PWM-Out". - Make sure you connect the motor ESC PWM wires in the correct order. - Refer to Figure 7 for airframe motor number and connect to the corresponding number on the PM07 board. + Make sure you connect the motor ESC PWM wires in the correct order. + Refer to Figure 7 for airframe motor number and connect to the corresponding number on the PM07 board. - ![ESC power module and signal wiring](../../assets/airframes/multicopter/x500_holybro_pixhawk4/pm07_pwm.jpg) - _Figure 7_: ESC power module and signal wiring + ![ESC power module and signal wiring](../../assets/airframes/multicopter/x500_holybro_pixhawk4/pm07_pwm.jpg) + _Figure 7_: ESC power module and signal wiring - The color on top of the motor indicate the spin direction (figure 7-1), black tip is clockwise, and white tip is counter-clockwise. - Make sure the follow the px4 quadrotor x airframe reference for motor direction (figure 7-2). + The color on top of the motor indicate the spin direction (figure 7-1), black tip is clockwise, and white tip is counter-clockwise. + Make sure the follow the px4 quadrotor x airframe reference for motor direction (figure 7-2). - + - _Figure 7_: Motor order/direction diagram + _Figure 7_: Motor order/direction diagram - + - _Figure 7-1_: Motor direction + _Figure 7-1_: Motor direction 6. Connect the 10 pin cables to FMU-PWM-in, the 6 pin cables to the PWR1 on the PM07 power module. - ![Flight controller/Power module PWM and Power connections](../../assets/airframes/multicopter/x500_holybro_pixhawk4/pm07_cable.jpg) + ![Flight controller/Power module PWM and Power connections](../../assets/airframes/multicopter/x500_holybro_pixhawk4/pm07_cable.jpg) - _Figure 8_: Power module PWM and power wiring + _Figure 8_: Power module PWM and power wiring 7. If you want to mount the GPS on the top plate, you can now secure the GPS mount onto the top plate using 4 screws and nuts. - + - _Figure 9_: Secure GPS mount onto top plate + _Figure 9_: Secure GPS mount onto top plate 8. Feed the PM07 cables through the top plate. - Connect the top and bottom plate by using 4 U-shaped nylon straps, screws, and nuts on each side, ensure that the motor ESC cables are inside the U-shape nylon straps like Figure 10, keep the nut loose. + Connect the top and bottom plate by using 4 U-shaped nylon straps, screws, and nuts on each side, ensure that the motor ESC cables are inside the U-shape nylon straps like Figure 10, keep the nut loose. - + - _Figure 10-1_: Feed power module cables through top plate + _Figure 10-1_: Feed power module cables through top plate - + - _Figure 10-2_: Connecting top and bottom plate + _Figure 10-2_: Connecting top and bottom plate 9. Push the arm tubes a bit into the frame and make sure the amount of protrusion (red square from Figure 11) are consistent on all 4 arms. - Ensure all the motors are pointed directly upward, then tighten all the nuts and screws. + Ensure all the motors are pointed directly upward, then tighten all the nuts and screws. - ![Arms 3](../../assets/airframes/multicopter/x500_holybro_pixhawk4/x500_fig16.jpg) + ![Arms 3](../../assets/airframes/multicopter/x500_holybro_pixhawk4/x500_fig16.jpg) 10. Put the hanger gaskets into the 4 hangers and mount them onto the bottom plate using 8 hex screws (Figure 11). - The screw holes are noted by the white arrow in Figure 12. - We recommend tilting the drone sideway to make the installation easier. + The screw holes are noted by the white arrow in Figure 12. + We recommend tilting the drone sideway to make the installation easier. - + - _Figure 11_: Hanger gaskets + _Figure 11_: Hanger gaskets - ![Battery Mount 4](../../assets/airframes/multicopter/x500_holybro_pixhawk4/x500_fig10.jpg) + ![Battery Mount 4](../../assets/airframes/multicopter/x500_holybro_pixhawk4/x500_fig10.jpg) - _Figure 12_: Screw holes + _Figure 12_: Screw holes 11. Insert the slide bars onto the hanger rings (Figure 13). - Assemble the battery mount and platform board and mount them onto the slide bars as shown in Figure 14. + Assemble the battery mount and platform board and mount them onto the slide bars as shown in Figure 14. - ![Battery Mount 2: Slide bars](../../assets/airframes/multicopter/x500_holybro_pixhawk4/x500_fig8.png) + ![Battery Mount 2: Slide bars](../../assets/airframes/multicopter/x500_holybro_pixhawk4/x500_fig8.png) - _Figure 13_: Slide bars + _Figure 13_: Slide bars - + - _Figure 14_: Battery mount on slide bars + _Figure 14_: Battery mount on slide bars 12. Mount the landing gear onto the bottom plate. - We recommend tilting the drone sideway to make this installation process easier. + We recommend tilting the drone sideway to make this installation process easier. - ![Landing Gear](../../assets/airframes/multicopter/x500_holybro_pixhawk4/x500_fig5.jpg) + ![Landing Gear](../../assets/airframes/multicopter/x500_holybro_pixhawk4/x500_fig5.jpg) - _Figure 15_: Landing Gear + _Figure 15_: Landing Gear 13. 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 16). + Make sure the arrow on the gps is pointing forward (Figure 16). - + - _Figure 16_: GPS and mast + _Figure 16_: GPS and mast 14. Mount the telemetry radio onto the top plate. - Plug the telemetry cable into `TELEM1` port and GPS module to `GPS MODULE` port on the flight controller. - Plug the cable from PM07 `FMU-PWM-in` to `I/O-PWM-out`on the FC and PM07 `PWR1` to `POWER1` on the FC, as shown in Figure 17. + Plug the telemetry cable into `TELEM1` port and GPS module to `GPS MODULE` port on the flight controller. + Plug the cable from PM07 `FMU-PWM-in` to `I/O-PWM-out`on the FC and PM07 `PWR1` to `POWER1` on the FC, as shown in Figure 17. - ![Pixhawk 4 wiring 1](../../assets/airframes/multicopter/x500_holybro_pixhawk4/fc_connections.jpg) + ![Pixhawk 4 wiring 1](../../assets/airframes/multicopter/x500_holybro_pixhawk4/fc_connections.jpg) - _Figure 17_: Mount telemetry radio/plug in PWM and Power cables to Flight controller. + _Figure 17_: Mount telemetry radio/plug in PWM and Power cables to Flight controller. Please refer to [Pixhawk 4 Quick Start](../assembly/quick_start_pixhawk4.md) for more information. diff --git a/docs/zh/frames_multicopter/holybro_x500v2_pixhawk6c.md b/docs/zh/frames_multicopter/holybro_x500v2_pixhawk6c.md index 3b07a691d6..a7a4bec9bb 100644 --- a/docs/zh/frames_multicopter/holybro_x500v2_pixhawk6c.md +++ b/docs/zh/frames_multicopter/holybro_x500v2_pixhawk6c.md @@ -18,21 +18,21 @@ This topic provides full instructions for building the [Holybro X500 V2 ARF Kit] **Screw**- Sunk Screw M2.5\*6 12pcs 1. Insert the hanger rubber ring gasket in each of their respective hangers. - Do not use sharp objects to press the rubbers inside. + Do not use sharp objects to press the rubbers inside. - [![Assembly1](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly1.png)](https://www.youtube.com/watch?v=4Tid-FCP_aI) + [![Assembly1](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly1.png)](https://www.youtube.com/watch?v=4Tid-FCP_aI) 2. Take the battery mounting board and screw it with the slide bar clip using the Sunk Screw M2.5\*6. - [![Assembly2](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly2.png)](https://youtu.be/9E-rld6tPWQ) + [![Assembly2](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly2.png)](https://youtu.be/9E-rld6tPWQ) 3. Screw 4 hangers to the Platform Board using Sunk Screw M2.5\*6. - [![Assembly3](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly3.png)](https://youtu.be/4qIBABc9KsY)) + [![Assembly3](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly3.png)](https://youtu.be/4qIBABc9KsY)) 4. Take the slide bar and insert 4 hangers to screw to the bottom plate later. - [![Assembly4](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly4.png)](https://youtu.be/CFx6Ct7FCIc)) + [![Assembly4](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly4.png)](https://youtu.be/CFx6Ct7FCIc)) 5. Now insert the battery holder and payload holders assembled in step 2 & 3 @@ -44,11 +44,11 @@ This topic provides full instructions for building the [Holybro X500 V2 ARF Kit] 1. Take the bottom plate and insert 4 M3\*14 screws and fasten the nylon standoffs on the same. - [![Assembly6](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly6.png)](https://youtu.be/IfsMXTr3Uy4) + [![Assembly6](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly6.png)](https://youtu.be/IfsMXTr3Uy4) 2. Place the Power distribution board and use the locknuts to assemble them. The power module PM02 (for Pixhawk 6C) would power this board - [![Assembly7](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly7.png)](https://youtu.be/Qjs6pqarRIY) + [![Assembly7](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly7.png)](https://youtu.be/Qjs6pqarRIY) 3. Use Socket Cap Screws M2.5\*6 and screw the bottom plate on the 4 hangers (that we inserted in the 2 bars on the 3rd step of the payload holder assembly) @@ -56,15 +56,15 @@ This topic provides full instructions for building the [Holybro X500 V2 ARF Kit] 1. To assemble the landing gear, loosen the pre-assembled screws of the Landing Gear-Cross Bar and insert the Landing Gear-Vertical Pole and fasten the same. - [![Assembly8](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly8.png)](https://youtu.be/mU4vm4zyjcY) + [![Assembly8](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly8.png)](https://youtu.be/mU4vm4zyjcY) - [![Assembly9](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly9.png)](https://youtu.be/7REaF3YAqLg) + [![Assembly9](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly9.png)](https://youtu.be/7REaF3YAqLg) 2. Use the Socket Cap Screw M3\*8 to screw the landing gears to the bottom plate - [![Assembly11](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly11.png)](https://youtu.be/iDxzWeyCN54) + [![Assembly11](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly11.png)](https://youtu.be/iDxzWeyCN54) - [![Assembly12](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly12.png)](https://youtu.be/3fNJQraCJx0) + [![Assembly12](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly12.png)](https://youtu.be/3fNJQraCJx0) Because it’s cumbersome to insert the wires once the top plate is assembled, do the wiring beforehand. Although the design is well built such that you can do this later as well. @@ -92,28 +92,28 @@ Note that the ESC connectors are color-coded and must be inserted in the PWM out 1. Putting the arms is quite simple as the motors come pre-assembled. - - Ensure that you have the right numbered arm with its motor on the respective side. + - Ensure that you have the right numbered arm with its motor on the respective side. - [![Assembly15](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly15.png)](https://youtu.be/45KCey3WiJ4) + [![Assembly15](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly15.png)](https://youtu.be/45KCey3WiJ4) - :::tip - Use your allen keys/ any elongated item and insert it on the opposite side of the bolt that you're trying to fasten. + :::tip + Use your allen keys/ any elongated item and insert it on the opposite side of the bolt that you're trying to fasten. ::: 2. Take one arm and insert the rectangle extrusion inside the rectangular hollow on the bottom plate. - [![Assembly16](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly16.png)](https://youtu.be/GOTqmjq9_3s) + [![Assembly16](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly16.png)](https://youtu.be/GOTqmjq9_3s) 3. While inserting the top plate on top of this the 3 piece assembly (bottom plate, top plate & arms) have to screwed using Socket Cap Screw M3\*38 and Flange Locknut M3. 4. Hold one side using the mini cross wrench provided in the developer kit. - [![Assembly17](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly17.png)](https://youtu.be/2rcNVekJQd0) + [![Assembly17](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly17.png)](https://youtu.be/2rcNVekJQd0) 5. Do not fasten any screws before all 3 motors are in place as this might make it difficult while you’re assembling the 3rd and 4th motor. - [![Assembly18](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly18.png)](https://youtu.be/SlKRuNoE_AY) + [![Assembly18](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly18.png)](https://youtu.be/SlKRuNoE_AY) ### Propellers @@ -132,13 +132,13 @@ The following parts can be placed as per usual. 1. Assemble the GPS by following the video. - [![Assembly20](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly20.png)](https://youtu.be/aiFxVJFjlos) + [![Assembly20](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly20.png)](https://youtu.be/aiFxVJFjlos) - This guide uses the GPS mount location suggested in Holybro’s guide. + This guide uses the GPS mount location suggested in Holybro’s guide. 2. Screw the GPS mount’s bottom end on the payload holder side using Locknut M3 & Screw M3\*10 - [![Assembly21](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly21.png)](https://youtu.be/uG5UKy3FrIc) + [![Assembly21](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly21.png)](https://youtu.be/uG5UKy3FrIc) ### Pixhawk 6C diff --git a/docs/zh/frames_vtol/vtol_quadplane_falcon_vertigo_hybrid_rtf_dropix.md b/docs/zh/frames_vtol/vtol_quadplane_falcon_vertigo_hybrid_rtf_dropix.md index c88c3d223c..a24076acec 100644 --- a/docs/zh/frames_vtol/vtol_quadplane_falcon_vertigo_hybrid_rtf_dropix.md +++ b/docs/zh/frames_vtol/vtol_quadplane_falcon_vertigo_hybrid_rtf_dropix.md @@ -67,45 +67,45 @@ The RTF kit requires the following assembly. 1. Spread gorilla glue inside the wing brackets as shown. - ![Add glue on wing brackets](../../assets/airframes/vtol/falcon_vertigo/wing_brackets_glue.jpg) + ![Add glue on wing brackets](../../assets/airframes/vtol/falcon_vertigo/wing_brackets_glue.jpg) 2. Attach the carbon tube in the brackets. The bracket and tube must be aligned using the white mark (as shown in the picture). - ::: info - This is very important because the white mark indicates the center of gravity. + ::: info + This is very important because the white mark indicates the center of gravity. ::: - + 3. The following images show the alignment of rods from other viewpoints: - ![quad motor frame rod alignment from bottom](../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_9_bottom_view_rod_alignment.jpg) - ![quad motor frame rod alignment schematic](../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_11_rod_alignment_schamatic.jpg) + ![quad motor frame rod alignment from bottom](../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_9_bottom_view_rod_alignment.jpg) + ![quad motor frame rod alignment schematic](../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_11_rod_alignment_schamatic.jpg) ### Step 2: Attach the wings 1. Insert both carbon tubes into the fuselage. - + 2. Spread gorilla glue between the two white marks on each tube (indicated by the red arrows). The white mark in the center (blue arrow) will be placed in the center of the fuselage and the other marks on the sides. - + 3. Once the carbon tubes are inside the fuselage, spread gorilla glue on the rest of the tube and attach the wings. 4. The fuselage has two holes for the motor and servo cables. Pass the cables through the holes and then join the wings to the fuselage. - + 5. Within the fuselage connect the signal cables you just passed through from the wings to the ESC using the provided connectors. The ESC are already connected to the motors and set up to turn in the correct order (you will need to connect the ESC PDB to a power module in a later step). - + 6. As with the ESCs, the servos are already installed. Connect the signal cable from the wing (passed through the fuselage) to the flight controller. - + 7. Repeat these steps for the other wing. @@ -123,11 +123,11 @@ General information about connecting Dropix can be found in [Dropix Flight Contr 1. Connect the ESC to the power module using the XT60 connector - + 2. Pass the signals cables through to the flight controller - + #### Motor Wiring @@ -162,7 +162,7 @@ The image below shows back of the dropix flight controller, highlighting the out 3. Connect the throttle motor signal cable from the ESC to the appropriate flight controller auxiliary port. Connect the ESC to the throttle motor. - + 4. Connect the receiver (RC IN). @@ -176,7 +176,7 @@ The sensor inputs, telemetry, buzzer and safety switch are located in the front 1. Connect the telemetry, airspeed sensor, GPS, buzzer and safety switch as shown. - + #### Flight Controller: Connect power module and external USB @@ -184,7 +184,7 @@ The inputs for the USB port, power module and external USB are located on the ri 1. Connect power and USB as shown - + :::tip The external USB is optional. @@ -201,27 +201,27 @@ It is important that nothing obstructs airflow to the Pitot tube. This is critic 1. Install the Pitot tube in the front of the plane - + 2. Secure the connecting tubing and ensure that it is not bent/kinked. - + 3. Connect the tubes to the airspeed sensor. - + #### Install/connect receiver and telemetry module 1. Paste the receiver and telemetry module to the outside of the vehicle frame. - + 2. Connect the receiver to the RC IN port on the _back_ of the dropix, as shown above (also see the [flight controller instructions](#dropix_back)). 3. Connect the telemetry module to the _front_ of the flight controller as shown below (see the [flight controller instructions](#dropix_front) for more detail on the pins). - + @@ -237,7 +237,7 @@ The GPS/Compass module is already mounted on the wing, in the default orientatio 1. Set your flight controller orientation to 270 degrees. - + 2. Secure the controller in place using vibration damping foam. @@ -247,21 +247,21 @@ The final assembly step is to check the vehicle is stable and that the motors ha 1. Check that the motors turn in the correct directions (as in the QuadX diagram below). - + - ::: info - If necessary the servo direction can be reversed using the `Rev Range (for servos)` checkbox associated with each servo output in the QGroundControl [Actuator Output](../config/actuators.md#actuator-outputs) configuration (for servos only) (this sets the [PWM_AUX_REV](../advanced_config/parameter_reference.md#PWM_AUX_REV) or [PWM_AUX_MAIN](../advanced_config/parameter_reference.md#PWM_MAIN_REV) parameter). + ::: info + If necessary the servo direction can be reversed using the `Rev Range (for servos)` checkbox associated with each servo output in the QGroundControl [Actuator Output](../config/actuators.md#actuator-outputs) configuration (for servos only) (this sets the [PWM_AUX_REV](../advanced_config/parameter_reference.md#PWM_AUX_REV) or [PWM_AUX_MAIN](../advanced_config/parameter_reference.md#PWM_MAIN_REV) parameter). ::: 2. Check the vehicle is balanced around the expected centre of gravity - - Hold the vehicle with your fingers at the center of gravity and check that the vehicle remains stable. + - Hold the vehicle with your fingers at the center of gravity and check that the vehicle remains stable. - ![Level Centre of Gravity](../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_57_level_centre_of_gravity.jpg) + ![Level Centre of Gravity](../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_57_level_centre_of_gravity.jpg) - - If the vehicle leans forward or backwards, move the motors to balance it. + - If the vehicle leans forward or backwards, move the motors to balance it. - ![Level Motors](../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_55_level_motors.jpg) + ![Level Motors](../../assets/airframes/vtol/falcon_vertigo/falcon_vertigo_55_level_motors.jpg) ## 配置 @@ -271,7 +271,7 @@ Perform the normal [Basic Configuration](../config/index.md). 1. For [Airframe](../config/airframe.md) select the vehicle group/type as _Standard VTOL_ and the specific vehicle as [Generic Standard VTOL](../airframes/airframe_reference.md#vtol_standard_vtol_generic_standard_vtol) as shown below. - ![QCG - Select Generic Standard VTOL](../../assets/qgc/setup/airframe/px4_frame_generic_standard_vtol.png) + ![QCG - Select Generic Standard VTOL](../../assets/qgc/setup/airframe/px4_frame_generic_standard_vtol.png) 2. Set the [Autopilot Orientation](../config/flight_controller_orientation.md) to `ROTATION_YAW_270` as the autopilot is mounted [sideways](#flight_controller_orientation) with respect to the front of the vehicle. The compass is oriented forward, so you can leave that at the default (`ROTATION_NONE`). diff --git a/docs/zh/frames_vtol/vtol_quadplane_foxtech_loong_2160.md b/docs/zh/frames_vtol/vtol_quadplane_foxtech_loong_2160.md index cc6418299f..08e01c67ec 100644 --- a/docs/zh/frames_vtol/vtol_quadplane_foxtech_loong_2160.md +++ b/docs/zh/frames_vtol/vtol_quadplane_foxtech_loong_2160.md @@ -99,33 +99,33 @@ Use a soldering iron to press the threaded inserts into the 3D-Printed parts. 1. Insert 10x M3 threaded inserts into the baseplate as shown in the picture: - ![Baseplate with threaded inserts](../../assets/airframes/vtol/foxtech_loong_2160/03-baseplate.jpg) + ![Baseplate with threaded inserts](../../assets/airframes/vtol/foxtech_loong_2160/03-baseplate.jpg) 2. Insert 2x M3 threaded inserts into the stack fixture as shown in the picture below: - ![Stack fixture with threaded inserts](../../assets/airframes/vtol/foxtech_loong_2160/04-stack-fixture.jpg) + ![Stack fixture with threaded inserts](../../assets/airframes/vtol/foxtech_loong_2160/04-stack-fixture.jpg) 3. Insert 2x M4 threaded inserts into the fan mount and radio mount as shown in the picture below. - ![Radio-mount](../../assets/airframes/vtol/foxtech_loong_2160/05-radio-mount.jpg) + ![Radio-mount](../../assets/airframes/vtol/foxtech_loong_2160/05-radio-mount.jpg) - If you would like to add a 40mm 5V fan to the fan mount, insert 4x M3 inserts. + If you would like to add a 40mm 5V fan to the fan mount, insert 4x M3 inserts. - ![Fan-mount](../../assets/airframes/vtol/foxtech_loong_2160/06-fan-mount.jpg) + ![Fan-mount](../../assets/airframes/vtol/foxtech_loong_2160/06-fan-mount.jpg) 4. Change the cable connector to a servo connector so it can be plugged into the servo rail to be powered. - ::: info - A fan might be needed if a powerful radio is used. + ::: info + A fan might be needed if a powerful radio is used. ::: - ![Fan-mount with fan](../../assets/airframes/vtol/foxtech_loong_2160/07-fan-mount.jpg) + ![Fan-mount with fan](../../assets/airframes/vtol/foxtech_loong_2160/07-fan-mount.jpg) 5. Remove the original mounting plate from the vehicle. - Tape the cables to the outside of the fuselage. + Tape the cables to the outside of the fuselage. - ![Empty fuselage](../../assets/airframes/vtol/foxtech_loong_2160/08-preparations.jpg) + ![Empty fuselage](../../assets/airframes/vtol/foxtech_loong_2160/08-preparations.jpg) 6. Slide the baseplate into the vehicle. @@ -142,9 +142,9 @@ The 40A power module provides power for the avionics when using Skynode (and com 1. Remove the case from the 40A PM. 2. Screw the PM with 2x M2x6mm to the bottom of the baseplate. 3. Create a cable to extend the XT60 connector to an XT30 that is mounted on the baseplate. - With that, the 6S battery power can be directly plugged into the XT30 connector with the pre-configured cable that comes with the vehicle. + With that, the 6S battery power can be directly plugged into the XT30 connector with the pre-configured cable that comes with the vehicle. - ![40A Power Module installation](../../assets/airframes/vtol/foxtech_loong_2160/10-40a-power-module.jpg) + ![40A Power Module installation](../../assets/airframes/vtol/foxtech_loong_2160/10-40a-power-module.jpg) If necessary, the 10V output of the radio port on the PM can also be exposed via an XT30 that can be mounted next to the 6S battery input XT60. @@ -153,17 +153,17 @@ If necessary, the 10V output of the radio port on the PM can also be exposed via #### Pitot Tube 1. The sensor can be installed with 2x M3x16mm screws in the front right corner of the baseplate. - Take care that the connector is facing the center of the fuselage. + Take care that the connector is facing the center of the fuselage. - ![Mounted airspeed sensor](../../assets/airframes/vtol/foxtech_loong_2160/11-airspeed-sensor.jpg) + ![Mounted airspeed sensor](../../assets/airframes/vtol/foxtech_loong_2160/11-airspeed-sensor.jpg) - Only the front tube (not as shown in the picture) is used; the other tube can be removed since our experience showed that the pressure inside the fuselage is sufficient as static pressure. + Only the front tube (not as shown in the picture) is used; the other tube can be removed since our experience showed that the pressure inside the fuselage is sufficient as static pressure. 2. When the stack is mounted inside the fuselage, the tube coming from the wing and the one from the airspeed sensor need to be spliced together. - Use some spit (that's the easiest way) to push them together and afterward use a heat shrink tube to reinforce the connection. + Use some spit (that's the easiest way) to push them together and afterward use a heat shrink tube to reinforce the connection. - :::warning - Use a heat source carefully since the foam starts to melt at high temperatures. + :::warning + Use a heat source carefully since the foam starts to melt at high temperatures. ::: @@ -175,22 +175,22 @@ If no lidar is mounted you should disable using fixed-wing actuation in hover to ::: 1. Mark the location to install the lidar with some tape or a pen. - Cut a hole inside the PVC shell and the foam, so that the lidar fits in place. + Cut a hole inside the PVC shell and the foam, so that the lidar fits in place. - ![Prepared lidar hole](../../assets/airframes/vtol/foxtech_loong_2160/12-lidar-01.jpg) + ![Prepared lidar hole](../../assets/airframes/vtol/foxtech_loong_2160/12-lidar-01.jpg) 2. Secure the lidar with hot glue. - ![Installed lidar](../../assets/airframes/vtol/foxtech_loong_2160/13-lidar-02.jpg) + ![Installed lidar](../../assets/airframes/vtol/foxtech_loong_2160/13-lidar-02.jpg) #### GPS/Compass 1. Use double sided tape to mount the GPS in the rear of the vehicle underneath the rear latch. - ![Installed GPS](../../assets/airframes//vtol/foxtech_loong_2160/14-gps.jpg) + ![Installed GPS](../../assets/airframes//vtol/foxtech_loong_2160/14-gps.jpg) - The arrow on the GPS for the orientation can be ignored. - The orientation will be detected by the flight controller during the calibration. + The arrow on the GPS for the orientation can be ignored. + The orientation will be detected by the flight controller during the calibration. ### Flight Controller @@ -203,15 +203,15 @@ Install either the Pixhawk or Skynode onto the baseplate. #### Skynode 1. Use 4x M3x8 screws to mount the Skynode to the baseplate. - Make sure that the top of the "A" is facing to the front of the vehicle. + Make sure that the top of the "A" is facing to the front of the vehicle. 2. Plug the 40A Power Module into the upper one of the two power connectors. 3. Plug one (or if needed two) USB adapters into the 4-pin JST-GH connectors into the back of the Skynode and feed them to the front of the plate. - Fix the cables with zip ties in place. + Fix the cables with zip ties in place. 4. Tape a I2C splitter to the front right side of the baseplate (The splitter can be used to plug in ETH devices such as a radio link.) 5. Connect the I2C splitter with the ETH port in the back of the Skynode. 6. Plug in the two 40-pin cables into the front of the Skynode. 7. Plug in the USB-C extension cable and bend it over to the front. - The bend needs to be very tight, so that the plate will fit into the vehicle. + The bend needs to be very tight, so that the plate will fit into the vehicle. ![Installed Skynode](../../assets/airframes/vtol/foxtech_loong_2160/15-skynode.jpg) @@ -223,17 +223,17 @@ Install either the Pixhawk or Skynode onto the baseplate. 1. Tape the Skynode LTE antennas to the side of the fuselage as shown in the picture: - ![LTE-Antennas](../../assets/airframes/vtol/foxtech_loong_2160/16-lte-antennas.jpg) + ![LTE-Antennas](../../assets/airframes/vtol/foxtech_loong_2160/16-lte-antennas.jpg) 2. If you are using a radio telemetry module you can mount the antennas to the top of the fuselage. - In the front you can mount the antenna extension cable directly. + In the front you can mount the antenna extension cable directly. - ![WIFI-Antennas-Front](../../assets/airframes/vtol/foxtech_loong_2160/17-antenna-front.jpg) + ![WIFI-Antennas-Front](../../assets/airframes/vtol/foxtech_loong_2160/17-antenna-front.jpg) - In the back you can use the 3D-Printed antenna adapter. - The adapter can be glued in place with hot glue. + In the back you can use the 3D-Printed antenna adapter. + The adapter can be glued in place with hot glue. - ![WIFI-Antenna-Back](../../assets/airframes/vtol/foxtech_loong_2160/19-rear-antenna.jpg) + ![WIFI-Antenna-Back](../../assets/airframes/vtol/foxtech_loong_2160/19-rear-antenna.jpg) ### 12S Power Module diff --git a/docs/zh/frames_vtol/vtol_tiltrotor_omp_hobby_zmo_fpv.md b/docs/zh/frames_vtol/vtol_tiltrotor_omp_hobby_zmo_fpv.md index d61a2e32b8..8d45e5c91b 100644 --- a/docs/zh/frames_vtol/vtol_tiltrotor_omp_hobby_zmo_fpv.md +++ b/docs/zh/frames_vtol/vtol_tiltrotor_omp_hobby_zmo_fpv.md @@ -93,7 +93,7 @@ Flight controller and wing connectors removed from the vehicle. ### ESCs 1. Unsolder the ESC PWM-signal and ground pins and solder some servo extension wire to the pins. - The cable should be long enough to connect the wire to the FMU pins of the flight controller. + The cable should be long enough to connect the wire to the FMU pins of the flight controller. 2. Unsolder the 3 female banana plug connectors of the rear motor (might not be necessary for the Pixhawk 6 integration). @@ -103,17 +103,17 @@ Flight controller and wing connectors removed from the vehicle. 5. Solder signal and GND wires to the PWM input ot the ESC. - ![ESC 01](../../assets/airframes/vtol/omp_hobby_zmo_fpv/esc-01.jpg) + ![ESC 01](../../assets/airframes/vtol/omp_hobby_zmo_fpv/esc-01.jpg) 6. Remove the female banana plug on the ESC. - This will give you more space to install the flight controller. + This will give you more space to install the flight controller. - ![ESC 02](../../assets/airframes/vtol/omp_hobby_zmo_fpv/esc-02.jpg) + ![ESC 02](../../assets/airframes/vtol/omp_hobby_zmo_fpv/esc-02.jpg) 7. Solder the rear motor wires to the ESC. - Make sure to connect such that the motor spins in the correct direction. + Make sure to connect such that the motor spins in the correct direction. - ![ESC 03](../../assets/airframes/vtol/omp_hobby_zmo_fpv/esc-03.jpg) + ![ESC 03](../../assets/airframes/vtol/omp_hobby_zmo_fpv/esc-03.jpg) ### Wing Connector @@ -122,9 +122,9 @@ This step is not essential, but makes the handling much easier and there is one 1. Glue the wing connectors into the 3D-Printed part with hot-glue or 5 min epoxy. 2. Glue the 3D-printed part with the connector in to the fuselage. - Make sure to properly align the connector while the glue cures. + Make sure to properly align the connector while the glue cures. - The easiest way to align the connector is to mount the wing while the glue is curing, but make sure that no glue is between the fuselage and the wing, otherwise the wing might get stuck. + The easiest way to align the connector is to mount the wing while the glue is curing, but make sure that no glue is between the fuselage and the wing, otherwise the wing might get stuck. The connector glued into the 3D-Printed part @@ -137,58 +137,58 @@ The connector glued into the fuselage. Make sure to properly align the connector ### Pixhawk Adapter Boards and BEC 1. Cut the foam as shown in the pictures to create space to mount the Pixhawk adapter boards and BEC with double sided tape. - The FMU board is placed on the left side (in flight direction) of the fuselage. - Solder a servo connector and a cable for the battery voltage to the BEC. + The FMU board is placed on the left side (in flight direction) of the fuselage. + Solder a servo connector and a cable for the battery voltage to the BEC. - ![Foam cutout 01](../../assets/airframes/vtol/omp_hobby_zmo_fpv/foam-cut-01.png) - ![Pixhawk adapter board mount 01](../../assets/airframes/vtol/omp_hobby_zmo_fpv/pixhawk-adapter-01.jpg) + ![Foam cutout 01](../../assets/airframes/vtol/omp_hobby_zmo_fpv/foam-cut-01.png) + ![Pixhawk adapter board mount 01](../../assets/airframes/vtol/omp_hobby_zmo_fpv/pixhawk-adapter-01.jpg) 2. Prepare the BEC to connect to the IO board and to the battery. - The BEC can also be soldered directly to the battery pads of the ESC. + The BEC can also be soldered directly to the battery pads of the ESC. - ![BEC preparation](../../assets/airframes/vtol/omp_hobby_zmo_fpv/bec-01.jpg) + ![BEC preparation](../../assets/airframes/vtol/omp_hobby_zmo_fpv/bec-01.jpg) 3. Mount the BEC with double sided tape. - ![BEC mounting](../../assets/airframes/vtol/omp_hobby_zmo_fpv/bec-02.jpg) + ![BEC mounting](../../assets/airframes/vtol/omp_hobby_zmo_fpv/bec-02.jpg) ### Cables 1. Cut the connectors off the servos and solder the servo extension cables to the cables. - Make sure that the cables are long enough to reach the Pixhawk adapter board. - If you own a crimp tool, then you can also directly add the connectors without soldering. + Make sure that the cables are long enough to reach the Pixhawk adapter board. + If you own a crimp tool, then you can also directly add the connectors without soldering. 2. Plug the servo cables into the adapter IO board in the following order: - - 1 - Aileron left - - 2 - Aileron right - - 3 - V-Tail left - - 4 - V-Tail right - - 5 - Tilt left - - 6 - Tilt right + - 1 - Aileron left + - 2 - Aileron right + - 3 - V-Tail left + - 4 - V-Tail right + - 5 - Tilt left + - 6 - Tilt right 3. Plug in the motor signal cables into the FMU adapter board in the following order: - - 1 - Front left - - 2 - Front right - - 3 - Rear + - 1 - Front left + - 2 - Front right + - 3 - Rear ### 传感器 #### Pitot Tube 1. First check if the pitot tube fits into the 3D-Printed mount. - If this is the case, glue the pitot tube mount into place. + If this is the case, glue the pitot tube mount into place. - To align the tube feed it through the second hole from the right of the FPV front plate. - The mount will enable you to push the tube back into the fuselage to protect it during transportation and handling. - The sensor unit can be mounted on top of the 3D-Printed mount with double sided tape. + To align the tube feed it through the second hole from the right of the FPV front plate. + The mount will enable you to push the tube back into the fuselage to protect it during transportation and handling. + The sensor unit can be mounted on top of the 3D-Printed mount with double sided tape. 2. Glue the 3D-Printed mount into place. - ![Pitot tube 01](../../assets/airframes/vtol/omp_hobby_zmo_fpv/pitot-tube-01.png) + ![Pitot tube 01](../../assets/airframes/vtol/omp_hobby_zmo_fpv/pitot-tube-01.png) 3. The sensor can be mounted on top of the 3D-Printed mount. - ![Pitot tube 02](../../assets/airframes/vtol/omp_hobby_zmo_fpv/pitot-tube-02.png) + ![Pitot tube 02](../../assets/airframes/vtol/omp_hobby_zmo_fpv/pitot-tube-02.png) #### Lidar @@ -209,9 +209,9 @@ To mount the GPS: 2. Take the GPS out of the plastic case and unplug the connector. 3. Feed the cable through the carbon spar. 4. Glue the 3D-Printed part with 5 min epoxy in place. - ![Glue the GPS mount into place](../../assets/airframes/vtol/omp_hobby_zmo_fpv/gps-01.jpg) + ![Glue the GPS mount into place](../../assets/airframes/vtol/omp_hobby_zmo_fpv/gps-01.jpg) 5. After the glue has cured, screw the GPS with 4x M2.5x10 screws to the plate. - ![Screw the GPS to the mount2](../../assets/airframes/vtol/omp_hobby_zmo_fpv/gps-02.jpg) + ![Screw the GPS to the mount2](../../assets/airframes/vtol/omp_hobby_zmo_fpv/gps-02.jpg) #### USB Camera @@ -219,9 +219,9 @@ To mount the GPS: 2. Cut the USB-Adapter cable to be 25 cm and solder the two cables together. 3. To install the camera you need to cut a hole into the foam of the wall. - ![USB Camera 01: Hole to feed the USB cable through the wall.](../../assets/airframes/vtol/omp_hobby_zmo_fpv/camera-01.jpg) + ![USB Camera 01: Hole to feed the USB cable through the wall.](../../assets/airframes/vtol/omp_hobby_zmo_fpv/camera-01.jpg) - Then you can mount the camera with double sided tape to the wall. + Then you can mount the camera with double sided tape to the wall. ### Flight Controller @@ -237,7 +237,7 @@ If a Skynode is used: 1. Place it at the on top of the ESCs and mark the 2 rear mounting locations on the injection molded plastic part of the ZMO. 2. Remove the Skynode from the vehicle and drill 2 holes with a 2.8 mm drill bit into the plastic part. - ![Mounting holes for the Skynode in the back](../../assets/airframes/vtol/omp_hobby_zmo_fpv/flight-controller-01.jpg) + ![Mounting holes for the Skynode in the back](../../assets/airframes/vtol/omp_hobby_zmo_fpv/flight-controller-01.jpg) 3. Put the Skynode back into place and screw it down with 2x M3x10 screws. Another option is to add some threaded inserts into the holes. @@ -245,9 +245,9 @@ Since the injection molded part of the ZMO is very thin, they need to be glued i 1. Screw the front Skynode mount with 2x M3x10 screws at the Skynode. 2. Then add some 5 min epoxy at the bottom of the mount and put a weight on top of the Skynode until the glue is cured. - To access the 2 mounting screws at the front, poke 2 holes from the top through the foam. + To access the 2 mounting screws at the front, poke 2 holes from the top through the foam. - ![Skynode mount in the front](../../assets/airframes/vtol/omp_hobby_zmo_fpv/flight-controller-02.jpg) + ![Skynode mount in the front](../../assets/airframes/vtol/omp_hobby_zmo_fpv/flight-controller-02.jpg) ### Antennas and RC Receiver @@ -258,14 +258,14 @@ An inexpensive example would be a [SiK Telemetry Radio](../telemetry/sik_radio.m ::: 1. One LTE antenna can be installed on the bottom of the vehicle. - For that you can feed the antenna wire through the opening for the ESC heat-sink. + For that you can feed the antenna wire through the opening for the ESC heat-sink. - ![LTE antenna 01](../../assets/airframes/vtol/omp_hobby_zmo_fpv/lte-antenna-01.jpg) + ![LTE antenna 01](../../assets/airframes/vtol/omp_hobby_zmo_fpv/lte-antenna-01.jpg) 2. The second antenna can be installed on the inside of the vehicle on the left side of the battery compartment. - The RC receiver can also be placed at the left side of the battery compartment. + The RC receiver can also be placed at the left side of the battery compartment. - ![LTE antenna 2 and RC receiver](../../assets/airframes/vtol/omp_hobby_zmo_fpv/lte-antenna-02.jpg) + ![LTE antenna 2 and RC receiver](../../assets/airframes/vtol/omp_hobby_zmo_fpv/lte-antenna-02.jpg) ## 软件设置 @@ -332,9 +332,9 @@ If motors/servos were connected to different outputs than suggested, you will ne 1. Switch the vehicle into manual mode (either via the flight mode switch or type `commander mode manual` into the MAVLink shell). 2. Check if the motors point upwards. - If the motors point forwards then their associated Tilt servos need to be reversed (selecting the checkbox next to each servo). + If the motors point forwards then their associated Tilt servos need to be reversed (selecting the checkbox next to each servo). - ![Tilt Servo adjustment](../../assets/airframes/vtol/omp_hobby_zmo_fpv/tilt-limits-01.jpg) + ![Tilt Servo adjustment](../../assets/airframes/vtol/omp_hobby_zmo_fpv/tilt-limits-01.jpg) 3. Adjust the minimum (or, if revesed: maximum) value such that the rotor thrust can point backward (needed for proper yaw allocation in Multicopter mode). diff --git a/docs/zh/gps_compass/index.md b/docs/zh/gps_compass/index.md index d4d5a030bd..660cf102b3 100644 --- a/docs/zh/gps_compass/index.md +++ b/docs/zh/gps_compass/index.md @@ -145,21 +145,21 @@ To ensure the port is set up correctly perform a [Serial Port Configuration](../ The following steps show how to configure a secondary GPS on the `GPS 2` port in _QGroundControl_: 1. [Find and set](../advanced_config/parameters.md) the parameter [GPS_2_CONFIG](../advanced_config/parameter_reference.md#GPS_2_CONFIG) to **GPS 2**. - - Open _QGroundControl_ and navigate to the **Vehicle Setup > Parameters** section. - - Select the **GPS** tab, then open the [GPS_2_CONFIG](../advanced_config/parameter_reference.md#GPS_2_CONFIG) parameter and select `GPS 2` from the dropdown list. + - Open _QGroundControl_ and navigate to the **Vehicle Setup > Parameters** section. + - Select the **GPS** tab, then open the [GPS_2_CONFIG](../advanced_config/parameter_reference.md#GPS_2_CONFIG) parameter and select `GPS 2` from the dropdown list. - ![QGC Serial Example](../../assets/peripherals/qgc_serial_config_example.png) + ![QGC Serial Example](../../assets/peripherals/qgc_serial_config_example.png) 2. Reboot the vehicle in order to make the other parameters visible. 3. Select the **Serial** tab, and open the [SER_GPS2_BAUD](../advanced_config/parameter_reference.md#SER_GPS2_BAUD) parameter (`GPS 2` port baud rate): set it to _Auto_ (or 115200 for the Trimble). - ![QGC Serial Baudrate Example](../../assets/peripherals/qgc_serial_baudrate_example.png) + ![QGC Serial Baudrate Example](../../assets/peripherals/qgc_serial_baudrate_example.png) After setting up the second GPS port: 1. Configure the ECL/EKF2 estimator to blend data from both GPS systems. - For detailed instructions see: [Using the ECL EKF > Dual Receivers](../advanced_config/tuning_the_ecl_ekf.md#dual-receivers). + For detailed instructions see: [Using the ECL EKF > Dual Receivers](../advanced_config/tuning_the_ecl_ekf.md#dual-receivers). ### DroneCAN GNSS Configuration diff --git a/docs/zh/gps_compass/rtk_gps.md b/docs/zh/gps_compass/rtk_gps.md index ced9490167..8ccdbf22ec 100644 --- a/docs/zh/gps_compass/rtk_gps.md +++ b/docs/zh/gps_compass/rtk_gps.md @@ -122,35 +122,35 @@ This should be set by default, but if not, follow the [MAVLink2 configuration in The RTK GPS connection is essentially plug and play: 1. Start _QGroundControl_ and attach the base RTK GPS via USB to the ground station. - 电脑会自动识别设备。 + 电脑会自动识别设备。 2. Start the vehicle and make sure it is connected to _QGroundControl_. - :::tip - _QGroundControl_ displays an RTK GPS status icon in the top icon bar while an RTK GPS device is connected (in addition to the normal GPS status icon). - The icon is red while RTK is being set up, and then changes to white once RTK GPS is active. - You can click the icon to see the current state and RTK accuracy. + :::tip + _QGroundControl_ displays an RTK GPS status icon in the top icon bar while an RTK GPS device is connected (in addition to the normal GPS status icon). + The icon is red while RTK is being set up, and then changes to white once RTK GPS is active. + You can click the icon to see the current state and RTK accuracy. ::: 3. _QGroundControl_ then starts the RTK setup process (known as "Survey-In"). - 测量是一个获得基站准确位置的设置过程。 - The process typically takes several minutes (it ends after reaching the minimum time and accuracy specified in the [RTK settings](#rtk-gps-settings)). + 测量是一个获得基站准确位置的设置过程。 + The process typically takes several minutes (it ends after reaching the minimum time and accuracy specified in the [RTK settings](#rtk-gps-settings)). - 你也可以点击 RTK状态按钮查看。 + 你也可以点击 RTK状态按钮查看。 - ![survey-in](../../assets/qgc/setup/rtk/qgc_rtk_survey-in.png) + ![survey-in](../../assets/qgc/setup/rtk/qgc_rtk_survey-in.png) 4. 测量完成: - - The RTK GPS icon changes to white and _QGroundControl_ starts to stream position data to the vehicle: + - The RTK GPS icon changes to white and _QGroundControl_ starts to stream position data to the vehicle: - ![RTK streaming](../../assets/qgc/setup/rtk/qgc_rtk_streaming.png) + ![RTK streaming](../../assets/qgc/setup/rtk/qgc_rtk_streaming.png) - - Vehicle GPS switches to RTK mode. - The new mode is displayed in the _normal_ GPS status icon (`3D RTK GPS Lock`): + - Vehicle GPS switches to RTK mode. + The new mode is displayed in the _normal_ GPS status icon (`3D RTK GPS Lock`): - ![RTK GPS Status](../../assets/qgc/setup/rtk/qgc_rtk_gps_status.png) + ![RTK GPS Status](../../assets/qgc/setup/rtk/qgc_rtk_gps_status.png) ### Configuring GPS as Yaw/Heading Source diff --git a/docs/zh/hardware/board_support_guide.md b/docs/zh/hardware/board_support_guide.md index e9f3309f16..f54739bde3 100644 --- a/docs/zh/hardware/board_support_guide.md +++ b/docs/zh/hardware/board_support_guide.md @@ -33,8 +33,8 @@ The general requirements for all supported boards are: 6. Adequate documentation, which includes, but is not limited to: - A complete pinout made available publicly that maps PX4 pin definitions to: - 1. Microcontroller pins - 2. Physical external connectors + 1. Microcontroller pins + 2. Physical external connectors - A block diagram or full schematic of the main components (sensors, power supply, etc.) that allows to infer software requirements and boot order - A manual of the finished product detailing its use diff --git a/docs/zh/hardware/porting_guide_nuttx.md b/docs/zh/hardware/porting_guide_nuttx.md index fb1c22d0ac..dbdf5c54b6 100644 --- a/docs/zh/hardware/porting_guide_nuttx.md +++ b/docs/zh/hardware/porting_guide_nuttx.md @@ -62,30 +62,30 @@ First you will need a bootloader, which depends on the hardware target: 2. Download the source code and make sure you can build an existing target: - ```sh - git clone --recursive https://github.com/PX4/PX4-Autopilot.git - cd PX4-Autopilot - make px4_fmu-v5 - ``` + ```sh + git clone --recursive https://github.com/PX4/PX4-Autopilot.git + cd PX4-Autopilot + make px4_fmu-v5 + ``` 3. Find an existing target that uses the same (or a closely related) CPU type and copy it. - For example for STM32F7: + For example for STM32F7: - ```sh - mkdir boards/manufacturer - cp -r boards/px4/fmu-v5 boards/manufacturer/my-target-v1 - ``` + ```sh + mkdir boards/manufacturer + cp -r boards/px4/fmu-v5 boards/manufacturer/my-target-v1 + ``` - Change **manufacturer** to the manufacturer name and **my-target-v1** to your board name. + Change **manufacturer** to the manufacturer name and **my-target-v1** to your board name. Next you need to go through all files under **boards/manufacturer/my-target-v1** and update them according to your board. 1. **firmware.prototype**: update the board ID and name 2. **default.px4board**: update the **VENDOR** and **MODEL** to match the directory names (**my-target-v1**). - Configure the serial ports. + Configure the serial ports. 3. Configure NuttX (**defconfig**) via `make manufacturer_my-target-v1 menuconfig`: Adjust the CPU and chip, configure the peripherals (UART's, SPI, I2C, ADC). 4. **nuttx-config/include/board.h**: Configure the NuttX pins. - For all peripherals with multiple pin options, NuttX needs to know the pin. - They are defined in the chip-specific pinmap header file, for example [stm32f74xx75xx_pinmap.h](https://github.com/PX4/NuttX/blob/px4_firmware_nuttx-8.2/arch/arm/src/stm32f7/hardware/stm32f74xx75xx_pinmap.h). + For all peripherals with multiple pin options, NuttX needs to know the pin. + They are defined in the chip-specific pinmap header file, for example [stm32f74xx75xx_pinmap.h](https://github.com/PX4/NuttX/blob/px4_firmware_nuttx-8.2/arch/arm/src/stm32f7/hardware/stm32f74xx75xx_pinmap.h). 5. **src**: go through all files under **src** and update them as needed, in particular **board_config.h**. 6. **init/rc.board_sensors**: start the sensors that are attached to the board. diff --git a/docs/zh/middleware/uxrce_dds.md b/docs/zh/middleware/uxrce_dds.md index 365473334f..3a6ad2baf6 100644 --- a/docs/zh/middleware/uxrce_dds.md +++ b/docs/zh/middleware/uxrce_dds.md @@ -118,78 +118,78 @@ To build the agent within ROS: 1. Create a workspace directory for the agent: - ```sh - mkdir -p ~/px4_ros_uxrce_dds_ws/src - ``` + ```sh + mkdir -p ~/px4_ros_uxrce_dds_ws/src + ``` 2. Clone the source code for the eProsima [Micro-XRCE-DDS-Agent](https://github.com/eProsima/Micro-XRCE-DDS-Agent) to the `/src` directory (the `main` branch is cloned by default): - ```sh - cd ~/px4_ros_uxrce_dds_ws/src - git clone -b v2.4.2 https://github.com/eProsima/Micro-XRCE-DDS-Agent.git - ``` + ```sh + cd ~/px4_ros_uxrce_dds_ws/src + git clone -b v2.4.2 https://github.com/eProsima/Micro-XRCE-DDS-Agent.git + ``` 3. Source the ROS 2 development environment, and compile the workspace using `colcon`: - :::: tabs + :::: tabs - ::: tab humble + ::: tab humble - ```sh - source /opt/ros/humble/setup.bash - colcon build - ``` + ```sh + source /opt/ros/humble/setup.bash + colcon build + ``` ::: - ::: tab foxy + ::: tab foxy - ```sh - source /opt/ros/foxy/setup.bash - colcon build - ``` + ```sh + source /opt/ros/foxy/setup.bash + colcon build + ``` ::: - :::: + :::: - This builds all the folders under `/src` using the sourced toolchain. + This builds all the folders under `/src` using the sourced toolchain. To run the micro XRCE-DDS agent in the workspace: 1. Source the `local_setup.bash` to make the executables available in the terminal (also `setup.bash` if using a new terminal). - :::: tabs + :::: tabs - ::: tab humble + ::: tab humble - ```sh - source /opt/ros/humble/setup.bash - source install/local_setup.bash - ``` + ```sh + source /opt/ros/humble/setup.bash + source install/local_setup.bash + ``` ::: - ::: tab foxy + ::: tab foxy - ```sh - source /opt/ros/foxy/setup.bash - source install/local_setup.bash - ``` + ```sh + source /opt/ros/foxy/setup.bash + source install/local_setup.bash + ``` ::: - :::: + :::: 1) 启动代理并设置以连接运行在模拟器上的 uXRCE-DDS客户端(Client): - ```sh - MicroXRCEAgent udp4 -p 8888 - ``` + ```sh + MicroXRCEAgent udp4 -p 8888 + ``` ## Starting Agent and Client @@ -466,15 +466,15 @@ Each (`topic`,`type`) pairs defines: 1. A new `publication`, `subscription`, or `subscriptions_multi`, depending on the list to which it is added. 2. The topic _base name_, which **must** coincide with the desired uORB topic name that you want to publish/subscribe. - It is identified by the last token in `topic:` that starts with `/` and does not contains any `/` in it. - `vehicle_odometry`, `vehicle_status` and `offboard_control_mode` are examples of base names. + It is identified by the last token in `topic:` that starts with `/` and does not contains any `/` in it. + `vehicle_odometry`, `vehicle_status` and `offboard_control_mode` are examples of base names. 3. The topic [namespace](https://design.ros2.org/articles/topic_and_service_names.html#namespaces). - By default it is set to: - - `/fmu/out/` for topics that are _published_ by PX4. - - `/fmu/in/` for topics that are _subscribed_ by PX4. + By default it is set to: + - `/fmu/out/` for topics that are _published_ by PX4. + - `/fmu/in/` for topics that are _subscribed_ by PX4. 4. The message type (`VehicleOdometry`, `VehicleStatus`, `OffboardControlMode`, etc.) and the ROS 2 package (`px4_msgs`) that is expected to provide the message definition. 5. **(Optional)**: An additional `rate_limit` field (only for publication entries), which specifies the maximum rate (Hz) at which messages will be published on this topic by PX4 to ROS 2. - If left unspecified, the maximum publication rate limit is set to 100 Hz. + If left unspecified, the maximum publication rate limit is set to 100 Hz. `subscriptions` and `subscriptions_multi` allow us to choose the uORB topic instance that ROS 2 topics are routed to: either a shared instance that may also be getting updates from internal PX4 uORB publishers, or a separate instance that is reserved for ROS2 publications, respectively. Without this mechanism all ROS 2 messages would be routed to the _same_ uORB topic instance (because ROS 2 does not have the concept of [multiple topic instances](../middleware/uorb.md#multi-instance)), and it would not be possible for PX4 subscribers to differentiate between streams from ROS 2 or PX4 publishers. diff --git a/docs/zh/modules/hello_sky.md b/docs/zh/modules/hello_sky.md index 24646f3517..02e2a97e82 100644 --- a/docs/zh/modules/hello_sky.md +++ b/docs/zh/modules/hello_sky.md @@ -28,151 +28,151 @@ This consists of a single _C_ file and a _cmake_ definition (which tells the too 1. Create a new directory **PX4-Autopilot/src/examples/px4_simple_app**. 2. Create a new C file in that directory named **px4_simple_app.c**: - - Copy in the default header to the top of the page. - 该注释应出现在所有贡献的文件中! + - Copy in the default header to the top of the page. + 该注释应出现在所有贡献的文件中! - ```c - /**************************************************************************** - * - * Copyright (c) 2012-2022 PX4 Development Team. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name PX4 nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - ``` + ```c + /**************************************************************************** + * + * Copyright (c) 2012-2022 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + ``` - - 将下面的代码复制到头部注释的下方, - 该注释应出现在所有贡献的文件中! + - 将下面的代码复制到头部注释的下方, + 该注释应出现在所有贡献的文件中! - ```c - /** - * @file px4_simple_app.c - * Minimal application example for PX4 autopilot - * - * @author Example User - */ + ```c + /** + * @file px4_simple_app.c + * Minimal application example for PX4 autopilot + * + * @author Example User + */ - #include + #include - __EXPORT int px4_simple_app_main(int argc, char *argv[]); + __EXPORT int px4_simple_app_main(int argc, char *argv[]); - int px4_simple_app_main(int argc, char *argv[]) - { - PX4_INFO("Hello Sky!"); - return OK; - } - ``` + int px4_simple_app_main(int argc, char *argv[]) + { + PX4_INFO("Hello Sky!"); + return OK; + } + ``` - :::tip - The main function must be named `_main` and exported from the module as shown. + :::tip + The main function must be named `_main` and exported from the module as shown. ::: - :::tip - `PX4_INFO` is the equivalent of `printf` for the PX4 shell (included from **px4_platform_common/log.h**). - There are different log levels: `PX4_INFO`, `PX4_WARN`, `PX4_ERR`, `PX4_DEBUG`. - Warnings and errors are additionally added to the [ULog](../dev_log/ulog_file_format.md) and shown on [Flight Review](https://logs.px4.io/). + :::tip + `PX4_INFO` is the equivalent of `printf` for the PX4 shell (included from **px4_platform_common/log.h**). + There are different log levels: `PX4_INFO`, `PX4_WARN`, `PX4_ERR`, `PX4_DEBUG`. + Warnings and errors are additionally added to the [ULog](../dev_log/ulog_file_format.md) and shown on [Flight Review](https://logs.px4.io/). ::: 3. Create and open a new _cmake_ definition file named **CMakeLists.txt**. - 复制下面的文本: + 复制下面的文本: - ```cmake - ############################################################################ - # - # Copyright (c) 2015 PX4 Development Team. All rights reserved. - # - # Redistribution and use in source and binary forms, with or without - # modification, are permitted provided that the following conditions - # are met: - # - # 1. Redistributions of source code must retain the above copyright - # notice, this list of conditions and the following disclaimer. - # 2. Redistributions in binary form must reproduce the above copyright - # notice, this list of conditions and the following disclaimer in - # the documentation and/or other materials provided with the - # distribution. - # 3. Neither the name PX4 nor the names of its contributors may be - # used to endorse or promote products derived from this software - # without specific prior written permission. - # - # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - # OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - # POSSIBILITY OF SUCH DAMAGE. - # - ############################################################################ - px4_add_module( - MODULE examples__px4_simple_app - MAIN px4_simple_app - STACK_MAIN 2000 - SRCS - px4_simple_app.c - DEPENDS - ) - ``` + ```cmake + ############################################################################ + # + # Copyright (c) 2015 PX4 Development Team. All rights reserved. + # + # Redistribution and use in source and binary forms, with or without + # modification, are permitted provided that the following conditions + # are met: + # + # 1. Redistributions of source code must retain the above copyright + # notice, this list of conditions and the following disclaimer. + # 2. Redistributions in binary form must reproduce the above copyright + # notice, this list of conditions and the following disclaimer in + # the documentation and/or other materials provided with the + # distribution. + # 3. Neither the name PX4 nor the names of its contributors may be + # used to endorse or promote products derived from this software + # without specific prior written permission. + # + # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + # OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + # POSSIBILITY OF SUCH DAMAGE. + # + ############################################################################ + px4_add_module( + MODULE examples__px4_simple_app + MAIN px4_simple_app + STACK_MAIN 2000 + SRCS + px4_simple_app.c + DEPENDS + ) + ``` - The `px4_add_module()` method builds a static library from a module description. + The `px4_add_module()` method builds a static library from a module description. - - The `MODULE` block is the Firmware-unique name of the module (by convention the module name is prefixed by parent directories back to `src`). - - The `MAIN` block lists the entry point of the module, which registers the command with NuttX so that it can be called from the PX4 shell or SITL console. + - The `MODULE` block is the Firmware-unique name of the module (by convention the module name is prefixed by parent directories back to `src`). + - The `MAIN` block lists the entry point of the module, which registers the command with NuttX so that it can be called from the PX4 shell or SITL console. - :::tip - The `px4_add_module()` format is documented in [PX4-Autopilot/cmake/px4_add_module.cmake](https://github.com/PX4/PX4-Autopilot/blob/main/cmake/px4_add_module.cmake). + :::tip + The `px4_add_module()` format is documented in [PX4-Autopilot/cmake/px4_add_module.cmake](https://github.com/PX4/PX4-Autopilot/blob/main/cmake/px4_add_module.cmake). ::: - ::: info - If you specify `DYNAMIC` as an option to `px4_add_module`, a _shared library_ is created instead of a static library on POSIX platforms (these can be loaded without having to recompile PX4, and shared to others as binaries rather than source code). - Your app will not become a builtin command, but ends up in a separate file called `examples__px4_simple_app.px4mod`. - You can then run your command by loading the file at runtime using the `dyn` command: `dyn ./examples__px4_simple_app.px4mod` + ::: info + If you specify `DYNAMIC` as an option to `px4_add_module`, a _shared library_ is created instead of a static library on POSIX platforms (these can be loaded without having to recompile PX4, and shared to others as binaries rather than source code). + Your app will not become a builtin command, but ends up in a separate file called `examples__px4_simple_app.px4mod`. + You can then run your command by loading the file at runtime using the `dyn` command: `dyn ./examples__px4_simple_app.px4mod` ::: 4. Create and open a new _Kconfig_ definition file named **Kconfig** and define your symbol for naming (see [Kconfig naming convention](../hardware/porting_guide_config.md#px4-kconfig-symbol-naming-convention)). - 复制下面的文本: + 复制下面的文本: - ``` - menuconfig EXAMPLES_PX4_SIMPLE_APP - bool "px4_simple_app" - default n - ---help--- - Enable support for px4_simple_app - ``` + ``` + menuconfig EXAMPLES_PX4_SIMPLE_APP + bool "px4_simple_app" + default n + ---help--- + Enable support for px4_simple_app + ``` ## 编译应用程序/固件 diff --git a/docs/zh/modules/module_template.md b/docs/zh/modules/module_template.md index 1e1cd84ed1..4e41399412 100644 --- a/docs/zh/modules/module_template.md +++ b/docs/zh/modules/module_template.md @@ -22,27 +22,27 @@ PX4-Autopilot contains a template for writing a new application (module) that ru 总结: 1. Specify the dependency on the work queue library in the cmake definition file ([CMakeLists.txt](https://github.com/PX4/PX4-Autopilot/blob/main/src/examples/work_item/CMakeLists.txt)): - ``` - ... - DEPENDS - px4_work_queue - ``` + ``` + ... + DEPENDS + px4_work_queue + ``` 2. In addition to `ModuleBase`, the task should also derive from `ScheduledWorkItem` (included from [ScheduledWorkItem.hpp](https://github.com/PX4/PX4-Autopilot/blob/main/platforms/common/include/px4_platform_common/px4_work_queue/ScheduledWorkItem.hpp)) 3. 在构造函数初始化中指定要添加任务的队列。 - The [work_item](https://github.com/PX4/PX4-Autopilot/blob/main/src/examples/work_item/WorkItemExample.cpp#L42) example adds itself to the `wq_configurations::test1` work queue as shown below: + The [work_item](https://github.com/PX4/PX4-Autopilot/blob/main/src/examples/work_item/WorkItemExample.cpp#L42) example adds itself to the `wq_configurations::test1` work queue as shown below: - ```cpp - WorkItemExample::WorkItemExample() : - ModuleParams(nullptr), - ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::test1) - { - } - ``` + ```cpp + WorkItemExample::WorkItemExample() : + ModuleParams(nullptr), + ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::test1) + { + } + ``` - ::: info - The available work queues (`wq_configurations`) are listed in [WorkQueueManager.hpp](https://github.com/PX4/PX4-Autopilot/blob/main/platforms/common/include/px4_platform_common/px4_work_queue/WorkQueueManager.hpp#L49). + ::: info + The available work queues (`wq_configurations`) are listed in [WorkQueueManager.hpp](https://github.com/PX4/PX4-Autopilot/blob/main/platforms/common/include/px4_platform_common/px4_work_queue/WorkQueueManager.hpp#L49). ::: diff --git a/docs/zh/payloads/generic_actuator_control.md b/docs/zh/payloads/generic_actuator_control.md index 03564f35ba..127d59c99f 100644 --- a/docs/zh/payloads/generic_actuator_control.md +++ b/docs/zh/payloads/generic_actuator_control.md @@ -60,7 +60,7 @@ To use a generic actuator in a mission: - Select the header on the waypoint mission editor to open the **Select Mission Command** editor. - Select the category **Advanced**, and then the **Set actuator** item (if the item is not present, try a more recent version of _QGroundControl_ or a daily build). - This will change the mission item type to "Set actuator". + This will change the mission item type to "Set actuator". 3. Select the actuators that are connected and set their values (these are normalized between -1 and 1). diff --git a/docs/zh/peripherals/gripper.md b/docs/zh/peripherals/gripper.md index a3f0ebbc88..d655300a25 100644 --- a/docs/zh/peripherals/gripper.md +++ b/docs/zh/peripherals/gripper.md @@ -75,13 +75,13 @@ To set the actuation timeout: - Run the `payload_deliverer` test in the QGC [MAVLink Shell](../debug/mavlink_shell.md): - ```sh - > payload_deliverer gripper_test - ``` + ```sh + > payload_deliverer gripper_test + ``` - ::: info - If you get an error message like "[payload_deliverer] not running", repeat the setup procedures above. - You might also run the `payload_deliverer start` command in the Nuttx shell. + ::: info + If you get an error message like "[payload_deliverer] not running", repeat the setup procedures above. + You might also run the `payload_deliverer start` command in the Nuttx shell. ::: diff --git a/docs/zh/peripherals/remote_id.md b/docs/zh/peripherals/remote_id.md index 711a8e47e3..b3188fb10c 100644 --- a/docs/zh/peripherals/remote_id.md +++ b/docs/zh/peripherals/remote_id.md @@ -245,11 +245,11 @@ If the Remote ID CAN node is present and the messages are not being received, th 2. Navigate to the [Application settings](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/settings_view/general.html): **Application Settings > General > Miscellaneous**. 3. Select `Enable Remote ID`. - The Remote ID tab should appear. + The Remote ID tab should appear. - ::: info - If this option is not present you may be in a very recent version of QGC. - In that case, open the view at: **Application Settings > Remote ID**. + ::: info + If this option is not present you may be in a very recent version of QGC. + In that case, open the view at: **Application Settings > Remote ID**. ::: diff --git a/docs/zh/releases/1.14.md b/docs/zh/releases/1.14.md index e240b36709..bf1e8982e4 100644 --- a/docs/zh/releases/1.14.md +++ b/docs/zh/releases/1.14.md @@ -72,18 +72,18 @@ For users upgrading from previous versions, please take a moment to review the f 1. The actuator changes require you to verify vehicle geometry and motors/servos mappings match your vehicle. In QGC, find the [Actuator Configuration Dashboard](../config/actuators.md), and make sure to confirm the airframe geometry matches actuals from your vehicle, as well as update motor and ensure motors and servos are mapped to outputs as they are wired to the frame and with the correct ESC type specified. Note: take advantage of the sliders in the UI. They can be used to confirm motor wiring. - We highly recommend running an [ESC Calibration](../advanced_config/esc_calibration.md) if using PWM ESC motors and then setting appropriate disarmed minimum and maximum values for the motors (in the actuator UI). + We highly recommend running an [ESC Calibration](../advanced_config/esc_calibration.md) if using PWM ESC motors and then setting appropriate disarmed minimum and maximum values for the motors (in the actuator UI). - The calibration is critical if you are using a custom mixer file or the airframe you assigned in an earlier version is not present in PX4 v1.14. + The calibration is critical if you are using a custom mixer file or the airframe you assigned in an earlier version is not present in PX4 v1.14. - However, an ESC Calibration is still recommended **even if** you are using an airframe that precisely matches a specific vehicle in the [Airframe Reference](../airframes/airframe_reference.md) (such as the [Holybro X500 V2](../airframes/airframe_reference.md#copter_quadrotor_x_holybro_x500_v2)) as your wiring and ESCs calibration may not match the defaults. + However, an ESC Calibration is still recommended **even if** you are using an airframe that precisely matches a specific vehicle in the [Airframe Reference](../airframes/airframe_reference.md) (such as the [Holybro X500 V2](../airframes/airframe_reference.md#copter_quadrotor_x_holybro_x500_v2)) as your wiring and ESCs calibration may not match the defaults. 2. Default disarmed PWM was changed from 900us to 1000us. - Verify if you previously used the default PWM disarmed values and if the changes impact your setup. - For details, you can find related information in the [step 7 of ESC calibration](../advanced_config/esc_calibration.md#steps) document. + Verify if you previously used the default PWM disarmed values and if the changes impact your setup. + For details, you can find related information in the [step 7 of ESC calibration](../advanced_config/esc_calibration.md#steps) document. 3. Fast-RTPS users must port their code to the new uXRCE-DDS interface. - Application code should only require minor modifications. These include (minimally): + Application code should only require minor modifications. These include (minimally): Modifying topic names to match the new naming pattern, which changed from `fmu//out` to `fmu/out/`, and [Adusting the QoS settings](../ros2/user_guide.md#ros-2-subscriber-qos-settings). diff --git a/docs/zh/ros/mavros_custom_messages.md b/docs/zh/ros/mavros_custom_messages.md index ed4f017440..946ab08715 100644 --- a/docs/zh/ros/mavros_custom_messages.md +++ b/docs/zh/ros/mavros_custom_messages.md @@ -110,7 +110,7 @@ Follow _Source Installation_ instructions from [mavlink/mavros](https://github.c - `PX4-Autopilot/src/modules/mavlink/mavlink/message_definitions/v1.0` - `workspace/src/mavlink/message_definitions/v1.0` - are exactly the same. + are exactly the same. ::: diff --git a/docs/zh/ros/mavros_installation.md b/docs/zh/ros/mavros_installation.md index 26add434e3..91c41c9fc5 100644 --- a/docs/zh/ros/mavros_installation.md +++ b/docs/zh/ros/mavros_installation.md @@ -148,21 +148,21 @@ Now you are ready to do the build: 2. 安装MAVROS最新的版本: - 发行版 / 稳定版 - ```sh - rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall - ``` + ```sh + rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall + ``` - Latest source - ```sh - rosinstall_generator --upstream-development mavros | tee -a /tmp/mavros.rosinstall - ``` + ```sh + rosinstall_generator --upstream-development mavros | tee -a /tmp/mavros.rosinstall + ``` - ```sh - # For fetching all the dependencies into your catkin_ws, - # just add '--deps' to the above scripts, E.g.: - # rosinstall_generator --upstream mavros --deps | tee -a /tmp/mavros.rosinstall - ``` + ```sh + # For fetching all the dependencies into your catkin_ws, + # just add '--deps' to the above scripts, E.g.: + # rosinstall_generator --upstream mavros --deps | tee -a /tmp/mavros.rosinstall + ``` 3. Create workspace & deps diff --git a/docs/zh/ros/offboard_control.md b/docs/zh/ros/offboard_control.md index ddb3d1caff..48cc2bf339 100644 --- a/docs/zh/ros/offboard_control.md +++ b/docs/zh/ros/offboard_control.md @@ -38,9 +38,9 @@ Enable MAVLink on the serial port that you connect to the companion computer (se 1. 一端连接飞控的 UART 2. 一端连接地面站电脑 - 参考电台包括: + 参考电台包括: - - [Digi International XBee Pro](https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/sub-1-ghz-rf-modules) + - [Digi International XBee Pro](https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/sub-1-ghz-rf-modules) [![Mermaid graph: mavlink channel](https://mermaid.ink/img/eyJjb2RlIjoiZ3JhcGggVEQ7XG4gIGduZFtHcm91bmQgU3RhdGlvbl0gLS1NQVZMaW5rLS0-IHJhZDFbR3JvdW5kIFJhZGlvXTtcbiAgcmFkMSAtLVJhZGlvUHJvdG9jb2wtLT4gcmFkMltWZWhpY2xlIFJhZGlvXTtcbiAgcmFkMiAtLU1BVkxpbmstLT4gYVtBdXRvcGlsb3RdOyIsIm1lcm1haWQiOnsidGhlbWUiOiJkZWZhdWx0In0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9)](https://mermaid-js.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiZ3JhcGggVEQ7XG4gIGduZFtHcm91bmQgU3RhdGlvbl0gLS1NQVZMaW5rLS0-IHJhZDFbR3JvdW5kIFJhZGlvXTtcbiAgcmFkMSAtLVJhZGlvUHJvdG9jb2wtLT4gcmFkMltWZWhpY2xlIFJhZGlvXTtcbiAgcmFkMiAtLU1BVkxpbmstLT4gYVtBdXRvcGlsb3RdOyIsIm1lcm1haWQiOnsidGhlbWUiOiJkZWZhdWx0In0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9) diff --git a/docs/zh/ros2/px4_ros2_control_interface.md b/docs/zh/ros2/px4_ros2_control_interface.md index a31d7d5880..2fcce99656 100644 --- a/docs/zh/ros2/px4_ros2_control_interface.md +++ b/docs/zh/ros2/px4_ros2_control_interface.md @@ -108,92 +108,92 @@ The following steps are required to get started: 2. Clone the repository into the workspace: - ```sh - cd $ros_workspace/src - git clone --recursive https://github.com/Auterion/px4-ros2-interface-lib - ``` + ```sh + cd $ros_workspace/src + git clone --recursive https://github.com/Auterion/px4-ros2-interface-lib + ``` - ::: info - To ensure compatibility, use the latest _main_ branches for PX4, _px4_msgs_ and the library. - See also [here](https://github.com/Auterion/px4-ros2-interface-lib#compatibility-with-px4). + ::: info + To ensure compatibility, use the latest _main_ branches for PX4, _px4_msgs_ and the library. + See also [here](https://github.com/Auterion/px4-ros2-interface-lib#compatibility-with-px4). ::: 3. Build the workspace: - ```sh - cd .. - colcon build - source install/setup.bash - ``` + ```sh + cd .. + colcon build + source install/setup.bash + ``` 4. In a different shell, start PX4 SITL: - ```sh - cd $px4-autopilot - make px4_sitl gazebo-classic - ``` + ```sh + cd $px4-autopilot + make px4_sitl gazebo-classic + ``` - (here we use Gazebo-Classic, but you can use any model or simulator) + (here we use Gazebo-Classic, but you can use any model or simulator) 5. Run the micro XRCE agent in a new shell (you can keep it running afterward): - ```sh - MicroXRCEAgent udp4 -p 8888 - ``` + ```sh + MicroXRCEAgent udp4 -p 8888 + ``` 6. Start QGroundControl. - ::: info - Use QGroundControl Daily, which supports dynamically updating the list of modes. + ::: info + Use QGroundControl Daily, which supports dynamically updating the list of modes. ::: 7. Back in the ROS 2 terminal, run one of the example modes: - ```sh - ros2 run example_mode_manual_cpp example_mode_manual - ``` + ```sh + ros2 run example_mode_manual_cpp example_mode_manual + ``` - You should get an output like this showing 'My Manual Mode' mode being registered: + You should get an output like this showing 'My Manual Mode' mode being registered: - ```sh - [DEBUG] [example_mode_manual]: Checking message compatibility... - [DEBUG] [example_mode_manual]: Subscriber found, continuing - [DEBUG] [example_mode_manual]: Publisher found, continuing - [DEBUG] [example_mode_manual]: Registering 'My Manual Mode' (arming check: 1, mode: 1, mode executor: 0) - [DEBUG] [example_mode_manual]: Subscriber found, continuing - [DEBUG] [example_mode_manual]: Publisher found, continuing - [DEBUG] [example_mode_manual]: Got RegisterExtComponentReply - [DEBUG] [example_mode_manual]: Arming check request (id=1, only printed once) - ``` + ```sh + [DEBUG] [example_mode_manual]: Checking message compatibility... + [DEBUG] [example_mode_manual]: Subscriber found, continuing + [DEBUG] [example_mode_manual]: Publisher found, continuing + [DEBUG] [example_mode_manual]: Registering 'My Manual Mode' (arming check: 1, mode: 1, mode executor: 0) + [DEBUG] [example_mode_manual]: Subscriber found, continuing + [DEBUG] [example_mode_manual]: Publisher found, continuing + [DEBUG] [example_mode_manual]: Got RegisterExtComponentReply + [DEBUG] [example_mode_manual]: Arming check request (id=1, only printed once) + ``` 8. On the PX4 shell, you can check that PX4 registered the new mode: - ```sh - commander status - ``` + ```sh + commander status + ``` - The output should contain: + The output should contain: - ```plain - INFO [commander] Disarmed - INFO [commander] navigation mode: Position - INFO [commander] user intended navigation mode: Position - INFO [commander] in failsafe: no - INFO [commander] External Mode 1: nav_state: 23, name: My Manual Mode - ``` + ```plain + INFO [commander] Disarmed + INFO [commander] navigation mode: Position + INFO [commander] user intended navigation mode: Position + INFO [commander] in failsafe: no + INFO [commander] External Mode 1: nav_state: 23, name: My Manual Mode + ``` 9. At this point you should be able to see the mode in QGroundControl as well: - ![QGC Modes](../../assets/middleware/ros2/px4_ros2_interface_lib/qgc_modes.png) + ![QGC Modes](../../assets/middleware/ros2/px4_ros2_interface_lib/qgc_modes.png) 10. Select the mode, make sure you have a manual control source (physical or virtual joystick), and arm the vehicle. - The mode will then activate, and it should print the following output: + The mode will then activate, and it should print the following output: - ```sh - [DEBUG] [example_mode_manual]: Mode 'My Manual Mode' activated - ``` + ```sh + [DEBUG] [example_mode_manual]: Mode 'My Manual Mode' activated + ``` 11. Now you are ready to create your own mode. @@ -419,7 +419,7 @@ This setpoint is streamed to the PX4 [_FwLateralLongitudinalControl_ module](../ To control the vehicle, at least one lateral **and** one longitudinal setpoint must be provided: 1. Of the longitudinal inputs: either `altitude` or `height_rate` must be finite to control vertical motion. - If both are set to `NAN`, the vehicle will maintain its current altitude. + If both are set to `NAN`, the vehicle will maintain its current altitude. 2. Of the lateral inputs: at least one of `course`, `airspeed_direction`, or `lateral_acceleration` must be finite. For a detailed description of the controllable parameters, please refer to message definitions ([FixedWingLateralSetpoint](../msg_docs/FixedWingLateralSetpoint.md) and [FixedWingLongitudinalSetpoint](../msg_docs/FixedWingLongitudinalSetpoint.md)). @@ -568,24 +568,24 @@ Commanding transitions externally makes the user partially responsible for ensur 3. To command a transition, you can use the `toMulticopter()` or `toFixedwing()` methods on your VTOL object to set the desired state. 4. During transition, send the following combination of setpoints: - ```cpp - // Assuming the instance of the px4_ros2::VTOL object is called vtol + ```cpp + // Assuming the instance of the px4_ros2::VTOL object is called vtol - // Send TrajectorySetpointType as follows: - Eigen::Vector3f acceleration_sp = vtol.computeAccelerationSetpointDuringTransition(); - Eigen::Vector3f velocity_sp{NAN, NAN, 0.f}; + // Send TrajectorySetpointType as follows: + Eigen::Vector3f acceleration_sp = vtol.computeAccelerationSetpointDuringTransition(); + Eigen::Vector3f velocity_sp{NAN, NAN, 0.f}; - _trajectory_setpoint->update(velocity_sp, acceleration_sp); + _trajectory_setpoint->update(velocity_sp, acceleration_sp); - // Send FwLateralLongitudinalSetpointType with lateral input to realign vehicle as desired + // Send FwLateralLongitudinalSetpointType with lateral input to realign vehicle as desired - float course_sp = 0.F; // North + float course_sp = 0.F; // North - _fw_lateral_longitudinal_setpoint->updateWithAltitude(NAN, course_sp) - ``` + _fw_lateral_longitudinal_setpoint->updateWithAltitude(NAN, course_sp) + ``` - This will ensure that the transition is handled properly within PX4. - You can optionally pass a deceleration setpoint to `computeAccelerationSetpointDuringTransition()` to be used during back-transitions. + This will ensure that the transition is handled properly within PX4. + You can optionally pass a deceleration setpoint to `computeAccelerationSetpointDuringTransition()` to be used during back-transitions. To check the current state of the vehicle, use the `getCurrentState()` method on your `px4_ros2::VTOL` object. @@ -598,7 +598,7 @@ If you want to control an independent actuator (a servo), follow these steps: 1. [Configure the output](../payloads/generic_actuator_control.md#generic-actuator-control-with-mavlink). 2. Create an instance of [px4_ros2::PeripheralActuatorControls](https://auterion.github.io/px4-ros2-interface-lib/classpx4__ros2_1_1PeripheralActuatorControls.html) in the constructor of your mode. 3. Call the `set()` method to control the actuator(s). - This can be done independently of any active setpoints. + This can be done independently of any active setpoints. ### Telemetry diff --git a/docs/zh/ros2/px4_ros2_msg_translation_node.md b/docs/zh/ros2/px4_ros2_msg_translation_node.md index 2e999b28c1..253ae12527 100644 --- a/docs/zh/ros2/px4_ros2_msg_translation_node.md +++ b/docs/zh/ros2/px4_ros2_msg_translation_node.md @@ -27,36 +27,36 @@ The following steps describe how to install and run the translation node on your 1. (Optional) Create a new ROS 2 workspace in which to build the message translation node and its dependencies: - ```sh - mkdir -p /path/to/ros_ws/src - ``` + ```sh + mkdir -p /path/to/ros_ws/src + ``` 2. Run the following helper script to copy the message definitions and translation node into your ROS workspace directory. - ```sh - cd /path/to/ros_ws - /path/to/PX4-Autopilot/Tools/copy_to_ros_ws.sh . - ``` + ```sh + cd /path/to/ros_ws + /path/to/PX4-Autopilot/Tools/copy_to_ros_ws.sh . + ``` 3. Build and source the workspace. - ```sh - colcon build - source /path/to/ros_ws/install/setup.bash - ``` + ```sh + colcon build + source /path/to/ros_ws/install/setup.bash + ``` 4. Finally, run the translation node. - ```sh - ros2 run translation_node translation_node_bin - ``` + ```sh + ros2 run translation_node translation_node_bin + ``` - You should see an output similar to: + You should see an output similar to: - ```sh - [INFO] [1734525720.729530513] [translation_node]: Registered pub/sub topics and versions: - [INFO] [1734525720.729594413] [translation_node]: Registered services and versions: - ``` + ```sh + [INFO] [1734525720.729530513] [translation_node]: Registered pub/sub topics and versions: + [INFO] [1734525720.729594413] [translation_node]: Registered services and versions: + ``` With the translation node running, any simultaneously running ROS 2 application designed to communicate with PX4 can do so, as long as it uses message versions recognized by the node. The translation node will print a warning if it encounters an unknown topic version. @@ -295,111 +295,111 @@ The example describes the process of updating the `VehicleAttitude` message defi 1. **Create an Archived Definition of the Current Versioned Message** - Copy the versioned `.msg` topic message file (or `.srv` service message file) to `px4_msgs_old/msg/` (or `px4_msgs_old/srv/`), and append its message version to the file name. + Copy the versioned `.msg` topic message file (or `.srv` service message file) to `px4_msgs_old/msg/` (or `px4_msgs_old/srv/`), and append its message version to the file name. - For example:
- Copy `msg/versioned/VehicleAttitude.msg` → `msg/versioned/px4_msgs_old/msg/VehicleAttitudeV3.msg` + For example:
+ Copy `msg/versioned/VehicleAttitude.msg` → `msg/versioned/px4_msgs_old/msg/VehicleAttitudeV3.msg` 2. **Update Translation References to the Archived Definition** - Update the existing translations header files `msg/translation_node/translations/*.h` to reference the newly archived message definition. + Update the existing translations header files `msg/translation_node/translations/*.h` to reference the newly archived message definition. - For example, update references in those files:
+ For example, update references in those files:
- - Replace `px4_msgs::msg::VehicleAttitude` → `px4_msgs_old::msg::VehicleAttitudeV3` - - Replace `#include ` → `#include ` + - Replace `px4_msgs::msg::VehicleAttitude` → `px4_msgs_old::msg::VehicleAttitudeV3` + - Replace `#include ` → `#include ` 3. **Update the Versioned Definition** - Update the versioned `.msg` topic message file (or `.srv` service message file) with required changes. + Update the versioned `.msg` topic message file (or `.srv` service message file) with required changes. - First increment the `MESSAGE_VERSION` field. - Then update the message fields that prompted the version change. + First increment the `MESSAGE_VERSION` field. + Then update the message fields that prompted the version change. - For example, update `msg/versioned/VehicleAttitude.msg` from: + For example, update `msg/versioned/VehicleAttitude.msg` from: - ```txt - uint32 MESSAGE_VERSION = 3 - uint64 timestamp - ... - ``` + ```txt + uint32 MESSAGE_VERSION = 3 + uint64 timestamp + ... + ``` - to + to - ```txt - uint32 MESSAGE_VERSION = 4 # Increment - uint64 timestamp - float32 new_field # Make definition changes - ... - ``` + ```txt + uint32 MESSAGE_VERSION = 4 # Increment + uint64 timestamp + float32 new_field # Make definition changes + ... + ``` 4. **Add a New Translation Header** - Add a new version translation to bridge the archived version and the updated current version, by creating a new translation header. + Add a new version translation to bridge the archived version and the updated current version, by creating a new translation header. - For example, create a direct translation header `translation_node/translations/translation_vehicle_attitude_v4.h`: + For example, create a direct translation header `translation_node/translations/translation_vehicle_attitude_v4.h`: - ```c++ - // Translate VehicleAttitude v3 <--> v4 - #include - #include + ```c++ + // Translate VehicleAttitude v3 <--> v4 + #include + #include - class VehicleAttitudeV4Translation { - public: - using MessageOlder = px4_msgs_old::msg::VehicleAttitudeV3; - static_assert(MessageOlder::MESSAGE_VERSION == 3); + class VehicleAttitudeV4Translation { + public: + using MessageOlder = px4_msgs_old::msg::VehicleAttitudeV3; + static_assert(MessageOlder::MESSAGE_VERSION == 3); - using MessageNewer = px4_msgs::msg::VehicleAttitude; - static_assert(MessageNewer::MESSAGE_VERSION == 4); + using MessageNewer = px4_msgs::msg::VehicleAttitude; + static_assert(MessageNewer::MESSAGE_VERSION == 4); - static constexpr const char* kTopic = "fmu/out/vehicle_attitude"; + static constexpr const char* kTopic = "fmu/out/vehicle_attitude"; - static void fromOlder(const MessageOlder &msg_older, MessageNewer &msg_newer) { - msg_newer.timestamp = msg_older.timestamp; - msg_newer.timestamp_sample = msg_older.timestamp_sample; - msg_newer.q[0] = msg_older.q[0]; - msg_newer.q[1] = msg_older.q[1]; - msg_newer.q[2] = msg_older.q[2]; - msg_newer.q[3] = msg_older.q[3]; - msg_newer.delta_q_reset = msg_older.delta_q_reset; - msg_newer.quat_reset_counter = msg_older.quat_reset_counter; + static void fromOlder(const MessageOlder &msg_older, MessageNewer &msg_newer) { + msg_newer.timestamp = msg_older.timestamp; + msg_newer.timestamp_sample = msg_older.timestamp_sample; + msg_newer.q[0] = msg_older.q[0]; + msg_newer.q[1] = msg_older.q[1]; + msg_newer.q[2] = msg_older.q[2]; + msg_newer.q[3] = msg_older.q[3]; + msg_newer.delta_q_reset = msg_older.delta_q_reset; + msg_newer.quat_reset_counter = msg_older.quat_reset_counter; - // Populate `new_field` with some value - msg_newer.new_field = -1; - } + // Populate `new_field` with some value + msg_newer.new_field = -1; + } - static void toOlder(const MessageNewer &msg_newer, MessageOlder &msg_older) { - msg_older.timestamp = msg_newer.timestamp; - msg_older.timestamp_sample = msg_newer.timestamp_sample; - msg_older.q[0] = msg_newer.q[0]; - msg_older.q[1] = msg_newer.q[1]; - msg_older.q[2] = msg_newer.q[2]; - msg_older.q[3] = msg_newer.q[3]; - msg_older.delta_q_reset = msg_newer.delta_q_reset; - msg_older.quat_reset_counter = msg_newer.quat_reset_counter; + static void toOlder(const MessageNewer &msg_newer, MessageOlder &msg_older) { + msg_older.timestamp = msg_newer.timestamp; + msg_older.timestamp_sample = msg_newer.timestamp_sample; + msg_older.q[0] = msg_newer.q[0]; + msg_older.q[1] = msg_newer.q[1]; + msg_older.q[2] = msg_newer.q[2]; + msg_older.q[3] = msg_newer.q[3]; + msg_older.delta_q_reset = msg_newer.delta_q_reset; + msg_older.quat_reset_counter = msg_newer.quat_reset_counter; - // Discards `new_field` from MessageNewer - } - }; + // Discards `new_field` from MessageNewer + } + }; - REGISTER_TOPIC_TRANSLATION_DIRECT(VehicleAttitudeV4Translation); - ``` + REGISTER_TOPIC_TRANSLATION_DIRECT(VehicleAttitudeV4Translation); + ``` - Version translation templates are provided here: + Version translation templates are provided here: - - [Direct Topic Message Translation Template](https://github.com/PX4/PX4-Autopilot/blob/main/msg/translation_node/translations/example_translation_direct_v1.h) - - [Generic Topic Message Translation Template](https://github.com/PX4/PX4-Autopilot/blob/main/msg/translation_node/translations/example_translation_multi_v2.h) - - [Direct Service Message Translation Template](https://github.com/PX4/PX4-Autopilot/blob/main/msg/translation_node/translations/example_translation_service_v1.h) + - [Direct Topic Message Translation Template](https://github.com/PX4/PX4-Autopilot/blob/main/msg/translation_node/translations/example_translation_direct_v1.h) + - [Generic Topic Message Translation Template](https://github.com/PX4/PX4-Autopilot/blob/main/msg/translation_node/translations/example_translation_multi_v2.h) + - [Direct Service Message Translation Template](https://github.com/PX4/PX4-Autopilot/blob/main/msg/translation_node/translations/example_translation_service_v1.h) 5. **Include New Headers in `all_translations.h`** - Add all newly created headers to [`translations/all_translations.h`](https://github.com/PX4/PX4-Autopilot/blob/main/msg/translation_node/translations/all_translations.h) so that the translation node can find them. + Add all newly created headers to [`translations/all_translations.h`](https://github.com/PX4/PX4-Autopilot/blob/main/msg/translation_node/translations/all_translations.h) so that the translation node can find them. - For example, append the following line to `all_translation.h`: + For example, append the following line to `all_translation.h`: - ```c++ - #include "translation_vehicle_attitude_v4.h" - ``` + ```c++ + #include "translation_vehicle_attitude_v4.h" + ``` Note that in the example above and in most cases, step 4 only requires the developer to create a direct translation for the definition change. This is because the changes only involved a single message. diff --git a/docs/zh/ros2/px4_ros2_navigation_interface.md b/docs/zh/ros2/px4_ros2_navigation_interface.md index f96d2683fe..e0cab8d948 100644 --- a/docs/zh/ros2/px4_ros2_navigation_interface.md +++ b/docs/zh/ros2/px4_ros2_navigation_interface.md @@ -22,80 +22,80 @@ The following steps are required to get started: 2. Clone the repository into the workspace: - ```sh - cd $ros_workspace/src - git clone --recursive https://github.com/Auterion/px4-ros2-interface-lib - ``` + ```sh + cd $ros_workspace/src + git clone --recursive https://github.com/Auterion/px4-ros2-interface-lib + ``` - ::: info - To ensure compatibility, use the latest _main_ branches for PX4, _px4_msgs_ and the library. - See also [here](https://github.com/Auterion/px4-ros2-interface-lib#compatibility-with-px4). + ::: info + To ensure compatibility, use the latest _main_ branches for PX4, _px4_msgs_ and the library. + See also [here](https://github.com/Auterion/px4-ros2-interface-lib#compatibility-with-px4). ::: 3. Build the workspace: - ```sh - cd .. - colcon build - ``` + ```sh + cd .. + colcon build + ``` 4. In a different shell, start PX4 SITL: - ```sh - cd $px4-autopilot - make px4_sitl gazebo-classic - ``` + ```sh + cd $px4-autopilot + make px4_sitl gazebo-classic + ``` - (here we use Gazebo-Classic, but you can use any model or simulator) + (here we use Gazebo-Classic, but you can use any model or simulator) 5. In yet a different shell, run the micro XRCE agent (you can keep it running afterward): - ```sh - MicroXRCEAgent udp4 -p 8888 - ``` + ```sh + MicroXRCEAgent udp4 -p 8888 + ``` 6. Back in the ROS 2 terminal, source the workspace you just built (in step 3) and run the [global_navigation](https://github.com/Auterion/px4-ros2-interface-lib/tree/main/examples/cpp/navigation/global_navigation) example, which periodically sends dummy global position updates: - ```sh - source install/setup.bash - ros2 run example_global_navigation_cpp example_global_navigation - ``` + ```sh + source install/setup.bash + ros2 run example_global_navigation_cpp example_global_navigation + ``` - You should get an output like this showing that the global interface is successfully sending position updates: + You should get an output like this showing that the global interface is successfully sending position updates: - ```sh - [INFO] [1702030701.836897756] [example_global_navigation_node]: example_global_navigation_node running! - [DEBUG] [1702030702.837279784] [example_global_navigation_node]: Successfully sent position update to navigation interface. - [DEBUG] [1702030703.837223884] [example_global_navigation_node]: Successfully sent position update to navigation interface. - ``` + ```sh + [INFO] [1702030701.836897756] [example_global_navigation_node]: example_global_navigation_node running! + [DEBUG] [1702030702.837279784] [example_global_navigation_node]: Successfully sent position update to navigation interface. + [DEBUG] [1702030703.837223884] [example_global_navigation_node]: Successfully sent position update to navigation interface. + ``` 7. In the PX4 shell, you can check that PX4 receives global position updates: - ```sh - listener aux_global_position - ``` + ```sh + listener aux_global_position + ``` - The output should look like: + The output should look like: - ```sh - TOPIC: aux_global_position - aux_global_position - timestamp: 46916000 (0.528000 seconds ago) - timestamp_sample: 46916000 (0 us before timestamp) - lat: 12.343210 - lon: 23.454320 - alt: 12.40000 - alt_ellipsoid: 0.00000 - delta_alt: 0.00000 - eph: 0.31623 - epv: 0.44721 - terrain_alt: 0.00000 - lat_lon_reset_counter: 0 - alt_reset_counter: 0 - terrain_alt_valid: False - dead_reckoning: False - ``` + ```sh + TOPIC: aux_global_position + aux_global_position + timestamp: 46916000 (0.528000 seconds ago) + timestamp_sample: 46916000 (0 us before timestamp) + lat: 12.343210 + lon: 23.454320 + alt: 12.40000 + alt_ellipsoid: 0.00000 + delta_alt: 0.00000 + eph: 0.31623 + epv: 0.44721 + terrain_alt: 0.00000 + lat_lon_reset_counter: 0 + alt_reset_counter: 0 + terrain_alt_valid: False + dead_reckoning: False + ``` 8. Now you are ready to use the navigation interface to send your own position updates. diff --git a/docs/zh/ros2/user_guide.md b/docs/zh/ros2/user_guide.md index 222ea662fa..0a8bff0037 100644 --- a/docs/zh/ros2/user_guide.md +++ b/docs/zh/ros2/user_guide.md @@ -97,48 +97,48 @@ To install ROS 2 and its dependencies: 1. Install ROS 2. - :::: tabs + :::: tabs - ::: tab humble - To install ROS 2 "Humble" on Ubuntu 22.04: + ::: tab humble + To install ROS 2 "Humble" on Ubuntu 22.04: - ```sh - sudo apt update && sudo apt install locales - sudo locale-gen en_US en_US.UTF-8 - sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 - export LANG=en_US.UTF-8 - sudo apt install software-properties-common - sudo add-apt-repository universe - sudo apt update && sudo apt install curl -y - sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg - echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null - sudo apt update && sudo apt upgrade -y - sudo apt install ros-humble-desktop - sudo apt install ros-dev-tools - source /opt/ros/humble/setup.bash && echo "source /opt/ros/humble/setup.bash" >> .bashrc - ``` + ```sh + sudo apt update && sudo apt install locales + sudo locale-gen en_US en_US.UTF-8 + sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 + export LANG=en_US.UTF-8 + sudo apt install software-properties-common + sudo add-apt-repository universe + sudo apt update && sudo apt install curl -y + sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null + sudo apt update && sudo apt upgrade -y + sudo apt install ros-humble-desktop + sudo apt install ros-dev-tools + source /opt/ros/humble/setup.bash && echo "source /opt/ros/humble/setup.bash" >> .bashrc + ``` - The instructions above are reproduced from the official installation guide: [Install ROS 2 Humble](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html). - You can install _either_ the desktop (`ros-humble-desktop`) _or_ bare-bones versions (`ros-humble-ros-base`), _and_ the development tools (`ros-dev-tools`). + The instructions above are reproduced from the official installation guide: [Install ROS 2 Humble](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html). + You can install _either_ the desktop (`ros-humble-desktop`) _or_ bare-bones versions (`ros-humble-ros-base`), _and_ the development tools (`ros-dev-tools`). ::: - ::: tab foxy - To install ROS 2 "Foxy" on Ubuntu 20.04: + ::: tab foxy + To install ROS 2 "Foxy" on Ubuntu 20.04: - - Follow the official installation guide: [Install ROS 2 Foxy](https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html). + - Follow the official installation guide: [Install ROS 2 Foxy](https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html). - You can install _either_ the desktop (`ros-foxy-desktop`) _or_ bare-bones versions (`ros-foxy-ros-base`), _and_ the development tools (`ros-dev-tools`). + You can install _either_ the desktop (`ros-foxy-desktop`) _or_ bare-bones versions (`ros-foxy-ros-base`), _and_ the development tools (`ros-dev-tools`). ::: - :::: + :::: 2. Some Python dependencies must also be installed (using **`pip`** or **`apt`**): - ```sh - pip install --user -U empy==3.3.4 pyros-genmsg setuptools - ``` + ```sh + pip install --user -U empy==3.3.4 pyros-genmsg setuptools + ``` ### Setup Micro XRCE-DDS Agent & Client @@ -155,22 +155,22 @@ To setup and start the agent: 2. 输入以下命令从仓库获取源代码并构建代理(Agent): - ```sh - git clone -b v2.4.2 https://github.com/eProsima/Micro-XRCE-DDS-Agent.git - cd Micro-XRCE-DDS-Agent - mkdir build - cd build - cmake .. - make - sudo make install - sudo ldconfig /usr/local/lib/ - ``` + ```sh + git clone -b v2.4.2 https://github.com/eProsima/Micro-XRCE-DDS-Agent.git + cd Micro-XRCE-DDS-Agent + mkdir build + cd build + cmake .. + make + sudo make install + sudo ldconfig /usr/local/lib/ + ``` 3. 启动代理并设置以连接运行在模拟器上的 uXRCE-DDS客户端(Client): - ```sh - MicroXRCEAgent udp4 -p 8888 - ``` + ```sh + MicroXRCEAgent udp4 -p 8888 + ``` The agent is now running, but you won't see much until we start PX4 (in the next step). @@ -187,31 +187,31 @@ To start the simulator (and client): 1. Open a new terminal in the root of the **PX4 Autopilot** repo that was installed above. - :::: tabs + :::: tabs - ::: tab humble + ::: tab humble - - Start a PX4 [Gazebo](../sim_gazebo_gz/index.md) simulation using: + - Start a PX4 [Gazebo](../sim_gazebo_gz/index.md) simulation using: - ```sh - make px4_sitl gz_x500 - ``` + ```sh + make px4_sitl gz_x500 + ``` ::: - ::: tab foxy + ::: tab foxy - - Start a PX4 [Gazebo Classic](../sim_gazebo_classic/index.md) simulation using: + - Start a PX4 [Gazebo Classic](../sim_gazebo_classic/index.md) simulation using: - ```sh - make px4_sitl gazebo-classic - ``` + ```sh + make px4_sitl gazebo-classic + ``` ::: - :::: + :::: The agent and client are now running they should connect. @@ -261,52 +261,52 @@ To create and build the workspace: 2. Create and navigate into a new workspace directory using: - ```sh - mkdir -p ~/ws_sensor_combined/src/ - cd ~/ws_sensor_combined/src/ - ``` + ```sh + mkdir -p ~/ws_sensor_combined/src/ + cd ~/ws_sensor_combined/src/ + ``` - ::: info - A naming convention for workspace folders can make it easier to manage workspaces. + ::: info + A naming convention for workspace folders can make it easier to manage workspaces. ::: 3. Clone the example repository and [px4_msgs](https://github.com/PX4/px4_msgs) to the `/src` directory (the `main` branch is cloned by default, which corresponds to the version of PX4 we are running): - ```sh - git clone https://github.com/PX4/px4_msgs.git - git clone https://github.com/PX4/px4_ros_com.git - ``` + ```sh + git clone https://github.com/PX4/px4_msgs.git + git clone https://github.com/PX4/px4_ros_com.git + ``` 4. Source the ROS 2 development environment into the current terminal and compile the workspace using `colcon`: - :::: tabs + :::: tabs - ::: tab humble + ::: tab humble - ```sh - cd .. - source /opt/ros/humble/setup.bash - colcon build - ``` + ```sh + cd .. + source /opt/ros/humble/setup.bash + colcon build + ``` ::: - ::: tab foxy + ::: tab foxy - ```sh - cd .. - source /opt/ros/foxy/setup.bash - colcon build - ``` + ```sh + cd .. + source /opt/ros/foxy/setup.bash + colcon build + ``` ::: - :::: + :::: - This builds all the folders under `/src` using the sourced toolchain. + This builds all the folders under `/src` using the sourced toolchain. #### Running the Example @@ -322,42 +322,42 @@ In a new terminal: 1. Navigate into the top level of your workspace directory and source the ROS 2 environment (in this case "Humble"): - :::: tabs + :::: tabs - ::: tab humble + ::: tab humble - ```sh - cd ~/ws_sensor_combined/ - source /opt/ros/humble/setup.bash - ``` + ```sh + cd ~/ws_sensor_combined/ + source /opt/ros/humble/setup.bash + ``` ::: - ::: tab foxy + ::: tab foxy - ```sh - cd ~/ws_sensor_combined/ - source /opt/ros/foxy/setup.bash - ``` + ```sh + cd ~/ws_sensor_combined/ + source /opt/ros/foxy/setup.bash + ``` ::: - :::: + :::: 2. Source the `local_setup.bash`. - ```sh - source install/local_setup.bash - ``` + ```sh + source install/local_setup.bash + ``` 3. Now launch the example. - Note here that we use `ros2 launch`, which is described below. + Note here that we use `ros2 launch`, which is described below. - ```sh - ros2 launch px4_ros_com sensor_combined_listener.launch.py - ``` + ```sh + ros2 launch px4_ros_com sensor_combined_listener.launch.py + ``` If this is working you should see data being printed on the terminal/console where you launched the ROS listener: @@ -385,18 +385,18 @@ If you were to use incompatible [message versions](../middleware/uorb.md#message 1. Include the [Message Translation Node](../ros2/px4_ros2_msg_translation_node.md) into the example workspace or a separate workspace by running the following script: - ```sh - cd /path/to/ros_ws - /path/to/PX4-Autopilot/Tools/copy_to_ros_ws.sh . - ``` + ```sh + cd /path/to/ros_ws + /path/to/PX4-Autopilot/Tools/copy_to_ros_ws.sh . + ``` 2. Build and run the translation node: - ```sh - colcon build - source install/local_setup.bash - ros2 run translation_node translation_node_bin - ``` + ```sh + colcon build + source install/local_setup.bash + ros2 run translation_node translation_node_bin + ``` ## Controlling a Vehicle diff --git a/docs/zh/sensor/inertial_navigation_systems.md b/docs/zh/sensor/inertial_navigation_systems.md index 29faaa7347..d5d5d675ea 100644 --- a/docs/zh/sensor/inertial_navigation_systems.md +++ b/docs/zh/sensor/inertial_navigation_systems.md @@ -2,13 +2,32 @@ PX4 typically runs on flight controllers that include an IMU, such as the Pixhawk series, and fuse the sensor data along with GNSS information in the EKF2 estimator to determine vehicle attitude, heading, position, and velocity. -However PX4 can also use some INS devices as either sources of raw data, or as an external estimator, replacing the EKF. +However PX4 can also use some INS devices as either sources of raw data, or as an external estimator, replacing EKF2. -Systems that can be used in this way include: +## Supported INS Systems + +INS systems that can be used as a replacement for EKF2 in PX4: - [InertialLabs](../sensor/inertiallabs.md) - [VectorNav](../sensor/vectornav.md): IMU/AHRS, GNSS/INS, Dual GNSS/INS systems that can be used as an external INS or as a source of raw sensor data. +## PX4 Firmware + +The driver module for your INS system may not be included in the PX4 firmware for your flight controller by default. + +You can check by searching the [default.px4board](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v6c/default.px4board#L25) configuration file for your target board for either: + +- `CONFIG_COMMON_INS`, which includes drivers for [all INS systems](https://github.com/PX4/PX4-Autopilot/blob/main/src/drivers/ins/Kconfig). +- The key for the particular INS system you are using, such as: + - `CONFIG_DRIVERS_INS_ILABS` + - `CONFIG_DRIVERS_INS_MICROSTRAIN` + - `CONFIG_DRIVERS_INS_VECTORNAV` + +If the required key is not present you can include the module in firmware by adding the key to the `default.px4board` file, or using the [kconfig board configuration tool](../hardware/porting_guide_config.md#px4-board-configuration-kconfig) and then select the driver you want (`Drivers -> INS`). +Note that if you're working on a flight controller where flash memory is limited, you're better off installing just the modules you need. + +You will then need to rebuild the firmware. + ## Glossary ### Inertial Measurement Unit (IMU) diff --git a/docs/zh/sensor/inertiallabs.md b/docs/zh/sensor/inertiallabs.md index 00f77141a6..68e231041b 100644 --- a/docs/zh/sensor/inertiallabs.md +++ b/docs/zh/sensor/inertiallabs.md @@ -57,11 +57,11 @@ To use the Inertial Labs driver: - For external INS, set [ILABS_MODE](../advanced_config/parameter_reference.md#ILABS_MODE) to `INS`. - For raw inertial sensors, set [ILABS_MODE](../advanced_config/parameter_reference.md#ILABS_MODE) to `Sensors Only`. - You can then prioritize inertial labs sensors using [CAL_GYROn_PRIO](../advanced_config/parameter_reference.md#CAL_GYRO0_PRIO), [CAL_ACCn_PRIO](../advanced_config/parameter_reference.md#CAL_ACC0_PRIO), [CAL_BAROn_PRIO](../advanced_config/parameter_reference.md#CAL_BARO0_PRIO), [CAL_MAGn_PRIO](../advanced_config/parameter_reference.md#CAL_MAG0_PRIO), where `n` is the instance number of the IMU component (0, 1, etc.). + You can then prioritize inertial labs sensors using [CAL_GYROn_PRIO](../advanced_config/parameter_reference.md#CAL_GYRO0_PRIO), [CAL_ACCn_PRIO](../advanced_config/parameter_reference.md#CAL_ACC0_PRIO), [CAL_BAROn_PRIO](../advanced_config/parameter_reference.md#CAL_BARO0_PRIO), [CAL_MAGn_PRIO](../advanced_config/parameter_reference.md#CAL_MAG0_PRIO), where `n` is the instance number of the IMU component (0, 1, etc.). - ::: tip - In most cases the external IMU is the highest-numbered. - You can get a list of the IMU components available using [`uorb top -1`](../middleware/uorb.md#uorb-top-command), you can differentiate between them using the [`listener`](../modules/modules_command.md#listener) command and looking through the data, or just the rates. + ::: tip + In most cases the external IMU is the highest-numbered. + You can get a list of the IMU components available using [`uorb top -1`](../middleware/uorb.md#uorb-top-command), you can differentiate between them using the [`listener`](../modules/modules_command.md#listener) command and looking through the data, or just the rates. ::: diff --git a/docs/zh/sensor/rangefinders.md b/docs/zh/sensor/rangefinders.md index f5d645cb40..0ecf81df77 100644 --- a/docs/zh/sensor/rangefinders.md +++ b/docs/zh/sensor/rangefinders.md @@ -146,11 +146,11 @@ To view the rangefinder output: 1. Open the menu **Q > Select Tool > Analyze Tools**: - ![Menu for QGC Analyze Tool](../../assets/qgc/analyze/menu_analyze_tool.png) + ![Menu for QGC Analyze Tool](../../assets/qgc/analyze/menu_analyze_tool.png) 2. Select the message `DISTANCE_SENSOR`, and then check the plot checkbox against `current_distance`. - The tool will then plot the result: - ![QGC Analyze DISTANCE_SENSOR value](../../assets/qgc/analyze/qgc_analyze_tool_distance_sensor.png) + The tool will then plot the result: + ![QGC Analyze DISTANCE_SENSOR value](../../assets/qgc/analyze/qgc_analyze_tool_distance_sensor.png) ### QGroundControl MAVLink Console diff --git a/docs/zh/sensor/vectornav.md b/docs/zh/sensor/vectornav.md index 1ec42b5668..84003cf023 100644 --- a/docs/zh/sensor/vectornav.md +++ b/docs/zh/sensor/vectornav.md @@ -61,18 +61,18 @@ To use the VectorNav driver: 5. Configure driver as either an external INS or to provide raw data: - If using the VectorNav as an external INS, set [VN_MODE](../advanced_config/parameter_reference.md#VN_MODE) to `INS`. - This disables EKF2. + This disables EKF2. - If using the VectorNav as external inertial sensors: - 1. Set [VN_MODE](../advanced_config/parameter_reference.md#VN_MODE) to `Sensors Only` - 2. If internal sensors are enabled, prioritize VectorNav sensors using [CAL_GYROn_PRIO](../advanced_config/parameter_reference.md#CAL_GYRO0_PRIO), [CAL_ACCn_PRIO](../advanced_config/parameter_reference.md#CAL_ACC0_PRIO), [CAL_BAROn_PRIO](../advanced_config/parameter_reference.md#CAL_BARO0_PRIO), [CAL_MAGn_PRIO](../advanced_config/parameter_reference.md#CAL_MAG0_PRIO), where _n_ is the instance number of the IMU component (0, 1, etc.). + 1. Set [VN_MODE](../advanced_config/parameter_reference.md#VN_MODE) to `Sensors Only` + 2. If internal sensors are enabled, prioritize VectorNav sensors using [CAL_GYROn_PRIO](../advanced_config/parameter_reference.md#CAL_GYRO0_PRIO), [CAL_ACCn_PRIO](../advanced_config/parameter_reference.md#CAL_ACC0_PRIO), [CAL_BAROn_PRIO](../advanced_config/parameter_reference.md#CAL_BARO0_PRIO), [CAL_MAGn_PRIO](../advanced_config/parameter_reference.md#CAL_MAG0_PRIO), where _n_ is the instance number of the IMU component (0, 1, etc.). - ::: tip - In most cases the external IMU (VN) is the highest-numbered. - You can get a list of the IMU components available using [`uorb top -1`](../middleware/uorb.md#uorb-top-command), you can differentiate between them using the [`listener`](../modules/modules_command.md#listener) command and looking through the data, or just the rates. + ::: tip + In most cases the external IMU (VN) is the highest-numbered. + You can get a list of the IMU components available using [`uorb top -1`](../middleware/uorb.md#uorb-top-command), you can differentiate between them using the [`listener`](../modules/modules_command.md#listener) command and looking through the data, or just the rates. - Alternatively, you can check [CAL_GYROn_ID](../advanced_config/parameter_reference.md#CAL_GYRO0_ID) to see the device id. - The priority is 0-255, where 0 is entirely disabled and 255 is highest priority. + Alternatively, you can check [CAL_GYROn_ID](../advanced_config/parameter_reference.md#CAL_GYRO0_ID) to see the device id. + The priority is 0-255, where 0 is entirely disabled and 255 is highest priority. ::: diff --git a/docs/zh/sim_flightgear/index.md b/docs/zh/sim_flightgear/index.md index 9e5e0c2179..d528471c34 100644 --- a/docs/zh/sim_flightgear/index.md +++ b/docs/zh/sim_flightgear/index.md @@ -40,33 +40,33 @@ These instructions were tested on Ubuntu 18.04 2. Install FlightGear: - ```sh - sudo add-apt-repository ppa:saiarcot895/flightgear - sudo apt update - sudo apt install flightgear - ``` + ```sh + sudo add-apt-repository ppa:saiarcot895/flightgear + sudo apt update + sudo apt install flightgear + ``` - This installs the latest stable FlightGear version from the PAA repository along with the FGdata package. + This installs the latest stable FlightGear version from the PAA repository along with the FGdata package. - :::tip - For some models (e.g. those with electric engines) the daily build with the newest features may be necessary. - Install this using the [daily build PPA](https://launchpad.net/~saiarcot895/+archive/ubuntu/flightgear-edge). + :::tip + For some models (e.g. those with electric engines) the daily build with the newest features may be necessary. + Install this using the [daily build PPA](https://launchpad.net/~saiarcot895/+archive/ubuntu/flightgear-edge). ::: 3. Check that you are able to run FlightGear: - ```sh - fgfs --launcher - ``` + ```sh + fgfs --launcher + ``` 4. Set write permissions to the **Protocols** folder in the FlightGear installation directory: - ```sh - sudo chmod a+w /usr/share/games/flightgear/Protocol - ``` + ```sh + sudo chmod a+w /usr/share/games/flightgear/Protocol + ``` - Setting the permissions is required because the PX4-FlightGear-Bridge puts the communication definition file here. + Setting the permissions is required because the PX4-FlightGear-Bridge puts the communication definition file here. Additional installation instructions can be found on [FlightGear wiki](https://wiki.flightgear.org/Howto:Install_Flightgear_from_a_PPA). diff --git a/docs/zh/sim_gazebo_classic/index.md b/docs/zh/sim_gazebo_classic/index.md index 73f6f7444f..d3245db579 100644 --- a/docs/zh/sim_gazebo_classic/index.md +++ b/docs/zh/sim_gazebo_classic/index.md @@ -249,14 +249,14 @@ It is enabled by default in many vehicle SDF files: **solo.sdf**, **iris.sdf**, To enable/disable GPS noise: 1. Build any gazebo target in order to generate SDF files (for all vehicles). - 例如: + 例如: - ```sh - make px4_sitl gazebo-classic_iris - ``` + ```sh + make px4_sitl gazebo-classic_iris + ``` - :::tip - The SDF files are not overwritten on subsequent builds. + :::tip + The SDF files are not overwritten on subsequent builds. ::: @@ -264,17 +264,17 @@ To enable/disable GPS noise: 3. Search for the `gpsNoise` element: - ```xml - - - true - - ``` + ```xml + + + true + + ``` - - If it is present, GPS is enabled. - You can disable it by deleting the line: `true` - - If it is not present, GPS is disabled. - You can enable it by adding the `gpsNoise` element to the `gps_plugin` section (as shown above). + - If it is present, GPS is enabled. + You can disable it by deleting the line: `true` + - If it is not present, GPS is disabled. + You can enable it by adding the `gpsNoise` element to the `gps_plugin` section (as shown above). The next time you build/restart Gazebo Classic it will use the new GPS noise setting. diff --git a/docs/zh/sim_gazebo_classic/multi_vehicle_simulation.md b/docs/zh/sim_gazebo_classic/multi_vehicle_simulation.md index 722bfd7a30..381773e488 100644 --- a/docs/zh/sim_gazebo_classic/multi_vehicle_simulation.md +++ b/docs/zh/sim_gazebo_classic/multi_vehicle_simulation.md @@ -68,36 +68,36 @@ To build an example setup, follow the steps below: 1. Clone the PX4/Firmware code, then build the SITL code: - ```sh - cd Firmware_clone - git submodule update --init --recursive - DONT_RUN=1 make px4_sitl gazebo-classic - ``` + ```sh + cd Firmware_clone + git submodule update --init --recursive + DONT_RUN=1 make px4_sitl gazebo-classic + ``` 2. Build the `micro xrce-dds agent` and the interface package following the [instructions here](../ros2/user_guide.md). 3. Run `Tools/simulation/gazebo-classic/sitl_multiple_run.sh`. - For example, to spawn 4 vehicles, run: + For example, to spawn 4 vehicles, run: - ```sh - ./Tools/simulation/gazebo-classic/sitl_multiple_run.sh -m iris -n 4 - ``` + ```sh + ./Tools/simulation/gazebo-classic/sitl_multiple_run.sh -m iris -n 4 + ``` - ::: info - Each vehicle instance is allocated a unique MAVLink system id (2, 3, 4, etc.). - MAVLink system id 1 is skipped. + ::: info + Each vehicle instance is allocated a unique MAVLink system id (2, 3, 4, etc.). + MAVLink system id 1 is skipped. ::: 4. Run `MicroXRCEAgent`. - It will automatically connect to all four vehicles: + It will automatically connect to all four vehicles: - ```sh - MicroXRCEAgent udp4 -p 8888 - ``` + ```sh + MicroXRCEAgent udp4 -p 8888 + ``` - ::: info - The simulator startup script automatically assigns a [unique namespace](../ros2/multi_vehicle.md) to each vehicle. + ::: info + The simulator startup script automatically assigns a [unique namespace](../ros2/multi_vehicle.md) to each vehicle. ::: @@ -117,27 +117,27 @@ To build an example setup, follow the step below: 1. Clone the PX4/PX4-Autopilot code, then build the SITL code - ```sh - cd Firmware_clone - git submodule update --init --recursive - DONT_RUN=1 make px4_sitl_default gazebo-classic - ``` + ```sh + cd Firmware_clone + git submodule update --init --recursive + DONT_RUN=1 make px4_sitl_default gazebo-classic + ``` 2. Source your environment: - ```sh - source Tools/simulation/gazebo-classic/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default - export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd):$(pwd)/Tools/simulation/gazebo-classic/sitl_gazebo - ``` + ```sh + source Tools/simulation/gazebo-classic/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default + export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd):$(pwd)/Tools/simulation/gazebo-classic/sitl_gazebo + ``` 3. Run launch file: - ```sh - roslaunch px4 multi_uav_mavros_sitl.launch - ``` + ```sh + roslaunch px4 multi_uav_mavros_sitl.launch + ``` - ::: info - You can specify `gui:=false` in the above _roslaunch_ to launch Gazebo Classic without its UI. + ::: info + You can specify `gui:=false` in the above _roslaunch_ to launch Gazebo Classic without its UI. ::: @@ -253,45 +253,45 @@ This section shows how developers can simulate multiple vehicles using vehicle m 1. Install _xmlstarlet_ from your Linux terminal: - ```sh - sudo apt install xmlstarlet - ``` + ```sh + sudo apt install xmlstarlet + ``` 2. Use _roslaunch_ with the **multi_uav_mavros_sitl_sdf.launch** launch file: - ````sh - roslaunch multi_uav_mavros_sitl_sdf.launch vehicle:= - ``` + ````sh + roslaunch multi_uav_mavros_sitl_sdf.launch vehicle:= + ``` - ::: info - Note that the vehicle model file name argument is optional (`vehicle:=`); if omitted the [plane model](https://github.com/PX4/PX4-SITL_gazebo-classic/tree/master/models/plane) will be used by default. + ::: info + Note that the vehicle model file name argument is optional (`vehicle:=`); if omitted the [plane model](https://github.com/PX4/PX4-SITL_gazebo-classic/tree/master/models/plane) will be used by default. ::: - ```` + ```` This method is similar to using the xacro except that the SITL/Gazebo Classic port number is automatically inserted by _xmstarlet_ for each spawned vehicle, and does not need to be specified in the SDF file. To add a new vehicle, you need to make sure the model can be found (in order to spawn it in Gazebo Classic), and PX4 needs to have an appropriate corresponding startup script. 1. You can choose to do either of: - - modify the **single_vehicle_spawn_sdf.launch** file to point to the location of your model by changing the line below to point to your model: + - modify the **single_vehicle_spawn_sdf.launch** file to point to the location of your model by changing the line below to point to your model: - ```sh - $(find px4)/Tools/simulation/gazebo/sitl_gazebo-classic/models/$(arg vehicle)/$(arg vehicle).sdf - ``` + ```sh + $(find px4)/Tools/simulation/gazebo/sitl_gazebo-classic/models/$(arg vehicle)/$(arg vehicle).sdf + ``` - ::: info - Ensure you set the `vehicle` argument even if you hardcode the path to your model. + ::: info + Ensure you set the `vehicle` argument even if you hardcode the path to your model. ::: - - copy your model into the folder indicated above (following the same path convention). + - copy your model into the folder indicated above (following the same path convention). 2. The `vehicle` argument is used to set the `PX4_SIM_MODEL` environment variable, which is used by the default rcS (startup script) to find the corresponding startup settings file for the model. - Within PX4 these startup files can be found in the **PX4-Autopilot/ROMFS/px4fmu_common/init.d-posix/** directory. - For example, here is the plane model's [startup script](https://github.com/PX4/PX4-Autopilot/blob/main/ROMFS/px4fmu_common/init.d-posix/airframes/1030_gazebo-classic_plane). - For this to work, the PX4 node in the launch file is passed arguments that specify the _rcS_ file (**etc/init.d/rcS**) and the location of the rootfs etc directory (`$(find px4)/build_px4_sitl_default/etc`). - For simplicity, it is suggested that the startup file for the model be placed alongside PX4's in **PX4-Autopilot/ROMFS/px4fmu_common/init.d-posix/**. + Within PX4 these startup files can be found in the **PX4-Autopilot/ROMFS/px4fmu_common/init.d-posix/** directory. + For example, here is the plane model's [startup script](https://github.com/PX4/PX4-Autopilot/blob/main/ROMFS/px4fmu_common/init.d-posix/airframes/1030_gazebo-classic_plane). + For this to work, the PX4 node in the launch file is passed arguments that specify the _rcS_ file (**etc/init.d/rcS**) and the location of the rootfs etc directory (`$(find px4)/build_px4_sitl_default/etc`). + For simplicity, it is suggested that the startup file for the model be placed alongside PX4's in **PX4-Autopilot/ROMFS/px4fmu_common/init.d-posix/**. ## Additional Resources diff --git a/docs/zh/sim_gazebo_gz/gazebo_models.md b/docs/zh/sim_gazebo_gz/gazebo_models.md index 915dd7a90d..5756fa3bda 100644 --- a/docs/zh/sim_gazebo_gz/gazebo_models.md +++ b/docs/zh/sim_gazebo_gz/gazebo_models.md @@ -101,15 +101,15 @@ This example explains how you can run standalone mode PX4 via two terminals on o 1. In one terminal run - ```sh - PX4_GZ_STANDALONE=1 PX4_SYS_AUTOSTART=4001 PX4_SIM_MODEL=gz_x500 PX4_GZ_WORLD=windy ./build/px4_sitl_default/bin/px4 - ``` + ```sh + PX4_GZ_STANDALONE=1 PX4_SYS_AUTOSTART=4001 PX4_SIM_MODEL=gz_x500 PX4_GZ_WORLD=windy ./build/px4_sitl_default/bin/px4 + ``` 2. In a second terminal window run: - ```sh - python3 /path/to/simulation-gazebo --world windy - ``` + ```sh + python3 /path/to/simulation-gazebo --world windy + ``` No additional parameters have to be passed to the simulation-gazebo script in order for this example to work, as all Gazebo nodes run on the same host. See the example below for a more involved scenario with different hosts. diff --git a/docs/zh/sim_gazebo_gz/index.md b/docs/zh/sim_gazebo_gz/index.md index 34c383c3c9..127701dc05 100644 --- a/docs/zh/sim_gazebo_gz/index.md +++ b/docs/zh/sim_gazebo_gz/index.md @@ -316,33 +316,33 @@ Here are some examples of the different scenarios covered above. 1. **Start simulator + default world + spawn vehicle at default pose** - ```sh - PX4_SYS_AUTOSTART=4001 PX4_SIM_MODEL=gz_x500 ./build/px4_sitl_default/bin/px4 - ``` + ```sh + PX4_SYS_AUTOSTART=4001 PX4_SIM_MODEL=gz_x500 ./build/px4_sitl_default/bin/px4 + ``` 2. **Start simulator + default world + spawn vehicle at custom pose (y=2m)** - ```sh - PX4_SYS_AUTOSTART=4001 PX4_GZ_MODEL_POSE="0,2" PX4_SIM_MODEL=gz_x500 ./build/px4_sitl_default/bin/px4 - ``` + ```sh + PX4_SYS_AUTOSTART=4001 PX4_GZ_MODEL_POSE="0,2" PX4_SIM_MODEL=gz_x500 ./build/px4_sitl_default/bin/px4 + ``` 3. **Start simulator + default world + link to existing vehicle** - ```sh - PX4_SYS_AUTOSTART=4001 PX4_GZ_MODEL_NAME=x500 ./build/px4_sitl_default/bin/px4 - ``` + ```sh + PX4_SYS_AUTOSTART=4001 PX4_GZ_MODEL_NAME=x500 ./build/px4_sitl_default/bin/px4 + ``` 4. **Start simulator in standalone mode + connect to Gazebo instance running default world** - ```sh - PX4_GZ_STANDALONE=1 PX4_SYS_AUTOSTART=4001 PX4_SIM_MODEL=gz_x500 ./build/px4_sitl_default/bin/px4 - ``` + ```sh + PX4_GZ_STANDALONE=1 PX4_SYS_AUTOSTART=4001 PX4_SIM_MODEL=gz_x500 ./build/px4_sitl_default/bin/px4 + ``` - In a separate terminal run: + In a separate terminal run: - ```sh - python /path/to/simulation-gazebo - ``` + ```sh + python /path/to/simulation-gazebo + ``` ## Adding New Worlds and Models @@ -358,38 +358,38 @@ To add a new model: 2. Define the default parameters for Gazebo in the airframe configuration file (this example is from [x500 quadcopter](https://github.com/PX4/PX4-Autopilot/blob/main/ROMFS/px4fmu_common/init.d-posix/airframes/4001_gz_x500)): - ```ini - PX4_SIMULATOR=${PX4_SIMULATOR:=gz} - PX4_GZ_WORLD=${PX4_GZ_WORLD:=default} - PX4_SIM_MODEL=${PX4_SIM_MODEL:=} - ``` + ```ini + PX4_SIMULATOR=${PX4_SIMULATOR:=gz} + PX4_GZ_WORLD=${PX4_GZ_WORLD:=default} + PX4_SIM_MODEL=${PX4_SIM_MODEL:=} + ``` - - `PX4_SIMULATOR=${PX4_SIMULATOR:=gz}` sets the default simulator (Gz) for that specific airframe. + - `PX4_SIMULATOR=${PX4_SIMULATOR:=gz}` sets the default simulator (Gz) for that specific airframe. - - `PX4_GZ_WORLD=${PX4_GZ_WORLD:=default}` sets the [default world](https://github.com/PX4/PX4-gazebo-models/blob/main/worlds/default.sdf) for that specific airframe. + - `PX4_GZ_WORLD=${PX4_GZ_WORLD:=default}` sets the [default world](https://github.com/PX4/PX4-gazebo-models/blob/main/worlds/default.sdf) for that specific airframe. - - Setting the default value of `PX4_SIM_MODEL` lets you start the simulation with just: + - Setting the default value of `PX4_SIM_MODEL` lets you start the simulation with just: - ```sh - PX4_SYS_AUTOSTART= ./build/px4_sitl_default/bin/px4 - ``` + ```sh + PX4_SYS_AUTOSTART= ./build/px4_sitl_default/bin/px4 + ``` 3. Add CMake Target for the [airframe](https://github.com/PX4/PX4-Autopilot/blob/main/ROMFS/px4fmu_common/init.d-posix/airframes/CMakeLists.txt). - - If you plan to use "regular" mode, add your model SDF to `Tools/simulation/gz/models/`. - - If you plan to use _standalone_ mode, add your model SDF to `~/.simulation-gazebo/models/` + - If you plan to use "regular" mode, add your model SDF to `Tools/simulation/gz/models/`. + - If you plan to use _standalone_ mode, add your model SDF to `~/.simulation-gazebo/models/` - You can of course also use both. + You can of course also use both. ### Adding a World To add a new world: 1. Add your world to the list of worlds found in the [`CMakeLists.txt` here](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/simulation/gz_bridge/CMakeLists.txt). - This is required in order to allow `CMake` to generate correct targets. + This is required in order to allow `CMake` to generate correct targets. - - If you plan to use "normal" mode, add your world sdf to `Tools/simulation/gz/worlds/`. - - If you plan to use _standalone_ mode, add your world SDF to `~/.simulation-gazebo/worlds/` + - If you plan to use "normal" mode, add your world sdf to `Tools/simulation/gz/worlds/`. + - If you plan to use _standalone_ mode, add your world SDF to `~/.simulation-gazebo/worlds/` :::info As long as the world file and the model file are in the Gazebo search path (`GZ_SIM_RESOURCE_PATH`) it is not necessary to add them to the PX4 world and model directories. diff --git a/docs/zh/sim_gazebo_gz/plugins.md b/docs/zh/sim_gazebo_gz/plugins.md index 9723f44177..0f48c53db8 100644 --- a/docs/zh/sim_gazebo_gz/plugins.md +++ b/docs/zh/sim_gazebo_gz/plugins.md @@ -43,8 +43,8 @@ When developing new plugins: 1. **Follow the plugin architecture** - Implement desired interfaces. - You can start by copying the [Template plugin](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/simulation/gz_plugins/template_plugin) which is a simple example that only implements `ISystemPreUpdate` and `ISystemPostUpdate`. - The interfaces are specified in the official [Gazebo documentation](https://gazebosim.org/api/sim/9/createsystemplugins.html). + You can start by copying the [Template plugin](https://github.com/PX4/PX4-Autopilot/tree/main/src/modules/simulation/gz_plugins/template_plugin) which is a simple example that only implements `ISystemPreUpdate` and `ISystemPostUpdate`. + The interfaces are specified in the official [Gazebo documentation](https://gazebosim.org/api/sim/9/createsystemplugins.html). 2. **Register your plugin** - Add it to [server.config](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/simulation/gz_bridge/server.config) for discovery. diff --git a/docs/zh/sim_gazebo_gz/tools_avl_automation.md b/docs/zh/sim_gazebo_gz/tools_avl_automation.md index 049c37b623..fd57223dce 100644 --- a/docs/zh/sim_gazebo_gz/tools_avl_automation.md +++ b/docs/zh/sim_gazebo_gz/tools_avl_automation.md @@ -11,26 +11,26 @@ The results will then automatically be written into a provided plugin template t To setup the tool: 1. Download AVL 3.36 from . - The file for AVL version 3.36 can be found about halfway down the page. + The file for AVL version 3.36 can be found about halfway down the page. 2. After downloading, extract AVL and move it to the home directory using: - ```sh - sudo tar -xf avl3.36.tgz - mv ./Avl /home/ - ``` + ```sh + sudo tar -xf avl3.36.tgz + mv ./Avl /home/ + ``` 3. Follow the **index.md** found in `./Avl` to finish the setup process for AVL (this requires that you set up `plotlib` and `eispack` libraries). - We recommend using the `gfortran` compile option, which might further require that you to install `gfortran`. - On Ubuntu can be done by running: + We recommend using the `gfortran` compile option, which might further require that you to install `gfortran`. + On Ubuntu can be done by running: - ```sh - sudo apt update - sudo apt install gfortran - ``` + ```sh + sudo apt update + sudo apt install gfortran + ``` - When running the Makefile for AVL, you might encounter an `Error 1` message stating that there is a directory missing. - This does not prevent AVL from working for our purposes. + When running the Makefile for AVL, you might encounter an `Error 1` message stating that there is a directory missing. + This does not prevent AVL from working for our purposes. Once the process described in the AVL README is completed, AVL is ready to be used. No further set up is required on the side of the AVL or the tool. @@ -49,16 +49,16 @@ To run the tool for your plane: 2. Run the tool on your yml file: - ```sh - python input_avl.py .yml - ``` + ```sh + python input_avl.py .yml + ``` - Note that the `yaml` and `argparse` packages must be present in your Python environment. + Note that the `yaml` and `argparse` packages must be present in your Python environment. 3. The tool prompts for a range of vehicle specific parameters that are needed in order to specify the geometry and physical properties of the plane. - You can either: - - select a predefined model template (such as a Cessna or a VTOL), which has a known number of control surfaces, and just modify some physical properties, or - - define a completely custom model + You can either: + - select a predefined model template (such as a Cessna or a VTOL), which has a known number of control surfaces, and just modify some physical properties, or + - define a completely custom model Once the script has been executed, the generated `.avl`, `.sdf` and a plot of the proposed control surfaces can be found in `` directory. The sdf file is the generated Advanced Lift Drag Plugin that can be copied and pasted into a model.sdf file, which can then be run in Gazebo. diff --git a/docs/zh/sim_jmavsim/index.md b/docs/zh/sim_jmavsim/index.md index 8208f0b7a6..d63db8d443 100644 --- a/docs/zh/sim_jmavsim/index.md +++ b/docs/zh/sim_jmavsim/index.md @@ -30,23 +30,23 @@ Follow the instructions below to install jMAVSim on macOS. To setup the environment for [jMAVSim](../sim_jmavsim/index.md) simulation: 1. Install a recent version of Java (e.g. Java 15). - You can download [Java 15 (or later) from Oracle](https://www.oracle.com/java/technologies/downloads/?er=221886) or use [Eclipse Temurin](https://adoptium.net): + You can download [Java 15 (or later) from Oracle](https://www.oracle.com/java/technologies/downloads/?er=221886) or use [Eclipse Temurin](https://adoptium.net): - ```sh - brew install --cask temurin - ``` + ```sh + brew install --cask temurin + ``` 2. Install jMAVSim: - ```sh - brew install px4-sim-jmavsim - ``` + ```sh + brew install px4-sim-jmavsim + ``` - :::warning - PX4 v1.11 and beyond require at least JDK 15 for jMAVSim simulation. + :::warning + PX4 v1.11 and beyond require at least JDK 15 for jMAVSim simulation. - For earlier versions, macOS users might see the error `Exception in thread "main" java.lang.UnsupportedClassVersionError:`. - You can find the fix in the [jMAVSim with SITL > Troubleshooting](../sim_jmavsim/index.md#troubleshooting)). + For earlier versions, macOS users might see the error `Exception in thread "main" java.lang.UnsupportedClassVersionError:`. + You can find the fix in the [jMAVSim with SITL > Troubleshooting](../sim_jmavsim/index.md#troubleshooting)). ::: diff --git a/docs/zh/sim_sih/index.md b/docs/zh/sim_sih/index.md index 7b09b1442f..f4896ab8db 100644 --- a/docs/zh/sim_sih/index.md +++ b/docs/zh/sim_sih/index.md @@ -71,24 +71,24 @@ To check that these are present on your flight controller: 3. Enter the following commands in the console: - ```sh - pwm_out_sim status - ``` + ```sh + pwm_out_sim status + ``` - ```sh - sensor_baro_sim status - ``` + ```sh + sensor_baro_sim status + ``` - ```sh - sensor_gps_sim status - ``` + ```sh + sensor_gps_sim status + ``` - ```sh - sensor_mag_sim status - ``` + ```sh + sensor_mag_sim status + ``` - ::: tip - Note that when using SIH on real hardware you do not need to additionally enable the modules using their corresponding parameters ([SENS_EN_GPSSIM](../advanced_config/parameter_reference.md#SENS_EN_GPSSIM), [SENS_EN_BAROSIM](../advanced_config/parameter_reference.md#SENS_EN_BAROSIM), [SENS_EN_MAGSIM](../advanced_config/parameter_reference.md#SENS_EN_MAGSIM)). + ::: tip + Note that when using SIH on real hardware you do not need to additionally enable the modules using their corresponding parameters ([SENS_EN_GPSSIM](../advanced_config/parameter_reference.md#SENS_EN_GPSSIM), [SENS_EN_BAROSIM](../advanced_config/parameter_reference.md#SENS_EN_BAROSIM), [SENS_EN_MAGSIM](../advanced_config/parameter_reference.md#SENS_EN_MAGSIM)). ::: @@ -141,12 +141,12 @@ To set up/start SIH: 1. Connect the flight controller to the desktop computer with a USB cable. 2. Open QGroundControl and wait for the flight controller too boot and connect. 3. Open [Vehicle Setup > Airframe](../config/airframe.md) then select the desired frame: - - [SIH Quadcopter X](../airframes/airframe_reference.md#copter_simulation_sih_quadcopter_x) - - **SIH Hexacopter X** (currently only has an airframe for SITL to safe flash so on flight control hardware it has to be manually configured equivalently). - - [SIH plane AERT](../airframes/airframe_reference.md#plane_simulation_sih_plane_aert) - - [SIH Tailsitter Duo](../airframes/airframe_reference.md#vtol_simulation_sih_tailsitter_duo) - - [SIH Standard VTOL QuadPlane](../airframes/airframe_reference.md#vtol_simulation_sih_standard_vtol_quadplane) - - [SIH Ackermann Rover](../airframes/airframe_reference.md#rover_rover_sih_rover_ackermann) + - [SIH Quadcopter X](../airframes/airframe_reference.md#copter_simulation_sih_quadcopter_x) + - **SIH Hexacopter X** (currently only has an airframe for SITL to safe flash so on flight control hardware it has to be manually configured equivalently). + - [SIH plane AERT](../airframes/airframe_reference.md#plane_simulation_sih_plane_aert) + - [SIH Tailsitter Duo](../airframes/airframe_reference.md#vtol_simulation_sih_tailsitter_duo) + - [SIH Standard VTOL QuadPlane](../airframes/airframe_reference.md#vtol_simulation_sih_standard_vtol_quadplane) + - [SIH Ackermann Rover](../airframes/airframe_reference.md#rover_rover_sih_rover_ackermann) The autopilot will then reboot. The `sih` module is started on reboot, and the vehicle should be displayed on the ground control station map. @@ -172,19 +172,19 @@ To display the simulated vehicle: 3. Start jMAVSim by calling the script **jmavsim_run.sh** from a terminal: - ```sh - ./Tools/simulation/jmavsim/jmavsim_run.sh -q -d /dev/ttyACM0 -b 2000000 -o - ``` + ```sh + ./Tools/simulation/jmavsim/jmavsim_run.sh -q -d /dev/ttyACM0 -b 2000000 -o + ``` - where the flags are: + where the flags are: - - `-q` to allow the communication to _QGroundControl_ (optional). - - `-d` to start the serial device `/dev/ttyACM0` on Linux. - On macOS this would be `/dev/tty.usbmodem1`. - - `-b` to set the serial baud rate to `2000000`. - - `-o` to start jMAVSim in _display Only_ mode (i.e. the physical engine is turned off and jMAVSim only displays the trajectory given by the SIH in real-time). - - add a flag `-a` to display an aircraft or `-t` to display a tailsitter. - If this flag is not present a quadrotor will be displayed by default. + - `-q` to allow the communication to _QGroundControl_ (optional). + - `-d` to start the serial device `/dev/ttyACM0` on Linux. + On macOS this would be `/dev/tty.usbmodem1`. + - `-b` to set the serial baud rate to `2000000`. + - `-o` to start jMAVSim in _display Only_ mode (i.e. the physical engine is turned off and jMAVSim only displays the trajectory given by the SIH in real-time). + - add a flag `-a` to display an aircraft or `-t` to display a tailsitter. + If this flag is not present a quadrotor will be displayed by default. 4. After few seconds, _QGroundControl_ can be opened again. @@ -201,41 +201,41 @@ To run SIH as SITL: 1. Install the [PX4 Development toolchain](../dev_setup/dev_env.md). 2. Run the appropriate make command for each vehicle type (at the root of the PX4-Autopilot repository): - - Quadcopter + - Quadcopter - ```sh - make px4_sitl sihsim_quadx - ``` + ```sh + make px4_sitl sihsim_quadx + ``` - - Hexacopter + - Hexacopter - ```sh - make px4_sitl sihsim_hex - ``` + ```sh + make px4_sitl sihsim_hex + ``` - - Fixed-wing (plane) + - Fixed-wing (plane) - ```sh - make px4_sitl sihsim_airplane - ``` + ```sh + make px4_sitl sihsim_airplane + ``` - - XVert VTOL tailsitter + - XVert VTOL tailsitter - ```sh - make px4_sitl sihsim_xvert - ``` + ```sh + make px4_sitl sihsim_xvert + ``` - - 标准垂起固定翼 + - 标准垂起固定翼 - ```sh - make px4_sitl sihsim_standard_vtol - ``` + ```sh + make px4_sitl sihsim_standard_vtol + ``` - - Ackermann Rover + - Ackermann Rover - ```sh - make px4_sitl sihsim_rover_ackermann - ``` + ```sh + make px4_sitl sihsim_rover_ackermann + ``` ### Change Simulation Speed @@ -328,6 +328,44 @@ For SIH as SITL (no FC): For specific examples see the `_sihsim_` airframes in [ROMFS/px4fmu_common/init.d-posix/airframes](https://github.com/PX4/PX4-Autopilot/blob/main/ROMFS/px4fmu_common/init.d-posix/airframes/) (SIH as SITL) and [ROMFS/px4fmu_common/init.d/airframes](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d/airframes) (SIH on FC). +## Controlling Actuators in SIH + +:::warning +If you want to control throttling actuators in SIH, make sure to remove propellers for safety. +::: + +In some scenarios, it may be useful to control an actuator while running SIH. For example, you might want to verify that winches or grippers are functioning correctly by checking the servo responses. + +To enable actuator control in SIH: + +1. Configure PWM parameters in the airframe file: + +Ensure your airframe file includes the necessary parameters to map PWM outputs to the correct channels. + +For example, if a servo is connected to MAIN 3 and you want to map it to AUX1 on your RC, use the following command: + +`param set-default PWM_MAIN_FUNC3 407` + +You can find a full list of available values for `PWM_MAIN_FUNCn` [here](../advanced_config/parameter_reference.md#PWM_MAIN_FUNC1). In this case, `407` maps the MAIN 3 output to AUX1 on the RC. + +Alternatively, you can use the [`PWM_AUX_FUNCn`](../advanced_config/parameter_reference.md#PWM_AUX_FUNC1) parameters. + +You may also configure the output as desired: + +- Disarmed PWM: ([`PWM_MAIN_DISn`](../advanced_config/parameter_reference.md#PWM_MAIN_DIS1) / [`PWM_AUX_DIS1`](../advanced_config/parameter_reference.md#PWM_AUX_DIS1)) +- Minimum PWM ([`PWM_MAIN_MINn`](../advanced_config/parameter_reference.md#PWM_MAIN_MIN1) / [`PWM_AUX_MINn`](../advanced_config/parameter_reference.md#PWM_AUX_MIN1)) +- Maximum PWM ([`PWM_MAIN_MAXn`](../advanced_config/parameter_reference.md#PWM_MAIN_MAX1) / [`PWM_AUX_MAXn`](../advanced_config/parameter_reference.md#PWM_AUX_MAX1)) + +2. Manually start the PWM output driver + +For safety, the PWM driver is not started automatically in SIH. To enable it, run the following command in the MAVLink shell: + +`pwm_out start` + +And to disable it again: + +`pwm_out stop` + ## Dynamic Models The dynamic models for the various vehicles are: diff --git a/docs/zh/simulation/index.md b/docs/zh/simulation/index.md index db8211d3cd..e5d3f03025 100644 --- a/docs/zh/simulation/index.md +++ b/docs/zh/simulation/index.md @@ -217,20 +217,20 @@ The simulated camera is a gazebo classic plugin that implements the [MAVLink Cam PX4 connects/integrates with this camera in _exactly the same way_ as it would with any other MAVLink camera: 1. [TRIG_INTERFACE](../advanced_config/parameter_reference.md#TRIG_INTERFACE) must be set to `3` to configure the camera trigger driver for use with a MAVLink camera - :::tip - In this mode the driver just sends a [CAMERA_TRIGGER](https://mavlink.io/en/messages/common.html#CAMERA_TRIGGER) message whenever an image capture is requested. - For more information see [Cameras Connected to Flight Controller Outputs](../camera/fc_connected_camera.md). + :::tip + In this mode the driver just sends a [CAMERA_TRIGGER](https://mavlink.io/en/messages/common.html#CAMERA_TRIGGER) message whenever an image capture is requested. + For more information see [Cameras Connected to Flight Controller Outputs](../camera/fc_connected_camera.md). ::: 2. PX4 必须在 GCS 和(模拟器)MAVLink Camera 之间转发所有摄像机命令。 - You can do this by starting [MAVLink](../modules/modules_communication.md#mavlink) with the `-f` flag as shown, specifying the UDP ports for the new connection. + You can do this by starting [MAVLink](../modules/modules_communication.md#mavlink) with the `-f` flag as shown, specifying the UDP ports for the new connection. - ```sh - mavlink start -u 14558 -o 14530 -r 4000 -f -m camera - ``` + ```sh + mavlink start -u 14558 -o 14530 -r 4000 -f -m camera + ``` - ::: info - More than just the camera MAVLink messages will be forwarded, but the camera will ignore those that it doesn't consider relevant. + ::: info + More than just the camera MAVLink messages will be forwarded, but the camera will ignore those that it doesn't consider relevant. ::: diff --git a/docs/zh/smart_batteries/rotoye_batmon.md b/docs/zh/smart_batteries/rotoye_batmon.md index ead3d454db..e12979457b 100644 --- a/docs/zh/smart_batteries/rotoye_batmon.md +++ b/docs/zh/smart_batteries/rotoye_batmon.md @@ -3,11 +3,6 @@ [Rotoye 电池监测器](https://rotoye.com/batmon/) 是一款套件,用于为现成的锂离子和锂聚合物电池增添智能电池功能。 It can be purchased as a standalone unit or as part of a factory-assembled smart-battery. -:::info -At time of writing you can only use Batmon by [building a custom branch of PX4](#build-px4-firmware). -Support in the codeline is pending [PR approval](https://github.com/PX4/PX4-Autopilot/pull/16723). -::: - ![Rotoye 电池监控板](../../assets/hardware/smart_batteries/rotoye_batmon/smart-battery-rotoye.jpg) ![组装的罗托耶智能电池](../../assets/hardware/smart_batteries/rotoye_batmon/smart-battery-rotoye-pack.jpg) diff --git a/docs/zh/telemetry/crsf_telemetry.md b/docs/zh/telemetry/crsf_telemetry.md index 322d3ebbe9..b265e83580 100644 --- a/docs/zh/telemetry/crsf_telemetry.md +++ b/docs/zh/telemetry/crsf_telemetry.md @@ -77,36 +77,36 @@ To use this feature you must build and upload custom firmware that includes [crs 1. [Setup a development environment](../dev_setup/dev_env.md) for building PX4. - As part of this process you will have used `git` to fetch source code into the **PX4-Autopilot** directory. + As part of this process you will have used `git` to fetch source code into the **PX4-Autopilot** directory. 2. Open a terminal and `cd` into the `PX4-Autopilot` directory. - ```sh - cd PX4-Autopilot - ``` + ```sh + cd PX4-Autopilot + ``` 3. Launch the [PX4 board config tool (`menuconfig`)](../hardware/porting_guide_config.md#px4-menuconfig-setup) for your `make` target using the `boardconfig` option (here the target is the [ARK Electronics ARKV6X](../flight_controller/ark_v6x.md) flight controller): - ```sh - make ark_fmu-v6x_default boardconfig - ``` + ```sh + make ark_fmu-v6x_default boardconfig + ``` 4. In the PX4 board config tool: - - Disable the default `rc_input` module - 1. Navigate to the `drivers` submenu, then scroll down to highlight `rc_input`. - 2. Use the enter key to remove the `*` from `rc_input` checkbox. - - Enable the `crsf_rc` module - 1. Scroll to highlight the `RC` submenu, then press enter to open it. - 2. Scroll to highlight `crsf_rc` and press enter to enable it. + - Disable the default `rc_input` module + 1. Navigate to the `drivers` submenu, then scroll down to highlight `rc_input`. + 2. Use the enter key to remove the `*` from `rc_input` checkbox. + - Enable the `crsf_rc` module + 1. Scroll to highlight the `RC` submenu, then press enter to open it. + 2. Scroll to highlight `crsf_rc` and press enter to enable it. - Save and exit the PX4 board config tool. + Save and exit the PX4 board config tool. 5. [Build the PX4 source code](../dev_setup/building_px4.md) with your changes (again assuming you are using ARKV6X): - ```sh - make ark_fmu-v6x_default - ``` + ```sh + make ark_fmu-v6x_default + ``` This will build your custom firmware, which must now be uploaded to your flight controller. @@ -128,11 +128,11 @@ Alternatively you can use QGroundControl to install the firmware, as described i 1. [RC_CRSF_PRT_CFG](../advanced_config/parameter_reference.md#RC_CRSF_PRT_CFG) — Set to the port that is connected to the CRSF receiver (such as `TELEM1`). - This [configures the serial port](../peripherals/serial_configuration.md) to use the CRSF protocol. - Note that some serial ports may already have a [default serial port mapping](../peripherals/serial_configuration.md#default-serial-port-configuration) or [default MAVLink serial port mapping](../peripherals/mavlink_peripherals.md#default-mavlink-ports) that you will have to un-map before you can assign the port to CRSF. - For example, if you want to use `TELEM1` or `TELEM2` you first need to modify [MAV_0_CONFIG](../advanced_config/parameter_reference.md#MAV_0_CONFIG) or [MAV_1_CONFIG](../advanced_config/parameter_reference.md#MAV_1_CONFIG) to stop setting those ports. + This [configures the serial port](../peripherals/serial_configuration.md) to use the CRSF protocol. + Note that some serial ports may already have a [default serial port mapping](../peripherals/serial_configuration.md#default-serial-port-configuration) or [default MAVLink serial port mapping](../peripherals/mavlink_peripherals.md#default-mavlink-ports) that you will have to un-map before you can assign the port to CRSF. + For example, if you want to use `TELEM1` or `TELEM2` you first need to modify [MAV_0_CONFIG](../advanced_config/parameter_reference.md#MAV_0_CONFIG) or [MAV_1_CONFIG](../advanced_config/parameter_reference.md#MAV_1_CONFIG) to stop setting those ports. - There is no need to set the baud rate for the port, as this is configured by the driver. + There is no need to set the baud rate for the port, as this is configured by the driver. 2. [RC_CRSF_TEL_EN](../advanced_config/parameter_reference.md#RC_CRSF_TEL_EN) — Enable to activate Crossfire telemetry. diff --git a/docs/zh/telemetry/jfi_telemetry.md b/docs/zh/telemetry/jfi_telemetry.md index e7fc2526c3..b9387b536b 100644 --- a/docs/zh/telemetry/jfi_telemetry.md +++ b/docs/zh/telemetry/jfi_telemetry.md @@ -111,9 +111,9 @@ However if you change the baud rate from 57600 you will need to create and use a 1. Disable SiK Radio in QGC (**Application Settings → General → AutoConnect**). 2. Create a new link configuration: - - Go to **Application Settings → Comms Links**. - - Click **Add**. - - Set **Type** to **Serial**, configure the **Serial Port** and **Baud Rate** to match the J.Fi device. + - Go to **Application Settings → Comms Links**. + - Click **Add**. + - Set **Type** to **Serial**, configure the **Serial Port** and **Baud Rate** to match the J.Fi device. 3. Select **Connect** to connect with the new configuration. ## J.Fi Configuration diff --git a/docs/zh/test_and_ci/fuzz_tests.md b/docs/zh/test_and_ci/fuzz_tests.md index b087f5b21e..202d7e383d 100644 --- a/docs/zh/test_and_ci/fuzz_tests.md +++ b/docs/zh/test_and_ci/fuzz_tests.md @@ -15,14 +15,14 @@ To write a fuzz test: 1. Start by writing a "normal" [functional test](../test_and_ci/unit_tests.md#functional-test). 2. Make sure the file name contains `fuzz` (lower case). - For example `my_driver_fuzz_tests.cpp`. + For example `my_driver_fuzz_tests.cpp`. 3. Add one or more fuzz tests to the file. - 例如: + 例如: ```cpp #include #include - + void myDriverNeverCrashes(const std::string& s) { MyDriver driver; driver.handleInput(s); diff --git a/docs/zh/test_and_ci/index.md b/docs/zh/test_and_ci/index.md index 91ceadea53..6e7c94f8e3 100644 --- a/docs/zh/test_and_ci/index.md +++ b/docs/zh/test_and_ci/index.md @@ -9,8 +9,8 @@ Test topics include: - [Unit Tests](../test_and_ci/unit_tests.md) - [Continuous Integration (CI)](../test_and_ci/continous_integration.md) - [Integration Testing](../test_and_ci/integration_testing.md) - - [MAVSDK Integration Testing](../test_and_ci/integration_testing_mavsdk.md) - - [PX4 ROS2 Interface Library Integration Testing](../test_and_ci/integration_testing_px4_ros2_interface.md) - - [ROS 1 Integration Testing](../test_and_ci/integration_testing_ros1_mavros.md) (Deprecated) + - [MAVSDK Integration Testing](../test_and_ci/integration_testing_mavsdk.md) + - [PX4 ROS2 Interface Library Integration Testing](../test_and_ci/integration_testing_px4_ros2_interface.md) + - [ROS 1 Integration Testing](../test_and_ci/integration_testing_ros1_mavros.md) (Deprecated) - [Docker](../test_and_ci/docker.md) - [Maintenance](../test_and_ci/maintenance.md) diff --git a/docs/zh/test_and_ci/integration_testing_ros1_mavros.md b/docs/zh/test_and_ci/integration_testing_ros1_mavros.md index e2a21e6795..083deb2310 100644 --- a/docs/zh/test_and_ci/integration_testing_ros1_mavros.md +++ b/docs/zh/test_and_ci/integration_testing_ros1_mavros.md @@ -65,73 +65,73 @@ To write a new test: 1. Create a new test script by copying the empty test skeleton below: - ```python - #!/usr/bin/env python - # [... LICENSE ...] - - # - # @author Example Author - # - PKG = 'px4' - - import unittest - import rospy - import rosbag - - from sensor_msgs.msg import NavSatFix - - class MavrosNewTest(unittest.TestCase): - """ - Test description - """ - - def setUp(self): - rospy.init_node('test_node', anonymous=True) - rospy.wait_for_service('mavros/cmd/arming', 30) - - rospy.Subscriber("mavros/global_position/global", NavSatFix, self.global_position_callback) - self.rate = rospy.Rate(10) # 10hz - self.has_global_pos = False - - def tearDown(self): - pass - - # - # General callback functions used in tests - # - def global_position_callback(self, data): - self.has_global_pos = True - - def test_method(self): - """Test method description""" - - # FIXME: hack to wait for simulation to be ready - while not self.has_global_pos: - self.rate.sleep() - - # TODO: execute test - - if __name__ == '__main__': - import rostest - rostest.rosrun(PKG, 'mavros_new_test', MavrosNewTest) - ``` + ```python + #!/usr/bin/env python + # [... LICENSE ...] + + # + # @author Example Author + # + PKG = 'px4' + + import unittest + import rospy + import rosbag + + from sensor_msgs.msg import NavSatFix + + class MavrosNewTest(unittest.TestCase): + """ + Test description + """ + + def setUp(self): + rospy.init_node('test_node', anonymous=True) + rospy.wait_for_service('mavros/cmd/arming', 30) + + rospy.Subscriber("mavros/global_position/global", NavSatFix, self.global_position_callback) + self.rate = rospy.Rate(10) # 10hz + self.has_global_pos = False + + def tearDown(self): + pass + + # + # General callback functions used in tests + # + def global_position_callback(self, data): + self.has_global_pos = True + + def test_method(self): + """Test method description""" + + # FIXME: hack to wait for simulation to be ready + while not self.has_global_pos: + self.rate.sleep() + + # TODO: execute test + + if __name__ == '__main__': + import rostest + rostest.rosrun(PKG, 'mavros_new_test', MavrosNewTest) + ``` 2. Run the new test only - Start the simulator: - ```sh - cd - source Tools/simulation/gazebo/setup_gazebo.bash - roslaunch launch/mavros_posix_sitl.launch - ``` + ```sh + cd + source Tools/simulation/gazebo/setup_gazebo.bash + roslaunch launch/mavros_posix_sitl.launch + ``` - Run test (in a new shell): - ```sh - cd - source Tools/simulation/gazebo/setup_gazebo.bash - rosrun px4 mavros_new_test.py - ``` + ```sh + cd + source Tools/simulation/gazebo/setup_gazebo.bash + rosrun px4 mavros_new_test.py + ``` 3. Add new test node to a launch file - In `test/` create a new `.test` ROS launch file. @@ -145,9 +145,9 @@ To write a new test: 例如: - ```sh - tests_: rostest - @"$(SRC_DIR)"/test/rostest_px4_run.sh mavros_posix_tests_.test - ``` + ```sh + tests_: rostest + @"$(SRC_DIR)"/test/rostest_px4_run.sh mavros_posix_tests_.test + ``` Run the tests as described above. diff --git a/docs/zh/test_and_ci/test_flights.md b/docs/zh/test_and_ci/test_flights.md index abe1d95d7c..094b9cb45f 100644 --- a/docs/zh/test_and_ci/test_flights.md +++ b/docs/zh/test_and_ci/test_flights.md @@ -28,3 +28,5 @@ These are run by the test team as part of release testing, and for more signific - [MC_04 - Failsafe Testing](../test_cards/mc_04_failsafe_testing.md) - [MC_05 - Indoor Flight (Manual Modes)](../test_cards/mc_05_indoor_flight_manual_modes.md) - [MC_06 - Indoor Flight (Optical Flow)](../test_cards/mc_06_optical_flow.md) +- [MC_07 - VIO (Visual-Inertial Odometry)](../test_cards/mc_07_vio.md) +- [MC_08 - DSHOT ESC](../test_cards/mc_08_dshot.md) diff --git a/docs/zh/test_and_ci/unit_tests.md b/docs/zh/test_and_ci/unit_tests.md index f8cbf9747c..0a3039a8f9 100644 --- a/docs/zh/test_and_ci/unit_tests.md +++ b/docs/zh/test_and_ci/unit_tests.md @@ -126,34 +126,34 @@ It can be run directly in a debugger, however be careful to only run one test pe 10. Within [tests_main.h](https://github.com/PX4/PX4-Autopilot/blob/main/src/systemcmds/tests/tests_main.h) define the new test: - ```cpp - extern int test_[description](int argc, char *argv[]); - ``` + ```cpp + extern int test_[description](int argc, char *argv[]); + ``` 11. Within [tests_main.c](https://github.com/PX4/PX4-Autopilot/blob/main/src/systemcmds/tests/tests_main.c) add description name, test function and option: - ```cpp - ... - } tests[] = { - {... - {"[description]", test_[description], OPTION}, - ... - } - ``` + ```cpp + ... + } tests[] = { + {... + {"[description]", test_[description], OPTION}, + ... + } + ``` - `OPTION` can be `OPT_NOALLTEST`,`OPT_NOJIGTEST` or `0` and is considered if within px4 shell one of the two commands are called: + `OPTION` can be `OPT_NOALLTEST`,`OPT_NOJIGTEST` or `0` and is considered if within px4 shell one of the two commands are called: - ```sh - pxh> tests all - ``` + ```sh + pxh> tests all + ``` - 或 + 或 - ```sh - pxh> tests jig - ``` + ```sh + pxh> tests jig + ``` - If a test has option `OPT_NOALLTEST`, then that test will be excluded when calling `tests all`. The same is true for `OPT_NOJITEST` when command `test jig` is called. Option `0` means that the test is never excluded, which is what most developer want to use. + If a test has option `OPT_NOALLTEST`, then that test will be excluded when calling `tests all`. The same is true for `OPT_NOJITEST` when command `test jig` is called. Option `0` means that the test is never excluded, which is what most developer want to use. 12. Add the test `test_[description].cpp` to the [CMakeLists.txt](https://github.com/PX4/PX4-Autopilot/blob/main/src/systemcmds/tests/CMakeLists.txt). diff --git a/docs/zh/test_cards/mc_04_failsafe_testing.md b/docs/zh/test_cards/mc_04_failsafe_testing.md index bca8c73323..630b537e83 100644 --- a/docs/zh/test_cards/mc_04_failsafe_testing.md +++ b/docs/zh/test_cards/mc_04_failsafe_testing.md @@ -9,10 +9,10 @@ Test RC loss, data link loss, and low battery failsafes. - Verify RC Loss action is Return to Land - Verify Data Link Loss action is Return to Land and the timeout is 10 seconds - Verify Battery failsafe - - Action is Return to Land - - Battery Warn Level is 25% - - Battery Failsafe Level is 20% - - Battery Emergency Level is 15% + - Action is Return to Land + - Battery Warn Level is 25% + - Battery Failsafe Level is 20% + - Battery Emergency Level is 15% ## Flight Tests diff --git a/docs/zh/test_cards/mc_06_optical_flow.md b/docs/zh/test_cards/mc_06_optical_flow.md index 037881f4b0..c63bebba16 100644 --- a/docs/zh/test_cards/mc_06_optical_flow.md +++ b/docs/zh/test_cards/mc_06_optical_flow.md @@ -2,11 +2,19 @@ ## Objective -To test that optical flow / external vision work as expected +To test that optical flow works as expected ## Preflight Disconnect all GPS / compasses and ensure vehicle is using optical flow for navigation +([Setup Information here](../sensor/optical_flow.md)) + +Ensure there are no other sources of positioning besides optical flow + +- [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `1` +- [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `0` +- [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `0` +- [SYS_HAS_MAG](../advanced_config/parameter_reference.md#SYS_HAS_MAG): `0` Ensure that the drone can go into Altitude / Position flight mode while still on the ground @@ -39,5 +47,7 @@ Ensure that the drone can go into Altitude / Position flight mode while still on ## 预期成果 - 当油门升高时,起飞应该是平稳的 +- Drone should hold altitude in Altitude Flight mode without wandering +- Drone should hold position within 1 meter in Position Flight mode without pilot moving sticks - 在上述任何飞行模式中都不应出现振荡 - 着陆时,直升机不应在地面上反弹 diff --git a/docs/zh/test_cards/mc_07_vio.md b/docs/zh/test_cards/mc_07_vio.md new file mode 100644 index 0000000000..0972a15540 --- /dev/null +++ b/docs/zh/test_cards/mc_07_vio.md @@ -0,0 +1,52 @@ +# Test MC_07 - VIO (Visual-Inertial Odometry) + +## Objective + +To test that external vision (VIO) works as expected + +## Preflight + +Disconnect all GPS / compasses and ensure vehicle is using VIO for navigation + +Ensure that the drone can go into Altitude / Position flight mode while still on the ground + +Ensure there are no other sources of positioning besides VIO: + +- [EKF2_OF_CTRL](../advanced_config/parameter_reference.md#EKF2_OF_CTRL): `0` +- [EKF2_GPS_CTRL](../advanced_config/parameter_reference.md#EKF2_GPS_CTRL): `0` +- [EKF2_EV_CTRL](../advanced_config/parameter_reference.md#EKF2_EV_CTRL): `15` +- [SYS_HAS_MAG](../advanced_config/parameter_reference.md#SYS_HAS_MAG): `0` + +## Flight Tests + +❏ Altitude flight mode + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Pitch/Roll/Yaw response 1:1 + +    ❏ Throttle response set to climb/descent rate + +❏ Position flight mode + +    ❏ Horizontal position should hold current value with stick centered + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Throttle response set to climb/descent rate + +    ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates + +## 降落 + +❏ Land in either Position or Altitude mode with the throttle below 40% + +❏ Upon touching ground, copter should disarm automatically within 2 seconds (default: see [COM_DISARM_LAND](../advanced_config/parameter_reference.md#COM_DISARM_LAND)) + +## 预期成果 + +- 当油门升高时,起飞应该是平稳的 +- Drone should hold altitude in Altitude Flight mode without wandering +- Drone should hold position within 1 meter in Position Flight mode without pilot moving sticks +- 在上述任何飞行模式中都不应出现振荡 +- 着陆时,直升机不应在地面上反弹 diff --git a/docs/zh/test_cards/mc_08_dshot.md b/docs/zh/test_cards/mc_08_dshot.md new file mode 100644 index 0000000000..2f0ef74bdb --- /dev/null +++ b/docs/zh/test_cards/mc_08_dshot.md @@ -0,0 +1,46 @@ +# Test MC_08 - DSHOT ESC + +## Objective + +Regression test for DSHOT working with PX4 + +## Preflight + +- Ensure vehicle is using a DSHOT ESC. +- Parameter [DSHOT_BIDIR_EN](../advanced_config/parameter_reference.md#DSHOT_BIDIR_EN) is enabled +- Parameter [DSHOT_TEL_CFG](../advanced_config/parameter_reference.md#DSHOT_TEL_CFG) is configured (if ESC supports telemetry) +- Parameter [SDLOG_PROFILE](../advanced_config/parameter_reference.md#SDLOG_PROFILE) has Debug (`5`) checked + +## Flight Tests + +❏ Stabilized Flight mode + +    ❏ Takeoff in stabilized flight mode to ensure correct motor spin + +    ❏ Pitch/Roll/Yaw response 1:1 + +    ❏ Throttle response 1:1 + +❏ Position flight mode + +    ❏ Horizontal position should hold current value with stick centered + +    ❏ Vertical position should hold current value with stick centered + +    ❏ Throttle response set to climb/descent rate + +    ❏ Pitch/Roll/Yaw response set to pitch/roll/yaw rates + +## 降落 + +❏ Land in either Position or Altitude mode with the throttle below 40% + +❏ Upon touching ground, copter should disarm automatically within 2 seconds (default: see [COM_DISARM_LAND](../advanced_config/parameter_reference.md#COM_DISARM_LAND)) + +## 预期成果 + +- Download flight logs +- Load into Data Plot Juggler +- Ensure data is logged for esc_status/esc.0x/esc_rpm + + ![Reference frames](../../assets/test_cards/dshot_log_output.png) diff --git a/docs/zh/uart/user_configurable_serial_driver.md b/docs/zh/uart/user_configurable_serial_driver.md index 08ff1d6363..948fee14c5 100644 --- a/docs/zh/uart/user_configurable_serial_driver.md +++ b/docs/zh/uart/user_configurable_serial_driver.md @@ -26,33 +26,33 @@ 1. Create a YAML module configuration file: - - Add a new file in the driver's source directory named **module.yaml** - - Insert the following text and adjust as needed: + - Add a new file in the driver's source directory named **module.yaml** + - Insert the following text and adjust as needed: - ```cmake - module_name: uLanding Radar - serial_config: - - command: ulanding_radar start -d ${SERIAL_DEV} -b p:${BAUD_PARAM} - port_config_param: - name: SENS_ULAND_CFG - group: Sensors - ``` + ```cmake + module_name: uLanding Radar + serial_config: + - command: ulanding_radar start -d ${SERIAL_DEV} -b p:${BAUD_PARAM} + port_config_param: + name: SENS_ULAND_CFG + group: Sensors + ``` - ::: info - The full documentation of the module configuration file can be found in the [validation/module_schema.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/validation/module_schema.yaml) file. - This is also used to validate all configuration files in CI. + ::: info + The full documentation of the module configuration file can be found in the [validation/module_schema.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/validation/module_schema.yaml) file. + This is also used to validate all configuration files in CI. ::: 2. Add the module configuration to the **CMakeLists.txt** file for the driver module: - ```cmake - px4_add_module( - MODULE drivers__ulanding - MAIN ulanding_radar - SRCS - ulanding.cpp - MODULE_CONFIG - module.yaml - ) - ``` + ```cmake + px4_add_module( + MODULE drivers__ulanding + MAIN ulanding_radar + SRCS + ulanding.cpp + MODULE_CONFIG + module.yaml + ) + ```