Skip to content

Modules Reference: Communication

frsky_telemetry

Джерело: drivers/telemetry/frsky_telemetry

Підтримка FrSky Telemetry. Автоматичне визначення протоколу D або S.PORT.

Використання

frsky_telemetry <command> [arguments...]
 Commands:
   start
     [-d <val>]  Select Serial Device
                 values: <file:dev>, default: /dev/ttyS6
     [-t <val>]  Scanning timeout [s] (default: no timeout)
                 default: 0
     [-m <val>]  Select protocol (default: auto-detect)
                 values: sport|sport_single|sport_single_invert|dtype, default:
                 auto

   stop

   status

Source: modules/mavlink

Опис

Цей модуль реалізує протокол MAVLink, який можна використовувати на послідовному каналі або мережевому з'єднанні UDP. Він взаємодіє з системою через uORB: деякі повідомлення обробляються безпосередньо в модулі (наприклад, протокол місії), інші публікуються через uORB (наприклад, vehicle_command).

Потоки використовуються для надсилання періодичних повідомлень з певною частотою, наприклад, про положення транспортного засобу. При запуску екземпляра mavlink можна вказати режим, який визначає набір увімкнених потоків з їхніми швидкостями. Для запущеного екземпляра потоки можна налаштувати за допомогою команди mavlink stream.

Може бути декілька незалежних екземплярів модуля, кожен з яких підключений до одного послідовного пристрою або мережевого порту.

Реалізація

Реалізація використовує 2 потоки, потік відправлення та потік отримання. Відправник працює на фіксованій швидкості і динамічно зменшує швидкість потоків, якщо сумарна пропускна здатність перевищує задану (-r) або якщо фізичний канал перевантажений. Це можна перевірити за допомогою mavlink status, подивіться, чи rate mult менше 1.

Обережно: доступ до деяких даних здійснюється з обох потоків, тому при зміні коду або розширенні функціональності, це потрібно враховувати, щоб уникнути стану перевантаження та пошкодження даних.

Приклади

Запустіть mavlink на послідовному каналі ttyS1 з швидкістю передачі даних 921600 і максимальною швидкістю надсилання 80 кБ/с:

mavlink start -d /dev/ttyS1 -b 921600 -m onboard -r 80000

Запустіть mavlink на UDP-порт 14556 і увімкніть повідомлення HIGHRES_IMU з частотою 50 Гц:

mavlink start -u 14556 -r 1000000
mavlink stream -u 14556 -s HIGHRES_IMU -r 50

Використання

mavlink <command> [arguments...]
 Commands:
   start         Start a new instance
     [-d <val>]  Select Serial Device
                 values: <file:dev>, default: /dev/ttyS1
     [-b <val>]  Baudrate (can also be p:<param_name>)
                 default: 57600
     [-r <val>]  Maximum sending data rate in B/s (if 0, use baudrate / 20)
                 default: 0
     [-p]        Enable Broadcast
     [-u <val>]  Select UDP Network Port (local)
                 default: 14556
     [-o <val>]  Select UDP Network Port (remote)
                 default: 14550
     [-t <val>]  Partner IP (broadcasting can be enabled via -p flag)
                 default: 127.0.0.1
     [-m <val>]  Mode: sets default streams and rates
                 values: custom|camera|onboard|osd|magic|config|iridium|minimal|
                 extvision|extvisionmin|gimbal|uavionix, default: normal
     [-n <val>]  wifi/ethernet interface name
                 values: <interface_name>
     [-c <val>]  Multicast address (multicasting can be enabled via
                 MAV_{i}_BROADCAST param)
                 values: Multicast address in the range
                 [239.0.0.0,239.255.255.255]
     [-F <val>]  Sets the transmission frequency for iridium mode
                 default: 0.0
     [-f]        Enable message forwarding to other Mavlink instances
     [-w]        Wait to send, until first message received
     [-x]        Enable FTP
     [-z]        Force hardware flow control always on
     [-Z]        Force hardware flow control always off

   stop-all      Stop all instances

   stop          Stop a running instance
     [-u <val>]  Select Mavlink instance via local Network Port
     [-d <val>]  Select Mavlink instance via Serial Device
                 values: <file:dev>

   status        Print status for all instances
     [streams]   Print all enabled streams

   stream        Configure the sending rate of a stream for a running instance
     [-u <val>]  Select Mavlink instance via local Network Port
     [-d <val>]  Select Mavlink instance via Serial Device
                 values: <file:dev>
     -s <val>    Mavlink stream to configure
     -r <val>    Rate in Hz (0 = turn off, -1 = set to default)

   boot_complete Enable sending of messages. (Must be) called as last step in
                 startup script.

uorb

Source: systemcmds/uorb

Опис

uORB - це внутрішня система обміну повідомленнями pub-sub, яка використовується для комунікації між модулями.

Реалізація

Реалізація є асинхронною та безблоковою, тобто видавець не чекає на підписника і навпаки. Це досягається завдяки наявності окремого буфера між публікатором і підписником.

Код оптимізовано для мінімізації використання пам'яті та затримок при обміні повідомленнями.

Повідомлення визначені в каталозі /msg. Вони перетворюються в код C/C++ під час збірки.

Якщо ви компілюєте з ORB_USE_PUBLISHER_RULES, файл з правилами публікації uORB можна використовувати для налаштування того, яким модулям дозволено публікувати які теми. Це використовується для загальносистемного відтворення.

Приклади

Відстежуйте показники публікацій тем. До того ж top є важливою командою для загальної перевірки системи:

uorb top

Використання

uorb <command> [arguments...]
 Commands:
   status        Print topic statistics

   top           Monitor topic publication rates
     [-a]        print all instead of only currently publishing topics with
                 subscribers
     [-1]        run only once, then exit
     [<filter1> [<filter2>]] topic(s) to match (implies -a)