### MAVLink Bridge and System Components
Source: https://mavlink.io/en/services/image_transmission.html
Example commands to start essential components for MAVLink communication and system control on a MAV.
```bash
px_mavlink_bridge_udp &
px_system_control --heartbeat &
px_camera -o lcm &
```
--------------------------------
### Run Illuminator Emulator
Source: https://mavlink.io/en/services/illuminator.html
Starts the illuminator emulator. Ensure Python 3 is installed.
```bash
python3 illuminator.py
```
--------------------------------
### Install Custom Pymavlink Libraries
Source: https://mavlink.io/en/mavgen_python/index.html
Install the generated MAVLink libraries for a custom dialect locally using the setup program.
```shell
python setup.py install --user
```
--------------------------------
### Compile C UDP Example with CMake
Source: https://mavlink.io/en/mavgen_c/example_c_udp.html
Compile the C UDP example using CMake, specifying the installation path for MAVLink. Ensure you are in the correct directory.
```sh
cd examples/c
cmake -Bbuild -H. -DCMAKE_PREFIX_PATH=$(pwd)/../../install
cmake --build build
```
--------------------------------
### Install Python 3 and Pip on Ubuntu
Source: https://mavlink.io/en/getting_started/installation.html
Ensure Python and Pip are installed on Ubuntu Linux before proceeding with MAVLink installation.
```bash
sudo apt install python3 python3-pip
```
--------------------------------
### MAVLink FTP URL Scheme Example
Source: https://mavlink.io/en/services/ftp.html
Example of a MAVLink FTP URL to download a resource from the current component.
```text
mftp:///camera.xml
```
--------------------------------
### Install Standard Pymavlink
Source: https://mavlink.io/en/mavgen_python/index.html
Install the standard MAVLink dialect libraries for MAVLink 1 and 2 using pip.
```shell
pip install pymavlink
```
--------------------------------
### Run C UDP Example
Source: https://mavlink.io/en/mavgen_c/example_c_udp.html
Execute the compiled C UDP example. By default, it listens on localhost:14550. Ensure a MAVLink-compatible system (like PX4 or ArduPilot) is running and publishing to this address.
```sh
./build/udp_example
```
--------------------------------
### Example MAVLink Mission Plain-Text File
Source: https://mavlink.io/en/file_formats/index.html
An example of a mission file adhering to the QGC WPL format. Each line represents a waypoint with its associated parameters, separated by tabs.
```plaintext
QGC WPL 110
0 1 0 16 0.149999999999999994 0 0 0 8.54800000000000004 47.3759999999999977 550 1
1 0 0 16 0.149999999999999994 0 0 0 8.54800000000000004 47.3759999999999977 550 1
2 0 0 16 0.149999999999999994 0 0 0 8.54800000000000004 47.3759999999999977 550 1
```
--------------------------------
### C UDP Example Output
Source: https://mavlink.io/en/mavgen_c/example_c_udp.html
This output shows the successful execution of the C UDP example, indicating that HEARTBEAT messages are being sent and received from a PX4 autopilot on localhost.
```sh
~/github/mavlink/mavlink/examples/c$ ./build/udp_example
Sent heartbeat
Got heartbeat from PX4 autopilot
Sent heartbeat
Got heartbeat from PX4 autopilot
Sent heartbeat
Got heartbeat from PX4 autopilot
Sent heartbeat
Got heartbeat from PX4 autopilot
Sent heartbeat
Got heartbeat from PX4 autopilot
...
```
--------------------------------
### Install MAVLink Headers with CMake
Source: https://mavlink.io/en/mavgen_c
Installs MAVLink headers locally into an 'install' directory using CMake. This allows subsequent projects to find and use the library.
```shell
cmake -Bbuild -H. -DCMAKE_INSTALL_PREFIX=install -DMAVLINK_DIALECT=common -DMAVLINK_VERSION=2.0
cmake --build build --target install
```
--------------------------------
### MAV_CMD_LOGGING_START
Source: https://mavlink.io/en/messages/common.html
Requests to start streaming logging data over MAVLink.
```APIDOC
## MAV_CMD_LOGGING_START (2510)
### Description
Request to start streaming logging data over MAVLink (see also LOGGING_DATA message).
### Parameters
#### Path Parameters
- **Format** (int) - Required - Format: 0: ULog. Values: min: 0 inc: 1
- **Reserved 2** (int) - Optional - Reserved (set to 0)
- **Reserved 3** (int) - Optional - Reserved (set to 0)
- **Reserved 4** (int) - Optional - Reserved (set to 0)
- **Reserved 5** (int) - Optional - Reserved (set to 0)
- **Reserved 6** (int) - Optional - Reserved (set to 0)
- **Reserved 7** (int) - Optional - Reserved (set to 0)
```
--------------------------------
### Install Required Python Packages
Source: https://mavlink.io/en/getting_started/installation.html
Install the necessary Python packages for MAVLink by referencing the requirements file in the pymavlink directory.
```bash
python3 -m pip install -r pymavlink/requirements.txt
```
--------------------------------
### MAVLink FTP URL Scheme with Component ID Example
Source: https://mavlink.io/en/services/ftp.html
Example of a MAVLink FTP URL to download a resource from a specific component (e.g., companion computer) by specifying its component ID.
```text
mftp://;comp=100/camera.xml
```
--------------------------------
### MAV_CMD_VIDEO_START_STREAMING
Source: https://mavlink.io/en/messages/common.html
Starts video streaming for a specified camera and stream ID.
```APIDOC
## MAV_CMD_VIDEO_START_STREAMING (2502)
### Description
Start video streaming.
### Parameters
#### Path Parameters
- **Stream ID** (int) - Required - Video Stream ID (0 for all streams, 1 for first, 2 for second, etc.). Values: min: 0 inc: 1
- **Target Camera ID** (int) - Required - Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission. Values: min: 0 max: 255 inc: 1
```
--------------------------------
### Example Directory Listing Entries with Timestamps
Source: https://mavlink.io/en/services/ftp.html
Demonstrates the output format for directory listing when timestamps are included. Note the '0' for unknown timestamps.
```text
FTestFile3.xml\t223\t1747459200\0FTestFile4.xml\t755568\t1746940800\0FTestFile5.xml\t11111\t0\0
```
--------------------------------
### Setup Message Signing with mavutil
Source: https://mavlink.io/en/mavgen_python/message_signing.html
Use the `setup_signing` method from `mavutil` to configure message signing for a connection. This method allows specifying a secret key, whether to sign outgoing messages, a callback for unsigned messages, an initial timestamp, and a link ID. If `link_id` or `initial_timestamp` are not provided, they are handled internally.
```python
#Setup signing
def setup_signing(self, secret_key, sign_outgoing=True, allow_unsigned_callback=None, initial_timestamp=None, link_id=None)
```
--------------------------------
### Example Directory Listing Entries
Source: https://mavlink.io/en/services/ftp.html
Illustrates the output format for directory listing with multiple entries.
```text
FTestFile3.xml\t223\0FTestFile4.xml\t755568\0FTestFile5.xml\t11111\0
```
--------------------------------
### Enum Definition Example
Source: https://mavlink.io/en/guide/xml_schema.html
Example of how to define an enum with multiple entries, including descriptions for the enum and each entry. This specific example defines LANDING_TARGET_TYPE.
```xml
Type of landing targetLanding target signaled by light beacon (ex: IR-LOCK)Landing target signaled by radio beacon (ex: ILS, NDB)Landing target represented by a fiducial marker (ex: ARTag)Landing target represented by a pre-defined visual shape/feature (ex: X-marker, H-marker, square)
```
--------------------------------
### Configure Signing with Custom Unsigned Message Callback
Source: https://mavlink.io/en/mavgen_python/message_signing.html
Set up message signing using `mavutil.setup_signing`, providing a custom `allow_unsigned_callback` function to control which unsigned messages are accepted. This example allows `RADIO_STATUS` messages.
```python
# Assuming you already have a connection set up
the_connection = mavutil.mavlink_connection(...)
# Create a callback to specify the messages to accept
def my_allow_unsigned_callback(self,msgId):
#Allow radio status messages
if msgId==mavutil.mavlink.MAVLINK_MSG_ID_RADIO_STATUS:
return True
return False
# Pass the callback to the connection (here we also pass an arbitrary secret key)
secret_key = chr(42)*32
the_connection.setup_signing(secret_key, sign_outgoing=True, allow_unsigned_callback=my_allow_unsigned_callback)
```
--------------------------------
### Install tcpdump on Linux
Source: https://mavlink.io/en/guide/wireshark.html
Installs the tcpdump utility on Debian-based Linux systems. This tool is used for capturing network traffic.
```bash
apt update
apt install tcpdump
```
--------------------------------
### Start Image Streamer Component
Source: https://mavlink.io/en/services/image_transmission.html
Command to start the image streaming component on the MAV. The -v flag provides verbose output.
```bash
px_imagestreamer
# or with verbose output:
px_imagestreamer -v
```
--------------------------------
### MAVLink Enum Definition Example
Source: https://mavlink.io/en/guide/define_xml_element.html
This example defines the LANDING_TARGET_TYPE enum, which specifies different types of landing targets with descriptive entries and values.
```xml
Type of landing targetLanding target signaled by light beacon (ex: IR-LOCK)Landing target signaled by radio beacon (ex: ILS, NDB)Landing target represented by a fiducial marker (ex: ARTag)Landing target represented by a pre-defined visual shape/feature (ex: X-marker, H-marker, square)
```
--------------------------------
### Find MAVLink Dependency in CMakeLists.txt
Source: https://mavlink.io/en/mavgen_c
Configures a CMake project to find the installed MAVLink library and link it to an executable. Requires the MAVLink installation prefix to be set.
```cmake
find_package(MAVLink REQUIRED)
add_executable(my_program my_program.c)
target_link_libraries(my_program PRIVATE MAVLink::mavlink)
```
--------------------------------
### Initialize Signing Structure
Source: https://mavlink.io/en/mavgen_c/message_signing_c.html
Initialize the `mavlink_signing_t` structure with secret key, link ID, timestamp, flags, and an optional callback for accepting unsigned packets.
```c
mavlink_signing_t signing;
memset(&signing, 0, sizeof(signing));
memcpy(signing.secret_key, key.secret_key, 32);
signing.link_id = (uint8_t)chan;
signing.timestamp = key.timestamp;
signing.flags = MAVLINK_SIGNING_FLAG_SIGN_OUTGOING;
signing.accept_unsigned_callback = accept_unsigned_callback;
mavlink_status_t *status = mavlink_get_channel_status(chan);
status.signing = &signing;
```
--------------------------------
### MAVLink Message Definition Example
Source: https://mavlink.io/en/guide/define_xml_element.html
Example of a MAVLink message definition for 'SAFETY_SET_ALLOWED_AREA'. It shows the structure with ID, name, description, and fields with their types, names, and units.
```xml
Set a safety zone (volume), which is defined by two corners of a cube. This message can be used to tell the MAV which setpoints/waypoints to accept and which to reject. Safety areas are often enforced by national or competition regulations.System IDComponent IDCoordinate frame. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down.x position 1 / Latitude 1y position 1 / Longitude 1z position 1 / Altitude 1x position 2 / Latitude 2y position 2 / Longitude 2z position 2 / Altitude 2
```
--------------------------------
### Set MAVLink Install Prefix for CMake
Source: https://mavlink.io/en/mavgen_c
Sets the CMake prefix path to locate the local MAVLink installation directory. This is necessary for the `find_package(MAVLink)` command to succeed.
```shell
cd ../my_program
cmake -Bbuild -H. -DCMAKE_PREFIX_PATH=../mavlink/install
```
--------------------------------
### Camera Definition XML Example
Source: https://mavlink.io/en/services/camera_def.html
This XML file defines camera parameters, their types, default values, and relationships, including options, exclusions, and conditional ranges.
```xml
T100Foo IndustriesCamera ModeCAM_SHUTTERSPDCAM_ISOCAM_VIDRESWhite Balance ModeExposure ModeCAM_SHUTTERSPDCAM_ISOShutter Speed
```