PX4-Autopilot/docs/uk/advanced/out_of_tree_modules.md
Hamish Willee 88d623bedb
Move PX4 Guide source into /docs (#24490)
* Add vitepress tree

* Update existing workflows so they dont trigger on changes in the docs path

* Add nojekyll, package.json, LICENCE etc

* Add crowdin docs upload/download scripts

* Add docs flaw checker workflows

* Used docs prefix for docs workflows

* Crowdin obvious fixes

* ci: docs move to self hosted runner

runs on a beefy server for faster builds

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* ci: don't run build action for docs or ci changes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* ci: update runners

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* Add docs/en

* Add docs assets and scripts

* Fix up editlinks to point to PX4 sources

* Download just the translations that are supported

* Add translation sources for zh, uk, ko

* Update latest tranlsation and uorb graphs

* update vitepress to latest

---------

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
Co-authored-by: Ramon Roche <mrpollo@gmail.com>
2025-03-13 16:08:27 +11:00

4.9 KiB
Raw Blame History

Зовнішні модулі (Out-of-Tree)

Зовнішні модулі забезпечують зручний механізм для розробників для керування/групування власних модулів, які вони хочуть додати до (або оновити в) прошивки PX4.Зовнішні модулі можуть використовувати ті ж самі включення, що й внутрішні модулі, і можуть взаємодіяти з внутрішніми модулями через uORB.

У цій темі пояснюється, як додати зовнішній модуль ("out of tree") до збірки PX4.

:::tip Ми закликаємо вас внести ваші зміни до PX4, де це можливо! :::

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

Щоб створити зовнішній модуль:

  • Створіть папку зовнішнього каталогу, щоб згрупувати зовнішні модулі:

    • Його можна знайти будь-де за межами дерева PX4-Autopilot.
    • Він повинен мати таку ж структуру, як PX4-Autopilot (тобто він повинен містити каталог з назвою src).
    • Пізніше ми звернемося до цього каталогу за допомогою EXTERNAL_MODULES_LOCATION.
  • Скопіюйте існуючий модуль (наприклад, examples/px4_simple_app) до зовнішнього каталогу або безпосередньо створіть новий модуль.

  • Перейменуйте модуль (включаючи MODULE у CMakeLists.txt) або видаліть його з існуючої конфігурації збірки cmake PX4-Autopilot. Це щоб уникнути конфліктів з внутрішніми модулями.

  • Додайте файл CMakeLists.txt у зовнішній каталозі з вмістом:

    set(config_module_list_external
        modules/<new_module>
        PARENT_SCOPE
        )
    
  • Додайте рядок EXTERNAL до modules/<new_module>/CMakeLists.txt у px4_add_module(), наприклад так:

    px4_add_module(
    	MODULE modules__test_app
    	MAIN test_app
    	STACK_MAIN 2000
    	SRCS
    		px4_simple_app.c
    	DEPENDS
    		platforms__common
    	EXTERNAL
    	)
    

Визначення повідомлень поза деревами uORB

Повідомлення uORB також можна визначати поза деревом. Для цього має існувати папка $EXTERNAL_MODULES_LOCATION/msg.

  • Розмістіть усі нові визначення повідомлень у каталозі $EXTERNAL_MODULES_LOCATION/msg. Формат цих нових визначень повідомлень поза деревом такий самий, як і для будь-якого іншого визначення повідомлень uORB.

  • Додати файл $EXTERNAL_MODULES_LOCATION/msg/CMakeLists.txt з змістом:

    set(config_msg_list_external
        <message1>.msg
        <message2>.msg
        <message3>.msg
        PARENT_SCOPE
        )
    

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

Поза деревом повідомлень uORB будуть створені в тих же місцях, що й звичайні повідомлення uORB. Заголовки тем uORB генеруються в <build_dir>/uORB/topics/, а вихідні файли повідомлень створено в <build_dir>/msg/topics_sources/.

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

:::warning Визначення повідомлень поза деревом uORB не можуть мати ті ж самі назви, що й будь-які звичайні повідомлення uORB. :::

Побудова зовнішніх модулів та повідомлень uORB

Виконайте make px4_sitl EXTERNAL_MODULES_LOCATION=<path>.

Будь-яку іншу ціль збірки можна використовувати, але каталог для збирання не повинен існувати. Якщо вона вже існує, ви також можете просто встановити змінну cmake у папці збірки.

Для наступних поступових збірок EXTERNAL_MODULES_LOCATION не потрібно вказувати.