mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-27 18:27:05 +08:00
New Crowdin translations - ko (#26037)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
This commit is contained in:
+19
-7
@@ -35,7 +35,7 @@
|
|||||||
- [정압 축적](advanced_config/static_pressure_buildup.md)
|
- [정압 축적](advanced_config/static_pressure_buildup.md)
|
||||||
- [Flying (Basics)](flying/basic_flying_mc.md)
|
- [Flying (Basics)](flying/basic_flying_mc.md)
|
||||||
- [완성 기체](complete_vehicles_mc/index.md)
|
- [완성 기체](complete_vehicles_mc/index.md)
|
||||||
- [ModalAI Starling (PX4 Dev Kit)](complete_vehicles_mc/modalai_starling.md)
|
- [ModalAI Starling](complete_vehicles_mc/modalai_starling.md)
|
||||||
- [PX4 비전 키트](complete_vehicles_mc/px4_vision_kit.md)
|
- [PX4 비전 키트](complete_vehicles_mc/px4_vision_kit.md)
|
||||||
- [마인드레이서 BNF & RTF](complete_vehicles_mc/mindracer_BNF_RTF.md)
|
- [마인드레이서 BNF & RTF](complete_vehicles_mc/mindracer_BNF_RTF.md)
|
||||||
- [마인드레이서 210](complete_vehicles_mc/mindracer210.md)
|
- [마인드레이서 210](complete_vehicles_mc/mindracer210.md)
|
||||||
@@ -194,6 +194,7 @@
|
|||||||
- [SVehicle E2](flight_controller/svehicle_e2.md)
|
- [SVehicle E2](flight_controller/svehicle_e2.md)
|
||||||
- [ThePeach FCC-K1](flight_controller/thepeach_k1.md)
|
- [ThePeach FCC-K1](flight_controller/thepeach_k1.md)
|
||||||
- [ThePeach FCC-R1](flight_controller/thepeach_r1.md)
|
- [ThePeach FCC-R1](flight_controller/thepeach_r1.md)
|
||||||
|
- [AP-H743-R1](flight_controller/x-mav_ap-h743r1.md)
|
||||||
- [Experimental Autopilots](flight_controller/autopilot_experimental.md)
|
- [Experimental Autopilots](flight_controller/autopilot_experimental.md)
|
||||||
- [BeagleBone Blue](flight_controller/beaglebone_blue.md)
|
- [BeagleBone Blue](flight_controller/beaglebone_blue.md)
|
||||||
- [Raspberry Pi 2/3 Navio2](flight_controller/raspberry_pi_navio2.md)
|
- [Raspberry Pi 2/3 Navio2](flight_controller/raspberry_pi_navio2.md)
|
||||||
@@ -246,18 +247,22 @@
|
|||||||
- [TFSlot Airspeed Sensor](sensor/airspeed_tfslot.md)
|
- [TFSlot Airspeed Sensor](sensor/airspeed_tfslot.md)
|
||||||
- [Barometers](sensor/barometer.md)
|
- [Barometers](sensor/barometer.md)
|
||||||
- [거리 센서](sensor/rangefinders.md)
|
- [거리 센서](sensor/rangefinders.md)
|
||||||
|
- [Ainstein US-D1 Standard Radar Altimeter](sensor/ulanding_radar.md)
|
||||||
|
- [ARK DIST SR (CAN/UART)](dronecan/ark_dist.md)
|
||||||
|
- [ARK DIST MR (CAN/UART)](dronecan/ark_dist_mr.md)
|
||||||
|
- [Benewake TFmini 라이다](sensor/tfmini.md)
|
||||||
|
- [LeddarOne 라이다](sensor/leddar_one.md)
|
||||||
|
- [Lidar-Lite](sensor/lidar_lite.md)
|
||||||
- [Lightware Lidars (SF/LW)](sensor/sfxx_lidar.md)
|
- [Lightware Lidars (SF/LW)](sensor/sfxx_lidar.md)
|
||||||
- [Lightware SF45 Rotary Lidar](sensor/sf45_rotating_lidar.md)
|
- [Lightware SF45 Rotary Lidar](sensor/sf45_rotating_lidar.md)
|
||||||
- [Ainstein US-D1 Standard Radar Altimeter](sensor/ulanding_radar.md)
|
|
||||||
- [LeddarOne 라이다](sensor/leddar_one.md)
|
|
||||||
- [Benewake TFmini 라이다](sensor/tfmini.md)
|
|
||||||
- [Lidar-Lite](sensor/lidar_lite.md)
|
|
||||||
- [TeraRanger ](sensor/teraranger.md)
|
- [TeraRanger ](sensor/teraranger.md)
|
||||||
- [✘ Lanbao PSK-CM8JL65-CC5](sensor/cm8jl65_ir_distance_sensor.md)
|
- [✘ Lanbao PSK-CM8JL65-CC5](sensor/cm8jl65_ir_distance_sensor.md)
|
||||||
- [Avionics Anonymous Laser Altimeter UAVCAN Interface (CAN)](dronecan/avanon_laser_interface.md)
|
- [Avionics Anonymous Laser Altimeter UAVCAN Interface (CAN)](dronecan/avanon_laser_interface.md)
|
||||||
- [GNSS (GPS)](gps_compass/index.md)
|
- [GNSS (GPS)](gps_compass/index.md)
|
||||||
- [ARK GPS (CAN)](dronecan/ark_gps.md)
|
- [ARK GPS (CAN)](dronecan/ark_gps.md)
|
||||||
|
- [ARK DAN GPS](gps_compass/ark_dan_gps.md)
|
||||||
- [ARK SAM GPS](gps_compass/ark_sam_gps.md)
|
- [ARK SAM GPS](gps_compass/ark_sam_gps.md)
|
||||||
|
- [ARK SAM GPS MINI](gps_compass/ark_sam_gps_mini.md)
|
||||||
- [ARK TESEO GPS](dronecan/ark_teseo_gps.md)
|
- [ARK TESEO GPS](dronecan/ark_teseo_gps.md)
|
||||||
- [CUAV NEO 3 GPS](gps_compass/gps_cuav_neo_3.md)
|
- [CUAV NEO 3 GPS](gps_compass/gps_cuav_neo_3.md)
|
||||||
- [CUAV NEO 3 Pro GPS (CAN)](gps_compass/gps_cuav_neo_3pro.md)
|
- [CUAV NEO 3 Pro GPS (CAN)](gps_compass/gps_cuav_neo_3pro.md)
|
||||||
@@ -269,6 +274,8 @@
|
|||||||
- [Sky-Drones SmartAP GPS](gps_compass/gps_smartap.md)
|
- [Sky-Drones SmartAP GPS](gps_compass/gps_smartap.md)
|
||||||
- [RTK GNSS](gps_compass/rtk_gps.md)
|
- [RTK GNSS](gps_compass/rtk_gps.md)
|
||||||
- [ARK RTK GPS (CAN)](dronecan/ark_rtk_gps.md)
|
- [ARK RTK GPS (CAN)](dronecan/ark_rtk_gps.md)
|
||||||
|
- [ARK RTK GPS L1 L5 (CAN)](dronecan/ark_rtk_gps_l1_l2.md)
|
||||||
|
- [ARK X20 RTK GPS (CAN)](dronecan/ark_x20_rtk_gps.md)
|
||||||
- [ARK MOSAIC-X5 RTK GPS (CAN)](dronecan/ark_mosaic__rtk_gps.md)
|
- [ARK MOSAIC-X5 RTK GPS (CAN)](dronecan/ark_mosaic__rtk_gps.md)
|
||||||
- [RTK GPS Heading with Dual u-blox F9P](gps_compass/u-blox_f9p_heading.md)
|
- [RTK GPS Heading with Dual u-blox F9P](gps_compass/u-blox_f9p_heading.md)
|
||||||
- [CUAV C-RTK](gps_compass/rtk_gps_cuav_c-rtk.md)
|
- [CUAV C-RTK](gps_compass/rtk_gps_cuav_c-rtk.md)
|
||||||
@@ -353,13 +360,14 @@
|
|||||||
- [Battery Estimation Tuning](config/battery.md)
|
- [Battery Estimation Tuning](config/battery.md)
|
||||||
- [Battery Chemistry Overview](power_systems/battery_chemistry.md)
|
- [Battery Chemistry Overview](power_systems/battery_chemistry.md)
|
||||||
- [Power Modules/PDB](power_module/index.md)
|
- [Power Modules/PDB](power_module/index.md)
|
||||||
|
- [ARK PAB Power Module](power_module/ark_pab_power_module.md)
|
||||||
|
- [ARK 12S PAB Power Module](power_module/ark_12s_pab_power_module.md)
|
||||||
|
- [ARK 12S Payload Power Module](power_module/ark_12s_payload_power_module.md)
|
||||||
- [CUAV HV 전원 모듈](power_module/cuav_hv_pm.md)
|
- [CUAV HV 전원 모듈](power_module/cuav_hv_pm.md)
|
||||||
- [CUAV CAN 전원 모듈](dronecan/cuav_can_pmu.md)
|
- [CUAV CAN 전원 모듈](dronecan/cuav_can_pmu.md)
|
||||||
- [Holybro PM02](power_module/holybro_pm02.md)
|
- [Holybro PM02](power_module/holybro_pm02.md)
|
||||||
- [Holybro PM07](power_module/holybro_pm07_pixhawk4_power_module.md)
|
- [Holybro PM07](power_module/holybro_pm07_pixhawk4_power_module.md)
|
||||||
- [Holybro PM06 V2](power_module/holybro_pm06_pixhawk4mini_power_module.md)
|
- [Holybro PM06 V2](power_module/holybro_pm06_pixhawk4mini_power_module.md)
|
||||||
- [ARK PAB Power Module](power_module/ark_pab_power_module.md)
|
|
||||||
- [ARK 12S PAB Power Module](power_module/ark_12s_pab_power_module.md)
|
|
||||||
- [Holybro PM02D (digital)](power_module/holybro_pm02d.md)
|
- [Holybro PM02D (digital)](power_module/holybro_pm02d.md)
|
||||||
- [Holybro PM03D (digital)](power_module/holybro_pm03d.md)
|
- [Holybro PM03D (digital)](power_module/holybro_pm03d.md)
|
||||||
- [Pomegranate Systems Power Module](dronecan/pomegranate_systems_pm.md)
|
- [Pomegranate Systems Power Module](dronecan/pomegranate_systems_pm.md)
|
||||||
@@ -605,6 +613,7 @@
|
|||||||
- [FollowTargetEstimator](msg_docs/FollowTargetEstimator.md)
|
- [FollowTargetEstimator](msg_docs/FollowTargetEstimator.md)
|
||||||
- [FollowTargetStatus](msg_docs/FollowTargetStatus.md)
|
- [FollowTargetStatus](msg_docs/FollowTargetStatus.md)
|
||||||
- [FuelTankStatus](msg_docs/FuelTankStatus.md)
|
- [FuelTankStatus](msg_docs/FuelTankStatus.md)
|
||||||
|
- [GainCompression](msg_docs/GainCompression.md)
|
||||||
- [GeneratorStatus](msg_docs/GeneratorStatus.md)
|
- [GeneratorStatus](msg_docs/GeneratorStatus.md)
|
||||||
- [GeofenceResult](msg_docs/GeofenceResult.md)
|
- [GeofenceResult](msg_docs/GeofenceResult.md)
|
||||||
- [GeofenceStatus](msg_docs/GeofenceStatus.md)
|
- [GeofenceStatus](msg_docs/GeofenceStatus.md)
|
||||||
@@ -755,8 +764,11 @@
|
|||||||
- [ArmingCheckReplyV0](msg_docs/ArmingCheckReplyV0.md)
|
- [ArmingCheckReplyV0](msg_docs/ArmingCheckReplyV0.md)
|
||||||
- [ArmingCheckRequestV0](msg_docs/ArmingCheckRequestV0.md)
|
- [ArmingCheckRequestV0](msg_docs/ArmingCheckRequestV0.md)
|
||||||
- [BatteryStatusV0](msg_docs/BatteryStatusV0.md)
|
- [BatteryStatusV0](msg_docs/BatteryStatusV0.md)
|
||||||
|
- [ConfigOverridesV0](msg_docs/ConfigOverridesV0.md)
|
||||||
- [EventV0](msg_docs/EventV0.md)
|
- [EventV0](msg_docs/EventV0.md)
|
||||||
- [HomePositionV0](msg_docs/HomePositionV0.md)
|
- [HomePositionV0](msg_docs/HomePositionV0.md)
|
||||||
|
- [RegisterExtComponentReplyV0](msg_docs/RegisterExtComponentReplyV0.md)
|
||||||
|
- [RegisterExtComponentRequestV0](msg_docs/RegisterExtComponentRequestV0.md)
|
||||||
- [VehicleAttitudeSetpointV0](msg_docs/VehicleAttitudeSetpointV0.md)
|
- [VehicleAttitudeSetpointV0](msg_docs/VehicleAttitudeSetpointV0.md)
|
||||||
- [VehicleLocalPositionV0](msg_docs/VehicleLocalPositionV0.md)
|
- [VehicleLocalPositionV0](msg_docs/VehicleLocalPositionV0.md)
|
||||||
- [VehicleStatusV0](msg_docs/VehicleStatusV0.md)
|
- [VehicleStatusV0](msg_docs/VehicleStatusV0.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).
|
2. Open QGroundControl and enable the on-screen camera control (Application settings).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
3. Make sure the vehicle is armed and flying, e.g. by entering with `commander takeoff`.
|
3. Make sure the vehicle is armed and flying, e.g. by entering with `commander takeoff`.
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ On Windows, one option is to use _Melody Master_ within _Dosbox_.
|
|||||||
7. 음악을 저장할 준비가 끝나면:
|
7. 음악을 저장할 준비가 끝나면:
|
||||||
- Press **F2** to give the tune a name and save it in the _/Music_ sub folder of your Melody Master installation.
|
- Press **F2** to give the tune a name and save it in the _/Music_ sub folder of your Melody Master installation.
|
||||||
- Press **F7**, the scroll down the list of output formats on the right to get to ANSI.
|
- Press **F7**, the scroll down the list of output formats on the right to get to ANSI.
|
||||||
The file will be exported to the _root_ of the Melody Master directory (with the same name and a file-type specific extension).
|
The file will be exported to the _root_ of the Melody Master directory (with the same name and a file-type specific extension).
|
||||||
|
|
||||||
8. 파일을 여십시오.
|
8. 파일을 여십시오.
|
||||||
출력 내용은 다음과 같습니다:
|
출력 내용은 다음과 같습니다:
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ You can locate the parameters in QGroundControl as shown below:
|
|||||||
1. Open QGroundControl menu: **Settings > Parameters > Sensor Calibration**.
|
1. Open QGroundControl menu: **Settings > Parameters > Sensor Calibration**.
|
||||||
2. The parameters as located in the section as shown below (or you can search for them):
|
2. The parameters as located in the section as shown below (or you can search for them):
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Parameter Summary
|
## Parameter Summary
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
2. [Update the Firmware](../config/firmware.md#custom) with an image containing the new/desired bootloader.
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
The updated bootloader might be included the default firmware for your board or supplied in custom firmware.
|
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).
|
4. [Find and enable](../advanced_config/parameters.md) the parameter [SYS_BL_UPDATE](../advanced_config/parameter_reference.md#SYS_BL_UPDATE).
|
||||||
|
|
||||||
5. 재부팅하십시오 (보드의 연결을 끊고 다시 연결하십시오.).
|
5. 재부팅하십시오 (보드의 연결을 끊고 다시 연결하십시오.).
|
||||||
부트로더 업데이트는 수초내에 완료됩니다.
|
부트로더 업데이트는 수초내에 완료됩니다.
|
||||||
|
|
||||||
Generally at this point you may then want to [update the firmware](../config/firmware.md) again using the correct/newly installed bootloader.
|
Generally at this point you may then want to [update the firmware](../config/firmware.md) again using the correct/newly installed bootloader.
|
||||||
|
|
||||||
@@ -89,81 +89,81 @@ The following steps explain how you can "manually" update the bootloader using a
|
|||||||
1. Get a binary containing the bootloader (either from dev team or [build it yourself](#building-the-px4-bootloader)).
|
1. Get a binary containing the bootloader (either from dev team or [build it yourself](#building-the-px4-bootloader)).
|
||||||
|
|
||||||
2. Get a [Debug Probe](../debug/swd_debug.md#debug-probes-for-px4-hardware).
|
2. Get a [Debug Probe](../debug/swd_debug.md#debug-probes-for-px4-hardware).
|
||||||
Connect the probe your PC via USB and setup the `gdbserver`.
|
Connect the probe your PC via USB and setup the `gdbserver`.
|
||||||
|
|
||||||
3. Go into the directory containing the binary and run the command for your target bootloader in the terminal:
|
3. Go into the directory containing the binary and run the command for your target bootloader in the terminal:
|
||||||
|
|
||||||
- FMUv6X
|
- FMUv6X
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
arm-none-eabi-gdb px4_fmu-v6x_bootloader.elf
|
arm-none-eabi-gdb px4_fmu-v6x_bootloader.elf
|
||||||
```
|
```
|
||||||
|
|
||||||
- FMUv6X-RT
|
- FMUv6X-RT
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
arm-none-eabi-gdb px4_fmu-v6xrt_bootloader.elf
|
arm-none-eabi-gdb px4_fmu-v6xrt_bootloader.elf
|
||||||
```
|
```
|
||||||
|
|
||||||
- FMUv5
|
- FMUv5
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
arm-none-eabi-gdb px4fmuv5_bl.elf
|
arm-none-eabi-gdb px4fmuv5_bl.elf
|
||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
H7 Bootloaders from [PX4/PX4-Autopilot](https://github.com/PX4/PX4-Autopilot) are named with pattern `*._bootloader.elf`.
|
H7 Bootloaders from [PX4/PX4-Autopilot](https://github.com/PX4/PX4-Autopilot) are named with pattern `*._bootloader.elf`.
|
||||||
Bootloaders from [PX4/PX4-Bootloader](https://github.com/PX4/PX4-Bootloader) are named with the pattern `*_bl.elf`.
|
Bootloaders from [PX4/PX4-Bootloader](https://github.com/PX4/PX4-Bootloader) are named with the pattern `*_bl.elf`.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
4. The _gdb terminal_ appears and it should display (something like) the following output:
|
4. The _gdb terminal_ appears and it should display (something like) the following output:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
GNU gdb (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 8.0.50.20171128-git
|
GNU gdb (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 8.0.50.20171128-git
|
||||||
Copyright (C) 2017 Free Software Foundation, Inc.
|
Copyright (C) 2017 Free Software Foundation, Inc.
|
||||||
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
||||||
This is free software: you are free to change and redistribute it.
|
This is free software: you are free to change and redistribute it.
|
||||||
There is NO WARRANTY, to the extent permitted by law.
|
There is NO WARRANTY, to the extent permitted by law.
|
||||||
Type "show copying" and "show warranty" for details.
|
Type "show copying" and "show warranty" for details.
|
||||||
This GDB was configured as "--host=x86_64-linux-gnu --target=arm-none-eabi".
|
This GDB was configured as "--host=x86_64-linux-gnu --target=arm-none-eabi".
|
||||||
Type "show configuration" for configuration details.
|
Type "show configuration" for configuration details.
|
||||||
For bug reporting instructions, please see:
|
For bug reporting instructions, please see:
|
||||||
<https://www.sourceware.org/gdb/bugs/>.
|
<https://www.sourceware.org/gdb/bugs/>.
|
||||||
Find the GDB manual and other documentation resources online at:
|
Find the GDB manual and other documentation resources online at:
|
||||||
<https://www.sourceware.org/gdb/documentation/>.
|
<https://www.sourceware.org/gdb/documentation/>.
|
||||||
For help, type "help".
|
For help, type "help".
|
||||||
Type "apropos word" to search for commands related to "word"...
|
Type "apropos word" to search for commands related to "word"...
|
||||||
Reading symbols from px4fmuv5_bl.elf...done.
|
Reading symbols from px4fmuv5_bl.elf...done.
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Find your `<dronecode-probe-id>` by running an `ls` command in the **/dev/serial/by-id** directory.
|
5. Find your `<dronecode-probe-id>` by running an `ls` command in the **/dev/serial/by-id** directory.
|
||||||
|
|
||||||
6. Now connect to the debug probe with the following command:
|
6. Now connect to the debug probe with the following command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
tar ext /dev/serial/by-id/<dronecode-probe-id>
|
tar ext /dev/serial/by-id/<dronecode-probe-id>
|
||||||
```
|
```
|
||||||
|
|
||||||
7. Power on the Pixhawk with another USB cable and connect the probe to the `FMU-DEBUG` port.
|
7. Power on the Pixhawk with another USB cable and connect the probe to the `FMU-DEBUG` port.
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
If using a 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).
|
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:
|
8. Use the following command to scan for the Pixhawk\`s SWD and connect to it:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
(gdb) mon swdp_scan
|
(gdb) mon swdp_scan
|
||||||
(gdb) attach 1
|
(gdb) attach 1
|
||||||
```
|
```
|
||||||
|
|
||||||
9. 이제 바이너리를 픽스호크에 로드하십시오:
|
9. 이제 바이너리를 픽스호크에 로드하십시오:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
(gdb) load
|
(gdb) load
|
||||||
```
|
```
|
||||||
|
|
||||||
After the bootloader has updated you can [Load PX4 Firmware](../config/firmware.md) using _QGroundControl_.
|
After the bootloader has updated you can [Load PX4 Firmware](../config/firmware.md) using _QGroundControl_.
|
||||||
|
|
||||||
@@ -182,25 +182,25 @@ To update the bootloader:
|
|||||||
1. SD카드를 삽입합니다 (발생 가능한 문제들의 디버깅을 위한 부트 로그 기록을 가능하게 합니다.)
|
1. SD카드를 삽입합니다 (발생 가능한 문제들의 디버깅을 위한 부트 로그 기록을 가능하게 합니다.)
|
||||||
|
|
||||||
2. [Update the Firmware](../config/firmware.md) to PX4 _master_ version (when updating the firmware, check **Advanced settings** and then select **Developer Build (master)** from the dropdown list).
|
2. [Update the Firmware](../config/firmware.md) to PX4 _master_ version (when updating the firmware, check **Advanced settings** and then select **Developer Build (master)** from the dropdown list).
|
||||||
_QGroundControl_ will automatically detect that the hardware supports FMUv2 and install the appropriate Firmware.
|
_QGroundControl_ will automatically detect that the hardware supports FMUv2 and install the appropriate Firmware.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
기체가 재부팅될 때까지 기다리십시오.
|
기체가 재부팅될 때까지 기다리십시오.
|
||||||
|
|
||||||
3. [Find and enable](../advanced_config/parameters.md) the parameter [SYS_BL_UPDATE](../advanced_config/parameter_reference.md#SYS_BL_UPDATE).
|
3. [Find and enable](../advanced_config/parameters.md) the parameter [SYS_BL_UPDATE](../advanced_config/parameter_reference.md#SYS_BL_UPDATE).
|
||||||
|
|
||||||
4. 재부팅하십시오 (보드의 연결을 끊고 다시 연결하십시오.).
|
4. 재부팅하십시오 (보드의 연결을 끊고 다시 연결하십시오.).
|
||||||
부트로더 업데이트는 수초내에 완료됩니다.
|
부트로더 업데이트는 수초내에 완료됩니다.
|
||||||
|
|
||||||
5. Then [Update the Firmware](../config/firmware.md) again.
|
5. Then [Update the Firmware](../config/firmware.md) again.
|
||||||
This time _QGroundControl_ should autodetect the hardware as FMUv3 and update the Firmware appropriately.
|
This time _QGroundControl_ should autodetect the hardware as FMUv3 and update the Firmware appropriately.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
If the hardware has the [Silicon Errata](../flight_controller/silicon_errata.md#fmuv2-pixhawk-silicon-errata) it will still be detected as FMUv2 and you will see that FMUv2 was re-installed (in console).
|
If the hardware has the [Silicon Errata](../flight_controller/silicon_errata.md#fmuv2-pixhawk-silicon-errata) it will still be detected as FMUv2 and you will see that FMUv2 was re-installed (in console).
|
||||||
In this case you will not be able to install FMUv3 hardware.
|
In this case you will not be able to install FMUv3 hardware.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ The process is demonstrated for a multicopter, but is equally valid for other ve
|
|||||||
- 기체에 시동을 걸고 스로틀을 천천히 최대로 올립니다.
|
- 기체에 시동을 걸고 스로틀을 천천히 최대로 올립니다.
|
||||||
- 스로틀을 천천히 0까지 낮춥니다.
|
- 스로틀을 천천히 0까지 낮춥니다.
|
||||||
- 기체 시동을 끄십시오.
|
- 기체 시동을 끄십시오.
|
||||||
> <strong x-id="1">참고</strong> 진동을 면밀히 관찰하고, 신중하게 테스트를 진행하십시오.
|
> <strong x-id="1">참고</strong> 진동을 면밀히 관찰하고, 신중하게 테스트를 진행하십시오.
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
Perform the test carefully and closely monitor the vibrations.
|
Perform the test carefully and closely monitor the vibrations.
|
||||||
|
|||||||
@@ -94,29 +94,29 @@ ESC를 보정하려면 :
|
|||||||
|
|
||||||
- The minimum value for a motor (default: `1100us`) should make the motor spin slowly but reliably, and also spin up reliably after it was stopped.
|
- The minimum value for a motor (default: `1100us`) should make the motor spin slowly but reliably, and also spin up reliably after it was stopped.
|
||||||
|
|
||||||
You can confirm that a motor spins at minimum (still without propellers) in [Actuator Testing](../config/actuators.md#actuator-testing), by enabling the sliders, and then moving the test output slider for the motor to the first snap position from the bottom.
|
You can confirm that a motor spins at minimum (still without propellers) in [Actuator Testing](../config/actuators.md#actuator-testing), by enabling the sliders, and then moving the test output slider for the motor to the first snap position from the bottom.
|
||||||
The correct value should make the motor spin immediately and reliably as you move the slider from disarmed to minimum.
|
The correct value should make the motor spin immediately and reliably as you move the slider from disarmed to minimum.
|
||||||
|
|
||||||
To find the "optimal" minimum value, move the slider to the bottom (disarmed).
|
To find the "optimal" minimum value, move the slider to the bottom (disarmed).
|
||||||
Then increase the PWM output's `disarmed` setting in small increments (e.g. 1025us, 1050us, etc), until the motor starts to spin reliably (it is better to be a little too high than a little too low).
|
Then increase the PWM output's `disarmed` setting in small increments (e.g. 1025us, 1050us, etc), until the motor starts to spin reliably (it is better to be a little too high than a little too low).
|
||||||
Enter this value into the `minimum` setting for all the motor PWM outputs, and restore the `disarmed` output to `1100us`.
|
Enter this value into the `minimum` setting for all the motor PWM outputs, and restore the `disarmed` output to `1100us`.
|
||||||
|
|
||||||
- The maximum value for a motor (default: `1900us`) should be chosen such that increasing the value doesn't make the motor spin any faster.
|
- The maximum value for a motor (default: `1900us`) should be chosen such that increasing the value doesn't make the motor spin any faster.
|
||||||
|
|
||||||
You can confirm that the motor spins quickly at the maximum setting in [Actuator Testing](../config/actuators.md#actuator-testing), by moving the associated test output slider to the top position.
|
You can confirm that the motor spins quickly at the maximum setting in [Actuator Testing](../config/actuators.md#actuator-testing), by moving the associated test output slider to the top position.
|
||||||
|
|
||||||
To find the "optimal" maximum value, first move the slider to the bottom (disarmed).
|
To find the "optimal" maximum value, first move the slider to the bottom (disarmed).
|
||||||
Then increase the PWM output's `disarmed` setting to near the default maximum (`1900`) - the motors should spin up.
|
Then increase the PWM output's `disarmed` setting to near the default maximum (`1900`) - the motors should spin up.
|
||||||
Listen to the tone of the motor as you increase the PWM maximum value for the output in increments (e.g. 1925us, 1950us, etc).
|
Listen to the tone of the motor as you increase the PWM maximum value for the output in increments (e.g. 1925us, 1950us, etc).
|
||||||
The optimal value is found at the point when the sound of the motors does not change as you increase the value of the output.
|
The optimal value is found at the point when the sound of the motors does not change as you increase the value of the output.
|
||||||
Enter this value into the `maximum` setting for all the motor PWM outputs, and restore the `disarmed` output to `1100us`.
|
Enter this value into the `maximum` setting for all the motor PWM outputs, and restore the `disarmed` output to `1100us`.
|
||||||
|
|
||||||
- The disarmed value for a motor (default: `1000us`) should make the motor stop and stay stopped.
|
- The disarmed value for a motor (default: `1000us`) should make the motor stop and stay stopped.
|
||||||
|
|
||||||
You can confirm this in [Actuator Testing](../config/actuators.md#actuator-testing) by moving the test output slider to the snap position at the bottom of the slider and observing that the motor does not spin.
|
You can confirm this in [Actuator Testing](../config/actuators.md#actuator-testing) by moving the test output slider to the snap position at the bottom of the slider and observing that the motor does not spin.
|
||||||
|
|
||||||
If the ESC spins with the default value of 1000us then the ESC is not properly calibrated.
|
If the ESC spins with the default value of 1000us then the ESC is not properly calibrated.
|
||||||
If using an ESC that can't be calibrated, you should reduce the PWM output value for the output to below where the motor does not spin anymore (such as 950us or 900us).
|
If using an ESC that can't be calibrated, you should reduce the PWM output value for the output to below where the motor does not spin anymore (such as 950us or 900us).
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
VTOL and fixed-wing motors do not need any special PWM configuration.
|
VTOL and fixed-wing motors do not need any special PWM configuration.
|
||||||
|
|||||||
@@ -87,14 +87,14 @@ To set the above "example" configuration using the _QGroundControl_:
|
|||||||
|
|
||||||
3. Enter commands "like" the ones below into the _MAVLink Console_ (to write the values to the configuration file):
|
3. Enter commands "like" the ones below into the _MAVLink Console_ (to write the values to the configuration file):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
echo DEVICE=eth0 > /fs/microsd/net.cfg
|
echo DEVICE=eth0 > /fs/microsd/net.cfg
|
||||||
echo BOOTPROTO=fallback >> /fs/microsd/net.cfg
|
echo BOOTPROTO=fallback >> /fs/microsd/net.cfg
|
||||||
echo IPADDR=10.41.10.2 >> /fs/microsd/net.cfg
|
echo IPADDR=10.41.10.2 >> /fs/microsd/net.cfg
|
||||||
echo NETMASK=255.255.255.0 >>/fs/microsd/net.cfg
|
echo NETMASK=255.255.255.0 >>/fs/microsd/net.cfg
|
||||||
echo ROUTER=10.41.10.254 >>/fs/microsd/net.cfg
|
echo ROUTER=10.41.10.254 >>/fs/microsd/net.cfg
|
||||||
echo DNS=10.41.10.254 >>/fs/microsd/net.cfg
|
echo DNS=10.41.10.254 >>/fs/microsd/net.cfg
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Once the network configuration has been set you can disconnect the USB cable.
|
4. Once the network configuration has been set you can disconnect the USB cable.
|
||||||
|
|
||||||
@@ -113,36 +113,36 @@ Note that there are many more [examples](https://github.com/canonical/netplan/tr
|
|||||||
To setup the Ubuntu Computer:
|
To setup the Ubuntu Computer:
|
||||||
|
|
||||||
1. In a terminal, create and open a `netplan` configuration file: `/etc/netplan/01-network-manager-all.yaml`
|
1. In a terminal, create and open a `netplan` configuration file: `/etc/netplan/01-network-manager-all.yaml`
|
||||||
Below we do this using the _nano_ text editor.
|
Below we do this using the _nano_ text editor.
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo nano /etc/netplan/01-network-manager-all.yaml
|
sudo nano /etc/netplan/01-network-manager-all.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Copy and paste the following configuration information into the file (note: the indentations are important!):
|
2. Copy and paste the following configuration information into the file (note: the indentations are important!):
|
||||||
|
|
||||||
```
|
```
|
||||||
network:
|
network:
|
||||||
version: 2
|
version: 2
|
||||||
renderer: NetworkManager
|
renderer: NetworkManager
|
||||||
ethernets:
|
ethernets:
|
||||||
enp2s0:
|
enp2s0:
|
||||||
addresses:
|
addresses:
|
||||||
- 10.41.10.1/24
|
- 10.41.10.1/24
|
||||||
nameservers:
|
nameservers:
|
||||||
addresses: [10.41.10.1]
|
addresses: [10.41.10.1]
|
||||||
routes:
|
routes:
|
||||||
- to: 10.41.10.1
|
- to: 10.41.10.1
|
||||||
via: 10.41.10.1
|
via: 10.41.10.1
|
||||||
```
|
```
|
||||||
|
|
||||||
Save and exit the editor.
|
Save and exit the editor.
|
||||||
|
|
||||||
3. Apply the _netplan_ configuration by entering the following command into the Ubuntu terminal.
|
3. Apply the _netplan_ configuration by entering the following command into the Ubuntu terminal.
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo netplan apply
|
sudo netplan apply
|
||||||
```
|
```
|
||||||
|
|
||||||
### Companion Computer Ethernet Network Setup
|
### Companion Computer Ethernet Network Setup
|
||||||
|
|
||||||
@@ -189,9 +189,9 @@ To connect QGroundControl to PX4 over Ethernet:
|
|||||||
|
|
||||||
3. Start QGroundControl and [define a comm link](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/settings_view/settings_view.html) (**Application Settings > Comm Links**) specifying the _server address_ and port as the IP address and port assigned in PX4, respectively.
|
3. Start QGroundControl and [define a comm link](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/settings_view/settings_view.html) (**Application Settings > Comm Links**) specifying the _server address_ and port as the IP address and port assigned in PX4, respectively.
|
||||||
|
|
||||||
Assuming that the values are set as described in the rest of this topic the setup will look like this:
|
Assuming that the values are set as described in the rest of this topic the setup will look like this:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
4. QGroundControl should then connect if you select this link.
|
4. QGroundControl should then connect if you select this link.
|
||||||
|
|
||||||
@@ -205,14 +205,14 @@ To setup MAVSDK-Python running on a companion computer:
|
|||||||
|
|
||||||
1. [Set up the Ethernet Network](#setting-up-the-ethernet-network) so your companion computer and PX4 run on the same network.
|
1. [Set up the Ethernet Network](#setting-up-the-ethernet-network) so your companion computer and PX4 run on the same network.
|
||||||
2. Modify the [PX4 Ethernet Port Configuration](#px4-ethernet-network-setup) to connect to a companion computer.
|
2. Modify the [PX4 Ethernet Port Configuration](#px4-ethernet-network-setup) to connect to a companion computer.
|
||||||
You might change the parameters [MAV_2_REMOTE_PRT](../advanced_config/parameter_reference.md#MAV_2_REMOTE_PRT) and [MAV_2_UDP_PRT](../advanced_config/parameter_reference.md#MAV_2_UDP_PRT) to `14540`, and [MAV_2_MODE](../advanced_config/parameter_reference.md#MAV_2_MODE) to `2` (Onboard).
|
You might change the parameters [MAV_2_REMOTE_PRT](../advanced_config/parameter_reference.md#MAV_2_REMOTE_PRT) and [MAV_2_UDP_PRT](../advanced_config/parameter_reference.md#MAV_2_UDP_PRT) to `14540`, and [MAV_2_MODE](../advanced_config/parameter_reference.md#MAV_2_MODE) to `2` (Onboard).
|
||||||
3. Follow the instructions in [MAVSDK-python](https://github.com/mavlink/MAVSDK-Python) to install and use MAVSDK.
|
3. Follow the instructions in [MAVSDK-python](https://github.com/mavlink/MAVSDK-Python) to install and use MAVSDK.
|
||||||
|
|
||||||
For example, your code will connect to the PX4 using:
|
For example, your code will connect to the PX4 using:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
await drone.connect(system_address="udp://10.41.10.2:14540")
|
await drone.connect(system_address="udp://10.41.10.2:14540")
|
||||||
```
|
```
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
MAVSDK can connect to the PX4 on port `14550` if you don't modify the PX4 Ethernet port configuration.
|
MAVSDK can connect to the PX4 on port `14550` if you don't modify the PX4 Ethernet port configuration.
|
||||||
@@ -235,38 +235,38 @@ To set up ROS 2:
|
|||||||
1. Connect your flight controller and companion computer via Ethernet.
|
1. Connect your flight controller and companion computer via Ethernet.
|
||||||
|
|
||||||
2. [Start the uXRCE-DDS client on PX4](../middleware/uxrce_dds.md#starting-the-client), either manually or by customizing the system startup script.
|
2. [Start the uXRCE-DDS client on PX4](../middleware/uxrce_dds.md#starting-the-client), either manually or by customizing the system startup script.
|
||||||
Note that you must use the IP address of the companion computer and the UDP port on which the agent is listening (the example configuration above sets the companion IP address to `10.41.10.1`, and the agent UDP port is set to `8888` in the next step).
|
Note that you must use the IP address of the companion computer and the UDP port on which the agent is listening (the example configuration above sets the companion IP address to `10.41.10.1`, and the agent UDP port is set to `8888` in the next step).
|
||||||
|
|
||||||
3. [Start the micro XRCE-DDS agent on the companion computer](../middleware/uxrce_dds.md#starting-the-agent).
|
3. [Start the micro XRCE-DDS agent on the companion computer](../middleware/uxrce_dds.md#starting-the-agent).
|
||||||
For example, enter the following command in a terminal to start the agent listening on UDP port `8888`.
|
For example, enter the following command in a terminal to start the agent listening on UDP port `8888`.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
MicroXRCEAgent udp4 -p 8888
|
MicroXRCEAgent udp4 -p 8888
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Run a [listener node](../ros2/user_guide.md#running-the-example) in a new terminal to confirm the connection is established:
|
4. Run a [listener node](../ros2/user_guide.md#running-the-example) in a new terminal to confirm the connection is established:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
source ~/ws_sensor_combined/install/setup.bash
|
source ~/ws_sensor_combined/install/setup.bash
|
||||||
ros2 launch px4_ros_com sensor_combined_listener.launch.py
|
ros2 launch px4_ros_com sensor_combined_listener.launch.py
|
||||||
```
|
```
|
||||||
|
|
||||||
If everything is setup correctly, the following output should be displayed in the terminal:
|
If everything is setup correctly, the following output should be displayed in the terminal:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
RECEIVED SENSOR COMBINED DATA
|
RECEIVED SENSOR COMBINED DATA
|
||||||
=============================
|
=============================
|
||||||
ts: 855801598
|
ts: 855801598
|
||||||
gyro_rad[0]: -0.00339938
|
gyro_rad[0]: -0.00339938
|
||||||
gyro_rad[1]: 0.00440091
|
gyro_rad[1]: 0.00440091
|
||||||
gyro_rad[2]: 0.00513893
|
gyro_rad[2]: 0.00513893
|
||||||
gyro_integral_dt: 4997
|
gyro_integral_dt: 4997
|
||||||
accelerometer_timestamp_relative: 0
|
accelerometer_timestamp_relative: 0
|
||||||
accelerometer_m_s2[0]: -0.0324082
|
accelerometer_m_s2[0]: -0.0324082
|
||||||
accelerometer_m_s2[1]: 0.0392213
|
accelerometer_m_s2[1]: 0.0392213
|
||||||
accelerometer_m_s2[2]: -9.77914
|
accelerometer_m_s2[2]: -9.77914
|
||||||
accelerometer_integral_dt: 4997
|
accelerometer_integral_dt: 4997
|
||||||
```
|
```
|
||||||
|
|
||||||
## See Also
|
## See Also
|
||||||
|
|
||||||
|
|||||||
@@ -94,11 +94,11 @@ PX4는 두 가지 보정 절차를 지원합니다.
|
|||||||
|
|
||||||
9. Open a terminal window in the **Firmware/Tools** directory and run the python calibration script:
|
9. Open a terminal window in the **Firmware/Tools** directory and run the python calibration script:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
python process_sensor_caldata.py <full path name to .ulog file>
|
python process_sensor_caldata.py <full path name to .ulog file>
|
||||||
```
|
```
|
||||||
|
|
||||||
This will generate a **.pdf** file showing the measured data and curve fits for each sensor, and a **.params** file containing the calibration parameters.
|
This will generate a **.pdf** file showing the measured data and curve fits for each sensor, and a **.params** file containing the calibration parameters.
|
||||||
|
|
||||||
10. Power the board, connect _QGroundControl_ and load the parameter from the generated **.params** file onto the board using _QGroundControl_. 매개변수의 갯수가 많이지므로, 로드 시간이 길어질 수 있습니다.
|
10. Power the board, connect _QGroundControl_ and load the parameter from the generated **.params** file onto the board using _QGroundControl_. 매개변수의 갯수가 많이지므로, 로드 시간이 길어질 수 있습니다.
|
||||||
|
|
||||||
|
|||||||
@@ -38,14 +38,14 @@ If it is not visible the vehicle immediately performs a _normal_ landing at the
|
|||||||
정밀 착륙에는 세 단계가 있습니다.
|
정밀 착륙에는 세 단계가 있습니다.
|
||||||
|
|
||||||
1. **Horizontal approach:** The vehicle approaches the target horizontally while keeping its current altitude.
|
1. **Horizontal approach:** The vehicle approaches the target horizontally while keeping its current altitude.
|
||||||
Once the position of the target relative to the vehicle is below a threshold ([PLD_HACC_RAD](../advanced_config/parameter_reference.md#PLD_HACC_RAD)), the next phase is entered.
|
Once the position of the target relative to the vehicle is below a threshold ([PLD_HACC_RAD](../advanced_config/parameter_reference.md#PLD_HACC_RAD)), the next phase is entered.
|
||||||
If the target is lost during this phase (not visible for longer than [PLD_BTOUT](../advanced_config/parameter_reference.md#PLD_BTOUT)), a search procedure is initiated (during a required precision landing) or the vehicle does a normal landing (during an opportunistic precision landing).
|
If the target is lost during this phase (not visible for longer than [PLD_BTOUT](../advanced_config/parameter_reference.md#PLD_BTOUT)), a search procedure is initiated (during a required precision landing) or the vehicle does a normal landing (during an opportunistic precision landing).
|
||||||
|
|
||||||
2. **Descent over target:** The vehicle descends, while remaining centered over the target.
|
2. **Descent over target:** The vehicle descends, while remaining centered over the target.
|
||||||
If the target is lost during this phase (not visible for longer than `PLD_BTOUT`), a search procedure is initiated (during a required precision landing) or the vehicle does a normal landing (during an opportunistic precision landing).
|
If the target is lost during this phase (not visible for longer than `PLD_BTOUT`), a search procedure is initiated (during a required precision landing) or the vehicle does a normal landing (during an opportunistic precision landing).
|
||||||
|
|
||||||
3. **Final approach:** When the vehicle is close to the ground (closer than [PLD_FAPPR_ALT](../advanced_config/parameter_reference.md#PLD_FAPPR_ALT)), it descends while remaining centered over the target.
|
3. **Final approach:** When the vehicle is close to the ground (closer than [PLD_FAPPR_ALT](../advanced_config/parameter_reference.md#PLD_FAPPR_ALT)), it descends while remaining centered over the target.
|
||||||
만약 목표물이 이 단계에서 잡히지 않는다면, 기체는 정밀 착륙의 모드와 무관하게 계속 하강합니다.
|
만약 목표물이 이 단계에서 잡히지 않는다면, 기체는 정밀 착륙의 모드와 무관하게 계속 하강합니다.
|
||||||
|
|
||||||
Search procedures are initiated in the first and second steps, and will run at most [PLD_MAX_SRCH](../advanced_config/parameter_reference.md#PLD_MAX_SRCH) times.
|
Search procedures are initiated in the first and second steps, and will run at most [PLD_MAX_SRCH](../advanced_config/parameter_reference.md#PLD_MAX_SRCH) times.
|
||||||
착륙 단계 흐름도
|
착륙 단계 흐름도
|
||||||
|
|||||||
@@ -54,19 +54,19 @@ To [switch between the two antennas modes](https://docs.groundcontrol.com/iot/ro
|
|||||||
모듈의 기본 보드 속도는 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).
|
모듈의 기본 보드 속도는 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`.
|
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. baudrate 속도를 변경합니다.
|
2. baudrate 속도를 변경합니다.
|
||||||
|
|
||||||
```
|
```
|
||||||
AT+IPR=9
|
AT+IPR=9
|
||||||
```
|
```
|
||||||
|
|
||||||
3. 이제 115200/8-N-1 설정을 사용하여 모델에 다시 연결하고 다음을 사용하여 설정을 저장합니다.
|
3. 이제 115200/8-N-1 설정을 사용하여 모델에 다시 연결하고 다음을 사용하여 설정을 저장합니다.
|
||||||
|
|
||||||
```
|
```
|
||||||
AT&W0
|
AT&W0
|
||||||
```
|
```
|
||||||
|
|
||||||
이제 이 모듈을 PX4에서 사용할 수 있습니다.
|
이제 이 모듈을 PX4에서 사용할 수 있습니다.
|
||||||
|
|
||||||
@@ -101,55 +101,55 @@ Log in to the [account](https://rockblock.rock7.com/Operations) and register the
|
|||||||
릴레이 서버는 Ubuntu 16.04 또는 14.04 버전에서 실행하여야 합니다.
|
릴레이 서버는 Ubuntu 16.04 또는 14.04 버전에서 실행하여야 합니다.
|
||||||
|
|
||||||
1. 메시지 릴레이로 작동하는 서버에는 고정 IP 주소와 열린 TCP 포트 2개가 있어야 합니다.
|
1. 메시지 릴레이로 작동하는 서버에는 고정 IP 주소와 열린 TCP 포트 2개가 있어야 합니다.
|
||||||
- `5672` for the _RabbitMQ_ message broker (can be changed in the _rabbitmq_ settings)
|
- `5672` for the _RabbitMQ_ message broker (can be changed in the _rabbitmq_ settings)
|
||||||
- `45679` for the HTTP POST interface (can be changed in the **relay.cfg** file)
|
- `45679` for the HTTP POST interface (can be changed in the **relay.cfg** file)
|
||||||
|
|
||||||
2. 필요한 Python 모듈을 설치합니다.
|
2. 필요한 Python 모듈을 설치합니다.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo pip install pika tornado future
|
sudo pip install pika tornado future
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Install the `rabbitmq` message broker:
|
3. Install the `rabbitmq` message broker:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt install rabbitmq-server
|
sudo apt install rabbitmq-server
|
||||||
```
|
```
|
||||||
|
|
||||||
4. 브로커 자격 증명을 구성합니다(암호를 PWD로 변경).
|
4. 브로커 자격 증명을 구성합니다(암호를 PWD로 변경).
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo rabbitmqctl add_user iridiumsbd PWD
|
sudo rabbitmqctl add_user iridiumsbd PWD
|
||||||
sudo rabbitmqctl set_permissions iridiumsbd ".*" ".*" ".*"
|
sudo rabbitmqctl set_permissions iridiumsbd ".*" ".*" ".*"
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Clone the [SatComInfrastructure](https://github.com/acfloria/SatComInfrastructure) repository:
|
5. Clone the [SatComInfrastructure](https://github.com/acfloria/SatComInfrastructure) repository:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/acfloria/SatComInfrastructure.git
|
git clone https://github.com/acfloria/SatComInfrastructure.git
|
||||||
```
|
```
|
||||||
|
|
||||||
6. Go to the location of the _SatComInfrastructure_ repo and configure the broker's queues:
|
6. Go to the location of the _SatComInfrastructure_ repo and configure the broker's queues:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./setup_rabbit.py localhost iridiumsbd PWD
|
./setup_rabbit.py localhost iridiumsbd PWD
|
||||||
```
|
```
|
||||||
|
|
||||||
7. 설정을 확인합니다.
|
7. 설정을 확인합니다.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo rabbitmqctl list_queues
|
sudo rabbitmqctl list_queues
|
||||||
```
|
```
|
||||||
|
|
||||||
This should give you a list of 4 queues: `MO`, `MO_LOG`, `MT`, `MT_LOG`
|
This should give you a list of 4 queues: `MO`, `MO_LOG`, `MT`, `MT_LOG`
|
||||||
|
|
||||||
8. Edit the `relay.cfg` configuration file to reflect your settings.
|
8. Edit the `relay.cfg` configuration file to reflect your settings.
|
||||||
|
|
||||||
9. 분리 모드에서 릴레이 스크립트를 실행합니다.
|
9. 분리 모드에서 릴레이 스크립트를 실행합니다.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
screen -dm bash -c 'cd SatcomInfrastructure/; ./relay.py
|
screen -dm bash -c 'cd SatcomInfrastructure/; ./relay.py
|
||||||
```
|
```
|
||||||
|
|
||||||
기타 지침은 다음과 같습니다.
|
기타 지침은 다음과 같습니다.
|
||||||
|
|
||||||
@@ -177,15 +177,15 @@ Log in to the [account](https://rockblock.rock7.com/Operations) and register the
|
|||||||
|
|
||||||
1. 필요한 Python 모듈을 설치합니다.
|
1. 필요한 Python 모듈을 설치합니다.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo pip install pika tornado future
|
sudo pip install pika tornado future
|
||||||
```
|
```
|
||||||
|
|
||||||
2. SatComInfrarastructure 저장소 복제:
|
2. SatComInfrarastructure 저장소 복제:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/acfloria/SatComInfrastructure.git
|
git clone https://github.com/acfloria/SatComInfrastructure.git
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Edit the **udp2rabbit.cfg** configuration file to reflect your settings.
|
3. Edit the **udp2rabbit.cfg** configuration file to reflect your settings.
|
||||||
|
|
||||||
@@ -193,20 +193,20 @@ Log in to the [account](https://rockblock.rock7.com/Operations) and register the
|
|||||||
|
|
||||||
5. 다음 매개 변수를 사용하여 QGC에서 UDP 연결을 추가합니다.
|
5. 다음 매개 변수를 사용하여 QGC에서 UDP 연결을 추가합니다.
|
||||||
|
|
||||||
- 접속 포트: 10000
|
- 접속 포트: 10000
|
||||||
- 대상 호스트: 127.0.0.1:10001
|
- 대상 호스트: 127.0.0.1:10001
|
||||||
- 높은 지연 시간: 확인됨
|
- 높은 지연 시간: 확인됨
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 검증
|
### 검증
|
||||||
|
|
||||||
1. Open a terminal on the ground station computer and change to the location of the _SatComInfrastructure_ repository.
|
1. Open a terminal on the ground station computer and change to the location of the _SatComInfrastructure_ repository.
|
||||||
Then start the **udp2rabbit.py** script:
|
Then start the **udp2rabbit.py** script:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./udp2rabbit.py
|
./udp2rabbit.py
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Send a test message from [RockBlock Account](https://rockblock.rock7.com/Operations) to the created delivery group in the `Test Delivery Groups` tab.
|
2. Send a test message from [RockBlock Account](https://rockblock.rock7.com/Operations) to the created delivery group in the `Test Delivery Groups` tab.
|
||||||
|
|
||||||
@@ -217,35 +217,35 @@ If in the terminal where the `udp2rabbit.py` script is running within a couple o
|
|||||||
## 시스템 실행
|
## 시스템 실행
|
||||||
|
|
||||||
1. Start _QGroundControl_.
|
1. Start _QGroundControl_.
|
||||||
먼저 높은 지연 시간 링크를 수동으로 연결한 다음, 일반 텔레메트리 링크를 연결합니다.
|
먼저 높은 지연 시간 링크를 수동으로 연결한 다음, 일반 텔레메트리 링크를 연결합니다.
|
||||||
|
|
||||||

|

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

|

|
||||||
|
|
||||||
링크 표시기는 항상 우선 순위 링크의 이름을 표시합니다.
|
링크 표시기는 항상 우선 순위 링크의 이름을 표시합니다.
|
||||||
|
|
||||||
5. 이제 위성 통신 시스템을 사용할 준비가 되었습니다.우선 순위 링크(명령 전송 링크)는 다음 방법으로 결정됩니다.
|
5. 이제 위성 통신 시스템을 사용할 준비가 되었습니다.우선 순위 링크(명령 전송 링크)는 다음 방법으로 결정됩니다.
|
||||||
- 사용자가 링크를 명령하지 않으면, 지연 시간이 큰 링크보다 일반적인 텔레메트리 링크가 선호됩니다.
|
- 사용자가 링크를 명령하지 않으면, 지연 시간이 큰 링크보다 일반적인 텔레메트리 링크가 선호됩니다.
|
||||||
- 기체가 시동을 켜고 텔레메트리 링크가 끊어지면(특정 시간 동안 MAVLink 메시지가 수신되지 않을 경우), 오토파일럿과 QGC는 일반 텔레메트리에서 긴 대기 시간 링크로 되돌아갑니다.
|
- 기체가 시동을 켜고 텔레메트리 링크가 끊어지면(특정 시간 동안 MAVLink 메시지가 수신되지 않을 경우), 오토파일럿과 QGC는 일반 텔레메트리에서 긴 대기 시간 링크로 되돌아갑니다.
|
||||||
텔레메트리 링크가 복구되는 즉시 QGC와 자동 조종기가 다시 이 링크로 전환됩니다.
|
텔레메트리 링크가 복구되는 즉시 QGC와 자동 조종기가 다시 이 링크로 전환됩니다.
|
||||||
- The user can select a priority link over the `LinkIndicator` on the toolbar.
|
- The user can select a priority link over the `LinkIndicator` on the toolbar.
|
||||||
이 링크가 활성화되어 있거나 사용자가 다른 우선 순위 링크를 선택하면 이 링크는 우선 순위 링크로 유지됩니다.
|
이 링크가 활성화되어 있거나 사용자가 다른 우선 순위 링크를 선택하면 이 링크는 우선 순위 링크로 유지됩니다.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 문제 해결
|
## 문제 해결
|
||||||
|
|
||||||
|
|||||||
@@ -188,16 +188,16 @@ The following sections are out of date and need retesting.
|
|||||||
|
|
||||||
1. On the PX4 console:
|
1. On the PX4 console:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
camera_trigger test
|
camera_trigger test
|
||||||
```
|
```
|
||||||
|
|
||||||
2. From _QGroundControl_:
|
2. From _QGroundControl_:
|
||||||
|
|
||||||
Click on **Trigger Camera** in the main instrument panel.
|
Click on **Trigger Camera** in the main instrument panel.
|
||||||
These shots are not logged or counted for geotagging.
|
These shots are not logged or counted for geotagging.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Sony QX-1 example (Photogrammetry)
|
## Sony QX-1 example (Photogrammetry)
|
||||||
|
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ The 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 your camera is connected.
|
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 your camera is connected.
|
||||||
2. Set the corresponding [MAV_2_MODE](../advanced_config/parameter_reference.md#MAV_2_MODE) to `2` (Onboard).
|
2. Set the corresponding [MAV_2_MODE](../advanced_config/parameter_reference.md#MAV_2_MODE) to `2` (Onboard).
|
||||||
This ensures that the right set of MAVLink messages are emitted and forwarded.
|
This ensures that the right set of MAVLink messages are emitted and forwarded.
|
||||||
3. You may need to set some of the other parameters, depending on your connection - such as the baud rate.
|
3. You may need to set some of the other parameters, depending on your connection - such as the baud rate.
|
||||||
|
|
||||||
Then connect and configure the camera as recommended in its user guide.
|
Then connect and configure the camera as recommended in its user guide.
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ The linked document explains how, but in summary:
|
|||||||
|
|
||||||
1. Modify an unused `MAV_n_CONFIG` parameter, such as [MAV_2_CONFIG](../advanced_config/parameter_reference.md#MAV_2_CONFIG), so that it is assigned to port to which you connected the camera/companion computer.
|
1. Modify an unused `MAV_n_CONFIG` parameter, such as [MAV_2_CONFIG](../advanced_config/parameter_reference.md#MAV_2_CONFIG), so that it is assigned to port to which you connected the camera/companion computer.
|
||||||
2. Set the corresponding [MAV_2_MODE](../advanced_config/parameter_reference.md#MAV_2_MODE) to `2` (Onboard).
|
2. Set the corresponding [MAV_2_MODE](../advanced_config/parameter_reference.md#MAV_2_MODE) to `2` (Onboard).
|
||||||
This ensures that the right set of MAVLink messages are emitted for a companion computer (or camera).
|
This ensures that the right set of MAVLink messages are emitted for a companion computer (or camera).
|
||||||
3. Set [MAV_2_FORWARD](../advanced_config/parameter_reference.md#MAV_2_FORWARD) to enable forwarding of communications from the port to other ports, such as the one that is connected to the ground station.
|
3. Set [MAV_2_FORWARD](../advanced_config/parameter_reference.md#MAV_2_FORWARD) to enable forwarding of communications from the port to other ports, such as the one that is connected to the ground station.
|
||||||
4. You may need to set some of the other parameters, depending on your connection type and any particular requirements of the camera on the expected baud rate, and so on.
|
4. You may need to set some of the other parameters, depending on your connection type and any particular requirements of the camera on the expected baud rate, and so on.
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
Next we modify the Jetson IP address to be on the same network as the Pixhawk:
|
||||||
|
|
||||||
1. Make sure `netplan` is installed.
|
1. Make sure `netplan` is installed.
|
||||||
You can check by running the following command:
|
You can check by running the following command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
netplan -h
|
netplan -h
|
||||||
```
|
```
|
||||||
|
|
||||||
If not, install it using the commands:
|
If not, install it using the commands:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt install netplan.io
|
sudo apt install netplan.io
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Check `system_networkd` is running:
|
2. Check `system_networkd` is running:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo systemctl status systemd-networkd
|
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
|
```sh
|
||||||
● systemd-networkd.service - Network Configuration
|
● systemd-networkd.service - Network Configuration
|
||||||
Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled)
|
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
|
Active: active (running) since Wed 2024-09-11 23:32:44 EDT; 23min ago
|
||||||
TriggeredBy: ● systemd-networkd.socket
|
TriggeredBy: ● systemd-networkd.socket
|
||||||
Docs: man:systemd-networkd.service(8)
|
Docs: man:systemd-networkd.service(8)
|
||||||
Main PID: 2452 (systemd-network)
|
Main PID: 2452 (systemd-network)
|
||||||
Status: "Processing requests..."
|
Status: "Processing requests..."
|
||||||
Tasks: 1 (limit: 18457)
|
Tasks: 1 (limit: 18457)
|
||||||
Memory: 2.7M
|
Memory: 2.7M
|
||||||
CPU: 157ms
|
CPU: 157ms
|
||||||
CGroup: /system.slice/systemd-networkd.service
|
CGroup: /system.slice/systemd-networkd.service
|
||||||
└─2452 /lib/systemd/systemd-networkd
|
└─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]: lo: Gained carrier
|
||||||
Sep 11 23:32:44 ubuntu systemd-networkd[2452]: wlan0: Gained IPv6LL
|
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]: eth0: Gained IPv6LL
|
||||||
Sep 11 23:32:44 ubuntu systemd-networkd[2452]: Enumeration completed
|
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[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: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: 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: 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: 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: 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
|
```sh
|
||||||
sudo systemctl start systemd-networkd
|
sudo systemctl start systemd-networkd
|
||||||
sudo systemctl enable systemd-networkd
|
sudo systemctl enable systemd-networkd
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Open the Netplan configuration file (so we can set up a static IP for the Jetson).
|
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).
|
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:
|
Below we use `nano` to open the file, but you can use your preferred text editor:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo nano /etc/netplan/01-netcfg.yaml
|
sudo nano /etc/netplan/01-netcfg.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Modify the yaml configuration, by overwriting the contents with the following information and then saving:
|
4. Modify the yaml configuration, by overwriting the contents with the following information and then saving:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
network:
|
network:
|
||||||
version: 2
|
version: 2
|
||||||
renderer: networkd
|
renderer: networkd
|
||||||
ethernets:
|
ethernets:
|
||||||
eth0:
|
eth0:
|
||||||
dhcp4: no
|
dhcp4: no
|
||||||
addresses:
|
addresses:
|
||||||
- 10.41.10.1/24
|
- 10.41.10.1/24
|
||||||
routes:
|
routes:
|
||||||
- to: 0.0.0.0/0
|
- to: 0.0.0.0/0
|
||||||
via: 10.41.10.254
|
via: 10.41.10.254
|
||||||
nameservers:
|
nameservers:
|
||||||
addresses:
|
addresses:
|
||||||
- 10.41.10.254
|
- 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:
|
5. Apply the changes using the following command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo netplan apply
|
sudo netplan apply
|
||||||
```
|
```
|
||||||
|
|
||||||
The Pixhawk Ethernet address is set to `10.41.10.2` by default, which is on the same subnet.
|
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:
|
We can test our changes above by pinging the Pixhawk from within the Jetson terminal:
|
||||||
|
|||||||
@@ -69,15 +69,15 @@ To install the RPi CM4 companion computer:
|
|||||||
|
|
||||||
1. Disconnect the `FAN` wiring.
|
1. Disconnect the `FAN` wiring.
|
||||||
|
|
||||||

|

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

|

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

|

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

|

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

|

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

|

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

|

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

|

|
||||||
- Plug into computer's USB port.
|
- Plug into computer's USB port.
|
||||||
- After a second, the blue LED should start blinking and after 5 seconds should start blinking faster.
|
- After a second, the blue LED should start blinking and after 5 seconds should start blinking faster.
|
||||||
- Release button.
|
- Release button.
|
||||||
|
|
||||||
4. Install _dfu-util_:
|
4. Install _dfu-util_:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install dfu-util
|
sudo apt-get install dfu-util
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Flash bootloader using _dfu-util_ and unplug Crazyflie 2.1 when done:
|
5. Flash bootloader using _dfu-util_ and unplug Crazyflie 2.1 when done:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D ./build/crazyflie21_bl/crazyflie21_bl.bin
|
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D ./build/crazyflie21_bl/crazyflie21_bl.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
When powering on the Crazyflie 2.1 the yellow LED should blink.
|
When powering on the Crazyflie 2.1 the yellow LED should blink.
|
||||||
|
|
||||||
6. Download the source code of the PX4 autopilot:
|
6. Download the source code of the PX4 autopilot:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/PX4/PX4-Autopilot.git
|
git clone https://github.com/PX4/PX4-Autopilot.git
|
||||||
```
|
```
|
||||||
|
|
||||||
7. Navigate into the top directory of the source code and compile it using:
|
7. Navigate into the top directory of the source code and compile it using:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd PX4-Autopilot/
|
cd PX4-Autopilot/
|
||||||
make bitcraze_crazyflie21_default upload
|
make bitcraze_crazyflie21_default upload
|
||||||
```
|
```
|
||||||
|
|
||||||
8. When prompted to plug in device, plug in Crazyflie 2.1.
|
8. When prompted to plug in device, plug in Crazyflie 2.1.
|
||||||
The yellow LED should start blinking indicating bootloader mode.
|
The yellow LED should start blinking indicating bootloader mode.
|
||||||
Then the red LED should turn on indicating that the flashing process has started.
|
Then the red LED should turn on indicating that the flashing process has started.
|
||||||
|
|
||||||
9. Wait for completion.
|
9. Wait for completion.
|
||||||
|
|
||||||
@@ -124,20 +124,20 @@ After setting up the PX4 development environment, follow these steps to install
|
|||||||
1. Download the latest [Crazyflie 2.1 bootloader](https://github.com/bitcraze/crazyflie2-stm-bootloader/releases)
|
1. Download the latest [Crazyflie 2.1 bootloader](https://github.com/bitcraze/crazyflie2-stm-bootloader/releases)
|
||||||
|
|
||||||
2. Put the Crazyflie 2.1 into DFU mode by following these steps:
|
2. Put the Crazyflie 2.1 into DFU mode by following these steps:
|
||||||
- Ensure it is initially unpowered.
|
- Ensure it is initially unpowered.
|
||||||
- Ensure battery is disconnected.
|
- Ensure battery is disconnected.
|
||||||
- Hold down the reset button.
|
- Hold down the reset button.
|
||||||
- Plug into computer's USB port.
|
- Plug into computer's USB port.
|
||||||
- After a second, the blue LED should start blinking and after 5 seconds should start blinking faster.
|
- After a second, the blue LED should start blinking and after 5 seconds should start blinking faster.
|
||||||
- Release button.
|
- Release button.
|
||||||
|
|
||||||
3. Flash bootloader using _dfu-util_ and unplug Crazyflie 2.1 when done:
|
3. Flash bootloader using _dfu-util_ and unplug Crazyflie 2.1 when done:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D cf2loader-1.0.bin
|
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D cf2loader-1.0.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
When powering on the Crazyflie 2.1 the yellow LED should blink.
|
When powering on the Crazyflie 2.1 the yellow LED should blink.
|
||||||
|
|
||||||
4. Install the latest Bitcraze Crazyflie 2.1 Firmware using [this](https://www.bitcraze.io/documentation/tutorials/getting-started-with-crazyflie-2-x/#update-fw) tutorial.
|
4. Install the latest Bitcraze Crazyflie 2.1 Firmware using [this](https://www.bitcraze.io/documentation/tutorials/getting-started-with-crazyflie-2-x/#update-fw) tutorial.
|
||||||
|
|
||||||
|
|||||||
@@ -1,127 +1,39 @@
|
|||||||
# ModalAI Starling (PX4 Autonomy Developer Kit)
|
# ModalAI Starling 2
|
||||||
|
|
||||||
The [Starlings](https://www.modalai.com/pages/starlings) are SLAM development drones supercharged by [VOXL 2](../flight_controller/modalai_voxl_2.md) and PX4 with SWAP-optimized sensors and payloads optimized for indoor and outdoor autonomous navigation.
|
The [Starlings](https://www.modalai.com/pages/starlings) are NDAA-compliant SLAM development drones based on the [VOXL 2](../flight_controller/modalai_voxl_2.md) and PX4 with SWAP-optimized sensors and payloads optimized for indoor and outdoor autonomous navigation.
|
||||||
Powered by Blue UAS Framework autopilot, VOXL 2, the Starling weighs only 275g and boasts an impressive 30 minutes of autonomous indoor flight time.
|
|
||||||
|
|
||||||

|
## 개요
|
||||||
|
|
||||||
The ModalAI PX4 Autonomy Developer Kit is a Starling-based development drone.
|
Starling drones house _VOXL 2_, which is a powerful companion computer, a PX4 flight controller, image sensors, GPS, and connectivity modem, in one small package.
|
||||||
It houses a [VOXL 2](../flight_controller/modalai_voxl_2.md), which is a powerful companion computer and PX4 flight controller in one small package, image sensors, GPS, and connectivity modem, and is ready-to-fly out-of-the-box.
|
The Starlings feature ModalAI's open source [VOXL SDK](https://gitlab.com/voxl-public/voxl-sdk) that has pre-configured autonomy models for computer vision assisted flight.
|
||||||
The Starling features ModalAI's [open SDK](https://docs.modalai.com/voxl-developer-bootcamp/) that has pre-configured autonomy models for computer vision assisted flight.
|
|
||||||
This development drone is meant to help you get to market faster and accelerate your application development and prototyping.
|
|
||||||
|
|
||||||
This guide explains the minimal additional setup required to get the UAV ready to fly.
|
These development drones are ready-to-fly out-of-the-box.
|
||||||
It also covers a hardware overview, first flight, setting up WiFi, and more.
|
They are designed to help you get to market faster and accelerate your application development and prototyping.
|
||||||
|
|
||||||
:::info
|
|
||||||
For complete and regularly updated documentation, please visit <https://docs.modalai.com/starling-v2>.
|
|
||||||
:::
|
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
If you are new to VOXL, be sure to familiarize yourself with the core features of VOXL hardware and software by reviewing the [VOXL Bootcamp](https://docs.modalai.com/voxl-developer-bootcamp/).
|
If you are new to VOXL, be sure to familiarize yourself with the core features of VOXL hardware and software by reviewing the [VOXL Bootcamp](https://docs.modalai.com/voxl-developer-bootcamp/).
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
:::info
|
||||||
|
For complete and regularly updated documentation, please visit <https://docs.modalai.com/starling-2/> and <https://docs.modalai.com/starling-2-max/>.
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Starling 2
|
||||||
|
|
||||||
|
The [Starling 2](https://www.modalai.com/products/starling-2) is an NDAA-compliant development drone supercharged by the VOXL SDK and equipped with a new image sensor suite for precise, indoor visual navigation and SLAM. Powered by the Blue UAS Framework autopilot, VOXL 2, the Starling 2 weighs 280g and boasts an impressive 40 minutes of autonomous flight time.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Starling 2 Max
|
||||||
|
|
||||||
|
The [Starling 2 Max](https://www.modalai.com/products/starling-2-max) is VOXL 2-powered, NDAA-compliant development drone supercharged by VOXL SDK specifically designed for computer vision-based, long-range dead reckoning with a 500g payload capacity. Powered by the Blue UAS Framework autopilot, VOXL 2, the Starling 2 Max weighs 500g and boasts an impressive 55 minutes of autonomous flight time.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## 구매처
|
## 구매처
|
||||||
|
|
||||||
[ModalAI PX4 Autonomy Developer Kit](https://www.modalai.com/products/px4-autonomy-developer-kit?variant=46969885950256)
|
[ModalAI Starling 2](https://www.modalai.com/products/starling-2)
|
||||||
|
|
||||||
## Hardware Overview
|
[ModalAI Starling 2 Max](https://www.modalai.com/products/starling-2-max)
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
| Callout | 설명 | MPN |
|
|
||||||
| ------- | -------------------------------------------------------- | ---------------- |
|
|
||||||
| A | VOXL 2 | MDK-M0054-1 |
|
|
||||||
| B | VOXL 4-in-1 ESC | MDK-M0117-1 |
|
|
||||||
| C | Barometer Shield Cap | M10000533 |
|
|
||||||
| D | ToF Image Sensor (PMD) | MDK-M0040 |
|
|
||||||
| E | Tracking Image Sensor (OV7251) | M0014 |
|
|
||||||
| F | Hires Image Sensor (IMX214) | M0025-2 |
|
|
||||||
| G | AC600 WiFi Dongle | AWUS036EACS |
|
|
||||||
| H | GNSS GPS Module & Compass | M10-5883 |
|
|
||||||
| I | 915MHz ELRS Receiver | BetaFPV Nano RX |
|
|
||||||
| J | USB C Connector on VOXL 2 (not shown) | |
|
|
||||||
| K | VOXL Power Module | MCCA-M0041-5-B-T |
|
|
||||||
| L | 4726FM Propellor | M10000302 |
|
|
||||||
| M | Motor 1504 | |
|
|
||||||
| N | XT30 Power Connector | |
|
|
||||||
|
|
||||||
## Datasheet
|
|
||||||
|
|
||||||
### 사양
|
|
||||||
|
|
||||||
| 부품 | 사양 |
|
|
||||||
| --------------- | ----------------------------------------------------------------- |
|
|
||||||
| 오토파일럿 | VOXL2 |
|
|
||||||
| Take-off Weight | 275g (172g without battery) |
|
|
||||||
| Diagonal Size | 211mm |
|
|
||||||
| Flight Time | > 30 minutes |
|
|
||||||
| 모터 | 1504 |
|
|
||||||
| Propellers | 120mm |
|
|
||||||
| 프레임 | 3mm Carbon Fiber |
|
|
||||||
| ESC | ModalAI VOXL 4-in-1 ESC V2 |
|
|
||||||
| GPS | UBlox M10 |
|
|
||||||
| 무선 수신기 | 915mhz ELRS |
|
|
||||||
| 전원 모듈 | ModalAI Power Module v3 - 5V/6A |
|
|
||||||
| Battery | Sony VTC6 3000mah 2S, or any 2S 18650 battery with XT30 connector |
|
|
||||||
| 고도 | 83mm |
|
|
||||||
| Width | 187mm (Props folded) |
|
|
||||||
| Length | 142mm (Props folded) |
|
|
||||||
|
|
||||||
### Hardware Wiring Diagram
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Tutorials
|
|
||||||
|
|
||||||
### ELRS Set Up
|
|
||||||
|
|
||||||
Binding your ELRS (ExpressLRS) receiver to a transmitter is a crucial step in preparing your VOXL 2 based PX4 Autonomy Developer Kit by ModalAI for flight.
|
|
||||||
This process ensures a secure and responsive connection between your drone and its control system.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
#### 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.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
#### Completing the Binding Process
|
|
||||||
|
|
||||||
Once the transmitter is set to bind mode, the ELRS receiver on the drone will change its LED from flashing to a steady light, signifying a successful connection between the receiver and the transmitter.
|
|
||||||
|
|
||||||
- **Power Cycle**: After the binding process is complete, it's essential to power cycle the VOXL 2 before attempting to fly.
|
|
||||||
This means turning off the VOXL 2 and then turning it back on.
|
|
||||||
This step ensures that all settings are properly applied and that the system recognizes the newly established connection.
|
|
||||||
|
|
||||||
You should now have a successfully bound ELRS receiver to your transmitter, ready for use with the PX4 Autonomy Kit by ModalAI.
|
|
||||||
A secure connection is vital for the reliable operation of your drone, so always confirm the binding status before flight.
|
|
||||||
|
|
||||||
### 비디오
|
|
||||||
|
|
||||||
- [VOXL 2 Starling Hardware Overview](https://youtu.be/M9OiMpbEYOg)
|
|
||||||
- [VOXL 2 Starling First Flight Tutorial](https://youtu.be/Cpbbye3Z6co)
|
|
||||||
- [VOXL 2 Starling ELRS Set Up](https://youtu.be/7OwGS-kcFVg)
|
|
||||||
|
|
||||||
<!-- @katzfey - ModalAI reviewer -->
|
<!-- @katzfey - ModalAI reviewer -->
|
||||||
|
|||||||
@@ -42,17 +42,17 @@ This kit is still highly recommended for developing and testing vision solutions
|
|||||||
## Warnings and Notifications
|
## Warnings and Notifications
|
||||||
|
|
||||||
1. The kit is intended for computer vision projects that use a forward-facing camera (it does not have downward or rear-facing depth cameras).
|
1. The kit is intended for computer vision projects that use a forward-facing camera (it does not have downward or rear-facing depth cameras).
|
||||||
Consequently it can't be used (without modification) for testing features that require a downward-facing camera.
|
Consequently it can't be used (without modification) for testing features that require a downward-facing camera.
|
||||||
|
|
||||||
2. Obstacle avoidance in missions can only be tested when GPS is available (missions use GPS coordinates).
|
2. Obstacle avoidance in missions can only be tested when GPS is available (missions use GPS coordinates).
|
||||||
Collision prevention can be tested in position mode provided there is a good position lock from either GPS or optical flow.
|
Collision prevention can be tested in position mode provided there is a good position lock from either GPS or optical flow.
|
||||||
|
|
||||||
3. The port labeled `USB1` may jam the GPS if used with a _USB3_ peripheral (disable GPS-dependent functionality including missions).
|
3. The port labeled `USB1` may jam the GPS if used with a _USB3_ peripheral (disable GPS-dependent functionality including missions).
|
||||||
This is why the boot image is supplied on a _USB2.0_ memory stick.
|
This is why the boot image is supplied on a _USB2.0_ memory stick.
|
||||||
|
|
||||||
4. PX4 Vision v1 with ECN 010 or above (carrier board RC05 and up), the _UP Core_ can be powered by either the DC plug or with battery.
|
4. PX4 Vision v1 with ECN 010 or above (carrier board RC05 and up), the _UP Core_ can be powered by either the DC plug or with battery.
|
||||||
|
|
||||||
 
|
 
|
||||||
|
|
||||||
5. All PX4 Vision v1.5 _UP Core_ can be powered by either the DC plug or with battery.
|
5. All PX4 Vision v1.5 _UP Core_ can be powered by either the DC plug or with battery.
|
||||||
|
|
||||||
@@ -132,37 +132,37 @@ In addition, users will need ground station hardware/software:
|
|||||||
## First-time Setup
|
## First-time Setup
|
||||||
|
|
||||||
1. Attach a [compatible RC receiver](../getting_started/rc_transmitter_receiver.md#connecting-receivers) to the vehicle (not supplied with kit):
|
1. Attach a [compatible RC receiver](../getting_started/rc_transmitter_receiver.md#connecting-receivers) to the vehicle (not supplied with kit):
|
||||||
- Remove/unscrew the top plate (where the battery goes) using an H2.0 hex key tool.
|
- Remove/unscrew the top plate (where the battery goes) using an H2.0 hex key tool.
|
||||||
- [Connect the receiver to the flight controller](../assembly/quick_start_pixhawk4.md#radio-control).
|
- [Connect the receiver to the flight controller](../assembly/quick_start_pixhawk4.md#radio-control).
|
||||||
- Re-attach the top plate.
|
- Re-attach the top plate.
|
||||||
- Mount the RC receiver on the _UP Core_ carrier board plate at the back of the vehicle (use zipties or double-sided tape).
|
- Mount the RC receiver on the _UP Core_ carrier board plate at the back of the vehicle (use zipties or double-sided tape).
|
||||||
- Ensure the antennas are clear of any obstructions and electrically isolated from the frame (e.g. secure them under the carrier board or to the vehicle arms or legs).
|
- Ensure the antennas are clear of any obstructions and electrically isolated from the frame (e.g. secure them under the carrier board or to the vehicle arms or legs).
|
||||||
|
|
||||||
2. [Bind](../getting_started/rc_transmitter_receiver.md#binding) the RC ground and air units (if not already done).
|
2. [Bind](../getting_started/rc_transmitter_receiver.md#binding) the RC ground and air units (if not already done).
|
||||||
The binding procedure depends on the specific radio system used (read the receiver manual).
|
The binding procedure depends on the specific radio system used (read the receiver manual).
|
||||||
|
|
||||||
3. Raise the GPS mast to the vertical position and screw the cover onto the holder on the base plate. (Not required for v1.5)
|
3. Raise the GPS mast to the vertical position and screw the cover onto the holder on the base plate. (Not required for v1.5)
|
||||||
|
|
||||||

|

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

|

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

|

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

|

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

|

|
||||||
|
|
||||||
## Fly the Drone with Avoidance
|
## Fly the Drone with Avoidance
|
||||||
|
|
||||||
@@ -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).
|
2. Wait until the boot sequence completes and the avoidance system has started (the vehicle will reject arming commands during boot).
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
The boot/startup process takes around 1 minute from the supplied USB stick (or 30 seconds from [internal memory](#install_image_mission_computer)).
|
The boot/startup process takes around 1 minute from the supplied USB stick (or 30 seconds from [internal memory](#install_image_mission_computer)).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
3. Check that the avoidance system has started properly:
|
3. Check that the avoidance system has started properly:
|
||||||
- The _QGroundControl_ notification log displays the message: **Avoidance system connected**.
|
- The _QGroundControl_ notification log displays the message: **Avoidance system connected**.
|
||||||
|
|
||||||

|

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

|

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

|

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

|

|
||||||
|
|
||||||
The Ubuntu login screen should then appear on the monitor.
|
The Ubuntu login screen should then appear on the monitor.
|
||||||
|
|
||||||
3. Login to the _UP Core_ using the credentials:
|
3. Login to the _UP Core_ using the credentials:
|
||||||
- **Username:** px4vision
|
- **Username:** px4vision
|
||||||
- **Password:** px4vision
|
- **Password:** px4vision
|
||||||
|
|
||||||
### Developing/Extending PX4 Avoidance
|
### Developing/Extending PX4 Avoidance
|
||||||
|
|
||||||
@@ -350,39 +350,39 @@ To integrate a different planner, this needs to be disabled.
|
|||||||
|
|
||||||
1. Disable the avoidance process using the following command:
|
1. Disable the avoidance process using the following command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
systemctl stop avoidance.service
|
systemctl stop avoidance.service
|
||||||
```
|
```
|
||||||
|
|
||||||
You can simply reboot the machine to restart the service.
|
You can simply reboot the machine to restart the service.
|
||||||
|
|
||||||
Other useful commands are:
|
Other useful commands are:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# restart service
|
# restart service
|
||||||
systemctl start avoidance.service
|
systemctl start avoidance.service
|
||||||
|
|
||||||
# disable service (stop service and do not restart after boot)
|
# disable service (stop service and do not restart after boot)
|
||||||
systemctl disable avoidance.service
|
systemctl disable avoidance.service
|
||||||
|
|
||||||
# enable service (start service and enable restart after boot)
|
# enable service (start service and enable restart after boot)
|
||||||
systemctl enable avoidance.service
|
systemctl enable avoidance.service
|
||||||
```
|
```
|
||||||
|
|
||||||
2. The source code of the obstacle avoidance package can be found in https://github.com/PX4/PX4-Avoidance which is located in `~/catkin_ws/src/avoidance`.
|
2. The source code of the obstacle avoidance package can be found in https://github.com/PX4/PX4-Avoidance which is located in `~/catkin_ws/src/avoidance`.
|
||||||
|
|
||||||
3. Make changes to the code! To get the latest code of avoidance pull the code from the avoidance repo:
|
3. Make changes to the code! To get the latest code of avoidance pull the code from the avoidance repo:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git pull origin
|
git pull origin
|
||||||
git checkout origin/master
|
git checkout origin/master
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Build the package
|
4. Build the package
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
catkin build local_planner
|
catkin build local_planner
|
||||||
```
|
```
|
||||||
|
|
||||||
The ROS workspace is placed in `~/catkin_ws`.
|
The ROS workspace is placed in `~/catkin_ws`.
|
||||||
For reference on developing in ROS and using the catkin workspace, see the [ROS catkin tutorials](https://wiki.ros.org/catkin/Tutorials).
|
For reference on developing in ROS and using the catkin workspace, see the [ROS catkin tutorials](https://wiki.ros.org/catkin/Tutorials).
|
||||||
|
|||||||
@@ -54,15 +54,15 @@ Use _QGroundControl_ for rover configuration:
|
|||||||
First configure the serial connection:
|
First configure the serial connection:
|
||||||
|
|
||||||
1. Navigate to the [Parameters](../advanced_config/parameters.md) section in QGroundControl.
|
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`).
|
- 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.
|
- [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`.
|
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.
|
Adjust the value based on your specific encoder and wheel setup.
|
||||||
- RoboClaw motor controllers must be assigned a unique address on the bus.
|
- 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).
|
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
|
::: 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`).
|
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.
|
1. Navigate to [Actuators Configuration & Testing](../config/actuators.md) in QGroundControl.
|
||||||
2. Select the RoboClaw driver from the list of _Actuator Outputs_.
|
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.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
For systems with more than two motors, it is possible to assign the same function to several motors.
|
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`:
|
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
|
```plain
|
||||||
Drive motor forward. Valid data range is 0 - 127. A value of 127 = full speed forward, 64 =
|
Drive motor forward. Valid data range is 0 - 127. A value of 127 = full speed forward, 64 =
|
||||||
|
|||||||
@@ -203,85 +203,85 @@ The Lua script works by extracting the `obstacle_distance_fused` data at each ti
|
|||||||
|
|
||||||
2. Configure PX4 to publish obstacle distance data (so that it is available to PlotJuggler):
|
2. Configure PX4 to publish obstacle distance data (so that it is available to PlotJuggler):
|
||||||
|
|
||||||
Add the [`obstacle_distance_fused`](../msg_docs/ObstacleDistance.md) UORB topic to your [`dds_topics.yaml`](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) so that it is published by PX4:
|
Add the [`obstacle_distance_fused`](../msg_docs/ObstacleDistance.md) UORB topic to your [`dds_topics.yaml`](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) so that it is published by PX4:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
- topic: /fmu/out/obstacle_distance_fused
|
- topic: /fmu/out/obstacle_distance_fused
|
||||||
type: px4_msgs::msg::ObstacleDistance
|
type: px4_msgs::msg::ObstacleDistance
|
||||||
```
|
```
|
||||||
|
|
||||||
For more information see [DDS Topics YAML](../middleware/uxrce_dds.md#dds-topics-yaml) in [uXRCE-DDS](../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.
|
3. Open PlotJuggler and navigate to the **Tools > Reactive Script Editor** section.
|
||||||
In the **Script Editor** tab, add following scripts in the appropriate sections:
|
In the **Script Editor** tab, add following scripts in the appropriate sections:
|
||||||
|
|
||||||
- **Global code, executed once:**
|
- **Global code, executed once:**
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
obs_dist_fused_xy = ScatterXY.new("obstacle_distance_fused_xy")
|
obs_dist_fused_xy = ScatterXY.new("obstacle_distance_fused_xy")
|
||||||
obs_dist_min = Timeseries.new("obstacle_distance_minimum")
|
obs_dist_min = Timeseries.new("obstacle_distance_minimum")
|
||||||
```
|
```
|
||||||
|
|
||||||
- **function(tracker_time)**
|
- **function(tracker_time)**
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
obs_dist_fused_xy:clear()
|
obs_dist_fused_xy:clear()
|
||||||
|
|
||||||
i = 0
|
i = 0
|
||||||
angle_offset = TimeseriesView.find("/fmu/out/obstacle_distance_fused/angle_offset")
|
angle_offset = TimeseriesView.find("/fmu/out/obstacle_distance_fused/angle_offset")
|
||||||
increment = TimeseriesView.find("/fmu/out/obstacle_distance_fused/increment")
|
increment = TimeseriesView.find("/fmu/out/obstacle_distance_fused/increment")
|
||||||
min_dist = 65535
|
min_dist = 65535
|
||||||
|
|
||||||
-- Cache increment and angle_offset values at tracker_time to avoid repeated calls
|
-- Cache increment and angle_offset values at tracker_time to avoid repeated calls
|
||||||
local angle_offset_value = angle_offset:atTime(tracker_time)
|
local angle_offset_value = angle_offset:atTime(tracker_time)
|
||||||
local increment_value = increment:atTime(tracker_time)
|
local increment_value = increment:atTime(tracker_time)
|
||||||
|
|
||||||
if increment_value == nil or increment_value <= 0 then
|
if increment_value == nil or increment_value <= 0 then
|
||||||
print("Invalid increment value: " .. tostring(increment_value))
|
print("Invalid increment value: " .. tostring(increment_value))
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local max_steps = math.floor(360 / increment_value)
|
local max_steps = math.floor(360 / increment_value)
|
||||||
|
|
||||||
while i < max_steps do
|
while i < max_steps do
|
||||||
local str = string.format("/fmu/out/obstacle_distance_fused/distances[%d]", i)
|
local str = string.format("/fmu/out/obstacle_distance_fused/distances[%d]", i)
|
||||||
local distance = TimeseriesView.find(str)
|
local distance = TimeseriesView.find(str)
|
||||||
if distance == nil then
|
if distance == nil then
|
||||||
print("No distance data for: " .. str)
|
print("No distance data for: " .. str)
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
|
|
||||||
local dist = distance:atTime(tracker_time)
|
local dist = distance:atTime(tracker_time)
|
||||||
if dist ~= nil and dist < 65535 then
|
if dist ~= nil and dist < 65535 then
|
||||||
-- Calculate angle and Cartesian coordinates
|
-- Calculate angle and Cartesian coordinates
|
||||||
local angle = angle_offset_value + i * increment_value
|
local angle = angle_offset_value + i * increment_value
|
||||||
local y = dist * math.cos(math.rad(angle))
|
local y = dist * math.cos(math.rad(angle))
|
||||||
local x = dist * math.sin(math.rad(angle))
|
local x = dist * math.sin(math.rad(angle))
|
||||||
|
|
||||||
obs_dist_fused_xy:push_back(x, y)
|
obs_dist_fused_xy:push_back(x, y)
|
||||||
|
|
||||||
-- Update minimum distance
|
-- Update minimum distance
|
||||||
if dist < min_dist then
|
if dist < min_dist then
|
||||||
min_dist = dist
|
min_dist = dist
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
i = i + 1
|
i = i + 1
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Push minimum distance once after the loop
|
-- Push minimum distance once after the loop
|
||||||
if min_dist < 65535 then
|
if min_dist < 65535 then
|
||||||
obs_dist_min:push_back(tracker_time, min_dist)
|
obs_dist_min:push_back(tracker_time, min_dist)
|
||||||
else
|
else
|
||||||
print("No valid minimum distance found")
|
print("No valid minimum distance found")
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Enter a name for the script on the top right, and press **Save**.
|
4. Enter a name for the script on the top right, and press **Save**.
|
||||||
Once saved, the script should appear in the _Active Scripts_ section.
|
Once saved, the script should appear in the _Active Scripts_ section.
|
||||||
|
|
||||||
5. Start streaming the data using the approach described in [Plotting uORB Topic Data in Real Time using PlotJuggler](../debug/plotting_realtime_uorb_data.md).
|
5. Start streaming the data using the approach described in [Plotting uORB Topic Data in Real Time using PlotJuggler](../debug/plotting_realtime_uorb_data.md).
|
||||||
You should see the `obstacle_distance_fused_xy` and `obstacle_distance_minimum` timeseries on the left.
|
You should see the `obstacle_distance_fused_xy` and `obstacle_distance_minimum` timeseries on the left.
|
||||||
|
|
||||||
Note that you have to press **Save** again to re-enable the scripts after loading a new log file or otherwise clearing data.
|
Note that you have to press **Save** again to re-enable the scripts after loading a new log file or otherwise clearing data.
|
||||||
|
|
||||||
|
|||||||
@@ -125,15 +125,15 @@ Perform the following checks to verify that VIO is working properly _before_ you
|
|||||||
이러한 단계가 유지되면, 첫 번째 비행을 시도할 수 있습니다.
|
이러한 단계가 유지되면, 첫 번째 비행을 시도할 수 있습니다.
|
||||||
|
|
||||||
1. Put the vehicle on the ground and start streaming `ODOMETRY` feedback (as above).
|
1. Put the vehicle on the ground and start streaming `ODOMETRY` feedback (as above).
|
||||||
스로틀 스틱을 내리고 모터를 작동시키십시오.
|
스로틀 스틱을 내리고 모터를 작동시키십시오.
|
||||||
|
|
||||||
이때 왼쪽 스틱을 가장 낮은 위치에 놓고, 위치 제어로 전환합니다.
|
이때 왼쪽 스틱을 가장 낮은 위치에 놓고, 위치 제어로 전환합니다.
|
||||||
초록불이 켜져야 합니다.
|
초록불이 켜져야 합니다.
|
||||||
녹색 표시등은 위치 피드백을 사용할 수 있고, 위치 제어가 활성화되었음을 알려줍니다.
|
녹색 표시등은 위치 피드백을 사용할 수 있고, 위치 제어가 활성화되었음을 알려줍니다.
|
||||||
|
|
||||||
2. 기체가 고도를 유지하도록 스로틀 스틱을 중간(데드 존)에 놓습니다.
|
2. 기체가 고도를 유지하도록 스로틀 스틱을 중간(데드 존)에 놓습니다.
|
||||||
스틱을 올리면 기준 고도가 증가하고 값을 낮추면 감소합니다.
|
스틱을 올리면 기준 고도가 증가하고 값을 낮추면 감소합니다.
|
||||||
Similarly, the other stick will change the position over the ground.
|
Similarly, the other stick will change the position over the ground.
|
||||||
|
|
||||||
3. Increase the value of the throttle stick and the vehicle will take off. Move it back to the middle immediately afterwards.
|
3. Increase the value of the throttle stick and the vehicle will take off. Move it back to the middle immediately afterwards.
|
||||||
|
|
||||||
|
|||||||
@@ -38,24 +38,24 @@ The instructions below might be used to create a task named _MyTask_:
|
|||||||
|
|
||||||
- Update the copyright to the current year
|
- Update the copyright to the current year
|
||||||
|
|
||||||
```cmake
|
```cmake
|
||||||
############################################################################
|
############################################################################
|
||||||
#
|
#
|
||||||
# Copyright (c) 2021 PX4 Development Team. All rights reserved.
|
# Copyright (c) 2021 PX4 Development Team. All rights reserved.
|
||||||
#
|
#
|
||||||
```
|
```
|
||||||
|
|
||||||
- Modify the code to reflect the new task - e.g. replace `FlightTaskOrbit` with `FlightTaskMyTask`.
|
- Modify the code to reflect the new task - e.g. replace `FlightTaskOrbit` with `FlightTaskMyTask`.
|
||||||
The code will look something like this:
|
The code will look something like this:
|
||||||
|
|
||||||
```cmake
|
```cmake
|
||||||
px4_add_library(FlightTaskMyTask
|
px4_add_library(FlightTaskMyTask
|
||||||
FlightTaskMyTask.cpp
|
FlightTaskMyTask.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(FlightTaskMyTask PUBLIC FlightTask)
|
target_link_libraries(FlightTaskMyTask PUBLIC FlightTask)
|
||||||
target_include_directories(FlightTaskMyTask PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
target_include_directories(FlightTaskMyTask PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Update the header file (in this case **FlightTaskMyTask.hpp**):
|
4. Update the header file (in this case **FlightTaskMyTask.hpp**):
|
||||||
Most tasks reimplement the virtual methods `activate()` and `update()`, and in this example we also have a private variable.
|
Most tasks reimplement the virtual methods `activate()` and `update()`, and in this example we also have a private variable.
|
||||||
@@ -141,35 +141,35 @@ The instructions below might be used to create a task named _MyTask_:
|
|||||||
|
|
||||||
- Update `MPC_POS_MODE` ([multicopter_position_mode_params.c](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mc_pos_control/multicopter_position_mode_params.c)) to add an option for selecting "MyTask" if the parameter has a previously unused value like 5:
|
- Update `MPC_POS_MODE` ([multicopter_position_mode_params.c](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mc_pos_control/multicopter_position_mode_params.c)) to add an option for selecting "MyTask" if the parameter has a previously unused value like 5:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
...
|
...
|
||||||
* @value 0 Direct velocity
|
* @value 0 Direct velocity
|
||||||
* @value 3 Smoothed velocity
|
* @value 3 Smoothed velocity
|
||||||
* @value 4 Acceleration based
|
* @value 4 Acceleration based
|
||||||
* @value 5 My task
|
* @value 5 My task
|
||||||
* @group Multicopter Position Control
|
* @group Multicopter Position Control
|
||||||
*/
|
*/
|
||||||
PARAM_DEFINE_INT32(MPC_POS_MODE, 5);
|
PARAM_DEFINE_INT32(MPC_POS_MODE, 5);
|
||||||
```
|
```
|
||||||
|
|
||||||
- Add a case for your new option in the switch for the parameter [FlightModeManager.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/flight_mode_manager/FlightModeManager.cpp#L266-L285) to enable the task when `_param_mpc_pos_mode` has the right value.
|
- Add a case for your new option in the switch for the parameter [FlightModeManager.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/flight_mode_manager/FlightModeManager.cpp#L266-L285) to enable the task when `_param_mpc_pos_mode` has the right value.
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
...
|
...
|
||||||
// manual position control
|
// manual position control
|
||||||
...
|
...
|
||||||
switch (_param_mpc_pos_mode.get()) {
|
switch (_param_mpc_pos_mode.get()) {
|
||||||
...
|
...
|
||||||
case 3:
|
case 3:
|
||||||
error = switchTask(FlightTaskIndex::ManualPositionSmoothVel);
|
error = switchTask(FlightTaskIndex::ManualPositionSmoothVel);
|
||||||
break;
|
break;
|
||||||
case 5: // Add case for new task: MyTask
|
case 5: // Add case for new task: MyTask
|
||||||
error = switchTask(FlightTaskIndex::MyTask);
|
error = switchTask(FlightTaskIndex::MyTask);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
....
|
....
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
## 신규 비행 작업 테스트
|
## 신규 비행 작업 테스트
|
||||||
|
|
||||||
|
|||||||
@@ -27,18 +27,18 @@ Before calibration they must be [enabled via the corresponding parameter](../adv
|
|||||||
|
|
||||||
4. Click the **Airspeed** sensor button.
|
4. Click the **Airspeed** sensor button.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
5. 센서로 부는 바람을 막으십시오 (예: 손을 컵 모양으로 감쌀 수 있습니다).
|
5. 센서로 부는 바람을 막으십시오 (예: 손을 컵 모양으로 감쌀 수 있습니다).
|
||||||
피톳 튜브의 구멍을 막지 않도록 주의하십시오.
|
피톳 튜브의 구멍을 막지 않도록 주의하십시오.
|
||||||
|
|
||||||
6. Click **OK** to start the calibration.
|
6. Click **OK** to start the calibration.
|
||||||
|
|
||||||
7. 피톳 튜브의 끝에 입으로 바람을 불어 보정 완료 신호를 보냅니다.
|
7. 피톳 튜브의 끝에 입으로 바람을 불어 보정 완료 신호를 보냅니다.
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
Blowing into the tube is also a basic check that the dynamic and static ports are installed correctly.
|
Blowing into the tube is also a basic check that the dynamic and static ports are installed correctly.
|
||||||
교체한 센서는 튜브에 바람을 불어 넣을 때 큰 음의 차압을 판독하고 보정이 오류와 함께 중단됩니다.
|
교체한 센서는 튜브에 바람을 불어 넣을 때 큰 음의 차압을 판독하고 보정이 오류와 함께 중단됩니다.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|||||||
+15
-15
@@ -23,9 +23,9 @@ If any external magnetometers are available, it then disables the internal magne
|
|||||||
Several types of compass calibration are available:
|
Several types of compass calibration are available:
|
||||||
|
|
||||||
1. [Complete](#complete-calibration): This calibration is required after installing the autopilot on an airframe for the first time or when the configuration of the vehicle has changed significantly.
|
1. [Complete](#complete-calibration): This calibration is required after installing the autopilot on an airframe for the first time or when the configuration of the vehicle has changed significantly.
|
||||||
It compensates for hard and soft iron effects by estimating an offset and a scale factor for each axis.
|
It compensates for hard and soft iron effects by estimating an offset and a scale factor for each axis.
|
||||||
2. [Partial](#partial-quick-calibration): This calibration can be performed as a routine when preparing the vehicle for a flight, after changing the payload, or simply when the compass rose seems inaccurate.
|
2. [Partial](#partial-quick-calibration): This calibration can be performed as a routine when preparing the vehicle for a flight, after changing the payload, or simply when the compass rose seems inaccurate.
|
||||||
This type of calibration only estimates the offsets to compensate for a hard iron effect.
|
This type of calibration only estimates the offsets to compensate for a hard iron effect.
|
||||||
3. [Large vehicle](#large-vehicle-calibration): This calibration can be performed when the vehicle is too large or heavy to perform a complete calibration. This type of calibration only estimates the offsets to compensate for a hard iron effect.
|
3. [Large vehicle](#large-vehicle-calibration): This calibration can be performed when the vehicle is too large or heavy to perform a complete calibration. This type of calibration only estimates the offsets to compensate for a hard iron effect.
|
||||||
|
|
||||||
## 보정 절차
|
## 보정 절차
|
||||||
@@ -35,13 +35,13 @@ Several types of compass calibration are available:
|
|||||||
Before starting the calibration:
|
Before starting the calibration:
|
||||||
|
|
||||||
1. 큰 금속 물체등과 같이 자기장이 강한 곳에서 멀리 떨어진 위치를 선택하십시오.
|
1. 큰 금속 물체등과 같이 자기장이 강한 곳에서 멀리 떨어진 위치를 선택하십시오.
|
||||||
:::tip
|
:::tip
|
||||||
Metal is not always obvious! 사무실 테이블 위에서나 (종종 금속 막대 포함) 또는 차량 옆에서 보정하지 마십시오.
|
Metal is not always obvious! 사무실 테이블 위에서나 (종종 금속 막대 포함) 또는 차량 옆에서 보정하지 마십시오.
|
||||||
철근이 고르지 않게 분포된 콘크리트 슬래브 근처 장소들도 보정에 영향을 미칠 수 있습니다.
|
철근이 고르지 않게 분포된 콘크리트 슬래브 근처 장소들도 보정에 영향을 미칠 수 있습니다.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
2. Connect via telemetry radio rather than USB if at all possible.
|
2. Connect via telemetry radio rather than USB if at all possible.
|
||||||
USB can potentially cause significant magnetic interference.
|
USB can potentially cause significant magnetic interference.
|
||||||
3. If using an external compass (or a combined GPS/compass module), make sure it is [mounted](../assembly/mount_gps_compass.md) as far as possible from other electronics in order to reduce magnetic interference, and in a _supported orientation_.
|
3. If using an external compass (or a combined GPS/compass module), make sure it is [mounted](../assembly/mount_gps_compass.md) as far as possible from other electronics in order to reduce magnetic interference, and in a _supported orientation_.
|
||||||
|
|
||||||
### Complete Calibration
|
### Complete Calibration
|
||||||
@@ -54,10 +54,10 @@ Before starting the calibration:
|
|||||||
|
|
||||||
3. Click the **Compass** sensor button.
|
3. Click the **Compass** sensor button.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
You should already have set the [Autopilot Orientation](../config/flight_controller_orientation.md). 미리 설정하지 않았다면, 여기에서 설정할 수 있습니다.
|
You should already have set the [Autopilot Orientation](../config/flight_controller_orientation.md). 미리 설정하지 않았다면, 여기에서 설정할 수 있습니다.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ Before starting the calibration:
|
|||||||
|
|
||||||
5. 기체를 아래에 표시된 자세로 놓고 그대로 유지해주십시오 메시지가 표시되면(방향 이미지가 노란색으로 변함) 기체를 지정축을 기준으로 한 방향으로 회전시킵니다. 현재 방향에 대해 보정이 완료되면 화면의 그림이 녹색으로 바뀝니다.
|
5. 기체를 아래에 표시된 자세로 놓고 그대로 유지해주십시오 메시지가 표시되면(방향 이미지가 노란색으로 변함) 기체를 지정축을 기준으로 한 방향으로 회전시킵니다. 현재 방향에 대해 보정이 완료되면 화면의 그림이 녹색으로 바뀝니다.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
6. 드론의 모든 방향에 대해 보정 과정을 반복합니다.
|
6. 드론의 모든 방향에 대해 보정 과정을 반복합니다.
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ Once you've calibrated the vehicle in all the positions _QGroundControl_ will di
|
|||||||
This calibration is similar to the well-known figure-8 compass calibration done on a smartphone:
|
This calibration is similar to the well-known figure-8 compass calibration done on a smartphone:
|
||||||
|
|
||||||
1. Hold the vehicle in front of you and randomly perform partial rotations on all its axes.
|
1. Hold the vehicle in front of you and randomly perform partial rotations on all its axes.
|
||||||
2-3 oscillations of ~30 degrees in every direction is usually sufficient.
|
2-3 oscillations of ~30 degrees in every direction is usually sufficient.
|
||||||
2. Wait for the heading estimate to stabilize and verify that the compass rose is pointing to the correct direction (this can take a couple of seconds).
|
2. Wait for the heading estimate to stabilize and verify that the compass rose is pointing to the correct direction (this can take a couple of seconds).
|
||||||
|
|
||||||
참고:
|
참고:
|
||||||
@@ -94,12 +94,12 @@ This calibration process leverages external knowledge of vehicle's orientation a
|
|||||||
|
|
||||||
1. Ensure GNSS Fix. This is required to find the expected Earth magnetic field in WMM tables.
|
1. Ensure GNSS Fix. This is required to find the expected Earth magnetic field in WMM tables.
|
||||||
2. Align the vehicle to face True North.
|
2. Align the vehicle to face True North.
|
||||||
Be as accurate as possible for best results.
|
Be as accurate as possible for best results.
|
||||||
3. Open the [QGroundControl MAVLink Console](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/analyze_view/mavlink_console.html) and send the following command:
|
3. Open the [QGroundControl MAVLink Console](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/analyze_view/mavlink_console.html) and send the following command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
commander calibrate mag quick
|
commander calibrate mag quick
|
||||||
```
|
```
|
||||||
|
|
||||||
참고:
|
참고:
|
||||||
|
|
||||||
|
|||||||
@@ -61,10 +61,10 @@ Next you will need to specify the [vehicle airframe](../config/airframe.md) (and
|
|||||||
2. Check **Advanced settings** and select the version from the dropdown list:
|
2. Check **Advanced settings** and select the version from the dropdown list:
|
||||||
- **Standard Version (stable):** The default version (i.e. no need to use advanced settings to install this!)
|
- **Standard Version (stable):** The default version (i.e. no need to use advanced settings to install this!)
|
||||||
- **Beta Testing (beta):** A beta/candidate release.
|
- **Beta Testing (beta):** A beta/candidate release.
|
||||||
신규 버전 출시 이전에 테스트 할 경우에만 사용할 수 있습니다.
|
신규 버전 출시 이전에 테스트 할 경우에만 사용할 수 있습니다.
|
||||||
- **Developer Build (master):** The latest build of PX4/PX4-Autopilot _main_ branch.
|
- **Developer Build (master):** The latest build of PX4/PX4-Autopilot _main_ branch.
|
||||||
- **Custom Firmware file...:** A custom firmware file (e.g. [that you have built locally](../dev_setup/building_px4.md)).
|
- **Custom Firmware file...:** A custom firmware file (e.g. [that you have built locally](../dev_setup/building_px4.md)).
|
||||||
사용자 정의 펌웨어 파일을 선택한 경우 다음 단계에서 파일 시스템에서 사용자 정의 펌웨어를 선택하여야 합니다.
|
사용자 정의 펌웨어 파일을 선택한 경우 다음 단계에서 파일 시스템에서 사용자 정의 펌웨어를 선택하여야 합니다.
|
||||||
|
|
||||||
그러면 펌웨어 업데이트가 이전과 같이 계속됩니다.
|
그러면 펌웨어 업데이트가 이전과 같이 계속됩니다.
|
||||||
|
|
||||||
|
|||||||
@@ -40,24 +40,24 @@ You can also separately specify channels for mapping a kill switch, return to la
|
|||||||
|
|
||||||
3. Select **"Q" icon > Vehicle Setup > Flight Modes** (sidebar) to open _Flight Modes Setup_.
|
3. Select **"Q" icon > Vehicle Setup > Flight Modes** (sidebar) to open _Flight Modes Setup_.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
4. Specify _Flight Mode Settings_:
|
4. Specify _Flight Mode Settings_:
|
||||||
- Select the **Mode channel** (above this shown as Channel 5, but this will depend on your transmitter configuration).
|
- Select the **Mode channel** (above this shown as Channel 5, but this will depend on your transmitter configuration).
|
||||||
- Move the transmitter switch (or switches) that you have set up for mode selection through the available positions.
|
- Move the transmitter switch (or switches) that you have set up for mode selection through the available positions.
|
||||||
The mode slot matching your current switch position will be highlighted (above this is _Flight Mode 1_).
|
The mode slot matching your current switch position will be highlighted (above this is _Flight Mode 1_).
|
||||||
::: info
|
::: info
|
||||||
While you can set flight modes in any of the 6 slots, only the channels that are mapped to switch positions will be highlighted/used.
|
While you can set flight modes in any of the 6 slots, only the channels that are mapped to switch positions will be highlighted/used.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
- Select the flight mode that you want triggered for each switch position.
|
- Select the flight mode that you want triggered for each switch position.
|
||||||
|
|
||||||
5. Specify _Switch Settings_:
|
5. Specify _Switch Settings_:
|
||||||
- Select the channels that you want to map to specific actions - e.g.: _Return_ mode, _Kill switch_, _offboard_ mode, etc. (if you have spare switches and channels on your transmitter).
|
- Select the channels that you want to map to specific actions - e.g.: _Return_ mode, _Kill switch_, _offboard_ mode, etc. (if you have spare switches and channels on your transmitter).
|
||||||
|
|
||||||
6. Test that the modes are mapped to the right transmitter switches:
|
6. Test that the modes are mapped to the right transmitter switches:
|
||||||
- Check the _Channel Monitor_ to confirm that the expected channel is changed by each switch.
|
- Check the _Channel Monitor_ to confirm that the expected channel is changed by each switch.
|
||||||
- Select each mode switch on your transmitter in turn, and check that the desired flight mode is activated (the text turns yellow on _QGroundControl_ for the active mode).
|
- Select each mode switch on your transmitter in turn, and check that the desired flight mode is activated (the text turns yellow on _QGroundControl_ for the active mode).
|
||||||
|
|
||||||
All values are automatically saved as they are changed.
|
All values are automatically saved as they are changed.
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ To use it:
|
|||||||
2. Set the vehicle type
|
2. Set the vehicle type
|
||||||
3. Set the other values in the **State** or any of the flags under **Conditions**
|
3. Set the other values in the **State** or any of the flags under **Conditions**
|
||||||
- The **Intended Mode** corresponds to the commanded mode via RC or GCS (or external script).
|
- The **Intended Mode** corresponds to the commanded mode via RC or GCS (or external script).
|
||||||
The failsafe state machine can override this in case of a failsafe.
|
The failsafe state machine can override this in case of a failsafe.
|
||||||
4. Check the action under **Output**
|
4. Check the action under **Output**
|
||||||
5. Check what happens when changing mode or **Move the RC sticks**
|
5. Check what happens when changing mode or **Move the RC sticks**
|
||||||
6. Play with different settings and conditions!
|
6. Play with different settings and conditions!
|
||||||
|
|||||||
@@ -29,10 +29,10 @@ The [Advanced Trimming](#advanced-trimming) section introduces parameters that c
|
|||||||
|
|
||||||
1. Trim the servos by physically adjusting the linkages lengths if possible and fine tune by trimming the PWM channels (use `PWM_MAIN/AUX_TRIMx`) on the bench to properly set the control surfaces to their theoretical position.
|
1. Trim the servos by physically adjusting the linkages lengths if possible and fine tune by trimming the PWM channels (use `PWM_MAIN/AUX_TRIMx`) on the bench to properly set the control surfaces to their theoretical position.
|
||||||
2. Fly in stabilized mode at cruise speed and set the pitch setpoint offset (`FW_PSP_OFF`) to desired angle of attack.
|
2. Fly in stabilized mode at cruise speed and set the pitch setpoint offset (`FW_PSP_OFF`) to desired angle of attack.
|
||||||
순항 속도에서 필요한 공격 각도는 날개 높이 비행 중에 일정한 고도를 유지하기 위해 비행기가 비행해야 하는 피치 각도에 해당합니다.
|
순항 속도에서 필요한 공격 각도는 날개 높이 비행 중에 일정한 고도를 유지하기 위해 비행기가 비행해야 하는 피치 각도에 해당합니다.
|
||||||
If you are using an airspeed sensor, also set the correct cruise airspeed (`FW_AIRSPD_TRIM`).
|
If you are using an airspeed sensor, also set the correct cruise airspeed (`FW_AIRSPD_TRIM`).
|
||||||
3. Look at the actuator controls in the log file (upload it to [Flight Review](https://logs.px4.io) and check the _Actuator Controls_ plot for example) and set the pitch trim (`TRIM_PITCH`).
|
3. Look at the actuator controls in the log file (upload it to [Flight Review](https://logs.px4.io) and check the _Actuator Controls_ plot for example) and set the pitch trim (`TRIM_PITCH`).
|
||||||
이 값을 수평 비행 중의 피치 신호의 평균 오프셋으로 설정합니다.
|
이 값을 수평 비행 중의 피치 신호의 평균 오프셋으로 설정합니다.
|
||||||
|
|
||||||
로그 조회가 필요가 없거나 수동 모드에서 편안하게 비행 할 수있는 경우 2 단계 전에 3 단계를 수행할 수 있습니다.
|
로그 조회가 필요가 없거나 수동 모드에서 편안하게 비행 할 수있는 경우 2 단계 전에 3 단계를 수행할 수 있습니다.
|
||||||
You can then trim your remote (with the trim switches) and report the values to `TRIM_PITCH` (and remove the trims from your transmitter) or update `TRIM_PITCH` directly during flight via telemetry and QGC.
|
You can then trim your remote (with the trim switches) and report the values to `TRIM_PITCH` (and remove the trims from your transmitter) or update `TRIM_PITCH` directly during flight via telemetry and QGC.
|
||||||
|
|||||||
@@ -53,15 +53,15 @@ To setup and configure a helicopter:
|
|||||||
For each servo set:
|
For each servo set:
|
||||||
|
|
||||||
- `Angle`: Clockwise angle in degree on the swash plate circle at which the servo arm is attached starting from `0` pointing forwards.
|
- `Angle`: Clockwise angle in degree on the swash plate circle at which the servo arm is attached starting from `0` pointing forwards.
|
||||||
Example for a typical setup where three servos are controlling the swash plate equally distributed over the circle (360° / 3 =) 120° apart each which results in the angles:
|
Example for a typical setup where three servos are controlling the swash plate equally distributed over the circle (360° / 3 =) 120° apart each which results in the angles:
|
||||||
|
|
||||||
| # | Angle |
|
| # | Angle |
|
||||||
| ------- | ----- |
|
| ------- | ----- |
|
||||||
| Servo 1 | 60° |
|
| Servo 1 | 60° |
|
||||||
| Servo 2 | 180° |
|
| Servo 2 | 180° |
|
||||||
| Servo 3 | 300° |
|
| Servo 3 | 300° |
|
||||||
|
|
||||||
<img width="700" alt="warning and requirement" src="../../assets/airframes/helicopter/swash_plate_servo_angles.png">
|
<img width="700" alt="warning and requirement" src="../../assets/airframes/helicopter/swash_plate_servo_angles.png">
|
||||||
|
|
||||||
- `Arm Length (relative to each other)`: Radius from the swash plate center (top view). A shorter arm means the same servo motion moves the plate more. This allows the autopilot to compensate.
|
- `Arm Length (relative to each other)`: Radius from the swash plate center (top view). A shorter arm means the same servo motion moves the plate more. This allows the autopilot to compensate.
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ To setup and configure a helicopter:
|
|||||||
- `Yaw compensation scale based on collective pitch`: How much yaw is feed forward compensated based on the current collective pitch.
|
- `Yaw compensation scale based on collective pitch`: How much yaw is feed forward compensated based on the current collective pitch.
|
||||||
- `Main rotor turns counter-clockwise`: `Disabled` (clockwise rotation) | `Enabled`
|
- `Main rotor turns counter-clockwise`: `Disabled` (clockwise rotation) | `Enabled`
|
||||||
- `Throttle spoolup time`: Set value (in seconds) greater than the achievable minimum motor spool up time.
|
- `Throttle spoolup time`: Set value (in seconds) greater than the achievable minimum motor spool up time.
|
||||||
A larger value may improve user experience.
|
A larger value may improve user experience.
|
||||||
|
|
||||||
3. Remove the rotor blades and propellers
|
3. Remove the rotor blades and propellers
|
||||||
|
|
||||||
|
|||||||
@@ -166,11 +166,11 @@ In this case you might use the settings: [IMU_GYRO_NF0_FRQ=32](../advanced_confi
|
|||||||
## 추가 팁
|
## 추가 팁
|
||||||
|
|
||||||
1. 허용 가능한 지연 시간은 기체 크기와 기대치에 따라 달라집니다.
|
1. 허용 가능한 지연 시간은 기체 크기와 기대치에 따라 달라집니다.
|
||||||
FPV racers typically tune for the absolute minimal latency (as a ballpark `IMU_GYRO_CUTOFF` around 120, `IMU_DGYRO_CUTOFF` of 50 to 80).
|
FPV racers typically tune for the absolute minimal latency (as a ballpark `IMU_GYRO_CUTOFF` around 120, `IMU_DGYRO_CUTOFF` of 50 to 80).
|
||||||
For bigger vehicles latency is less critical and `IMU_GYRO_CUTOFF` of around 80 might be acceptable.
|
For bigger vehicles latency is less critical and `IMU_GYRO_CUTOFF` of around 80 might be acceptable.
|
||||||
|
|
||||||
2. You can start tuning at higher `IMU_GYRO_CUTOFF` values (e.g. 100Hz), which might be desirable because the default tuning of `IMU_GYRO_CUTOFF` is set very low (30Hz).
|
2. You can start tuning at higher `IMU_GYRO_CUTOFF` values (e.g. 100Hz), which might be desirable because the default tuning of `IMU_GYRO_CUTOFF` is set very low (30Hz).
|
||||||
유일한 주의 사항은 위험을 알고 있어야한다는 것입니다.
|
유일한 주의 사항은 위험을 알고 있어야한다는 것입니다.
|
||||||
- 20 ~ 30 초 이상 비행하지 마십시오
|
- 20 ~ 30 초 이상 비행하지 마십시오
|
||||||
- 모터가 과열되지 않는 지 확인하십시오.
|
- 모터가 과열되지 않는 지 확인하십시오.
|
||||||
- 위의 설명처럼 이상한 소리와 과도한 소음을 체크하십시오.
|
- 위의 설명처럼 이상한 소리와 과도한 소음을 체크하십시오.
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ Make sure to have assigned a [Kill switch](../config/safety.md#emergency-switche
|
|||||||
1. Arm the vehicle, takeoff, and hover (typically in [Position mode](../flight_modes_mc/position.md)).
|
1. Arm the vehicle, takeoff, and hover (typically in [Position mode](../flight_modes_mc/position.md)).
|
||||||
|
|
||||||
2. Open _QGroundControl_ **Vehicle Setup > PID Tuning**
|
2. Open _QGroundControl_ **Vehicle Setup > PID Tuning**
|
||||||

|

|
||||||
|
|
||||||
3. Select the **Rate Controller** tab.
|
3. Select the **Rate Controller** tab.
|
||||||
|
|
||||||
@@ -80,60 +80,60 @@ Make sure to have assigned a [Kill switch](../config/safety.md#emergency-switche
|
|||||||
|
|
||||||
5. Set the _Thrust curve_ value to: 0.3 (PWM, power-based controllers) or 1 (RPM-based ESCs)
|
5. Set the _Thrust curve_ value to: 0.3 (PWM, power-based controllers) or 1 (RPM-based ESCs)
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
For PWM, power-based and (some) UAVCAN speed controllers, the control signal to thrust relationship may not be linear.
|
For PWM, power-based and (some) UAVCAN speed controllers, the control signal to thrust relationship may not be linear.
|
||||||
그 결과 호버 추력에서 최적의 튜닝은 차량이 강한 추력으로 작동시 최적이 아닐 수 있습니다.
|
그 결과 호버 추력에서 최적의 튜닝은 차량이 강한 추력으로 작동시 최적이 아닐 수 있습니다.
|
||||||
|
|
||||||
추력 곡선 값을 사용하여 비선형성을 보상할 수 있습니다.
|
추력 곡선 값을 사용하여 비선형성을 보상할 수 있습니다.
|
||||||
|
|
||||||
- For PWM controllers, 0.3 is a good default (which may benefit from [further tuning](../config_mc/pid_tuning_guide_multicopter.md#thrust-curve)).
|
- For PWM controllers, 0.3 is a good default (which may benefit from [further tuning](../config_mc/pid_tuning_guide_multicopter.md#thrust-curve)).
|
||||||
- RPM 기반 컨트롤러의 경우 1을 사용합니다 (2 차 추력 곡선이 있으므로 추가 튜닝이 필요하지 않음).
|
- RPM 기반 컨트롤러의 경우 1을 사용합니다 (2 차 추력 곡선이 있으므로 추가 튜닝이 필요하지 않음).
|
||||||
|
|
||||||
For more information see the [detailed PID tuning guide](../config_mc/pid_tuning_guide_multicopter.md#thrust-curve).
|
For more information see the [detailed PID tuning guide](../config_mc/pid_tuning_guide_multicopter.md#thrust-curve).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
6. Set the _Select Tuning_ radio button to: **Roll**.
|
6. Set the _Select Tuning_ radio button to: **Roll**.
|
||||||
|
|
||||||
7. (Optionally) Select the **Automatic Flight Mode Switching** checkbox.
|
7. (Optionally) Select the **Automatic Flight Mode Switching** checkbox.
|
||||||
This will _automatically_ switch from [Position mode](../flight_modes_mc/position.md) to [Stabilised mode](../flight_modes_mc/manual_stabilized.md) when you press the **Start** button
|
This will _automatically_ switch from [Position mode](../flight_modes_mc/position.md) to [Stabilised mode](../flight_modes_mc/manual_stabilized.md) when you press the **Start** button
|
||||||
|
|
||||||
8. For rate controller tuning switch to _Acro mode_, _Stabilized mode_ or _Altitude mode_ (unless automatic switching is enabled).
|
8. For rate controller tuning switch to _Acro mode_, _Stabilized mode_ or _Altitude mode_ (unless automatic switching is enabled).
|
||||||
|
|
||||||
9. Select the **Start** button in order to start tracking the setpoint and response curves.
|
9. Select the **Start** button in order to start tracking the setpoint and response curves.
|
||||||
|
|
||||||
10. Rapidly move the _roll stick_ full range and observe the step response on the plots.
|
10. Rapidly move the _roll stick_ full range and observe the step response on the plots.
|
||||||
:::tip
|
:::tip
|
||||||
Stop tracking to enable easier inspection of the plots.
|
Stop tracking to enable easier inspection of the plots.
|
||||||
확대/축소/이동시 자동으로 발생합니다.
|
확대/축소/이동시 자동으로 발생합니다.
|
||||||
Use the **Start** button to restart the plots, and **Clear** to reset them.
|
Use the **Start** button to restart the plots, and **Clear** to reset them.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
11. Modify the three PID values using the sliders (for roll rate-tuning these affect `MC_ROLLRATE_K`, `MC_ROLLRATE_I`, `MC_ROLLRATE_D`) and observe the step response again.
|
11. Modify the three PID values using the sliders (for roll rate-tuning these affect `MC_ROLLRATE_K`, `MC_ROLLRATE_I`, `MC_ROLLRATE_D`) and observe the step response again.
|
||||||
슬라이더를 움직이면 값이 기체에 저장됩니다.
|
슬라이더를 움직이면 값이 기체에 저장됩니다.
|
||||||
::: info
|
::: info
|
||||||
The goal is for the _Response_ curve to match the _Setpoint_ curve as closely as possible (i.e. a fast response without overshoots).
|
The goal is for the _Response_ curve to match the _Setpoint_ curve as closely as possible (i.e. a fast response without overshoots).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
The PID values can be adjusted as follows:
|
The PID values can be adjusted as follows:
|
||||||
- P (비례) 또는 K 이득 :
|
- P (비례) 또는 K 이득 :
|
||||||
- 더 많은 응답을 위해 이것을 늘리십시오.
|
- 더 많은 응답을 위해 이것을 늘리십시오.
|
||||||
- 응답이 오버 슈팅 및/또는 진동하는 경우 감소합니다 (특정 지점까지 D 게인 증가도 도움이 됨).
|
- 응답이 오버 슈팅 및/또는 진동하는 경우 감소합니다 (특정 지점까지 D 게인 증가도 도움이 됨).
|
||||||
- D (미분) 이득 :
|
- D (미분) 이득 :
|
||||||
- 오버슈트 및 진동을 줄이기 위해이 값을 늘릴 수 있습니다.
|
- 오버슈트 및 진동을 줄이기 위해이 값을 늘릴 수 있습니다.
|
||||||
- 소음을 증폭하고 모터가 뜨거워 질 수 있으므로 필요한 만큼만 늘리십시오.
|
- 소음을 증폭하고 모터가 뜨거워 질 수 있으므로 필요한 만큼만 늘리십시오.
|
||||||
- I (적분) 이득 :
|
- I (적분) 이득 :
|
||||||
- 정상 상태 오류를 줄이는 데 사용
|
- 정상 상태 오류를 줄이는 데 사용
|
||||||
- 너무 낮으면 응답이 설정 값에 도달하지 못할 수 있습니다 (예 : 바람)
|
- 너무 낮으면 응답이 설정 값에 도달하지 못할 수 있습니다 (예 : 바람)
|
||||||
- 너무 높으면 느린 진동이 발생할 수 있습니다.
|
- 너무 높으면 느린 진동이 발생할 수 있습니다.
|
||||||
|
|
||||||
12. 피치와 요에 대해 위의 튜닝 프로세스를 반복합니다.
|
12. 피치와 요에 대해 위의 튜닝 프로세스를 반복합니다.
|
||||||
- Use _Select Tuning_ radio button to select the axis to tune
|
- Use _Select Tuning_ radio button to select the axis to tune
|
||||||
- 적절한 스틱을 이동합니다 (예 : 피치 스틱, 요 스틱).
|
- 적절한 스틱을 이동합니다 (예 : 피치 스틱, 요 스틱).
|
||||||
- 피치 튜닝의 경우 롤과 동일한 값으로 시작하십시오.
|
- 피치 튜닝의 경우 롤과 동일한 값으로 시작하십시오.
|
||||||
:::tip
|
:::tip
|
||||||
Use the **Save to Clipboard** and **Reset from Clipboard** buttons to copy the roll settings for initial pitch settings.
|
Use the **Save to Clipboard** and **Reset from Clipboard** buttons to copy the roll settings for initial pitch settings.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -141,10 +141,10 @@ Make sure to have assigned a [Kill switch](../config/safety.md#emergency-switche
|
|||||||
|
|
||||||
14. Repeat the tuning process for the velocity and positions controllers (on all the axes).
|
14. Repeat the tuning process for the velocity and positions controllers (on all the axes).
|
||||||
|
|
||||||
- Use Position mode when tuning these controllers
|
- Use Position mode when tuning these controllers
|
||||||
- Select the **Simple position control** option in the _Position control mode ..._ selector (this allows direct control for the generation of step inputs)
|
- Select the **Simple position control** option in the _Position control mode ..._ selector (this allows direct control for the generation of step inputs)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
완료되었습니다 !
|
완료되었습니다 !
|
||||||
설정을 종료하기 전에 에어 모드를 다시 활성화하여야 합니다.
|
설정을 종료하기 전에 에어 모드를 다시 활성화하여야 합니다.
|
||||||
|
|||||||
@@ -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`.
|
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:
|
For example, to build rover for px4_fmu-v6x boards, you would use the command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make px4_fmu-v6x_rover
|
make px4_fmu-v6x_rover
|
||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: 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)):
|
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
|
```sh
|
||||||
CONFIG_MODULES_ROVER_ACKERMANN=y
|
CONFIG_MODULES_ROVER_ACKERMANN=y
|
||||||
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
|
CONFIG_MODULES_ROVER_DIFFERENTIAL=y
|
||||||
CONFIG_MODULES_ROVER_MECANUM=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).
|
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).
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ For airframe specific documentation and build instructions see [VTOL Framebuilds
|
|||||||
2. Flash the firmware for your current release or master (PX4 `main` branch build).
|
2. Flash the firmware for your current release or master (PX4 `main` branch build).
|
||||||
3. In the [Frame setup](../config/airframe.md) section select the appropriate VTOL airframe.
|
3. In the [Frame setup](../config/airframe.md) section select the appropriate VTOL airframe.
|
||||||
|
|
||||||
If your airframe is not listed select the [Generic Standard VTOL](../airframes/airframe_reference.md#vtol_standard_vtol_generic_standard_vtol) frame.
|
If your airframe is not listed select the [Generic Standard VTOL](../airframes/airframe_reference.md#vtol_standard_vtol_generic_standard_vtol) frame.
|
||||||
|
|
||||||
### 비행 / 전환 모드 스위치
|
### 비행 / 전환 모드 스위치
|
||||||
|
|
||||||
|
|||||||
+101
-101
@@ -64,33 +64,33 @@ If you already have a clone of the [PX4-Autopilot](https://github.com/PX4/PX4-Au
|
|||||||
|
|
||||||
4. 복사된 저장소를 로컬 컴퓨터에 복제합니다.
|
4. 복사된 저장소를 로컬 컴퓨터에 복제합니다.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ~/wherever/
|
cd ~/wherever/
|
||||||
git clone https://github.com/<your git name>/PX4-Autopilot.git
|
git clone https://github.com/<your git name>/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
|
```sh
|
||||||
git clone https://github.com/john_citizen/PX4-Autopilot.git
|
git clone https://github.com/john_citizen/PX4-Autopilot.git
|
||||||
```
|
```
|
||||||
|
|
||||||
5. 로컬 저장소로 이동합니다.
|
5. 로컬 저장소로 이동합니다.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ~/wherever/PX4-Autopilot
|
cd ~/wherever/PX4-Autopilot
|
||||||
```
|
```
|
||||||
|
|
||||||
6. Add a _remote_ called "upstream" to point to the "official" PX4 version of the library:
|
6. Add a _remote_ called "upstream" to point to the "official" PX4 version of the library:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git remote add upstream https://github.com/PX4/PX4-Autopilot.git
|
git remote add upstream https://github.com/PX4/PX4-Autopilot.git
|
||||||
```
|
```
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
A "remote" is a handle to a particular repository.
|
A "remote" is a handle to a particular repository.
|
||||||
The remote named _origin_ is created by default when you clone the repository, and points to _your fork_ of the guide.
|
The remote named _origin_ is created by default when you clone the repository, and points to _your fork_ of the guide.
|
||||||
Above you create a new remote _upstream_ that points to the PX4 project version of the documents.
|
Above you create a new remote _upstream_ that points to the PX4 project version of the documents.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -100,111 +100,111 @@ Within the repository you created above:
|
|||||||
|
|
||||||
1. Bring your copy of the repository `main` branch up to date:
|
1. Bring your copy of the repository `main` branch up to date:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git checkout main
|
git checkout main
|
||||||
git fetch upstream main
|
git fetch upstream main
|
||||||
git pull upstream main
|
git pull upstream main
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Create a new branch for your changes:
|
2. Create a new branch for your changes:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git checkout -b <your_feature_branch_name>
|
git checkout -b <your_feature_branch_name>
|
||||||
```
|
```
|
||||||
|
|
||||||
This creates a local branch on your computer named `your_feature_branch_name`.
|
This creates a local branch on your computer named `your_feature_branch_name`.
|
||||||
|
|
||||||
3. 필요에 따라 문서를 변경합니다(다음 섹션에서 이에 대한 일반 지침).
|
3. 필요에 따라 문서를 변경합니다(다음 섹션에서 이에 대한 일반 지침).
|
||||||
|
|
||||||
4. 변경 사항에 완료되면 "커밋"을 사용하여, 로컬 브랜치에 추가합니다.
|
4. 변경 사항에 완료되면 "커밋"을 사용하여, 로컬 브랜치에 추가합니다.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git add <file name>
|
git add <file name>
|
||||||
git commit -m "<your commit message>"
|
git commit -m "<your commit message>"
|
||||||
```
|
```
|
||||||
|
|
||||||
For a good commit message, please refer to the [Source Code Management](../contribute/code.md#commits-and-commit-messages) section.
|
For a good commit message, please refer to the [Source Code Management](../contribute/code.md#commits-and-commit-messages) section.
|
||||||
|
|
||||||
5. 로컬 분기(추가된 커밋 포함)를 Github의 분기된 저장소에 푸시합니다.
|
5. 로컬 분기(추가된 커밋 포함)를 Github의 분기된 저장소에 푸시합니다.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git push origin your_feature_branch_name
|
git push origin your_feature_branch_name
|
||||||
```
|
```
|
||||||
|
|
||||||
6. Go to your forked repository on Github in a web browser, e.g.: `https://github.com/<your git name>/PX4-Autopilot.git`.
|
6. Go to your forked repository on Github in a web browser, e.g.: `https://github.com/<your git name>/PX4-Autopilot.git`.
|
||||||
새 분기가 분기된 저장소로 푸시되었다는 메시지가 표시되어야 합니다.
|
새 분기가 분기된 저장소로 푸시되었다는 메시지가 표시되어야 합니다.
|
||||||
|
|
||||||
7. 풀 요청(PR) 생성:
|
7. 풀 요청(PR) 생성:
|
||||||
- On the right hand side of the "new branch message" (see one step before), you should see a green button saying "Compare & Create Pull Request".
|
- On the right hand side of the "new branch message" (see one step before), you should see a green button saying "Compare & Create Pull Request".
|
||||||
클릭합니다.
|
클릭합니다.
|
||||||
- 풀 요청 템플릿이 생성됩니다.
|
- 풀 요청 템플릿이 생성됩니다.
|
||||||
그것은 당신의 커밋을 나열하고 의미 있는 제목(하나의 커밋 PR의 경우 일반적으로 커밋 메시지)과 메시지(<span style="color:orange">어떤 이유에서 수행했는지 설명</span>)를 추가할 수 있습니다(반드시).
|
그것은 당신의 커밋을 나열하고 의미 있는 제목(하나의 커밋 PR의 경우 일반적으로 커밋 메시지)과 메시지(<span style="color:orange">어떤 이유에서 수행했는지 설명</span>)를 추가할 수 있습니다(반드시).
|
||||||
Check [other pull requests](https://github.com/PX4/PX4-Autopilot/pulls) for comparison).
|
Check [other pull requests](https://github.com/PX4/PX4-Autopilot/pulls) for comparison).
|
||||||
- Add the "Documentation" label.
|
- Add the "Documentation" label.
|
||||||
|
|
||||||
8. 완료하였습니다.
|
8. 완료하였습니다.
|
||||||
|
|
||||||
PX4 사용자 가이드 유지 관리자는 이제 귀하의 기여를 검투한 후에, 통합 여부를 결정합니다.
|
PX4 사용자 가이드 유지 관리자는 이제 귀하의 기여를 검투한 후에, 통합 여부를 결정합니다.
|
||||||
때때로 변경 사항에 대한 질문을 확인하십시오.
|
때때로 변경 사항에 대한 질문을 확인하십시오.
|
||||||
|
|
||||||
### 로컬에서 라이브러리 구축
|
### 로컬에서 라이브러리 구축
|
||||||
|
|
||||||
로컬에서 라이브러리를 빌드하여, 변경 사항이 제대로 반영되었는 지를 테스트합니다.
|
로컬에서 라이브러리를 빌드하여, 변경 사항이 제대로 반영되었는 지를 테스트합니다.
|
||||||
|
|
||||||
1. Install the [Vitepress prerequisites](https://vitepress.dev/guide/getting-started#prerequisites):
|
1. Install the [Vitepress prerequisites](https://vitepress.dev/guide/getting-started#prerequisites):
|
||||||
- [Nodejs 18+](https://nodejs.org/en)
|
- [Nodejs 18+](https://nodejs.org/en)
|
||||||
- [Yarn classic](https://classic.yarnpkg.com/en/docs/install)
|
- [Yarn classic](https://classic.yarnpkg.com/en/docs/install)
|
||||||
|
|
||||||
2. Navigate to your local repository and the `/docs` subdirectory:
|
2. Navigate to your local repository and the `/docs` subdirectory:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ~/wherever/PX4-Autopilot/docs
|
cd ~/wherever/PX4-Autopilot/docs
|
||||||
```
|
```
|
||||||
|
|
||||||
3. 종속성(Vuepress 포함)들을 설치합니다.
|
3. 종속성(Vuepress 포함)들을 설치합니다.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
yarn install
|
yarn install
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Preview and serve the library:
|
4. Preview and serve the library:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
yarn docs:dev
|
yarn docs:dev
|
||||||
```
|
```
|
||||||
|
|
||||||
- Once the development/preview server has built the library (less than a minute for the first time) it will show you the URL you can preview the site on.
|
- Once the development/preview server has built the library (less than a minute for the first time) it will show you the URL you can preview the site on.
|
||||||
This will be something like: `http://localhost:5173/px4_user_guide/`.
|
This will be something like: `http://localhost:5173/px4_user_guide/`.
|
||||||
- Stop serving using **CTRL+C** in the terminal prompt.
|
- Stop serving using **CTRL+C** in the terminal prompt.
|
||||||
|
|
||||||
5. Open previewed pages in your local editor:
|
5. Open previewed pages in your local editor:
|
||||||
|
|
||||||
First specify a local text editor file using the `EDITOR` environment variable, before calling `yarn start` to preview the library.
|
First specify a local text editor file using the `EDITOR` environment variable, before calling `yarn start` to preview the library.
|
||||||
For example, you can enable VSCode as your default editor by entering:
|
For example, you can enable VSCode as your default editor by entering:
|
||||||
|
|
||||||
- Windows:
|
- Windows:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
set EDITOR=code
|
set EDITOR=code
|
||||||
```
|
```
|
||||||
|
|
||||||
- Linux:
|
- Linux:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
export EDITOR=code
|
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. 다음을 사용하여 라이브러리를 빌드합니다.
|
6. 다음을 사용하여 라이브러리를 빌드합니다.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Ubuntu
|
# Ubuntu
|
||||||
yarn docs:build
|
yarn docs:build
|
||||||
|
|
||||||
# Windows
|
# Windows
|
||||||
yarn docs:buildwin
|
yarn docs:buildwin
|
||||||
```
|
```
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
Use `yarn start` to preview changes _as you make them_ (documents are updated and served very quickly).
|
Use `yarn start` to preview changes _as you make them_ (documents are updated and served very quickly).
|
||||||
@@ -257,38 +257,38 @@ When you add a new page you must also add it to `en/SUMMARY.md`!
|
|||||||
## 스타일 가이드
|
## 스타일 가이드
|
||||||
|
|
||||||
1. 파일/파일명
|
1. 파일/파일명
|
||||||
- Put new markdown files in an appropriate sub-folder of `/en/`, such as `/en/contribute/`.
|
- Put new markdown files in an appropriate sub-folder of `/en/`, such as `/en/contribute/`.
|
||||||
폴더를 중첩하지 마십시오.
|
폴더를 중첩하지 마십시오.
|
||||||
- Put new image files in an appropriate nested sub-folder of `/assets/`.
|
- Put new image files in an appropriate nested sub-folder of `/assets/`.
|
||||||
Deeper nesting is allowed/encouraged.
|
Deeper nesting is allowed/encouraged.
|
||||||
- Use descriptive names for folders and files.
|
- Use descriptive names for folders and files.
|
||||||
In particular, image filenames should describe what they contain (don't name as "image1.png")
|
In particular, image filenames should describe what they contain (don't name as "image1.png")
|
||||||
- Use lower case filenames and separate words using underscores (`_`).
|
- Use lower case filenames and separate words using underscores (`_`).
|
||||||
|
|
||||||
2. 이미지
|
2. 이미지
|
||||||
- 이미지는 최대한 가장 작은 크기와 가장 낮은 해상도를 사용합니다(이렇게 하면 대역폭이 좋지 않은 사용자의 다운로드 비용이 줄어듭니다).
|
- 이미지는 최대한 가장 작은 크기와 가장 낮은 해상도를 사용합니다(이렇게 하면 대역폭이 좋지 않은 사용자의 다운로드 비용이 줄어듭니다).
|
||||||
- New images should be created in a sub-folder of `/assets/` (so they can be shared between translations).
|
- New images should be created in a sub-folder of `/assets/` (so they can be shared between translations).
|
||||||
- SVG files are preferred for diagrams.
|
- SVG files are preferred for diagrams.
|
||||||
PNG files are preferred over JPG for screenshots.
|
PNG files are preferred over JPG for screenshots.
|
||||||
|
|
||||||
3. 내용
|
3. 내용
|
||||||
- Use "style" (**bold**, _emphasis_, etc.) consistently and sparingly (as little as possible).
|
- Use "style" (**bold**, _emphasis_, etc.) consistently and sparingly (as little as possible).
|
||||||
- **Bold** for button presses and menu definitions.
|
- **Bold** for button presses and menu definitions.
|
||||||
- _Emphasis_ for tool names such as _QGroundControl_ or _prettier_.
|
- _Emphasis_ for tool names such as _QGroundControl_ or _prettier_.
|
||||||
- `code` for file paths, and code, parameter names that aren't linked, using tools in a command line, such as `prettier`.
|
- `code` for file paths, and code, parameter names that aren't linked, using tools in a command line, such as `prettier`.
|
||||||
- Headings and page titles should use "First Letter Capitalisation".
|
- Headings and page titles should use "First Letter Capitalisation".
|
||||||
- The page title should be a first level heading (`#`).
|
- The page title should be a first level heading (`#`).
|
||||||
All other headings should be h2 (`##`) or lower.
|
All other headings should be h2 (`##`) or lower.
|
||||||
- 제목에는 스타일을 추가하지 마십시오.
|
- 제목에는 스타일을 추가하지 마십시오.
|
||||||
- Don't translate the text indicating the name of an `info`, `tip` or `warning` declaration (e.g. `::: tip`) as this precise text is required to render the aside properly.
|
- Don't translate the text indicating the name of an `info`, `tip` or `warning` declaration (e.g. `::: tip`) as this precise text is required to render the aside properly.
|
||||||
- Break lines on sentences by preference.
|
- Break lines on sentences by preference.
|
||||||
Don't break lines based on some arbitrary line length.
|
Don't break lines based on some arbitrary line length.
|
||||||
- Format using _prettier_ (_VSCode_ is a has extensions can be used for this).
|
- Format using _prettier_ (_VSCode_ is a has extensions can be used for this).
|
||||||
|
|
||||||
4. Videos:
|
4. Videos:
|
||||||
- Youtube videos can be added using the format `<lite-youtube videoid="<youtube-video-id>" title="your title"/>` (supported via the [https://www.npmjs.com/package/lite-youtube-embed](https://www.npmjs.com/package/lite-youtube-embed) custom element, which has other parameters you can pass).
|
- Youtube videos can be added using the format `<lite-youtube videoid="<youtube-video-id>" title="your title"/>` (supported via the [https://www.npmjs.com/package/lite-youtube-embed](https://www.npmjs.com/package/lite-youtube-embed) custom element, which has other parameters you can pass).
|
||||||
- Use instructional videos sparingly as they date badly, and are hard to maintain.
|
- Use instructional videos sparingly as they date badly, and are hard to maintain.
|
||||||
- Cool videos of airframes in flight are always welcome.
|
- Cool videos of airframes in flight are always welcome.
|
||||||
|
|
||||||
## 어디에서 변경 사항을 추가합니까?
|
## 어디에서 변경 사항을 추가합니까?
|
||||||
|
|
||||||
|
|||||||
@@ -109,23 +109,23 @@ To switch between branches:
|
|||||||
|
|
||||||
1. Clean up the current branch, de-initializing submodule and removing all build artifacts:
|
1. Clean up the current branch, de-initializing submodule and removing all build artifacts:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make clean
|
make clean
|
||||||
make distclean
|
make distclean
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Switch to a new branch or tag (here we first fetch the fictional branch "PR_test_branch" from the `upstream` remote):
|
2. Switch to a new branch or tag (here we first fetch the fictional branch "PR_test_branch" from the `upstream` remote):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git fetch upstream PR_test_branch
|
git fetch upstream PR_test_branch
|
||||||
git checkout PR_test_branch
|
git checkout PR_test_branch
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Get the submodules for the new branch:
|
3. Get the submodules for the new branch:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make submodulesclean
|
make submodulesclean
|
||||||
```
|
```
|
||||||
|
|
||||||
<!-- FYI: Cleaning commands in https://github.com/PX4/PX4-Autopilot/blob/main/Makefile#L494 -->
|
<!-- FYI: Cleaning commands in https://github.com/PX4/PX4-Autopilot/blob/main/Makefile#L494 -->
|
||||||
|
|
||||||
@@ -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:
|
1. Clone the PX4-Autopilot repo and navigate into _PX4-Autopilot_ directory:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/PX4/PX4-Autopilot.git
|
git clone https://github.com/PX4/PX4-Autopilot.git
|
||||||
cd PX4-Autopilot
|
cd PX4-Autopilot
|
||||||
```
|
```
|
||||||
|
|
||||||
:::note
|
:::note
|
||||||
|
|
||||||
You can reuse an existing repo rather than cloning a new one.
|
You can reuse an existing repo rather than cloning a new one.
|
||||||
In this case clean the build environment (see [changing source trees](#changing-source-trees)):
|
In this case clean the build environment (see [changing source trees](#changing-source-trees)):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make clean
|
make clean
|
||||||
make distclean
|
make distclean
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
2. Checkout code for particular tag (e.g. for tag v1.13.0-beta2)
|
2. Checkout code for particular tag (e.g. for tag v1.13.0-beta2)
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git checkout v1.13.0-beta2
|
git checkout v1.13.0-beta2
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Update submodules:
|
3. Update submodules:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make submodulesclean
|
make submodulesclean
|
||||||
```
|
```
|
||||||
|
|
||||||
## Get a Release Branch
|
## Get a Release Branch
|
||||||
|
|
||||||
|
|||||||
@@ -53,17 +53,17 @@ For more information, see: [https://gnu-mcu-eclipse.github.io/debug/jlink/instal
|
|||||||
|
|
||||||
7. 패키지를 업데이트합니다.
|
7. 패키지를 업데이트합니다.
|
||||||
- Click the small icon on the top right called _Open Perspective_ and open the _Packs_ perspective.
|
- Click the small icon on the top right called _Open Perspective_ and open the _Packs_ perspective.
|
||||||

|

|
||||||
|
|
||||||
- Click the **update all** button.
|
- Click the **update all** button.
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
This takes a VERY LONG TIME (10 minutes).
|
This takes a VERY LONG TIME (10 minutes).
|
||||||
누락된 패키지에 대한 오류를 무시하십시오.
|
누락된 패키지에 대한 오류를 무시하십시오.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||

|

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

|

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

|

|
||||||
|
|
||||||
11. 빌드 구성을 설정합니다.
|
11. 빌드 구성을 설정합니다.
|
||||||
|
|
||||||
- Give it a name and set the _C/C++ Application_ to the corresponding **.elf** file.
|
- Give it a name and set the _C/C++ Application_ to the corresponding **.elf** file.
|
||||||
- Choose _Disable Auto build_
|
- Choose _Disable Auto build_
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
Remember that you must build the target from the command line before starting a debug session.
|
Remember that you must build the target from the command line before starting a debug session.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||

|

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

|

|
||||||

|

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

|

|
||||||
|
|
||||||
2. Compile the **jlink-nuttx.so** library in the terminal by running the following command in the terminal: `make jlink-nuttx`
|
2. Compile the **jlink-nuttx.so** library in the terminal by running the following command in the terminal: `make jlink-nuttx`
|
||||||
|
|
||||||
|
|||||||
@@ -37,8 +37,8 @@ Alternatively you can just append the modified parameters to the startup configu
|
|||||||
To add a frame configuration to firmware:
|
To add a frame configuration to firmware:
|
||||||
|
|
||||||
1. Create a new config file in the [init.d/airframes](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d/airframes) folder.
|
1. Create a new config file in the [init.d/airframes](https://github.com/PX4/PX4-Autopilot/tree/main/ROMFS/px4fmu_common/init.d/airframes) folder.
|
||||||
- Give it a short descriptive filename and prepend the filename with an unused autostart ID (for example, `1033092_superfast_vtol`).
|
- Give it a short descriptive filename and prepend the filename with an unused autostart ID (for example, `1033092_superfast_vtol`).
|
||||||
- Update the file with configuration parameters and apps (see section above).
|
- Update the file with configuration parameters and apps (see section above).
|
||||||
2. Add the name of the new frame config file to the [CMakeLists.txt](https://github.com/PX4/PX4-Autopilot/blob/main/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt) in the relevant section for the type of vehicle.
|
2. Add the name of the new frame config file to the [CMakeLists.txt](https://github.com/PX4/PX4-Autopilot/blob/main/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt) in the relevant section for the type of vehicle.
|
||||||
3. [Build and upload](../dev_setup/building_px4.md) the software.
|
3. [Build and upload](../dev_setup/building_px4.md) the software.
|
||||||
|
|
||||||
@@ -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):
|
2. Add a mapping between the new group name and image filename in the [srcparser.py](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/px4airframes/srcparser.py) method `GetImageName()` (follow the pattern below):
|
||||||
|
|
||||||
```python
|
```python
|
||||||
def GetImageName(self):
|
def GetImageName(self):
|
||||||
"""
|
"""
|
||||||
Get parameter group image base name (w/o extension)
|
Get parameter group image base name (w/o extension)
|
||||||
"""
|
"""
|
||||||
if (self.name == "Standard Plane"):
|
if (self.name == "Standard Plane"):
|
||||||
return "Plane"
|
return "Plane"
|
||||||
elif (self.name == "Flying Wing"):
|
elif (self.name == "Flying Wing"):
|
||||||
return "FlyingWing"
|
return "FlyingWing"
|
||||||
...
|
...
|
||||||
...
|
...
|
||||||
return "AirframeUnknown"
|
return "AirframeUnknown"
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Update _QGroundControl_:
|
3. Update _QGroundControl_:
|
||||||
|
|
||||||
- Add the svg image for the group into: [src/AutopilotPlugins/Common/images](https://github.com/mavlink/qgroundcontrol/tree/master/src/AutoPilotPlugins/Common/Images)
|
- Add the svg image for the group into: [src/AutopilotPlugins/Common/images](https://github.com/mavlink/qgroundcontrol/tree/master/src/AutoPilotPlugins/Common/Images)
|
||||||
- Add reference to the svg image into [qgcimages.qrc](https://github.com/mavlink/qgroundcontrol/blob/master/qgcimages.qrc), following the pattern below:
|
- Add reference to the svg image into [qgcimages.qrc](https://github.com/mavlink/qgroundcontrol/blob/master/qgcimages.qrc), following the pattern below:
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
<qresource prefix="/qmlimages">
|
<qresource prefix="/qmlimages">
|
||||||
...
|
...
|
||||||
<file alias="Airframe/AirframeSimulation">src/AutoPilotPlugins/Common/Images/AirframeSimulation.svg</file>
|
<file alias="Airframe/AirframeSimulation">src/AutoPilotPlugins/Common/Images/AirframeSimulation.svg</file>
|
||||||
<file alias="Airframe/AirframeUnknown">src/AutoPilotPlugins/Common/Images/AirframeUnknown.svg</file>
|
<file alias="Airframe/AirframeUnknown">src/AutoPilotPlugins/Common/Images/AirframeUnknown.svg</file>
|
||||||
<file alias="Airframe/Boat">src/AutoPilotPlugins/Common/Images/Boat.svg</file>
|
<file alias="Airframe/Boat">src/AutoPilotPlugins/Common/Images/Boat.svg</file>
|
||||||
<file alias="Airframe/FlyingWing">src/AutoPilotPlugins/Common/Images/FlyingWing.svg</file>
|
<file alias="Airframe/FlyingWing">src/AutoPilotPlugins/Common/Images/FlyingWing.svg</file>
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
The remaining airframe metadata should be automatically included in the firmware (once **srcparser.py** is updated).
|
The remaining airframe metadata should be automatically included in the firmware (once **srcparser.py** is updated).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ If another algorithm is supported in future, the process is _likely_ to remain t
|
|||||||
The encryption process for each new ULog is:
|
The encryption process for each new ULog is:
|
||||||
|
|
||||||
1. A XChaCha20 symmetric key is generated and encrypted using an RSA2048 public key.
|
1. A XChaCha20 symmetric key is generated and encrypted using an RSA2048 public key.
|
||||||
This wrapped (encrypted) key is stored on the SD card in the beginning of a file that has the suffix `.ulge` ("ulog encrypted").
|
This wrapped (encrypted) key is stored on the SD card in the beginning of a file that has the suffix `.ulge` ("ulog encrypted").
|
||||||
2. When a log is captured, the ULog data is encrypted with the unwrapped symmetric key and the resulting data is appended into the end of the `.ulge` file immediately after the wrapped key data.
|
2. When a log is captured, the ULog data is encrypted with the unwrapped symmetric key and the resulting data is appended into the end of the `.ulge` file immediately after the wrapped key data.
|
||||||
|
|
||||||
After the flight, the `.ulge` file containing both the wrapped symmetric key and the encrypted log data can be found on the SD card.
|
After the flight, the `.ulge` file containing both the wrapped symmetric key and the encrypted log data can be found on the SD card.
|
||||||
@@ -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:
|
2. Use OpenSSL to generate a RSA2048 private and public key:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
|
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Create a public key from this private key:
|
3. Create a public key from this private key:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Convert private_key.pem to a DER file
|
# Convert private_key.pem to a DER file
|
||||||
openssl rsa -pubout -in private_key.pem -outform DER -out public_key.der
|
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
|
# 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
|
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).
|
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`.
|
5. To use this key, modify your `.px4board` file to point `CONFIG_PUBLIC_KEY1` to the file location of `public_key.pub`.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
CONFIG_PUBLIC_KEY1="../../../keys/public/public_key.pub"
|
CONFIG_PUBLIC_KEY1="../../../keys/public/public_key.pub"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Flight Review & Encrypted logs
|
## 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`.
|
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
|
```sh
|
||||||
ulge_private_key = ../private_key/private_key.pem
|
ulge_private_key = ../private_key/private_key.pem
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Follow the Flight Review Instructions to start your server.
|
4. Follow the Flight Review Instructions to start your server.
|
||||||
|
|||||||
@@ -33,24 +33,24 @@ The script is intended to be run on _clean_ Ubuntu LTS installations, and may no
|
|||||||
|
|
||||||
1. [Download PX4 Source Code](../dev_setup/building_px4.md):
|
1. [Download PX4 Source Code](../dev_setup/building_px4.md):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
|
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
|
||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
The environment setup scripts in the source usually work for recent PX4 releases.
|
The environment setup scripts in the source usually work for recent PX4 releases.
|
||||||
If working with an older version of PX4 you may need to [get the source code specific to your release](../contribute/git_examples.md#get-a-specific-release).
|
If working with an older version of PX4 you may need to [get the source code specific to your release](../contribute/git_examples.md#get-a-specific-release).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
2. Run the **ubuntu.sh** with no arguments (in a bash shell) to install everything:
|
2. Run the **ubuntu.sh** with no arguments (in a bash shell) to install everything:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
|
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
- 스크립트가 진행되는 동안 모든 프롬프트를 확인합니다.
|
- 스크립트가 진행되는 동안 모든 프롬프트를 확인합니다.
|
||||||
- You can use the `--no-nuttx` and `--no-sim-tools` options to omit the NuttX and/or simulation tools.
|
- You can use the `--no-nuttx` and `--no-sim-tools` options to omit the NuttX and/or simulation tools.
|
||||||
|
|
||||||
3. 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).
|
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).
|
||||||
|
|
||||||
|
|||||||
@@ -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`.
|
10. Download [**Apache Ant**](https://ant.apache.org/bindownload.cgi) as zip archive of the binaries for Windows and unpack the content to the folder `C:\PX4\toolchain\apache-ant`.
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
Make sure you don't have an additional folder layer from the folder which is inside the downloaded archive.
|
Make sure you don't have an additional folder layer from the folder which is inside the downloaded archive.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
This is what the toolchain does in: [apache-ant/install-apache-ant.bat](https://github.com/PX4/PX4-windows-toolchain/blob/master/toolchain/apache-ant/install-apache-ant.bat).
|
This is what the toolchain does in: [apache-ant/install-apache-ant.bat](https://github.com/PX4/PX4-windows-toolchain/blob/master/toolchain/apache-ant/install-apache-ant.bat).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
11. Download, build and add _genromfs_ to the path:
|
11. Download, build and add _genromfs_ to the path:
|
||||||
- Clone the source code to the folder **C:\PX4\toolchain\genromfs\genromfs-src** with
|
- Clone the source code to the folder **C:\PX4\toolchain\genromfs\genromfs-src** with
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd /c/toolchain/genromfs
|
cd /c/toolchain/genromfs
|
||||||
git clone https://github.com/chexum/genromfs.git genromfs-src
|
git clone https://github.com/chexum/genromfs.git genromfs-src
|
||||||
```
|
```
|
||||||
|
|
||||||
- Compile it with:
|
- Compile it with:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd genromfs-src
|
cd genromfs-src
|
||||||
make all
|
make all
|
||||||
```
|
```
|
||||||
|
|
||||||
- Copy the resulting binary **genromfs.exe** one folder level out to: **C:\PX4\toolchain\genromfs**
|
- Copy the resulting binary **genromfs.exe** one folder level out to: **C:\PX4\toolchain\genromfs**
|
||||||
|
|
||||||
12. Make sure all the binary folders of all the installed components are correctly listed in the `PATH` variable configured by [**setup-environment.bat**](https://github.com/PX4/PX4-windows-toolchain/blob/master/toolchain/scripts/setup-environment.bat).
|
12. Make sure all the binary folders of all the installed components are correctly listed in the `PATH` variable configured by [**setup-environment.bat**](https://github.com/PX4/PX4-windows-toolchain/blob/master/toolchain/scripts/setup-environment.bat).
|
||||||
|
|||||||
@@ -57,12 +57,12 @@ VMWare performance is acceptable for basic usage (building Firmware) but not for
|
|||||||
모든 설정은 호스트 운영 체제에서 사용하기 위한 것이므로, 네트워크 공격의 위험을 증가시키지 않는 화면 보호기 및 로컬 워크스테이션 보안 기능을 비활성화할 수 있습니다.
|
모든 설정은 호스트 운영 체제에서 사용하기 위한 것이므로, 네트워크 공격의 위험을 증가시키지 않는 화면 보호기 및 로컬 워크스테이션 보안 기능을 비활성화할 수 있습니다.
|
||||||
|
|
||||||
10. Once the new VM is booted up make sure you install _VMWare tools drivers and tools extension_ inside your guest system.
|
10. Once the new VM is booted up make sure you install _VMWare tools drivers and tools extension_ inside your guest system.
|
||||||
이렇게 하면 다음과 같은 VM 사용의 성능과 유용성들이 향상됩니다.
|
이렇게 하면 다음과 같은 VM 사용의 성능과 유용성들이 향상됩니다.
|
||||||
- 크게 향상된 그래픽 성능
|
- 크게 향상된 그래픽 성능
|
||||||
- Proper support for hardware device usage like USB port allocation (important for target upload), proper mouse wheel scrolling, sound support
|
- Proper support for hardware device usage like USB port allocation (important for target upload), proper mouse wheel scrolling, sound support
|
||||||
- 창 크기에 따른 게스트 디스플레이 해상도 조정
|
- 창 크기에 따른 게스트 디스플레이 해상도 조정
|
||||||
- 호스트 시스템 클립보드 공유
|
- 호스트 시스템 클립보드 공유
|
||||||
- 호스트 시스템 파일 공유
|
- 호스트 시스템 파일 공유
|
||||||
|
|
||||||
11. Continue with [PX4 environment setup for Linux](../dev_setup/dev_env_linux.md)
|
11. Continue with [PX4 environment setup for Linux](../dev_setup/dev_env_linux.md)
|
||||||
|
|
||||||
@@ -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**.
|
4. Add USB filters for the bootloader in VM: **VirtualBox > Settings > USB > Add new USB filter**.
|
||||||
- Open the menu and plug in the USB cable connected to your autopilot.
|
- Open the menu and plug in the USB cable connected to your autopilot.
|
||||||
Select the `...Bootloader` device when it appears in the UI.
|
Select the `...Bootloader` device when it appears in the UI.
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
The bootloader device only appears for a few seconds after connecting USB.
|
The bootloader device only appears for a few seconds after connecting USB.
|
||||||
If it disappears before you can select it, disconnect and then reconnect USB.
|
If it disappears before you can select it, disconnect and then reconnect USB.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|||||||
+10
-10
@@ -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**):
|
- Select _Open folder ..._ option on the welcome page (or using the menu: **File > Open Folder**):
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
- A file selection dialog will appear.
|
- A file selection dialog will appear.
|
||||||
Select the **PX4-Autopilot** directory and then press **OK**.
|
Select the **PX4-Autopilot** directory and then press **OK**.
|
||||||
|
|
||||||
The project files and configuration will then load into _VSCode_.
|
The project files and configuration will then load into _VSCode_.
|
||||||
|
|
||||||
@@ -49,9 +49,9 @@ You must already have installed the command line [PX4 developer environment](../
|
|||||||
:::
|
:::
|
||||||
|
|
||||||
- If prompted to install a new version of _cmake_:
|
- If prompted to install a new version of _cmake_:
|
||||||
- Say **No** (the right version is installed with the [PX4 developer environment](../dev_setup/dev_env.md)).
|
- Say **No** (the right version is installed with the [PX4 developer environment](../dev_setup/dev_env.md)).
|
||||||
- If prompted to sign into _github.com_ and add your credentials:
|
- If prompted to sign into _github.com_ and add your credentials:
|
||||||
- 이것은 당신에게 달려 있습니다! Github와 IDE 간의 긴밀한 통합을 제공하여 워크플로를 단순화할 수 있습니다.
|
- 이것은 당신에게 달려 있습니다! Github와 IDE 간의 긴밀한 통합을 제공하여 워크플로를 단순화할 수 있습니다.
|
||||||
- Other prompts are optional, and may be installed if they seem useful. <!-- perhaps add screenshot of these prompts -->
|
- Other prompts are optional, and may be installed if they seem useful. <!-- perhaps add screenshot of these prompts -->
|
||||||
|
|
||||||
<a id="building"></a>
|
<a id="building"></a>
|
||||||
@@ -63,21 +63,21 @@ You must already have installed the command line [PX4 developer environment](../
|
|||||||
1. Select your build target ("cmake build config"):
|
1. Select your build target ("cmake build config"):
|
||||||
|
|
||||||
- The current _cmake build target_ is shown on the blue _config_ bar at the bottom (if this is already your desired target, skip to next step).
|
- The current _cmake build target_ is shown on the blue _config_ bar at the bottom (if this is already your desired target, skip to next step).
|
||||||

|

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

|

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

|

|
||||||
|
|||||||
@@ -0,0 +1,98 @@
|
|||||||
|
# ARK DIST SR
|
||||||
|
|
||||||
|
ARK DIST SR is a low range, open source [DroneCAN](index.md) [distance sensor](../sensor/rangefinders.md).
|
||||||
|
It has an approximate range of between 8cm to 30m.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 구매처
|
||||||
|
|
||||||
|
Order this module from:
|
||||||
|
|
||||||
|
- [ARK Electronics](https://arkelectron.com/product/ark-dist-sr/) (US)
|
||||||
|
|
||||||
|
## Hardware Specifications
|
||||||
|
|
||||||
|
- [Open Source Schematic and BOM](https://github.com/ARK-Electronics/ARK_DIST)
|
||||||
|
- 센서
|
||||||
|
- [Broadcom AFBR-S50LV85D Time-of-Flight Distance Sensor](https://www.broadcom.com/products/optical-sensors/time-of-flight-3d-sensors/afbr-s50lv85d)
|
||||||
|
- Typical distance range up to 30m
|
||||||
|
- Integrated 850 nm laser light source
|
||||||
|
- Field-of-View (FoV) of 12.4° x 6.2° with 32 pixels
|
||||||
|
- Operation of up to 200k Lux ambient light
|
||||||
|
- Reference Pixel for system health monitoring
|
||||||
|
- Works well on all surface conditions
|
||||||
|
- Transmitter beam of 2° x 2° to illuminate between 1 and 3 pixels
|
||||||
|
- Two Pixhawk Standard CAN Connectors (4 Pin JST GH)
|
||||||
|
- Pixhawk Standard UART Connector (6 Pin JST SH)
|
||||||
|
- Pixhawk Standard Debug Connector (6 Pin JST SH)
|
||||||
|
- Small Form Factor
|
||||||
|
- 2.0cm x 2.8cm x 1.4cm
|
||||||
|
- 4g
|
||||||
|
- LED Indicators
|
||||||
|
- USA Built
|
||||||
|
- NDAA Compliant
|
||||||
|
- Power Requirements
|
||||||
|
- 5v
|
||||||
|
- 84mA Average
|
||||||
|
- 86mA Max
|
||||||
|
|
||||||
|
## 하드웨어 설정
|
||||||
|
|
||||||
|
### 배선
|
||||||
|
|
||||||
|
The ARK DIST is connected to the CAN bus using a Pixhawk standard 4 pin JST GH cable.
|
||||||
|
For more information, refer to the [CAN Wiring](../can/index.md#wiring) instructions.
|
||||||
|
|
||||||
|
The ARK DIST can also be connected with UART and communicates over MAVLink sending the [DISTANCE_SENSOR](https://mavlink.io/en/messages/common.html#DISTANCE_SENSOR) message.
|
||||||
|
|
||||||
|
## Firmware Setup
|
||||||
|
|
||||||
|
ARK DIST SR runs the [PX4 DroneCAN Firmware](px4_cannode_fw.md).
|
||||||
|
As such, it supports firmware update over the CAN bus and [dynamic node allocation](index.md#node-id-allocation).
|
||||||
|
|
||||||
|
## PX4 설정
|
||||||
|
|
||||||
|
### DroneCAN
|
||||||
|
|
||||||
|
#### Enable DroneCAN
|
||||||
|
|
||||||
|
단계는 다음과 같습니다:
|
||||||
|
|
||||||
|
- In _QGroundControl_ set the parameter [UAVCAN_ENABLE](../advanced_config/parameter_reference.md#UAVCAN_ENABLE) to `2` for dynamic node allocation (or `3` if using [DroneCAN ESCs](../dronecan/escs.md)) and reboot (see [Finding/Updating Parameters](../advanced_config/parameters.md)).
|
||||||
|
- Connect ARK DIST SR CAN to the Pixhawk CAN.
|
||||||
|
|
||||||
|
Once enabled, the module will be detected on boot.
|
||||||
|
Distance sensor data should arrive at 40Hz.
|
||||||
|
|
||||||
|
DroneCAN configuration in PX4 is explained in more detail in [DroneCAN > Enabling DroneCAN](../dronecan/index.md#enabling-dronecan).
|
||||||
|
|
||||||
|
#### CAN Configuration
|
||||||
|
|
||||||
|
First set the parameters to [Enable DroneCAN](#enable-dronecan) (as shown above).
|
||||||
|
|
||||||
|
Set the following parameters in _QGroundControl_:
|
||||||
|
|
||||||
|
- Enable [UAVCAN_ENABLE](../advanced_config/parameter_reference.md#UAVCAN_ENABLE) to 2 for dynamic node allocation.
|
||||||
|
- Enable [UAVCAN_SUB_RNG](../advanced_config/parameter_reference.md#UAVCAN_SUB_RNG).
|
||||||
|
- Set [EKF2_RNG_A_HMAX](../advanced_config/parameter_reference.md#EKF2_RNG_A_HMAX) to `30`.
|
||||||
|
- Set [EKF2_RNG_QLTY_T](../advanced_config/parameter_reference.md#EKF2_RNG_QLTY_T) to `0.2`.
|
||||||
|
- Set [UAVCAN_RNG_MIN](../advanced_config/parameter_reference.md#UAVCAN_RNG_MIN) to `0.08`.
|
||||||
|
- Set [UAVCAN_RNG_MAX](../advanced_config/parameter_reference.md#UAVCAN_RNG_MAX) to `30`.
|
||||||
|
|
||||||
|
See also [Distance Sensor/Range Finder in _DroneCAN > Subscriptions and Publications_](../dronecan/#distance-sensor-range-finder).
|
||||||
|
|
||||||
|
### UART/MAVLink Configuration
|
||||||
|
|
||||||
|
If connecting via a UART set the following parameters in _QGroundControl_:
|
||||||
|
|
||||||
|
- Set [MAV_X_CONFIG](../advanced_config/parameter_reference.md#MAV_0_CONFIG) to the port the sensor is connected to.
|
||||||
|
- Set [MAV_X_FORWARD](../advanced_config/parameter_reference.md#MAV_0_FORWARD) to `0` (off).
|
||||||
|
- Set [MAV_X_MODE](../advanced_config/parameter_reference.md#MAV_0_MODE) to `7` or `13` to (Minimal or Low Bandwidth) to reduce memory usage.
|
||||||
|
- Set `SER_XXX_BAUD` to `115200`, where `XXX` is specific to the port you are using (such as [SER_GPS2_BAUD](../advanced_config/parameter_reference.md#SER_GPS2_BAUD)).
|
||||||
|
- Set [EKF2_RNG_A_HMAX](../advanced_config/parameter_reference.md#EKF2_RNG_A_HMAX) to `30`.
|
||||||
|
- Set [EKF2_RNG_QLTY_T](../advanced_config/parameter_reference.md#EKF2_RNG_QLTY_T) to `0.2`.
|
||||||
|
|
||||||
|
## See Also
|
||||||
|
|
||||||
|
- [ARK DIST SR](https://docs.arkelectron.com/sensor/ark-dist) (ARK Docs)
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
# ARK DIST MR
|
||||||
|
|
||||||
|
ARK DIST MR is a mid range, open source [DroneCAN](index.md) [distance sensor](../sensor/rangefinders.md).
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 구매처
|
||||||
|
|
||||||
|
Order this module from:
|
||||||
|
|
||||||
|
- [ARK Electronics](https://arkelectron.com/product/ark-dist-mr/) (US)
|
||||||
|
|
||||||
|
## Hardware Specifications
|
||||||
|
|
||||||
|
- [Open Source Schematic and BOM](https://github.com/ARK-Electronics/ARK_DIST)
|
||||||
|
- 센서
|
||||||
|
- [Broadcom AFBR-S50LX85D Time-of-Flight Distance Sensor](https://www.broadcom.com/products/optical-sensors/time-of-flight-3d-sensors/afbr-s50lx85d)
|
||||||
|
- Typical distance range up to 50m
|
||||||
|
- Integrated 850 nm laser light source
|
||||||
|
- Field-of-View (FoV) of 12.4° x 6.2° with 32 pixels
|
||||||
|
- Operation of up to 200k Lux ambient light
|
||||||
|
- Reference Pixel for system health monitoring
|
||||||
|
- Works well on all surface conditions
|
||||||
|
- Transmitter beam of 2° x 2° to illuminate between 1 and 3 pixels
|
||||||
|
- Two Pixhawk Standard CAN Connectors (4 Pin JST GH)
|
||||||
|
- Pixhawk Standard UART Connector (6 Pin JST SH)
|
||||||
|
- Pixhawk Standard Debug Connector (6 Pin JST SH)
|
||||||
|
- Small Form Factor
|
||||||
|
- 2.0cm x 2.8cm x 1.4cm
|
||||||
|
- 4g
|
||||||
|
- LED Indicators
|
||||||
|
- USA Built
|
||||||
|
- NDAA Compliant
|
||||||
|
- Power Requirements
|
||||||
|
- 5v
|
||||||
|
- 78mA Average
|
||||||
|
- 84mA Max
|
||||||
|
|
||||||
|
## 하드웨어 설정
|
||||||
|
|
||||||
|
### 배선
|
||||||
|
|
||||||
|
The ARK DIST is connected to the CAN bus using a Pixhawk standard 4 pin JST GH cable.
|
||||||
|
For more information, refer to the [CAN Wiring](../can/index.md#wiring) instructions.
|
||||||
|
|
||||||
|
The ARK DIST can also be connected with UART and communicates over MAVLink sending the [DISTANCE_SENSOR](https://mavlink.io/en/messages/common.html#DISTANCE_SENSOR) message.
|
||||||
|
|
||||||
|
## Firmware Setup
|
||||||
|
|
||||||
|
ARK DIST MR runs the [PX4 DroneCAN Firmware](px4_cannode_fw.md).
|
||||||
|
As such, it supports firmware update over the CAN bus and [dynamic node allocation](index.md#node-id-allocation).
|
||||||
|
|
||||||
|
## PX4 설정
|
||||||
|
|
||||||
|
### DroneCAN
|
||||||
|
|
||||||
|
#### Enable DroneCAN
|
||||||
|
|
||||||
|
단계는 다음과 같습니다:
|
||||||
|
|
||||||
|
- In _QGroundControl_ set the parameter [UAVCAN_ENABLE](../advanced_config/parameter_reference.md#UAVCAN_ENABLE) to `2` for dynamic node allocation (or `3` if using [DroneCAN ESCs](../dronecan/escs.md)) and reboot (see [Finding/Updating Parameters](../advanced_config/parameters.md)).
|
||||||
|
- Connect ARK DIST SR CAN to the Pixhawk CAN.
|
||||||
|
|
||||||
|
Once enabled, the module will be detected on boot.
|
||||||
|
Distance sensor data should arrive at 40Hz.
|
||||||
|
|
||||||
|
DroneCAN configuration in PX4 is explained in more detail in [DroneCAN > Enabling DroneCAN](../dronecan/index.md#enabling-dronecan).
|
||||||
|
|
||||||
|
#### CAN Configuration
|
||||||
|
|
||||||
|
First set the parameters to [Enable DroneCAN](#enable-dronecan) (as shown above).
|
||||||
|
|
||||||
|
Set the following parameters in _QGroundControl_:
|
||||||
|
|
||||||
|
- Enable [UAVCAN_ENABLE](../advanced_config/parameter_reference.md#UAVCAN_ENABLE) to 2 for dynamic node allocation.
|
||||||
|
- Enable [UAVCAN_SUB_RNG](../advanced_config/parameter_reference.md#UAVCAN_SUB_RNG).
|
||||||
|
- Set [EKF2_RNG_A_HMAX](../advanced_config/parameter_reference.md#EKF2_RNG_A_HMAX) to `50`.
|
||||||
|
- Set [EKF2_RNG_QLTY_T](../advanced_config/parameter_reference.md#EKF2_RNG_QLTY_T) to `0.2`.
|
||||||
|
- Set [UAVCAN_RNG_MIN](../advanced_config/parameter_reference.md#UAVCAN_RNG_MIN) to `0.08`.
|
||||||
|
- Set [UAVCAN_RNG_MAX](../advanced_config/parameter_reference.md#UAVCAN_RNG_MAX) to `50`.
|
||||||
|
|
||||||
|
See also [Distance Sensor/Range Finder in _DroneCAN > Subscriptions and Publications_](../dronecan/#distance-sensor-range-finder).
|
||||||
|
|
||||||
|
### UART/MAVLink Configuration
|
||||||
|
|
||||||
|
If connecting via a UART set the following parameters in _QGroundControl_:
|
||||||
|
|
||||||
|
- Set [MAV_X_CONFIG](../advanced_config/parameter_reference.md#MAV_0_CONFIG) to the port the sensor is connected to.
|
||||||
|
- Set [MAV_X_FORWARD](../advanced_config/parameter_reference.md#MAV_0_FORWARD) to `0` (off).
|
||||||
|
- Set [MAV_X_MODE](../advanced_config/parameter_reference.md#MAV_0_MODE) to `7` or `13` to (Minimal or Low Bandwidth) to reduce memory usage.
|
||||||
|
- Set `SER_XXX_BAUD` to `115200`, where `XXX` is specific to the port you are using (such as [SER_GPS2_BAUD](../advanced_config/parameter_reference.md#SER_GPS2_BAUD)).
|
||||||
|
- Set [EKF2_RNG_A_HMAX](../advanced_config/parameter_reference.md#EKF2_RNG_A_HMAX) to `50`.
|
||||||
|
- Set [EKF2_RNG_QLTY_T](../advanced_config/parameter_reference.md#EKF2_RNG_QLTY_T) to `0.2`.
|
||||||
|
|
||||||
|
## See Also
|
||||||
|
|
||||||
|
- [ARK DIST MR](https://docs.arkelectron.com/sensor/ark-dist) (ARK Docs)
|
||||||
@@ -20,6 +20,7 @@ Order this module from:
|
|||||||
- Multi-band RTK with fast convergence times and reliable performance
|
- Multi-band RTK with fast convergence times and reliable performance
|
||||||
- High update rate for highly dynamic applications
|
- High update rate for highly dynamic applications
|
||||||
- Centimetre accuracy in a small and energy efficient module
|
- Centimetre accuracy in a small and energy efficient module
|
||||||
|
- Moving Base for Heading
|
||||||
- Bosch BMM150 Magnetometer
|
- Bosch BMM150 Magnetometer
|
||||||
- Bosch BMP388 Barometer
|
- Bosch BMP388 Barometer
|
||||||
- Invensense ICM-42688-P 6-Axis IMU
|
- Invensense ICM-42688-P 6-Axis IMU
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user