mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-26 07:03:33 +08:00
New Crowdin translations - ko
This commit is contained in:
committed by
Hamish Willee
parent
e0b5342e98
commit
359d58effd
@@ -733,6 +733,7 @@
|
|||||||
- [Protocols/Microservices](mavlink/protocols.md)
|
- [Protocols/Microservices](mavlink/protocols.md)
|
||||||
- [Standard Modes Protocol](mavlink/standard_modes.md)
|
- [Standard Modes Protocol](mavlink/standard_modes.md)
|
||||||
- [uXRCE-DDS (PX4-ROS 2/DDS Bridge)](middleware/uxrce_dds.md)
|
- [uXRCE-DDS (PX4-ROS 2/DDS Bridge)](middleware/uxrce_dds.md)
|
||||||
|
- [UORB Bridged to ROS 2](middleware/dds_topics.md)
|
||||||
- [모듈과 명령어](modules/modules_main.md)
|
- [모듈과 명령어](modules/modules_main.md)
|
||||||
- [자동 튜닝](modules/modules_autotune.md)
|
- [자동 튜닝](modules/modules_autotune.md)
|
||||||
- [명령어](modules/modules_command.md)
|
- [명령어](modules/modules_command.md)
|
||||||
|
|||||||
@@ -128,21 +128,21 @@ You add some "boilerplate" code to regularly listen for changes in the [uORB Top
|
|||||||
|
|
||||||
- **px4_platform_common/module_params.h** to get the `DEFINE_PARAMETERS` macro:
|
- **px4_platform_common/module_params.h** to get the `DEFINE_PARAMETERS` macro:
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
#include <px4_platform_common/module_params.h>
|
#include <px4_platform_common/module_params.h>
|
||||||
```
|
```
|
||||||
|
|
||||||
- **parameter_update.h** to access the uORB `parameter_update` message:
|
- **parameter_update.h** to access the uORB `parameter_update` message:
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
#include <uORB/topics/parameter_update.h>
|
#include <uORB/topics/parameter_update.h>
|
||||||
```
|
```
|
||||||
|
|
||||||
- **Subscription.hpp** for the uORB C++ subscription API:
|
- **Subscription.hpp** for the uORB C++ subscription API:
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
#include <uORB/Subscription.hpp>
|
#include <uORB/Subscription.hpp>
|
||||||
```
|
```
|
||||||
|
|
||||||
Derive your class from `ModuleParams`, and use `DEFINE_PARAMETERS` to specify a list of parameters and their associated parameter attributes.
|
Derive your class from `ModuleParams`, and use `DEFINE_PARAMETERS` to specify a list of parameters and their associated parameter attributes.
|
||||||
매개변수의 이름은 매개변수 메타데이터 정의와 동일하여야 합니다.
|
매개변수의 이름은 매개변수 메타데이터 정의와 동일하여야 합니다.
|
||||||
@@ -194,7 +194,7 @@ void Module::parameters_update()
|
|||||||
- `_parameter_update_sub.updated()` tells us if there is _any_ update to the `param_update` uORB message (but not what parameter is affected).
|
- `_parameter_update_sub.updated()` tells us if there is _any_ update to the `param_update` uORB message (but not what parameter is affected).
|
||||||
- If there has been "some" parameter updated, we copy the update into a `parameter_update_s` (`param_update`), to clear the pending update.
|
- If there has been "some" parameter updated, we copy the update into a `parameter_update_s` (`param_update`), to clear the pending update.
|
||||||
- Then we call `ModuleParams::updateParams()`.
|
- Then we call `ModuleParams::updateParams()`.
|
||||||
This "under the hood" updates all parameter attributes listed in our `DEFINE_PARAMETERS` list.
|
This "under the hood" updates all parameter attributes listed in our `DEFINE_PARAMETERS` list.
|
||||||
|
|
||||||
The parameter attributes (`_sys_autostart` and `_att_bias_max` in this case) can then be used to represent the parameters, and will be updated whenever the parameter value changes.
|
The parameter attributes (`_sys_autostart` and `_att_bias_max` in this case) can then be used to represent the parameters, and will be updated whenever the parameter value changes.
|
||||||
|
|
||||||
@@ -267,12 +267,12 @@ YAML meta data is intended as a full replacement for the **.c** definitions.
|
|||||||
- An example of YAML definitions being used can be found in the MAVLink parameter definitions: [/src/modules/mavlink/module.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mavlink/module.yaml).
|
- An example of YAML definitions being used can be found in the MAVLink parameter definitions: [/src/modules/mavlink/module.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mavlink/module.yaml).
|
||||||
- YAML 파일은 다음을 추가하여 cmake 빌드 시스템에 등록됩니다.
|
- YAML 파일은 다음을 추가하여 cmake 빌드 시스템에 등록됩니다.
|
||||||
|
|
||||||
```cmake
|
```cmake
|
||||||
MODULE_CONFIG
|
MODULE_CONFIG
|
||||||
module.yaml
|
module.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
to the `px4_add_module` section of the `CMakeLists.txt` file of that module.
|
to the `px4_add_module` section of the `CMakeLists.txt` file of that module.
|
||||||
|
|
||||||
#### 다중 인스턴스(템플릿) YAML 메타 데이터
|
#### 다중 인스턴스(템플릿) YAML 메타 데이터
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ This guide walks through the process of setting up the board and connecting to P
|
|||||||
You will temporarily need the following hardware in order to log into your Jetson and get its IP address, after which you will be able to log in via SSH:
|
You will temporarily need the following hardware in order to log into your Jetson and get its IP address, after which you will be able to log in via SSH:
|
||||||
|
|
||||||
- External display.
|
- External display.
|
||||||
If your display doesn't have a mini HDMI connector you will also need a [Mini HDMI to HDMI converter](https://a.co/d/6N815N9) if your external display has HDMI input
|
If your display doesn't have a mini HDMI connector you will also need a [Mini HDMI to HDMI converter](https://a.co/d/6N815N9) if your external display has HDMI input
|
||||||
- Ethernet cable
|
- Ethernet cable
|
||||||
- Mouse and keyboard (the baseboard has 4 USB ports exposed from Jetson, two of which are USB 3.0)
|
- Mouse and keyboard (the baseboard has 4 USB ports exposed from Jetson, two of which are USB 3.0)
|
||||||
|
|
||||||
@@ -45,11 +45,11 @@ This information comes from the [Holybro Pixhawk-Jetson Baseboard Documentation]
|
|||||||
|
|
||||||
- 크기
|
- 크기
|
||||||
|
|
||||||
- 126 x 80 x 45mm (with Jetson Orin NX + Heatsink/Fan & FC Module)
|
- 126 x 80 x 45mm (with Jetson Orin NX + Heatsink/Fan & FC Module)
|
||||||
- 126 x 80 x 22.9mm (without Jetson and FC Module)
|
- 126 x 80 x 22.9mm (without Jetson and FC Module)
|
||||||
|
|
||||||
- 중량
|
- 중량
|
||||||
- 190g (with Jetson, Heatsink, Flight Controller, M.2 SSD, M.2 Wi-Fi Module)
|
- 190g (with Jetson, Heatsink, Flight Controller, M.2 SSD, M.2 Wi-Fi Module)
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -57,67 +57,67 @@ This information comes from the [Holybro Pixhawk-Jetson Baseboard Documentation]
|
|||||||
|
|
||||||
- 2x Gigabit Ethernet Port
|
- 2x Gigabit Ethernet Port
|
||||||
|
|
||||||
- Connected to both Jetson & Autopilot via Ethernet switch (RTL8367S)
|
- Connected to both Jetson & Autopilot via Ethernet switch (RTL8367S)
|
||||||
- Ethernet Switch powered by the same circuit as the Pixhawk
|
- Ethernet Switch powered by the same circuit as the Pixhawk
|
||||||
- 8-pin JST-GH
|
- 8-pin JST-GH
|
||||||
- RJ45
|
- RJ45
|
||||||
|
|
||||||
- 2x MIPI CSI Camera Inputs
|
- 2x MIPI CSI Camera Inputs
|
||||||
|
|
||||||
- 4 Lanes each
|
- 4 Lanes each
|
||||||
- 22-Pin Raspberry Pi Cam FFC
|
- 22-Pin Raspberry Pi Cam FFC
|
||||||
|
|
||||||
- 2x USB 3.0 Host Port
|
- 2x USB 3.0 Host Port
|
||||||
|
|
||||||
- USB A
|
- USB A
|
||||||
- 5A Current Limit
|
- 5A Current Limit
|
||||||
|
|
||||||
- 2x USB 2.0 Host Port
|
- 2x USB 2.0 Host Port
|
||||||
|
|
||||||
- 5-Pin JST-GH
|
- 5-Pin JST-GH
|
||||||
- 0A Current Limit
|
- 0A Current Limit
|
||||||
|
|
||||||
- USB 2.0 for Programming/Debugging
|
- USB 2.0 for Programming/Debugging
|
||||||
|
|
||||||
- USB-C
|
- USB-C
|
||||||
|
|
||||||
- 2 Key M 2242/2280 for NVMe SSD
|
- 2 Key M 2242/2280 for NVMe SSD
|
||||||
|
|
||||||
- PCIEx4
|
- PCIEx4
|
||||||
|
|
||||||
- 2 Key E 2230 for WiFi/BT
|
- 2 Key E 2230 for WiFi/BT
|
||||||
|
|
||||||
- PCIEx2
|
- PCIEx2
|
||||||
- USB
|
- USB
|
||||||
- UART
|
- UART
|
||||||
- I2S
|
- I2S
|
||||||
|
|
||||||
- Mini HDMI Out
|
- Mini HDMI Out
|
||||||
|
|
||||||
- 4x GPIO
|
- 4x GPIO
|
||||||
|
|
||||||
- 6-pin JST-GH
|
- 6-pin JST-GH
|
||||||
|
|
||||||
- CAN Port
|
- CAN Port
|
||||||
|
|
||||||
- Connected to Autopilot's CAN2 (4 Pin JST-GH)
|
- Connected to Autopilot's CAN2 (4 Pin JST-GH)
|
||||||
|
|
||||||
- SPI Port
|
- SPI Port
|
||||||
|
|
||||||
- 7-Pin JST-GH
|
- 7-Pin JST-GH
|
||||||
|
|
||||||
- I2C Port
|
- I2C Port
|
||||||
|
|
||||||
- 4-Pin JST-GH
|
- 4-Pin JST-GH
|
||||||
|
|
||||||
- I2S Port
|
- I2S Port
|
||||||
|
|
||||||
- 7-Pin JST-GH
|
- 7-Pin JST-GH
|
||||||
|
|
||||||
- 2x UART Port
|
- 2x UART Port
|
||||||
|
|
||||||
- 1 for debug
|
- 1 for debug
|
||||||
- 1 connected to Autopilot's telem2
|
- 1 connected to Autopilot's telem2
|
||||||
|
|
||||||
- Fan Power Port
|
- Fan Power Port
|
||||||
|
|
||||||
@@ -129,13 +129,13 @@ This information comes from the [Holybro Pixhawk-Jetson Baseboard Documentation]
|
|||||||
|
|
||||||
- Pixhawk Autopilot Bus Interface
|
- Pixhawk Autopilot Bus Interface
|
||||||
|
|
||||||
- 100 Pin Hirose DF40
|
- 100 Pin Hirose DF40
|
||||||
- 50 Pin Hirose DF40
|
- 50 Pin Hirose DF40
|
||||||
|
|
||||||
- Redundant Digital Power Module Inputs
|
- Redundant Digital Power Module Inputs
|
||||||
|
|
||||||
- I2C Power Monitor Support
|
- I2C Power Monitor Support
|
||||||
- 2x 6-Pin Molex CLIK-Mate
|
- 2x 6-Pin Molex CLIK-Mate
|
||||||
|
|
||||||
- Power Path Selector
|
- Power Path Selector
|
||||||
|
|
||||||
@@ -143,68 +143,68 @@ This information comes from the [Holybro Pixhawk-Jetson Baseboard Documentation]
|
|||||||
|
|
||||||
- 정격 전압
|
- 정격 전압
|
||||||
|
|
||||||
- 최대 입력 전압: 6V
|
- 최대 입력 전압: 6V
|
||||||
- USB 전원 입력: 4.75~5.25V
|
- USB 전원 입력: 4.75~5.25V
|
||||||
|
|
||||||
- Full GPS Plus Safety Switch Port
|
- Full GPS Plus Safety Switch Port
|
||||||
|
|
||||||
- 10-Pin JST-GH
|
- 10-Pin JST-GH
|
||||||
|
|
||||||
- Secondary (GPS2) Port
|
- Secondary (GPS2) Port
|
||||||
|
|
||||||
- 6-Pin JST-GH
|
- 6-Pin JST-GH
|
||||||
|
|
||||||
- 2x CAN Ports
|
- 2x CAN Ports
|
||||||
|
|
||||||
- 4-Pin JST-GH
|
- 4-Pin JST-GH
|
||||||
|
|
||||||
- 3x Telemetry Ports with Flow Control
|
- 3x Telemetry Ports with Flow Control
|
||||||
|
|
||||||
- 2x 6-Pin JST-GH
|
- 2x 6-Pin JST-GH
|
||||||
- 1 is connected to Jetson's `UART1` Port
|
- 1 is connected to Jetson's `UART1` Port
|
||||||
|
|
||||||
- 16 PWM Outputs
|
- 16 PWM Outputs
|
||||||
|
|
||||||
- 2x 10-Pin JST-GH
|
- 2x 10-Pin JST-GH
|
||||||
|
|
||||||
- UART4 & I2C Port
|
- UART4 & I2C Port
|
||||||
|
|
||||||
- 6-Pin JST-GH
|
- 6-Pin JST-GH
|
||||||
|
|
||||||
- 2x Gigabit Ethernet Port
|
- 2x Gigabit Ethernet Port
|
||||||
|
|
||||||
- Connected to both Jetson & Autopilot via Ethernet switch (RTL8367S)
|
- Connected to both Jetson & Autopilot via Ethernet switch (RTL8367S)
|
||||||
- 8-Pin JST-GH
|
- 8-Pin JST-GH
|
||||||
- RJ45
|
- RJ45
|
||||||
|
|
||||||
- AD & IO
|
- AD & IO
|
||||||
|
|
||||||
- 8-Pin JST-GH
|
- 8-Pin JST-GH
|
||||||
|
|
||||||
- USB 2.0
|
- USB 2.0
|
||||||
|
|
||||||
- USB-C
|
- USB-C
|
||||||
- 4-Pin JST-GH
|
- 4-Pin JST-GH
|
||||||
|
|
||||||
- DSM Input
|
- DSM Input
|
||||||
|
|
||||||
- 3-Pin JST-ZH 1.5mm Pitch
|
- 3-Pin JST-ZH 1.5mm Pitch
|
||||||
|
|
||||||
- RC In
|
- RC In
|
||||||
|
|
||||||
- PPM/SBUS
|
- PPM/SBUS
|
||||||
- 5-Pin JST-GH
|
- 5-Pin JST-GH
|
||||||
|
|
||||||
- SPI Port
|
- SPI Port
|
||||||
|
|
||||||
- External Sensor Bus (SPI5)
|
- External Sensor Bus (SPI5)
|
||||||
- 11-Pin JST-GH
|
- 11-Pin JST-GH
|
||||||
|
|
||||||
- 2x Debug Port
|
- 2x Debug Port
|
||||||
|
|
||||||
- 1 for FMU
|
- 1 for FMU
|
||||||
- 1 for IO
|
- 1 for IO
|
||||||
- 10-Pin JST-SH
|
- 10-Pin JST-SH
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -218,7 +218,7 @@ The Jetson has separate input power circuitry from the Pixhawk autopilot:
|
|||||||
- 8V/3A Minimum (Depends on Usage and Peripherals)
|
- 8V/3A Minimum (Depends on Usage and Peripherals)
|
||||||
- Voltage Rating: 7-21V (3S-4S)
|
- Voltage Rating: 7-21V (3S-4S)
|
||||||
- Jetson Baseboard onboard BEC is rated for 7-21V (3S-4S).
|
- Jetson Baseboard onboard BEC is rated for 7-21V (3S-4S).
|
||||||
Note that the external UBEC-12A can be used for applications above 4S
|
Note that the external UBEC-12A can be used for applications above 4S
|
||||||
|
|
||||||
During development using the following wired power supply is recommended:
|
During development using the following wired power supply is recommended:
|
||||||
|
|
||||||
@@ -698,7 +698,7 @@ On the following screen, confirm your selected device:
|
|||||||
|
|
||||||
- Choose `Pre-config` for the OEM Configuration (this will skip Ubuntu first time setup screens after reboot).
|
- Choose `Pre-config` for the OEM Configuration (this will skip Ubuntu first time setup screens after reboot).
|
||||||
- Choose your preferred username and password (and write them down).
|
- Choose your preferred username and password (and write them down).
|
||||||
These will be used as your login credentials to Jetpack.
|
These will be used as your login credentials to Jetpack.
|
||||||
- Choose `NVMe` as the storage device because the board has separate SSD for storage.
|
- Choose `NVMe` as the storage device because the board has separate SSD for storage.
|
||||||
|
|
||||||

|

|
||||||
@@ -922,95 +922,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:
|
||||||
@@ -1221,15 +1221,15 @@ Assuming the client is set up as defined above:
|
|||||||
|
|
||||||
- (Serial connection) Start the agent on `/dev/ttyTHS1`:
|
- (Serial connection) Start the agent on `/dev/ttyTHS1`:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo MicroXRCEAgent serial --dev /dev/ttyTHS1 -b 921600
|
sudo MicroXRCEAgent serial --dev /dev/ttyTHS1 -b 921600
|
||||||
```
|
```
|
||||||
|
|
||||||
- (Ethernet) Start the agent on UDP port `8888`:
|
- (Ethernet) Start the agent on UDP port `8888`:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
MicroXRCEAgent udp4 -p 8888
|
MicroXRCEAgent udp4 -p 8888
|
||||||
```
|
```
|
||||||
|
|
||||||
If your agent and client are connected and no nodes are running, you should see output similar to this in the Agent terminal:
|
If your agent and client are connected and no nodes are running, you should see output similar to this in the Agent terminal:
|
||||||
|
|
||||||
|
|||||||
+14
-14
@@ -38,9 +38,9 @@ A frame configuration can define everything about a vehicle, from it's geometry
|
|||||||
When you're bringing up a new vehicle though, the frame will usually contain a fairly minimal configuration:
|
When you're bringing up a new vehicle though, the frame will usually contain a fairly minimal configuration:
|
||||||
|
|
||||||
- Frames named with "Generic" define the vehicle type, number of rotors, and "placeholder" rotor positions.
|
- Frames named with "Generic" define the vehicle type, number of rotors, and "placeholder" rotor positions.
|
||||||
After selecting the airframe you define the actual geometry and then configure outputs.
|
After selecting the airframe you define the actual geometry and then configure outputs.
|
||||||
- Frames named with model/brand will define the vehicle type, number of rotors, actual rotor positions, and motor directions.
|
- Frames named with model/brand will define the vehicle type, number of rotors, actual rotor positions, and motor directions.
|
||||||
After selecting the airframe you usually still have to configure outputs.
|
After selecting the airframe you usually still have to configure outputs.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ This ensures that all ESC provide exactly the same output for a given input (ide
|
|||||||
The final step is [Motor Configuration](../config/actuators.md#motor-configuration):
|
The final step is [Motor Configuration](../config/actuators.md#motor-configuration):
|
||||||
|
|
||||||
- [Reverse any motors](../config/actuators.md#reversing-motors) that don't match the spin direction configured in the Geometry.
|
- [Reverse any motors](../config/actuators.md#reversing-motors) that don't match the spin direction configured in the Geometry.
|
||||||
For DShot ESC you can do this through the Acuator Testing UI.
|
For DShot ESC you can do this through the Acuator Testing UI.
|
||||||
- PWM, OneShot, and CAN ESC, set the motor input limits for disarmed, low and high speed (not needed for DShot ESC)
|
- PWM, OneShot, and CAN ESC, set the motor input limits for disarmed, low and high speed (not needed for DShot ESC)
|
||||||
|
|
||||||
Relevant topics:
|
Relevant topics:
|
||||||
@@ -123,14 +123,14 @@ Tuning is the final step, carried out only after most other setup and configurat
|
|||||||
|
|
||||||
- [Autotune](../config/autotune_mc.md) — Automates tuning PX4 rate and attitude controllers (recommended).
|
- [Autotune](../config/autotune_mc.md) — Automates tuning PX4 rate and attitude controllers (recommended).
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
Automatic tuning works on frames that have reasonable authority and dynamics around all the body axes.
|
Automatic tuning works on frames that have reasonable authority and dynamics around all the body axes.
|
||||||
It has primarily been tested on racing quads and X500, and is expected to be less effective on tricopters with a tiltable rotor.
|
It has primarily been tested on racing quads and X500, and is expected to be less effective on tricopters with a tiltable rotor.
|
||||||
|
|
||||||
Manual tuning using these guides are only needed if there is a problem with autotune:
|
Manual tuning using these guides are only needed if there is a problem with autotune:
|
||||||
|
|
||||||
- [MC PID Tuning (Manual/Basic)](../config_mc/pid_tuning_guide_multicopter_basic.md) — Manual tuning basic how to.
|
- [MC PID Tuning (Manual/Basic)](../config_mc/pid_tuning_guide_multicopter_basic.md) — Manual tuning basic how to.
|
||||||
- [MC PID Tuning Guide (Manual/Detailed)](../config_mc/pid_tuning_guide_multicopter.md) — Manual tuning with detailed explanation.
|
- [MC PID Tuning Guide (Manual/Detailed)](../config_mc/pid_tuning_guide_multicopter.md) — Manual tuning with detailed explanation.
|
||||||
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
@@ -138,7 +138,7 @@ Tuning is the final step, carried out only after most other setup and configurat
|
|||||||
- [MC Filter/Control Latency Tuning](../config_mc/filter_tuning.md) — Trade off control latency and noise filtering.
|
- [MC Filter/Control Latency Tuning](../config_mc/filter_tuning.md) — Trade off control latency and noise filtering.
|
||||||
|
|
||||||
- [MC Setpoint Tuning (Trajectory Generator)](../config_mc/mc_trajectory_tuning.md)
|
- [MC Setpoint Tuning (Trajectory Generator)](../config_mc/mc_trajectory_tuning.md)
|
||||||
- [MC Jerk-limited Type Trajectory](../config_mc/mc_jerk_limited_type_trajectory.md)
|
- [MC Jerk-limited Type Trajectory](../config_mc/mc_jerk_limited_type_trajectory.md)
|
||||||
|
|
||||||
- [Multicopter Racer Setup](../config_mc/racer_setup.md)
|
- [Multicopter Racer Setup](../config_mc/racer_setup.md)
|
||||||
|
|
||||||
@@ -167,7 +167,7 @@ Yes but it must be physically feasible. E.g. if you make a quadrotor where all m
|
|||||||
- [Flight Controller Peripherals](../peripherals/index.md) - Setup specific sensors, optional sensors, actuators, and so on.
|
- [Flight Controller Peripherals](../peripherals/index.md) - Setup specific sensors, optional sensors, actuators, and so on.
|
||||||
- [Advanced Configuration](../advanced_config/index.md) - Factory/OEM calibration, configuring advanced features, less-common configuration.
|
- [Advanced Configuration](../advanced_config/index.md) - Factory/OEM calibration, configuring advanced features, less-common configuration.
|
||||||
- Vehicle-Centric Config/Tuning:
|
- Vehicle-Centric Config/Tuning:
|
||||||
- **Multicopter Config/Tuning**
|
- **Multicopter Config/Tuning**
|
||||||
- [Helicopter Config/Tuning](../config_heli/index.md)
|
- [Helicopter Config/Tuning](../config_heli/index.md)
|
||||||
- [Fixed Wing Config/Tuning](../config_fw/index.md)
|
- [Fixed Wing Config/Tuning](../config_fw/index.md)
|
||||||
- [VTOL Config/Tuning](../config_vtol/index.md)
|
- [VTOL Config/Tuning](../config_vtol/index.md)
|
||||||
|
|||||||
@@ -26,13 +26,13 @@ ARF 키트는 PX4와 호환되는 대부분의 비행 콘트롤러를 지원합
|
|||||||
The Holybro [X500 V2 Kit](https://holybro.com/collections/x500-kits) includes almost all the required components:
|
The Holybro [X500 V2 Kit](https://holybro.com/collections/x500-kits) includes almost all the required components:
|
||||||
|
|
||||||
- X500V2 프레임 키트
|
- X500V2 프레임 키트
|
||||||
- Body - Full Carbon Fiber Top & Bottom plate (144 x 144mm, 2mm thick)
|
- Body - Full Carbon Fiber Top & Bottom plate (144 x 144mm, 2mm thick)
|
||||||
- Arm - High strength & ultra-lightweight 16mm carbon fiber tubes
|
- Arm - High strength & ultra-lightweight 16mm carbon fiber tubes
|
||||||
- Landing gear - 16mm & 10mm diameter carbon fiber tubes
|
- Landing gear - 16mm & 10mm diameter carbon fiber tubes
|
||||||
- Platform board - With mounting holes for GPS & popular companion computer
|
- Platform board - With mounting holes for GPS & popular companion computer
|
||||||
- 이중 10mm Ø 로드 x 250mm 롱 레일 마운팅 시스템
|
- 이중 10mm Ø 로드 x 250mm 롱 레일 마운팅 시스템
|
||||||
- 2개의 배터리 스트랩이 있는 배터리 마운트
|
- 2개의 배터리 스트랩이 있는 배터리 마운트
|
||||||
- 설치용 수공구
|
- 설치용 수공구
|
||||||
- Holybro Motors - 2216 KV880 x6 (superseded - check [spare parts list](https://holybro.com/products/spare-parts-x500-v2-kit) for current version).
|
- Holybro Motors - 2216 KV880 x6 (superseded - check [spare parts list](https://holybro.com/products/spare-parts-x500-v2-kit) for current version).
|
||||||
- Holybro BLHeli S ESC 20A x4 (superseded - check [spare parts list](https://holybro.com/products/spare-parts-x500-v2-kit) for current version).
|
- Holybro BLHeli S ESC 20A x4 (superseded - check [spare parts list](https://holybro.com/products/spare-parts-x500-v2-kit) for current version).
|
||||||
- Propellers - 1045 x4 (superseded - check [spare parts list](https://holybro.com/products/spare-parts-x500-v2-kit) for current version).
|
- Propellers - 1045 x4 (superseded - check [spare parts list](https://holybro.com/products/spare-parts-x500-v2-kit) for current version).
|
||||||
@@ -93,92 +93,92 @@ Tools are included to do the assembly, however you may need:
|
|||||||
Estimate time to assemble is 55 min (25 minutes for frame, 30 minutes for autopilot installation/configuration)
|
Estimate time to assemble is 55 min (25 minutes for frame, 30 minutes for autopilot installation/configuration)
|
||||||
|
|
||||||
1. Start by assembling the payload & battery holder.
|
1. Start by assembling the payload & battery holder.
|
||||||
Push the rubbers into grippers (Do not use sharp items to push them in!).
|
Push the rubbers into grippers (Do not use sharp items to push them in!).
|
||||||
Next, pass the holders through the holder bars with the battery holder bases as Figure 3.
|
Next, pass the holders through the holder bars with the battery holder bases as Figure 3.
|
||||||
|
|
||||||

|

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

|

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

|

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

|

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

|

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

|

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

|

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

|

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

|

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

|

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

|

|
||||||
|
|
||||||
- [Actuators](../config/actuators.md)
|
- [Actuators](../config/actuators.md)
|
||||||
- You should not need to update the vehicle geometry (as this is a preconfigured airframe).
|
- You should not need to update the vehicle geometry (as this is a preconfigured airframe).
|
||||||
- Assign actuator functions to outputs to match your wiring.
|
- Assign actuator functions to outputs to match your wiring.
|
||||||
- Test the configuration using the sliders.
|
- Test the configuration using the sliders.
|
||||||
|
|
||||||
그리고, 설치후에 필수적인 설정 작업과 보정 작업을 진행하여야 합니다.
|
그리고, 설치후에 필수적인 설정 작업과 보정 작업을 진행하여야 합니다.
|
||||||
|
|
||||||
|
|||||||
@@ -20,12 +20,12 @@ Key airframe features:
|
|||||||
- Removable V tail or conventional tail options included
|
- Removable V tail or conventional tail options included
|
||||||
- Threaded inserts in the wings and fuselage top for external mounting
|
- Threaded inserts in the wings and fuselage top for external mounting
|
||||||
- Numerous mounting features
|
- Numerous mounting features
|
||||||
- Top antenna hole
|
- Top antenna hole
|
||||||
- Top GPS cover
|
- Top GPS cover
|
||||||
- Side "T" antenna mounts
|
- Side "T" antenna mounts
|
||||||
- Rear electronics tray
|
- Rear electronics tray
|
||||||
- Front facing "action cam" cutout
|
- Front facing "action cam" cutout
|
||||||
- Front facing FPV camera cutout
|
- Front facing FPV camera cutout
|
||||||
- Removable wings
|
- Removable wings
|
||||||
- Low stall speed
|
- Low stall speed
|
||||||
- Gentle handling
|
- Gentle handling
|
||||||
@@ -69,10 +69,10 @@ Key build features
|
|||||||
- [6s2p 18650 LiIon flight battery](https://www.upgradeenergytech.com/product-page/6s-22-2v-5600mah-30c-dark-lithium-liion-drone-battery) (select XT60 connector)
|
- [6s2p 18650 LiIon flight battery](https://www.upgradeenergytech.com/product-page/6s-22-2v-5600mah-30c-dark-lithium-liion-drone-battery) (select XT60 connector)
|
||||||
|
|
||||||
- [Custom designed 3D printed parts](https://github.com/PX4/PX4-user_guide/raw/main/assets/airframes/fw/reptile_dragon_2/rd2_3d_printed_parts.zip)
|
- [Custom designed 3D printed parts](https://github.com/PX4/PX4-user_guide/raw/main/assets/airframes/fw/reptile_dragon_2/rd2_3d_printed_parts.zip)
|
||||||
- ARK6X carrier mount
|
- ARK6X carrier mount
|
||||||
- Holybro Pixhawk 5x carrier mount
|
- Holybro Pixhawk 5x carrier mount
|
||||||
- FPV pod and camera mount
|
- FPV pod and camera mount
|
||||||
- Pitot static probe "plug" adapter
|
- Pitot static probe "plug" adapter
|
||||||
|
|
||||||
- [Custom designed power distribution PCB](https://github.com/PX4/PX4-user_guide/raw/main/assets/airframes/fw/reptile_dragon_2/xt30_power_distro_pcb.zip)
|
- [Custom designed power distribution PCB](https://github.com/PX4/PX4-user_guide/raw/main/assets/airframes/fw/reptile_dragon_2/xt30_power_distro_pcb.zip)
|
||||||
|
|
||||||
@@ -426,15 +426,15 @@ Prior to the first flight, a comprehensive preflight must be conducted.
|
|||||||
I recommend checking the following items:
|
I recommend checking the following items:
|
||||||
|
|
||||||
- Sensor calibration (QGC)
|
- Sensor calibration (QGC)
|
||||||
- Mag calibration
|
- Mag calibration
|
||||||
- Accelerometer calibration
|
- Accelerometer calibration
|
||||||
- 대기속도 보정
|
- 대기속도 보정
|
||||||
- Level horizon calibration
|
- Level horizon calibration
|
||||||
- Check control surface deflection
|
- Check control surface deflection
|
||||||
- Right stick -> Right aileron goes up, left aileron goes down
|
- Right stick -> Right aileron goes up, left aileron goes down
|
||||||
- Left stick -> Left aileron goes up, right aileron goes down
|
- Left stick -> Left aileron goes up, right aileron goes down
|
||||||
- Stick back -> elevator goes up
|
- Stick back -> elevator goes up
|
||||||
-Stick forward -> elevator goes down
|
-Stick forward -> elevator goes down
|
||||||
- Left rudder -> Rudder goes left
|
- Left rudder -> Rudder goes left
|
||||||
- Right rudder -> Rudder goes right
|
- Right rudder -> Rudder goes right
|
||||||
- Check Px4 inputs (in `stabilized mode`)
|
- Check Px4 inputs (in `stabilized mode`)
|
||||||
|
|||||||
@@ -98,11 +98,11 @@ The mapping between flight controller outputs and specific controls/motors depen
|
|||||||
Assembly information is covered in several sections:
|
Assembly information is covered in several sections:
|
||||||
|
|
||||||
- [Basic Assembly](../assembly/index.md) contains topics shows the setup of core components for a number of popular [flight controllers](../flight_controller/index.md).
|
- [Basic Assembly](../assembly/index.md) contains topics shows the setup of core components for a number of popular [flight controllers](../flight_controller/index.md).
|
||||||
가이드가 없는 비행 컨트롤러는 일반적으로 거의 같은 방법으로 설정됩니다(거의 항상 유사한 설정 가이드가 포함됨).
|
가이드가 없는 비행 컨트롤러는 일반적으로 거의 같은 방법으로 설정됩니다(거의 항상 유사한 설정 가이드가 포함됨).
|
||||||
- [Peripherals](../peripherals/index.md) contains information about other peripherals, including [Airspeed Sensors](../sensor/airspeed.md).
|
- [Peripherals](../peripherals/index.md) contains information about other peripherals, including [Airspeed Sensors](../sensor/airspeed.md).
|
||||||
- [Airframes Reference > VTOL](../airframes/airframe_reference.md#vtol) explains which flight controller outputs must be connected to different flight controls for each airframe configuration:
|
- [Airframes Reference > VTOL](../airframes/airframe_reference.md#vtol) explains which flight controller outputs must be connected to different flight controls for each airframe configuration:
|
||||||
- 정의된 기체의 구성을 선택하십시오. 이는 비행을 위하여 사전 튜닝이 충분하기 때문입니다(미세 조정만 필요할 수 있음).
|
- 정의된 기체의 구성을 선택하십시오. 이는 비행을 위하여 사전 튜닝이 충분하기 때문입니다(미세 조정만 필요할 수 있음).
|
||||||
- 그렇지 않으면, 기체와 일치하는 "일반 기체"를 선택하십시오.
|
- 그렇지 않으면, 기체와 일치하는 "일반 기체"를 선택하십시오.
|
||||||
|
|
||||||
In addition, build logs showing how others have set up different types of vehicles are provided as sub topics.
|
In addition, build logs showing how others have set up different types of vehicles are provided as sub topics.
|
||||||
For example see [FunCub QuadPlane](../frames_vtol/vtol_quadplane_fun_cub_vtol_pixhawk.md).
|
For example see [FunCub QuadPlane](../frames_vtol/vtol_quadplane_fun_cub_vtol_pixhawk.md).
|
||||||
|
|||||||
@@ -0,0 +1,277 @@
|
|||||||
|
# dds_topics.yaml — PX4 Topics Exposed to ROS 2
|
||||||
|
|
||||||
|
:::info
|
||||||
|
This document is [auto-generated](https://github.com/PX4/PX4-Autopilot/blob/main/Tools/msg/generate_msg_docs.py) from the source code.
|
||||||
|
:::
|
||||||
|
|
||||||
|
The [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) file specifies which uORB message definitions are compiled into the [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) module when [PX4 is built](../middleware/uxrce_dds.md#code-generation), and hence which topics are available for ROS 2 applications to subscribe or publish (by default).
|
||||||
|
|
||||||
|
This document shows a markdown-rendered version of [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml), listing the publications, subscriptions, and so on.
|
||||||
|
|
||||||
|
## Publications
|
||||||
|
|
||||||
|
| Topic | 형식 | Rate Limit |
|
||||||
|
| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- |
|
||||||
|
| `/fmu/out/register_ext_component_reply` | [px4_msgs::msg::RegisterExtComponentReply](../msg_docs/RegisterExtComponentReply.md) | |
|
||||||
|
| `/fmu/out/arming_check_request` | [px4_msgs::msg::ArmingCheckRequest](../msg_docs/ArmingCheckRequest.md) | 5.0 |
|
||||||
|
| `/fmu/out/mode_completed` | [px4_msgs::msg::ModeCompleted](../msg_docs/ModeCompleted.md) | 50.0 |
|
||||||
|
| `/fmu/out/battery_status` | [px4_msgs::msg::BatteryStatus](../msg_docs/BatteryStatus.md) | 1.0 |
|
||||||
|
| `/fmu/out/collision_constraints` | [px4_msgs::msg::CollisionConstraints](../msg_docs/CollisionConstraints.md) | 50.0 |
|
||||||
|
| `/fmu/out/estimator_status_flags` | [px4_msgs::msg::EstimatorStatusFlags](../msg_docs/EstimatorStatusFlags.md) | 5.0 |
|
||||||
|
| `/fmu/out/failsafe_flags` | [px4_msgs::msg::FailsafeFlags](../msg_docs/FailsafeFlags.md) | 5.0 |
|
||||||
|
| `/fmu/out/manual_control_setpoint` | [px4_msgs::msg::ManualControlSetpoint](../msg_docs/ManualControlSetpoint.md) | 25.0 |
|
||||||
|
| `/fmu/out/message_format_response` | [px4_msgs::msg::MessageFormatResponse](../msg_docs/MessageFormatResponse.md) | |
|
||||||
|
| `/fmu/out/position_setpoint_triplet` | [px4_msgs::msg::PositionSetpointTriplet](../msg_docs/PositionSetpointTriplet.md) | 5.0 |
|
||||||
|
| `/fmu/out/sensor_combined` | [px4_msgs::msg::SensorCombined](../msg_docs/SensorCombined.md) | |
|
||||||
|
| `/fmu/out/timesync_status` | [px4_msgs::msg::TimesyncStatus](../msg_docs/TimesyncStatus.md) | 10.0 |
|
||||||
|
| `/fmu/out/vehicle_land_detected` | [px4_msgs::msg::VehicleLandDetected](../msg_docs/VehicleLandDetected.md) | 5.0 |
|
||||||
|
| `/fmu/out/vehicle_attitude` | [px4_msgs::msg::VehicleAttitude](../msg_docs/VehicleAttitude.md) | |
|
||||||
|
| `/fmu/out/vehicle_control_mode` | [px4_msgs::msg::VehicleControlMode](../msg_docs/VehicleControlMode.md) | 50.0 |
|
||||||
|
| `/fmu/out/vehicle_command_ack` | [px4_msgs::msg::VehicleCommandAck](../msg_docs/VehicleCommandAck.md) | |
|
||||||
|
| `/fmu/out/vehicle_global_position` | [px4_msgs::msg::VehicleGlobalPosition](../msg_docs/VehicleGlobalPosition.md) | 50.0 |
|
||||||
|
| `/fmu/out/vehicle_gps_position` | [px4_msgs::msg::SensorGps](../msg_docs/SensorGps.md) | 50.0 |
|
||||||
|
| `/fmu/out/vehicle_local_position` | [px4_msgs::msg::VehicleLocalPosition](../msg_docs/VehicleLocalPosition.md) | 50.0 |
|
||||||
|
| `/fmu/out/vehicle_odometry` | [px4_msgs::msg::VehicleOdometry](../msg_docs/VehicleOdometry.md) | |
|
||||||
|
| `/fmu/out/vehicle_status` | [px4_msgs::msg::VehicleStatus](../msg_docs/VehicleStatus.md) | 5.0 |
|
||||||
|
| `/fmu/out/airspeed_validated` | [px4_msgs::msg::AirspeedValidated](../msg_docs/AirspeedValidated.md) | 50.0 |
|
||||||
|
| `/fmu/out/vtol_vehicle_status` | [px4_msgs::msg::VtolVehicleStatus](../msg_docs/VtolVehicleStatus.md) | |
|
||||||
|
| `/fmu/out/home_position` | [px4_msgs::msg::HomePosition](../msg_docs/HomePosition.md) | 5.0 |
|
||||||
|
|
||||||
|
## Subscriptions
|
||||||
|
|
||||||
|
| Topic | 형식 |
|
||||||
|
| ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| /fmu/in/register_ext_component_request | [px4_msgs::msg::RegisterExtComponentRequest](../msg_docs/RegisterExtComponentRequest.md) |
|
||||||
|
| /fmu/in/unregister_ext_component | [px4_msgs::msg::UnregisterExtComponent](../msg_docs/UnregisterExtComponent.md) |
|
||||||
|
| /fmu/in/config_overrides_request | [px4_msgs::msg::ConfigOverrides](../msg_docs/ConfigOverrides.md) |
|
||||||
|
| /fmu/in/arming_check_reply | [px4_msgs::msg::ArmingCheckReply](../msg_docs/ArmingCheckReply.md) |
|
||||||
|
| /fmu/in/message_format_request | [px4_msgs::msg::MessageFormatRequest](../msg_docs/MessageFormatRequest.md) |
|
||||||
|
| /fmu/in/mode_completed | [px4_msgs::msg::ModeCompleted](../msg_docs/ModeCompleted.md) |
|
||||||
|
| /fmu/in/config_control_setpoints | [px4_msgs::msg::VehicleControlMode](../msg_docs/VehicleControlMode.md) |
|
||||||
|
| /fmu/in/distance_sensor | [px4_msgs::msg::DistanceSensor](../msg_docs/DistanceSensor.md) |
|
||||||
|
| /fmu/in/manual_control_input | [px4_msgs::msg::ManualControlSetpoint](../msg_docs/ManualControlSetpoint.md) |
|
||||||
|
| /fmu/in/offboard_control_mode | [px4_msgs::msg::OffboardControlMode](../msg_docs/OffboardControlMode.md) |
|
||||||
|
| /fmu/in/onboard_computer_status | [px4_msgs::msg::OnboardComputerStatus](../msg_docs/OnboardComputerStatus.md) |
|
||||||
|
| /fmu/in/obstacle_distance | [px4_msgs::msg::ObstacleDistance](../msg_docs/ObstacleDistance.md) |
|
||||||
|
| /fmu/in/sensor_optical_flow | [px4_msgs::msg::SensorOpticalFlow](../msg_docs/SensorOpticalFlow.md) |
|
||||||
|
| /fmu/in/goto_setpoint | [px4_msgs::msg::GotoSetpoint](../msg_docs/GotoSetpoint.md) |
|
||||||
|
| /fmu/in/telemetry_status | [px4_msgs::msg::TelemetryStatus](../msg_docs/TelemetryStatus.md) |
|
||||||
|
| /fmu/in/trajectory_setpoint | [px4_msgs::msg::TrajectorySetpoint](../msg_docs/TrajectorySetpoint.md) |
|
||||||
|
| /fmu/in/vehicle_attitude_setpoint | [px4_msgs::msg::VehicleAttitudeSetpoint](../msg_docs/VehicleAttitudeSetpoint.md) |
|
||||||
|
| /fmu/in/vehicle_mocap_odometry | [px4_msgs::msg::VehicleOdometry](../msg_docs/VehicleOdometry.md) |
|
||||||
|
| /fmu/in/vehicle_rates_setpoint | [px4_msgs::msg::VehicleRatesSetpoint](../msg_docs/VehicleRatesSetpoint.md) |
|
||||||
|
| /fmu/in/vehicle_visual_odometry | [px4_msgs::msg::VehicleOdometry](../msg_docs/VehicleOdometry.md) |
|
||||||
|
| /fmu/in/vehicle_command | [px4_msgs::msg::VehicleCommand](../msg_docs/VehicleCommand.md) |
|
||||||
|
| /fmu/in/vehicle_command_mode_executor | [px4_msgs::msg::VehicleCommand](../msg_docs/VehicleCommand.md) |
|
||||||
|
| /fmu/in/vehicle_thrust_setpoint | [px4_msgs::msg::VehicleThrustSetpoint](../msg_docs/VehicleThrustSetpoint.md) |
|
||||||
|
| /fmu/in/vehicle_torque_setpoint | [px4_msgs::msg::VehicleTorqueSetpoint](../msg_docs/VehicleTorqueSetpoint.md) |
|
||||||
|
| /fmu/in/actuator_motors | [px4_msgs::msg::ActuatorMotors](../msg_docs/ActuatorMotors.md) |
|
||||||
|
| /fmu/in/actuator_servos | [px4_msgs::msg::ActuatorServos](../msg_docs/ActuatorServos.md) |
|
||||||
|
| /fmu/in/aux_global_position | [px4_msgs::msg::VehicleGlobalPosition](../msg_docs/VehicleGlobalPosition.md) |
|
||||||
|
| /fmu/in/fixed_wing_longitudinal_setpoint | [px4_msgs::msg::FixedWingLongitudinalSetpoint](../msg_docs/FixedWingLongitudinalSetpoint.md) |
|
||||||
|
| /fmu/in/fixed_wing_lateral_setpoint | [px4_msgs::msg::FixedWingLateralSetpoint](../msg_docs/FixedWingLateralSetpoint.md) |
|
||||||
|
| /fmu/in/longitudinal_control_configuration | [px4_msgs::msg::LongitudinalControlConfiguration](../msg_docs/LongitudinalControlConfiguration.md) |
|
||||||
|
| /fmu/in/lateral_control_configuration | [px4_msgs::msg::LateralControlConfiguration](../msg_docs/LateralControlConfiguration.md) |
|
||||||
|
|
||||||
|
## Subscriptions Multi
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
## Not Exported
|
||||||
|
|
||||||
|
These messages are not listed in the yaml file.
|
||||||
|
They are not build into the module, and hence are neither published or subscribed.
|
||||||
|
|
||||||
|
:::details
|
||||||
|
See messages
|
||||||
|
|
||||||
|
- [SensorCorrection](../msg_docs/SensorCorrection.md)
|
||||||
|
- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
|
||||||
|
- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
|
||||||
|
- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
|
||||||
|
- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
|
||||||
|
- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
|
||||||
|
- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
|
||||||
|
- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
|
||||||
|
- [GeofenceResult](../msg_docs/GeofenceResult.md)
|
||||||
|
- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
|
||||||
|
- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
|
||||||
|
- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
|
||||||
|
- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
|
||||||
|
- [EventV0](../msg_docs/EventV0.md)
|
||||||
|
- [QshellRetval](../msg_docs/QshellRetval.md)
|
||||||
|
- [RoverThrottleSetpoint](../msg_docs/RoverThrottleSetpoint.md)
|
||||||
|
- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
|
||||||
|
- [RcChannels](../msg_docs/RcChannels.md)
|
||||||
|
- [SensorAccel](../msg_docs/SensorAccel.md)
|
||||||
|
- [GimbalDeviceAttitudeStatus](../msg_docs/GimbalDeviceAttitudeStatus.md)
|
||||||
|
- [EscStatus](../msg_docs/EscStatus.md)
|
||||||
|
- [RoverAttitudeSetpoint](../msg_docs/RoverAttitudeSetpoint.md)
|
||||||
|
- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
|
||||||
|
- [AirspeedWind](../msg_docs/AirspeedWind.md)
|
||||||
|
- [InputRc](../msg_docs/InputRc.md)
|
||||||
|
- [GpioIn](../msg_docs/GpioIn.md)
|
||||||
|
- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
|
||||||
|
- [VehicleImu](../msg_docs/VehicleImu.md)
|
||||||
|
- [Event](../msg_docs/Event.md)
|
||||||
|
- [SensorUwb](../msg_docs/SensorUwb.md)
|
||||||
|
- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
|
||||||
|
- [DatamanResponse](../msg_docs/DatamanResponse.md)
|
||||||
|
- [OrbTest](../msg_docs/OrbTest.md)
|
||||||
|
- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
|
||||||
|
- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
|
||||||
|
- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
|
||||||
|
- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
|
||||||
|
- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
|
||||||
|
- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
|
||||||
|
- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
|
||||||
|
- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
|
||||||
|
- [RoverSteeringSetpoint](../msg_docs/RoverSteeringSetpoint.md)
|
||||||
|
- [CameraCapture](../msg_docs/CameraCapture.md)
|
||||||
|
- [VehicleRoi](../msg_docs/VehicleRoi.md)
|
||||||
|
- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
|
||||||
|
- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
|
||||||
|
- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
|
||||||
|
- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
|
||||||
|
- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
|
||||||
|
- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
|
||||||
|
- [PowerMonitor](../msg_docs/PowerMonitor.md)
|
||||||
|
- [RoverVelocityStatus](../msg_docs/RoverVelocityStatus.md)
|
||||||
|
- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
|
||||||
|
- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
|
||||||
|
- [TecsStatus](../msg_docs/TecsStatus.md)
|
||||||
|
- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
|
||||||
|
- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
|
||||||
|
- [Ping](../msg_docs/Ping.md)
|
||||||
|
- [LedControl](../msg_docs/LedControl.md)
|
||||||
|
- [Wind](../msg_docs/Wind.md)
|
||||||
|
- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
|
||||||
|
- [ActuatorTest](../msg_docs/ActuatorTest.md)
|
||||||
|
- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
|
||||||
|
- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
|
||||||
|
- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
|
||||||
|
- [Gripper](../msg_docs/Gripper.md)
|
||||||
|
- [SensorMag](../msg_docs/SensorMag.md)
|
||||||
|
- [DebugValue](../msg_docs/DebugValue.md)
|
||||||
|
- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
|
||||||
|
- [RcParameterMap](../msg_docs/RcParameterMap.md)
|
||||||
|
- [LandingGear](../msg_docs/LandingGear.md)
|
||||||
|
- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
|
||||||
|
- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
|
||||||
|
- [UlogStream](../msg_docs/UlogStream.md)
|
||||||
|
- [GimbalControls](../msg_docs/GimbalControls.md)
|
||||||
|
- [RoverRateSetpoint](../msg_docs/RoverRateSetpoint.md)
|
||||||
|
- [LogMessage](../msg_docs/LogMessage.md)
|
||||||
|
- [RoverVelocitySetpoint](../msg_docs/RoverVelocitySetpoint.md)
|
||||||
|
- [GpioOut](../msg_docs/GpioOut.md)
|
||||||
|
- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
|
||||||
|
- [VelocityLimits](../msg_docs/VelocityLimits.md)
|
||||||
|
- [MagWorkerData](../msg_docs/MagWorkerData.md)
|
||||||
|
- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
|
||||||
|
- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
|
||||||
|
- [SensorBaro](../msg_docs/SensorBaro.md)
|
||||||
|
- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
|
||||||
|
- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
|
||||||
|
- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
|
||||||
|
- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
|
||||||
|
- [Rpm](../msg_docs/Rpm.md)
|
||||||
|
- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
|
||||||
|
- [MountOrientation](../msg_docs/MountOrientation.md)
|
||||||
|
- [ActionRequest](../msg_docs/ActionRequest.md)
|
||||||
|
- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
|
||||||
|
- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
|
||||||
|
- [LoggerStatus](../msg_docs/LoggerStatus.md)
|
||||||
|
- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
|
||||||
|
- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
|
||||||
|
- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
|
||||||
|
- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
|
||||||
|
- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
|
||||||
|
- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
|
||||||
|
- [OrbitStatus](../msg_docs/OrbitStatus.md)
|
||||||
|
- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
|
||||||
|
- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
|
||||||
|
- [DatamanRequest](../msg_docs/DatamanRequest.md)
|
||||||
|
- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
|
||||||
|
- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
|
||||||
|
- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
|
||||||
|
- [Cpuload](../msg_docs/Cpuload.md)
|
||||||
|
- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
|
||||||
|
- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
|
||||||
|
- [EscReport](../msg_docs/EscReport.md)
|
||||||
|
- [DebugArray](../msg_docs/DebugArray.md)
|
||||||
|
- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
|
||||||
|
- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
|
||||||
|
- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
|
||||||
|
- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
|
||||||
|
- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
|
||||||
|
- [QshellReq](../msg_docs/QshellReq.md)
|
||||||
|
- [CameraStatus](../msg_docs/CameraStatus.md)
|
||||||
|
- [GpsInjectData](../msg_docs/GpsInjectData.md)
|
||||||
|
- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
|
||||||
|
- [TransponderReport](../msg_docs/TransponderReport.md)
|
||||||
|
- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
|
||||||
|
- [MavlinkLog](../msg_docs/MavlinkLog.md)
|
||||||
|
- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
|
||||||
|
- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
|
||||||
|
- [Mission](../msg_docs/Mission.md)
|
||||||
|
- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
|
||||||
|
- [MissionResult](../msg_docs/MissionResult.md)
|
||||||
|
- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
|
||||||
|
- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
|
||||||
|
- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
|
||||||
|
- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
|
||||||
|
- [CellularStatus](../msg_docs/CellularStatus.md)
|
||||||
|
- [GpsDump](../msg_docs/GpsDump.md)
|
||||||
|
- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
|
||||||
|
- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
|
||||||
|
- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
|
||||||
|
- [RoverPositionSetpoint](../msg_docs/RoverPositionSetpoint.md)
|
||||||
|
- [FollowTarget](../msg_docs/FollowTarget.md)
|
||||||
|
- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
|
||||||
|
- [EstimatorStates](../msg_docs/EstimatorStates.md)
|
||||||
|
- [SensorGyro](../msg_docs/SensorGyro.md)
|
||||||
|
- [SensorAirflow](../msg_docs/SensorAirflow.md)
|
||||||
|
- [ButtonEvent](../msg_docs/ButtonEvent.md)
|
||||||
|
- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
|
||||||
|
- [GpioConfig](../msg_docs/GpioConfig.md)
|
||||||
|
- [CameraTrigger](../msg_docs/CameraTrigger.md)
|
||||||
|
- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
|
||||||
|
- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
|
||||||
|
- [HealthReport](../msg_docs/HealthReport.md)
|
||||||
|
- [PowerButtonState](../msg_docs/PowerButtonState.md)
|
||||||
|
- [RadioStatus](../msg_docs/RadioStatus.md)
|
||||||
|
- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
|
||||||
|
- [EstimatorBias](../msg_docs/EstimatorBias.md)
|
||||||
|
- [DebugVect](../msg_docs/DebugVect.md)
|
||||||
|
- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
|
||||||
|
- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
|
||||||
|
- [PpsCapture](../msg_docs/PpsCapture.md)
|
||||||
|
- [SensorSelection](../msg_docs/SensorSelection.md)
|
||||||
|
- [SystemPower](../msg_docs/SystemPower.md)
|
||||||
|
- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
|
||||||
|
- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
|
||||||
|
- [VehicleAirData](../msg_docs/VehicleAirData.md)
|
||||||
|
- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
|
||||||
|
- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
|
||||||
|
- [GpioRequest](../msg_docs/GpioRequest.md)
|
||||||
|
- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
|
||||||
|
- [RtlStatus](../msg_docs/RtlStatus.md)
|
||||||
|
- [Airspeed](../msg_docs/Airspeed.md)
|
||||||
|
- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
|
||||||
|
- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
|
||||||
|
- [IrlockReport](../msg_docs/IrlockReport.md)
|
||||||
|
- [HeaterStatus](../msg_docs/HeaterStatus.md)
|
||||||
|
- [AdcReport](../msg_docs/AdcReport.md)
|
||||||
|
- [PwmInput](../msg_docs/PwmInput.md)
|
||||||
|
- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
|
||||||
|
- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
|
||||||
|
- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
|
||||||
|
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
|
||||||
|
- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
|
||||||
|
- [TuneControl](../msg_docs/TuneControl.md)
|
||||||
|
- [WheelEncoders](../msg_docs/WheelEncoders.md)
|
||||||
|
- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
|
||||||
|
- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
|
||||||
|
- [SensorsStatus](../msg_docs/SensorsStatus.md)
|
||||||
|
|
||||||
|
:::
|
||||||
@@ -38,7 +38,7 @@ The PX4 [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) is gen
|
|||||||
The agent has no dependency on client code.
|
The agent has no dependency on client code.
|
||||||
It can be built standalone or in a ROS 2 workspace, or installed as a snap package on Ubuntu.
|
It can be built standalone or in a ROS 2 workspace, or installed as a snap package on Ubuntu.
|
||||||
|
|
||||||
When PX4 is built, a code generator uses the uORB message definitions in the source tree ([PX4-Autopilot/msg](https://github.com/PX4/PX4-Autopilot/tree/main/msg)) to compile support for the subset of uORB topics in [PX4-Autopilot/src/modules/uxrce_dds_client/dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) into [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client).
|
When PX4 is built, a code generator uses the uORB message definitions in the source tree ([PX4-Autopilot/msg](https://github.com/PX4/PX4-Autopilot/tree/main/msg)) to compile support for the subset of uORB topics in [/src/modules/uxrce_dds_client/dds_topics.yaml](../middleware/dds_topics.md) into [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client).
|
||||||
|
|
||||||
PX4 main or release builds automatically export the set of uORB messages definitions in the build to an associated branch in [PX4/px4_msgs](https://github.com/PX4/px4_msgs).
|
PX4 main or release builds automatically export the set of uORB messages definitions in the build to an associated branch in [PX4/px4_msgs](https://github.com/PX4/px4_msgs).
|
||||||
|
|
||||||
@@ -326,13 +326,11 @@ ROS_DOMAIN_ID=3 PX4_UXRCE_DDS_PORT=9999 PX4_UXRCE_DDS_NS=drone make px4_sitl gz_
|
|||||||
|
|
||||||
## Supported uORB Messages
|
## Supported uORB Messages
|
||||||
|
|
||||||
The set of [PX4 uORB topics](../msg_docs/index.md) that are exposed through the client are set in [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml).
|
The set of [PX4 uORB topics](../msg_docs/index.md) that are exposed through the client are set in [dds_topics.yaml](../middleware/dds_topics.md).
|
||||||
|
|
||||||
The topics are release specific (support is compiled into [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) at build time).
|
The topics are release specific (support is compiled into [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) at build time).
|
||||||
While most releases should support a very similar set of messages, to be certain you would need to check the yaml file for your particular release.
|
While most releases should support a very similar set of messages, to be certain you would need to check the yaml file for your particular release.
|
||||||
|
|
||||||
<!-- Jublish the set we use?: https://github.com/PX4/px4_msgs/issues/22 -->
|
|
||||||
|
|
||||||
Note that ROS 2/DDS needs to have the _same_ message definitions that were used to create the uXRCE-DDS client module in the PX4 Firmware in order to interpret the messages.
|
Note that ROS 2/DDS needs to have the _same_ message definitions that were used to create the uXRCE-DDS client module in the PX4 Firmware in order to interpret the messages.
|
||||||
The message definitions are stored in the ROS 2 interface package [PX4/px4_msgs](https://github.com/PX4/px4_msgs), and they are automatically synchronized by CI on the `main` and release branches.
|
The message definitions are stored in the ROS 2 interface package [PX4/px4_msgs](https://github.com/PX4/px4_msgs), and they are automatically synchronized by CI on the `main` and release branches.
|
||||||
Note that all the messages from PX4 source code are present in the repository, but only those listed in `dds_topics.yaml` will be available as ROS 2 topics.
|
Note that all the messages from PX4 source code are present in the repository, but only those listed in `dds_topics.yaml` will be available as ROS 2 topics.
|
||||||
@@ -349,21 +347,21 @@ Therefore,
|
|||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
Technically, [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) completely defines the relationship between PX4 uORB topics and ROS 2 messages.
|
Technically, [dds_topics.yaml](../middleware/dds_topics.md) completely defines the relationship between PX4 uORB topics and ROS 2 messages.
|
||||||
For more information see [DDS Topics YAML](#dds-topics-yaml) below.
|
For more information see [DDS Topics YAML](#dds-topics-yaml) below.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## Customizing the Namespace
|
## Customizing the Namespace
|
||||||
|
|
||||||
Custom topic and service namespaces can be applied at build time (changing [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml)) or at runtime (which is useful for multi vehicle operations):
|
Custom topic and service namespaces can be applied at build time (changing [dds_topics.yaml](../middleware/dds_topics.md)) or at runtime (which is useful for multi vehicle operations):
|
||||||
|
|
||||||
- One possibility is to use the `-n` option when starting the [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) from command line.
|
- One possibility is to use the `-n` option when starting the [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) from command line.
|
||||||
This technique can be used both in simulation and real vehicles.
|
This technique can be used both in simulation and real vehicles.
|
||||||
- A custom namespace can be provided for simulations (only) by setting the environment variable `PX4_UXRCE_DDS_NS` before starting the simulation.
|
- A custom namespace can be provided for simulations (only) by setting the environment variable `PX4_UXRCE_DDS_NS` before starting the simulation.
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
Changing the namespace at runtime will append the desired namespace as a prefix to all `topic` fields in [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) and all [service servers](#dds-ros-2-services).
|
Changing the namespace at runtime will append the desired namespace as a prefix to all `topic` fields in [dds_topics.yaml](../middleware/dds_topics.md) and all [service servers](#dds-ros-2-services).
|
||||||
Therefore, commands like:
|
Therefore, commands like:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@@ -420,7 +418,7 @@ Deadline, lifespan, and lease durations are also all set to "default".
|
|||||||
|
|
||||||
## DDS Topics YAML
|
## DDS Topics YAML
|
||||||
|
|
||||||
The PX4 yaml file [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) defines the set of PX4 uORB topics that are built into firmware and published.
|
The PX4 [dds_topics.yaml](../middleware/dds_topics.md) file defines the set of PX4 uORB topics that are built into firmware and published.
|
||||||
More precisely, it completely defines the relationship/pairing between PX4 uORB and ROS 2 messages.
|
More precisely, it completely defines the relationship/pairing between PX4 uORB and ROS 2 messages.
|
||||||
|
|
||||||
The file is structured as follows:
|
The file is structured as follows:
|
||||||
@@ -549,7 +547,7 @@ Take a look at the [client startup section](#starting-the-client) to learn how t
|
|||||||
|
|
||||||
#### New file for setting which topics are published
|
#### New file for setting which topics are published
|
||||||
|
|
||||||
The list of topics that are published and subscribed for a particular firmware is now managed by the [dds_topic.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) configuration file, which replaces [urtps_bridge_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/release/1.13/msg/tools/urtps_bridge_topics.yaml)
|
The list of topics that are published and subscribed for a particular firmware is now managed by the [dds_topics.yaml](../middleware/dds_topics.md) configuration file, which replaces [urtps_bridge_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/release/1.13/msg/tools/urtps_bridge_topics.yaml)
|
||||||
|
|
||||||
See [Supported uORB Messages](#supported-uorb-messages) and [DDS Topics YAML](#dds-topics-yaml) sections for more information.
|
See [Supported uORB Messages](#supported-uorb-messages) and [DDS Topics YAML](#dds-topics-yaml) sections for more information.
|
||||||
|
|
||||||
|
|||||||
+119
-119
@@ -29,151 +29,151 @@ This consists of a single _C_ file and a _cmake_ definition (which tells the too
|
|||||||
|
|
||||||
2. Create a new C file in that directory named **px4_simple_app.c**:
|
2. Create a new C file in that directory named **px4_simple_app.c**:
|
||||||
|
|
||||||
- 기본 헤더를 페이지 상단에 복사합니다.
|
- 기본 헤더를 페이지 상단에 복사합니다.
|
||||||
이것은 기여한 모든 파일에 첨부하여야 합니다.
|
이것은 기여한 모든 파일에 첨부하여야 합니다.
|
||||||
|
|
||||||
```c
|
```c
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
*
|
*
|
||||||
* Copyright (c) 2012-2022 PX4 Development Team. All rights reserved.
|
* Copyright (c) 2012-2022 PX4 Development Team. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
* are met:
|
* are met:
|
||||||
*
|
*
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in
|
* notice, this list of conditions and the following disclaimer in
|
||||||
* the documentation and/or other materials provided with the
|
* the documentation and/or other materials provided with the
|
||||||
* distribution.
|
* distribution.
|
||||||
* 3. Neither the name PX4 nor the names of its contributors may be
|
* 3. Neither the name PX4 nor the names of its contributors may be
|
||||||
* used to endorse or promote products derived from this software
|
* used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
* without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
```
|
```
|
||||||
|
|
||||||
- 기본 헤더 아래에 다음 코드를 복사합니다.
|
- 기본 헤더 아래에 다음 코드를 복사합니다.
|
||||||
이것은 기여한 모든 파일에 첨부하여야 합니다.
|
이것은 기여한 모든 파일에 첨부하여야 합니다.
|
||||||
|
|
||||||
```c
|
```c
|
||||||
/**
|
/**
|
||||||
* @file px4_simple_app.c
|
* @file px4_simple_app.c
|
||||||
* Minimal application example for PX4 autopilot
|
* Minimal application example for PX4 autopilot
|
||||||
*
|
*
|
||||||
* @author Example User <mail@example.com>
|
* @author Example User <mail@example.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <px4_platform_common/log.h>
|
#include <px4_platform_common/log.h>
|
||||||
|
|
||||||
__EXPORT int px4_simple_app_main(int argc, char *argv[]);
|
__EXPORT int px4_simple_app_main(int argc, char *argv[]);
|
||||||
|
|
||||||
int px4_simple_app_main(int argc, char *argv[])
|
int px4_simple_app_main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
PX4_INFO("Hello Sky!");
|
PX4_INFO("Hello Sky!");
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
The main function must be named `<module_name>_main` and exported from the module as shown.
|
The main function must be named `<module_name>_main` and exported from the module as shown.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
`PX4_INFO` is the equivalent of `printf` for the PX4 shell (included from **px4_platform_common/log.h**).
|
`PX4_INFO` is the equivalent of `printf` for the PX4 shell (included from **px4_platform_common/log.h**).
|
||||||
There are different log levels: `PX4_INFO`, `PX4_WARN`, `PX4_ERR`, `PX4_DEBUG`.
|
There are different log levels: `PX4_INFO`, `PX4_WARN`, `PX4_ERR`, `PX4_DEBUG`.
|
||||||
Warnings and errors are additionally added to the [ULog](../dev_log/ulog_file_format.md) and shown on [Flight Review](https://logs.px4.io/).
|
Warnings and errors are additionally added to the [ULog](../dev_log/ulog_file_format.md) and shown on [Flight Review](https://logs.px4.io/).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
3. Create and open a new _cmake_ definition file named **CMakeLists.txt**.
|
3. Create and open a new _cmake_ definition file named **CMakeLists.txt**.
|
||||||
아래 텍스트를 복사하십시오.
|
아래 텍스트를 복사하십시오.
|
||||||
|
|
||||||
```cmake
|
```cmake
|
||||||
############################################################################
|
############################################################################
|
||||||
#
|
#
|
||||||
# Copyright (c) 2015 PX4 Development Team. All rights reserved.
|
# Copyright (c) 2015 PX4 Development Team. All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions
|
# modification, are permitted provided that the following conditions
|
||||||
# are met:
|
# are met:
|
||||||
#
|
#
|
||||||
# 1. Redistributions of source code must retain the above copyright
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
# notice, this list of conditions and the following disclaimer.
|
# notice, this list of conditions and the following disclaimer.
|
||||||
# 2. Redistributions in binary form must reproduce the above copyright
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
# notice, this list of conditions and the following disclaimer in
|
# notice, this list of conditions and the following disclaimer in
|
||||||
# the documentation and/or other materials provided with the
|
# the documentation and/or other materials provided with the
|
||||||
# distribution.
|
# distribution.
|
||||||
# 3. Neither the name PX4 nor the names of its contributors may be
|
# 3. Neither the name PX4 nor the names of its contributors may be
|
||||||
# used to endorse or promote products derived from this software
|
# used to endorse or promote products derived from this software
|
||||||
# without specific prior written permission.
|
# without specific prior written permission.
|
||||||
#
|
#
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||||
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||||
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
# POSSIBILITY OF SUCH DAMAGE.
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
#
|
#
|
||||||
############################################################################
|
############################################################################
|
||||||
px4_add_module(
|
px4_add_module(
|
||||||
MODULE examples__px4_simple_app
|
MODULE examples__px4_simple_app
|
||||||
MAIN px4_simple_app
|
MAIN px4_simple_app
|
||||||
STACK_MAIN 2000
|
STACK_MAIN 2000
|
||||||
SRCS
|
SRCS
|
||||||
px4_simple_app.c
|
px4_simple_app.c
|
||||||
DEPENDS
|
DEPENDS
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
The `px4_add_module()` method builds a static library from a module description.
|
The `px4_add_module()` method builds a static library from a module description.
|
||||||
|
|
||||||
- The `MODULE` block is the Firmware-unique name of the module (by convention the module name is prefixed by parent directories back to `src`).
|
- The `MODULE` block is the Firmware-unique name of the module (by convention the module name is prefixed by parent directories back to `src`).
|
||||||
- The `MAIN` block lists the entry point of the module, which registers the command with NuttX so that it can be called from the PX4 shell or SITL console.
|
- The `MAIN` block lists the entry point of the module, which registers the command with NuttX so that it can be called from the PX4 shell or SITL console.
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
The `px4_add_module()` format is documented in [PX4-Autopilot/cmake/px4_add_module.cmake](https://github.com/PX4/PX4-Autopilot/blob/main/cmake/px4_add_module.cmake). <!-- NEED px4_version -->
|
The `px4_add_module()` format is documented in [PX4-Autopilot/cmake/px4_add_module.cmake](https://github.com/PX4/PX4-Autopilot/blob/main/cmake/px4_add_module.cmake). <!-- NEED px4_version -->
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
If you specify `DYNAMIC` as an option to `px4_add_module`, a _shared library_ is created instead of a static library on POSIX platforms (these can be loaded without having to recompile PX4, and shared to others as binaries rather than source code).
|
If you specify `DYNAMIC` as an option to `px4_add_module`, a _shared library_ is created instead of a static library on POSIX platforms (these can be loaded without having to recompile PX4, and shared to others as binaries rather than source code).
|
||||||
Your app will not become a builtin command, but ends up in a separate file called `examples__px4_simple_app.px4mod`.
|
Your app will not become a builtin command, but ends up in a separate file called `examples__px4_simple_app.px4mod`.
|
||||||
You can then run your command by loading the file at runtime using the `dyn` command: `dyn ./examples__px4_simple_app.px4mod`
|
You can then run your command by loading the file at runtime using the `dyn` command: `dyn ./examples__px4_simple_app.px4mod`
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
4. Create and open a new _Kconfig_ definition file named **Kconfig** and define your symbol for naming (see [Kconfig naming convention](../hardware/porting_guide_config.md#px4-kconfig-symbol-naming-convention)).
|
4. Create and open a new _Kconfig_ definition file named **Kconfig** and define your symbol for naming (see [Kconfig naming convention](../hardware/porting_guide_config.md#px4-kconfig-symbol-naming-convention)).
|
||||||
아래 텍스트를 복사하십시오.
|
아래 텍스트를 복사하십시오.
|
||||||
|
|
||||||
```
|
```
|
||||||
menuconfig EXAMPLES_PX4_SIMPLE_APP
|
menuconfig EXAMPLES_PX4_SIMPLE_APP
|
||||||
bool "px4_simple_app"
|
bool "px4_simple_app"
|
||||||
default n
|
default n
|
||||||
---help---
|
---help---
|
||||||
Enable support for px4_simple_app
|
Enable support for px4_simple_app
|
||||||
```
|
```
|
||||||
|
|
||||||
## 애플리케이션/펌웨어 빌드
|
## 애플리케이션/펌웨어 빌드
|
||||||
|
|
||||||
|
|||||||
@@ -347,7 +347,7 @@ CONFIG_DRIVERS_RPM_CAPTURE=y
|
|||||||
Additionally, to enable the module:
|
Additionally, to enable the module:
|
||||||
|
|
||||||
- Set [ICE_EN](../advanced_config/parameter_reference.md#ICE_EN)
|
- Set [ICE_EN](../advanced_config/parameter_reference.md#ICE_EN)
|
||||||
to true and adjust the other `ICE_` module parameters according to your needs.
|
to true and adjust the other `ICE_` module parameters according to your needs.
|
||||||
- Set [RPM_CAP_ENABLE](../advanced_config/parameter_reference.md#RPM_CAP_ENABLE) to true.
|
- Set [RPM_CAP_ENABLE](../advanced_config/parameter_reference.md#RPM_CAP_ENABLE) to true.
|
||||||
|
|
||||||
The module outputs control signals for ignition, throttle, and choke,
|
The module outputs control signals for ignition, throttle, and choke,
|
||||||
@@ -367,8 +367,8 @@ The state machine:
|
|||||||
|
|
||||||
- Checks if [Rpm.msg](../msg_docs/Rpm.md) is updated to know if the engine is running
|
- Checks if [Rpm.msg](../msg_docs/Rpm.md) is updated to know if the engine is running
|
||||||
- Allows for user inputs from:
|
- Allows for user inputs from:
|
||||||
- AUX{N}
|
- AUX{N}
|
||||||
- Arming state in [VehicleStatus.msg](../msg_docs/VehicleStatus.md)
|
- Arming state in [VehicleStatus.msg](../msg_docs/VehicleStatus.md)
|
||||||
|
|
||||||
The module publishes [InternalCombustionEngineControl.msg](../msg_docs/InternalCombustionEngineControl.md).
|
The module publishes [InternalCombustionEngineControl.msg](../msg_docs/InternalCombustionEngineControl.md).
|
||||||
|
|
||||||
@@ -484,7 +484,7 @@ The normal log is always a superset of the mission log.
|
|||||||
The implementation uses two threads:
|
The implementation uses two threads:
|
||||||
|
|
||||||
- The main thread, running at a fixed rate (or polling on a topic if started with -p) and checking for
|
- The main thread, running at a fixed rate (or polling on a topic if started with -p) and checking for
|
||||||
data updates
|
data updates
|
||||||
- The writer thread, writing data to the file
|
- The writer thread, writing data to the file
|
||||||
|
|
||||||
In between there is a write buffer with configurable size (and another fixed-size buffer for
|
In between there is a write buffer with configurable size (and another fixed-size buffer for
|
||||||
@@ -688,9 +688,9 @@ There are 2 environment variables used for configuration: `replay`, which must b
|
|||||||
the log file to be replayed. The second is the mode, specified via `replay_mode`:
|
the log file to be replayed. The second is the mode, specified via `replay_mode`:
|
||||||
|
|
||||||
- `replay_mode=ekf2`: specific EKF2 replay mode. It can only be used with the ekf2 module, but allows the replay
|
- `replay_mode=ekf2`: specific EKF2 replay mode. It can only be used with the ekf2 module, but allows the replay
|
||||||
to run as fast as possible.
|
to run as fast as possible.
|
||||||
- Generic otherwise: this can be used to replay any module(s), but the replay will be done with the same speed as the
|
- Generic otherwise: this can be used to replay any module(s), but the replay will be done with the same speed as the
|
||||||
log was recorded.
|
log was recorded.
|
||||||
|
|
||||||
The module is typically used together with uORB publisher rules, to specify which messages should be replayed.
|
The module is typically used together with uORB publisher rules, to specify which messages should be replayed.
|
||||||
The replay module will just publish all messages that are found in the log. It also applies the parameters from
|
The replay module will just publish all messages that are found in the log. It also applies the parameters from
|
||||||
@@ -842,12 +842,12 @@ it into a more usable form, and publishes it for the rest of the system.
|
|||||||
The provided functionality includes:
|
The provided functionality includes:
|
||||||
|
|
||||||
- Read the output from the sensor drivers (`SensorGyro`, etc.).
|
- Read the output from the sensor drivers (`SensorGyro`, etc.).
|
||||||
If there are multiple of the same type, do voting and failover handling.
|
If there are multiple of the same type, do voting and failover handling.
|
||||||
Then apply the board rotation and temperature calibration (if enabled). And finally publish the data; one of the
|
Then apply the board rotation and temperature calibration (if enabled). And finally publish the data; one of the
|
||||||
topics is `SensorCombined`, used by many parts of the system.
|
topics is `SensorCombined`, used by many parts of the system.
|
||||||
- Make sure the sensor drivers get the updated calibration parameters (scale & offset) when the parameters change or
|
- Make sure the sensor drivers get the updated calibration parameters (scale & offset) when the parameters change or
|
||||||
on startup. The sensor drivers use the ioctl interface for parameter updates. For this to work properly, the
|
on startup. The sensor drivers use the ioctl interface for parameter updates. For this to work properly, the
|
||||||
sensor drivers must already be running when `sensors` is started.
|
sensor drivers must already be running when `sensors` is started.
|
||||||
- Do sensor consistency checks and publish the `SensorsStatusImu` topic.
|
- Do sensor consistency checks and publish the `SensorsStatusImu` topic.
|
||||||
|
|
||||||
### 구현
|
### 구현
|
||||||
|
|||||||
@@ -25,38 +25,38 @@ Other examples in Python can be found here: [integrationtests/python_src/px4_it/
|
|||||||
|
|
||||||
1. Open the terminal and go to `~/catkin_ws/src` directory
|
1. Open the terminal and go to `~/catkin_ws/src` directory
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
roscd # Should cd into ~/catkin_ws/devel
|
roscd # Should cd into ~/catkin_ws/devel
|
||||||
cd ..
|
cd ..
|
||||||
cd src
|
cd src
|
||||||
```
|
```
|
||||||
|
|
||||||
2. In the `~/catkin_ws/src` directory create a new package named `offboard_py` (in this case) with the `rospy` dependency:
|
2. In the `~/catkin_ws/src` directory create a new package named `offboard_py` (in this case) with the `rospy` dependency:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
catkin_create_pkg offboard_py rospy
|
catkin_create_pkg offboard_py rospy
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Build the new package in the `~/catkin_ws/` directory:
|
3. Build the new package in the `~/catkin_ws/` directory:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd .. # Assuming previous directory to be ~/catkin_ws/src
|
cd .. # Assuming previous directory to be ~/catkin_ws/src
|
||||||
catkin build
|
catkin build
|
||||||
source devel/setup.bash
|
source devel/setup.bash
|
||||||
```
|
```
|
||||||
|
|
||||||
4. You should now be able to cd into the package by using:
|
4. You should now be able to cd into the package by using:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
roscd offboard_py
|
roscd offboard_py
|
||||||
```
|
```
|
||||||
|
|
||||||
5. To store your Python files, create a new folder called `/scripts` on the package:
|
5. To store your Python files, create a new folder called `/scripts` on the package:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
mkdir scripts
|
mkdir scripts
|
||||||
cd scripts
|
cd scripts
|
||||||
```
|
```
|
||||||
|
|
||||||
## 코드
|
## 코드
|
||||||
|
|
||||||
|
|||||||
@@ -37,63 +37,63 @@ To build and run the example:
|
|||||||
|
|
||||||
2. Create and navigate into a new colcon workspace directory using:
|
2. Create and navigate into a new colcon workspace directory using:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
mkdir -p ~/ws_offboard_control/src/
|
mkdir -p ~/ws_offboard_control/src/
|
||||||
cd ~/ws_offboard_control/src/
|
cd ~/ws_offboard_control/src/
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Clone the [px4_msgs](https://github.com/PX4/px4_msgs) repo to the `/src` directory (this repo is needed in every ROS 2 PX4 workspace!):
|
3. Clone the [px4_msgs](https://github.com/PX4/px4_msgs) repo to the `/src` directory (this repo is needed in every ROS 2 PX4 workspace!):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/PX4/px4_msgs.git
|
git clone https://github.com/PX4/px4_msgs.git
|
||||||
# checkout the matching release branch if not using PX4 main.
|
# checkout the matching release branch if not using PX4 main.
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Clone the example repository [px4_ros_com](https://github.com/PX4/px4_ros_com) to the `/src` directory:
|
4. Clone the example repository [px4_ros_com](https://github.com/PX4/px4_ros_com) to the `/src` directory:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/PX4/px4_ros_com.git
|
git clone https://github.com/PX4/px4_ros_com.git
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Source the ROS 2 development environment into the current terminal and compile the workspace using `colcon`:
|
5. Source the ROS 2 development environment into the current terminal and compile the workspace using `colcon`:
|
||||||
|
|
||||||
:::: tabs
|
:::: tabs
|
||||||
|
|
||||||
::: tab humble
|
::: tab humble
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ..
|
cd ..
|
||||||
source /opt/ros/humble/setup.bash
|
source /opt/ros/humble/setup.bash
|
||||||
colcon build
|
colcon build
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
::: tab foxy
|
::: tab foxy
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ..
|
cd ..
|
||||||
source /opt/ros/foxy/setup.bash
|
source /opt/ros/foxy/setup.bash
|
||||||
colcon build
|
colcon build
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
::::
|
::::
|
||||||
|
|
||||||
6. Source the `local_setup.bash`:
|
6. Source the `local_setup.bash`:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
source install/local_setup.bash
|
source install/local_setup.bash
|
||||||
```
|
```
|
||||||
|
|
||||||
7. Launch the example.
|
7. Launch the example.
|
||||||
|
|
||||||
```
|
```
|
||||||
ros2 run px4_ros_com offboard_control
|
ros2 run px4_ros_com offboard_control
|
||||||
```
|
```
|
||||||
|
|
||||||
The vehicle should arm, ascend 5 metres, and then wait (perpetually).
|
The vehicle should arm, ascend 5 metres, and then wait (perpetually).
|
||||||
|
|
||||||
|
|||||||
+140
-140
@@ -28,7 +28,7 @@ The agent acts as a proxy for the client to publish and subscribe to topics in t
|
|||||||
|
|
||||||
The PX4 [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) is generated at build time and included in PX4 firmware by default.
|
The PX4 [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) is generated at build time and included in PX4 firmware by default.
|
||||||
It includes both the "generic" micro XRCE-DDS client code, and PX4-specific translation code that it uses to publish to/from uORB topics.
|
It includes both the "generic" micro XRCE-DDS client code, and PX4-specific translation code that it uses to publish to/from uORB topics.
|
||||||
The subset of uORB messages that are generated into the client are listed in [PX4-Autopilot/src/modules/uxrce_dds_client/dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml).
|
The subset of uORB messages that are generated into the client are specified in [dds_topics.yaml](../middleware/dds_topics.md).
|
||||||
The generator uses the uORB message definitions in the source tree: [PX4-Autopilot/msg](https://github.com/PX4/PX4-Autopilot/tree/main/msg) to create the code for sending ROS 2 messages.
|
The generator uses the uORB message definitions in the source tree: [PX4-Autopilot/msg](https://github.com/PX4/PX4-Autopilot/tree/main/msg) to create the code for sending ROS 2 messages.
|
||||||
|
|
||||||
ROS 2 applications need to be built in a workspace that has the _same_ message definitions that were used to create the uXRCE-DDS client module in the PX4 Firmware.
|
ROS 2 applications need to be built in a workspace that has the _same_ message definitions that were used to create the uXRCE-DDS client module in the PX4 Firmware.
|
||||||
@@ -97,48 +97,48 @@ To install ROS 2 and its dependencies:
|
|||||||
|
|
||||||
1. Install ROS 2.
|
1. Install ROS 2.
|
||||||
|
|
||||||
:::: tabs
|
:::: tabs
|
||||||
|
|
||||||
::: tab humble
|
::: tab humble
|
||||||
To install ROS 2 "Humble" on Ubuntu 22.04:
|
To install ROS 2 "Humble" on Ubuntu 22.04:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt update && sudo apt install locales
|
sudo apt update && sudo apt install locales
|
||||||
sudo locale-gen en_US en_US.UTF-8
|
sudo locale-gen en_US en_US.UTF-8
|
||||||
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
|
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
|
||||||
export LANG=en_US.UTF-8
|
export LANG=en_US.UTF-8
|
||||||
sudo apt install software-properties-common
|
sudo apt install software-properties-common
|
||||||
sudo add-apt-repository universe
|
sudo add-apt-repository universe
|
||||||
sudo apt update && sudo apt install curl -y
|
sudo apt update && sudo apt install curl -y
|
||||||
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
|
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
|
||||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
|
||||||
sudo apt update && sudo apt upgrade -y
|
sudo apt update && sudo apt upgrade -y
|
||||||
sudo apt install ros-humble-desktop
|
sudo apt install ros-humble-desktop
|
||||||
sudo apt install ros-dev-tools
|
sudo apt install ros-dev-tools
|
||||||
source /opt/ros/humble/setup.bash && echo "source /opt/ros/humble/setup.bash" >> .bashrc
|
source /opt/ros/humble/setup.bash && echo "source /opt/ros/humble/setup.bash" >> .bashrc
|
||||||
```
|
```
|
||||||
|
|
||||||
The instructions above are reproduced from the official installation guide: [Install ROS 2 Humble](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html).
|
The instructions above are reproduced from the official installation guide: [Install ROS 2 Humble](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html).
|
||||||
You can install _either_ the desktop (`ros-humble-desktop`) _or_ bare-bones versions (`ros-humble-ros-base`), _and_ the development tools (`ros-dev-tools`).
|
You can install _either_ the desktop (`ros-humble-desktop`) _or_ bare-bones versions (`ros-humble-ros-base`), _and_ the development tools (`ros-dev-tools`).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
::: tab foxy
|
::: tab foxy
|
||||||
To install ROS 2 "Foxy" on Ubuntu 20.04:
|
To install ROS 2 "Foxy" on Ubuntu 20.04:
|
||||||
|
|
||||||
- Follow the official installation guide: [Install ROS 2 Foxy](https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html).
|
- Follow the official installation guide: [Install ROS 2 Foxy](https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html).
|
||||||
|
|
||||||
You can install _either_ the desktop (`ros-foxy-desktop`) _or_ bare-bones versions (`ros-foxy-ros-base`), _and_ the development tools (`ros-dev-tools`).
|
You can install _either_ the desktop (`ros-foxy-desktop`) _or_ bare-bones versions (`ros-foxy-ros-base`), _and_ the development tools (`ros-dev-tools`).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
::::
|
::::
|
||||||
|
|
||||||
2. Some Python dependencies must also be installed (using **`pip`** or **`apt`**):
|
2. Some Python dependencies must also be installed (using **`pip`** or **`apt`**):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
pip install --user -U empy==3.3.4 pyros-genmsg setuptools
|
pip install --user -U empy==3.3.4 pyros-genmsg setuptools
|
||||||
```
|
```
|
||||||
|
|
||||||
### Setup Micro XRCE-DDS Agent & Client
|
### Setup Micro XRCE-DDS Agent & Client
|
||||||
|
|
||||||
@@ -155,22 +155,22 @@ To setup and start the agent:
|
|||||||
|
|
||||||
2. Enter the following commands to fetch and build the agent from source:
|
2. Enter the following commands to fetch and build the agent from source:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone -b v2.4.2 https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
|
git clone -b v2.4.2 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/
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Start the agent with settings for connecting to the uXRCE-DDS client running on the simulator:
|
3. Start the agent with settings for connecting to the uXRCE-DDS client running on the simulator:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
MicroXRCEAgent udp4 -p 8888
|
MicroXRCEAgent udp4 -p 8888
|
||||||
```
|
```
|
||||||
|
|
||||||
The agent is now running, but you won't see much until we start PX4 (in the next step).
|
The agent is now running, but you won't see much until we start PX4 (in the next step).
|
||||||
|
|
||||||
@@ -187,31 +187,31 @@ To start the simulator (and client):
|
|||||||
|
|
||||||
1. Open a new terminal in the root of the **PX4 Autopilot** repo that was installed above.
|
1. Open a new terminal in the root of the **PX4 Autopilot** repo that was installed above.
|
||||||
|
|
||||||
:::: tabs
|
:::: tabs
|
||||||
|
|
||||||
::: tab humble
|
::: tab humble
|
||||||
|
|
||||||
- Start a PX4 [Gazebo](../sim_gazebo_gz/index.md) simulation using:
|
- Start a PX4 [Gazebo](../sim_gazebo_gz/index.md) simulation using:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make px4_sitl gz_x500
|
make px4_sitl gz_x500
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
::: tab foxy
|
::: tab foxy
|
||||||
|
|
||||||
- Start a PX4 [Gazebo Classic](../sim_gazebo_classic/index.md) simulation using:
|
- Start a PX4 [Gazebo Classic](../sim_gazebo_classic/index.md) simulation using:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make px4_sitl gazebo-classic
|
make px4_sitl gazebo-classic
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
::::
|
::::
|
||||||
|
|
||||||
The agent and client are now running they should connect.
|
The agent and client are now running they should connect.
|
||||||
|
|
||||||
@@ -261,52 +261,52 @@ To create and build the workspace:
|
|||||||
|
|
||||||
2. Create and navigate into a new workspace directory using:
|
2. Create and navigate into a new workspace directory using:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
mkdir -p ~/ws_sensor_combined/src/
|
mkdir -p ~/ws_sensor_combined/src/
|
||||||
cd ~/ws_sensor_combined/src/
|
cd ~/ws_sensor_combined/src/
|
||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
A naming convention for workspace folders can make it easier to manage workspaces.
|
A naming convention for workspace folders can make it easier to manage workspaces.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
3. Clone the example repository and [px4_msgs](https://github.com/PX4/px4_msgs) to the `/src` directory (the `main` branch is cloned by default, which corresponds to the version of PX4 we are running):
|
3. Clone the example repository and [px4_msgs](https://github.com/PX4/px4_msgs) to the `/src` directory (the `main` branch is cloned by default, which corresponds to the version of PX4 we are running):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/PX4/px4_msgs.git
|
git clone https://github.com/PX4/px4_msgs.git
|
||||||
git clone https://github.com/PX4/px4_ros_com.git
|
git clone https://github.com/PX4/px4_ros_com.git
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Source the ROS 2 development environment into the current terminal and compile the workspace using `colcon`:
|
4. Source the ROS 2 development environment into the current terminal and compile the workspace using `colcon`:
|
||||||
|
|
||||||
:::: tabs
|
:::: tabs
|
||||||
|
|
||||||
::: tab humble
|
::: tab humble
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ..
|
cd ..
|
||||||
source /opt/ros/humble/setup.bash
|
source /opt/ros/humble/setup.bash
|
||||||
colcon build
|
colcon build
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
::: tab foxy
|
::: tab foxy
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ..
|
cd ..
|
||||||
source /opt/ros/foxy/setup.bash
|
source /opt/ros/foxy/setup.bash
|
||||||
colcon build
|
colcon build
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
::::
|
::::
|
||||||
|
|
||||||
This builds all the folders under `/src` using the sourced toolchain.
|
This builds all the folders under `/src` using the sourced toolchain.
|
||||||
|
|
||||||
#### Running the Example
|
#### Running the Example
|
||||||
|
|
||||||
@@ -322,42 +322,42 @@ In a new terminal:
|
|||||||
|
|
||||||
1. Navigate into the top level of your workspace directory and source the ROS 2 environment (in this case "Humble"):
|
1. Navigate into the top level of your workspace directory and source the ROS 2 environment (in this case "Humble"):
|
||||||
|
|
||||||
:::: tabs
|
:::: tabs
|
||||||
|
|
||||||
::: tab humble
|
::: tab humble
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ~/ws_sensor_combined/
|
cd ~/ws_sensor_combined/
|
||||||
source /opt/ros/humble/setup.bash
|
source /opt/ros/humble/setup.bash
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
::: tab foxy
|
::: tab foxy
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ~/ws_sensor_combined/
|
cd ~/ws_sensor_combined/
|
||||||
source /opt/ros/foxy/setup.bash
|
source /opt/ros/foxy/setup.bash
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
::::
|
::::
|
||||||
|
|
||||||
2. Source the `local_setup.bash`.
|
2. Source the `local_setup.bash`.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
source install/local_setup.bash
|
source install/local_setup.bash
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Now launch the example.
|
3. Now launch the example.
|
||||||
Note here that we use `ros2 launch`, which is described below.
|
Note here that we use `ros2 launch`, which is described below.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
ros2 launch px4_ros_com sensor_combined_listener.launch.py
|
ros2 launch px4_ros_com sensor_combined_listener.launch.py
|
||||||
```
|
```
|
||||||
|
|
||||||
If this is working you should see data being printed on the terminal/console where you launched the ROS listener:
|
If this is working you should see data being printed on the terminal/console where you launched the ROS listener:
|
||||||
|
|
||||||
@@ -385,18 +385,18 @@ If you were to use incompatible [message versions](../middleware/uorb.md#message
|
|||||||
|
|
||||||
1. Include the [Message Translation Node](../ros2/px4_ros2_msg_translation_node.md) into the example workspace or a separate workspace by running the following script:
|
1. Include the [Message Translation Node](../ros2/px4_ros2_msg_translation_node.md) into the example workspace or a separate workspace by running the following script:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd /path/to/ros_ws
|
cd /path/to/ros_ws
|
||||||
/path/to/PX4-Autopilot/Tools/copy_to_ros_ws.sh .
|
/path/to/PX4-Autopilot/Tools/copy_to_ros_ws.sh .
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Build and run the translation node:
|
2. Build and run the translation node:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
colcon build
|
colcon build
|
||||||
source install/local_setup.bash
|
source install/local_setup.bash
|
||||||
ros2 run translation_node translation_node_bin
|
ros2 run translation_node translation_node_bin
|
||||||
```
|
```
|
||||||
|
|
||||||
## Controlling a Vehicle
|
## Controlling a Vehicle
|
||||||
|
|
||||||
@@ -405,7 +405,7 @@ To control applications, ROS 2 applications:
|
|||||||
- subscribe to (listen to) telemetry topics published by PX4
|
- subscribe to (listen to) telemetry topics published by PX4
|
||||||
- publish to topics that cause PX4 to perform some action.
|
- publish to topics that cause PX4 to perform some action.
|
||||||
|
|
||||||
The topics that you can use are defined in [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml), and you can get more information about their data in the [uORB Message Reference](../msg_docs/index.md).
|
The topics that you can use are defined in [dds_topics.yaml](../middleware/dds_topics.md), and you can get more information about their data in the [uORB Message Reference](../msg_docs/index.md).
|
||||||
For example, [VehicleGlobalPosition](../msg_docs/VehicleGlobalPosition.md) can be used to get the vehicle global position, while [VehicleCommand](../msg_docs/VehicleCommand.md) can be used to command actions such as takeoff and land.
|
For example, [VehicleGlobalPosition](../msg_docs/VehicleGlobalPosition.md) can be used to get the vehicle global position, while [VehicleCommand](../msg_docs/VehicleCommand.md) can be used to command actions such as takeoff and land.
|
||||||
|
|
||||||
The [ROS 2 Example applications](#ros-2-example-applications) examples below provide concrete examples of how to use these topics.
|
The [ROS 2 Example applications](#ros-2-example-applications) examples below provide concrete examples of how to use these topics.
|
||||||
@@ -456,13 +456,13 @@ Therefore, ROS 2 nodes that want to interface with PX4 must take care of the fra
|
|||||||
|
|
||||||
- To rotate a vector from ENU to NED two basic rotations must be performed:
|
- To rotate a vector from ENU to NED two basic rotations must be performed:
|
||||||
|
|
||||||
- first a pi/2 rotation around the `Z`-axis (up),
|
- first a pi/2 rotation around the `Z`-axis (up),
|
||||||
- then a pi rotation around the `X`-axis (old East/new North).
|
- then a pi rotation around the `X`-axis (old East/new North).
|
||||||
|
|
||||||
- To rotate a vector from NED to ENU two basic rotations must be performed:
|
- To rotate a vector from NED to ENU two basic rotations must be performed:
|
||||||
|
|
||||||
- - first a pi/2 rotation around the `Z`-axis (down),
|
- - first a pi/2 rotation around the `Z`-axis (down),
|
||||||
- then a pi rotation around the `X`-axis (old North/new East). Note that the two resulting operations are mathematically equivalent.
|
- then a pi rotation around the `X`-axis (old North/new East). Note that the two resulting operations are mathematically equivalent.
|
||||||
|
|
||||||
- To rotate a vector from FLU to FRD a pi rotation around the `X`-axis (front) is sufficient.
|
- To rotate a vector from FLU to FRD a pi rotation around the `X`-axis (front) is sufficient.
|
||||||
|
|
||||||
@@ -720,17 +720,17 @@ Therefore,
|
|||||||
|
|
||||||
- If you're using a main or release version of PX4 you can get the message definitions by cloning the interface package [PX4/px4_msgs](https://github.com/PX4/px4_msgs) into your workspace.
|
- If you're using a main or release version of PX4 you can get the message definitions by cloning the interface package [PX4/px4_msgs](https://github.com/PX4/px4_msgs) into your workspace.
|
||||||
- If you're creating or modifying uORB messages you must manually update the messages in your workspace from your PX4 source tree.
|
- If you're creating or modifying uORB messages you must manually update the messages in your workspace from your PX4 source tree.
|
||||||
Generally this means that you would update [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml), clone the interface package, and then manually synchronize it by copying the new/modified message definitions from [PX4-Autopilot/msg](https://github.com/PX4/PX4-Autopilot/tree/main/msg) to its `msg` folders.
|
Generally this means that you would update [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml), clone the interface package, and then manually synchronize it by copying the new/modified message definitions from [PX4-Autopilot/msg](https://github.com/PX4/PX4-Autopilot/tree/main/msg) to its `msg` folders.
|
||||||
Assuming that PX4-Autopilot is in your home directory `~`, while `px4_msgs` is in `~/ros2_ws/src/`, then the command might be:
|
Assuming that PX4-Autopilot is in your home directory `~`, while `px4_msgs` is in `~/ros2_ws/src/`, then the command might be:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
rm ~/ros2_ws/src/px4_msgs/msg/*.msg
|
rm ~/ros2_ws/src/px4_msgs/msg/*.msg
|
||||||
cp ~/PX4-Autopilot/mgs/*.msg ~/ros2_ws/src/px4_msgs/msg/
|
cp ~/PX4-Autopilot/mgs/*.msg ~/ros2_ws/src/px4_msgs/msg/
|
||||||
```
|
```
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
Technically, [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) completely defines the relationship between PX4 uORB topics and ROS 2 messages.
|
Technically, [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) completely defines the relationship between PX4 uORB topics and ROS 2 messages.
|
||||||
For more information see [uXRCE-DDS > DDS Topics YAML](../middleware/uxrce_dds.md#dds-topics-yaml).
|
For more information see [uXRCE-DDS > DDS Topics YAML](../middleware/uxrce_dds.md#dds-topics-yaml).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -739,11 +739,11 @@ Therefore,
|
|||||||
Custom topic and service namespaces can be applied at build time (changing [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml)) or at runtime (useful for multi vehicle operations):
|
Custom topic and service namespaces can be applied at build time (changing [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml)) or at runtime (useful for multi vehicle operations):
|
||||||
|
|
||||||
- One possibility is to use the `-n` option when starting the [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) from command line.
|
- One possibility is to use the `-n` option when starting the [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) from command line.
|
||||||
This technique can be used both in simulation and real vehicles.
|
This technique can be used both in simulation and real vehicles.
|
||||||
- A custom namespace can be provided for simulations (only) by setting the environment variable `PX4_UXRCE_DDS_NS` before starting the simulation.
|
- A custom namespace can be provided for simulations (only) by setting the environment variable `PX4_UXRCE_DDS_NS` before starting the simulation.
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
Changing the namespace at runtime will append the desired namespace as a prefix to all `topic` fields in [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) and all [service servers](#px4-ros-2-service-servers).
|
Changing the namespace at runtime will append the desired namespace as a prefix to all `topic` fields in [dds_topics.yaml](../middleware/dds_topics.md) and all [service servers](#px4-ros-2-service-servers).
|
||||||
Therefore, commands like:
|
Therefore, commands like:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@@ -780,7 +780,7 @@ The service servers that are built into the PX4 [uxrce_dds_client](../modules/mo
|
|||||||
|
|
||||||
- `/fmu/vehicle_command` (definition: [`px4_msgs::srv::VehicleCommand`](https://github.com/PX4/px4_msgs/blob/main/srv/VehicleCommand.srv).)
|
- `/fmu/vehicle_command` (definition: [`px4_msgs::srv::VehicleCommand`](https://github.com/PX4/px4_msgs/blob/main/srv/VehicleCommand.srv).)
|
||||||
|
|
||||||
This service can be called by ROS 2 applications to send PX4 [VehicleCommand](../msg_docs/VehicleCommand.md) uORB messages and receive PX4 [VehicleCommandAck](../msg_docs/VehicleCommandAck.md) uORB messages in response.
|
This service can be called by ROS 2 applications to send PX4 [VehicleCommand](../msg_docs/VehicleCommand.md) uORB messages and receive PX4 [VehicleCommandAck](../msg_docs/VehicleCommandAck.md) uORB messages in response.
|
||||||
|
|
||||||
All PX4 service names follow the convention `{extra_namespace}/fmu/{server_specific_name}` where `{extra_namespace}` is the same [custom namespace](#customizing-the-namespace) that can be given to the PX4 topics.
|
All PX4 service names follow the convention `{extra_namespace}/fmu/{server_specific_name}` where `{extra_namespace}` is the same [custom namespace](#customizing-the-namespace) that can be given to the PX4 topics.
|
||||||
|
|
||||||
@@ -973,38 +973,38 @@ The standard installation should include all the tools needed by ROS 2.
|
|||||||
If any are missing, they can be added separately:
|
If any are missing, they can be added separately:
|
||||||
|
|
||||||
- **`colcon`** build tools should be in the development tools.
|
- **`colcon`** build tools should be in the development tools.
|
||||||
It can be installed using:
|
It can be installed using:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ git clone https://github.com/PX4/px4_ros_com.git ~/px4_ros_com_ros2/src/px4_ros_com
|
$ git clone https://github.com/PX4/px4_ros_com.git ~/px4_ros_com_ros2/src/px4_ros_com
|
||||||
$ git clone https://github.com/PX4/px4_msgs.git ~/px4_ros_com_ros2/src/px4_msgs
|
$ git clone https://github.com/PX4/px4_msgs.git ~/px4_ros_com_ros2/src/px4_msgs
|
||||||
```
|
```
|
||||||
|
|
||||||
- The Eigen3 library used by the transforms library should be in the both the desktop and base packages.
|
- The Eigen3 library used by the transforms library should be in the both the desktop and base packages.
|
||||||
It should be installed as shown:
|
It should be installed as shown:
|
||||||
|
|
||||||
:::: tabs
|
:::: tabs
|
||||||
|
|
||||||
::: tab humble
|
::: tab humble
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt install ros-humble-eigen3-cmake-module
|
sudo apt install ros-humble-eigen3-cmake-module
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
::: tab foxy
|
::: tab foxy
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ cd ~/px4_ros_com_ros2/src/px4_ros_com/scripts
|
$ cd ~/px4_ros_com_ros2/src/px4_ros_com/scripts
|
||||||
$ source build_ros2_workspace.bash
|
$ source build_ros2_workspace.bash
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
::::
|
::::
|
||||||
|
|
||||||
### ros_gz_bridge not publishing on the \clock topic
|
### ros_gz_bridge not publishing on the \clock topic
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user