Mavros: Как построить сеть QGC FCU mavros

Созданный на 1 нояб. 2016  ·  12Комментарии  ·  Источник: mavlink/mavros

Привет, если я подключу телеметрию к своему компьютеру и открою узел mavros для связи с FCU через телеметрию. Какой UDP-адрес я ставлю при запуске mavros?

question

Самый полезный комментарий

К вашему сведению: попробуйте udp-b://@ качестве URL-адреса GCS.

Все 12 Комментарий

  • Адрес UDP зависит от IP-адреса вашего ПК и соответствующего порта. Вы можете установить адрес в вашем launch file или в командной строке при его запуске.
  • Базовая структура
roslaunch mavros px4.launch fcu_url:="udp://:[email protected]:14557"

однако порт и адрес зависят от вашей системы.

Благодарю. Я понимаю это, но когда я подключаю телеметрию к своему компьютеру, какой IP-адрес я использую. Где я могу найти IP-адрес FCU? Я использую телеметрию RC для передачи

@zhahaoyu Вы можете проверить IP-адрес своего ПК с помощью ifconfig .

  • Если вы используете метод телеметрии, mavros уже получили сообщение mavlink от FCU (PX4) через порт телеметрии и передали их в сообщение ROS. Вы просто позволяете mavros делать другое, публиковать ту же информацию в порт UDP, откуда QGC может получать информацию.

    • Связь между FCU и вашим ПК

<FCU> ---telemtry port --<MAVROS>

  • На вашем ПК:
<MAVROS> --- UDP ----<QGC>
<MAVROS> ----ros message---<Other Nodets>

  • Таким образом, нет необходимости знать IP-адрес FCU, и на самом деле нет IP-адреса для FCU.

Спасибо @weiweikong. Теперь я понимаю структуру. Я попытался использовать roslaunch mavros px4.launch , и я могу запустить узел Mavros, обменивающийся данными с FCU через Telem, но как мне открыть порт UDP для QGC и дать команду QGC прослушать его?

Когда я запустил Маврос, все было хорошо. Но если я открываю QGC, он автоматически прослушивает тот же телем-порт, и mavros вылетает. Итак, как я могу создать связь между QGC и mavros

@zhahaoyu

  • Для конфигурации UDP
<include file="$(find mavros)/launch/node.launch">
        <arg name="blacklist_yaml" value="$(find mavros)/launch/px4_blacklist.yaml" />
        <arg name="config_yaml" value="$(find mavros)/launch/px4_config.yaml" />

        <arg name="fcu_url" value="$(arg fcu_url)" />
        <arg name="gcs_url" value="$(arg gcs_url)" />
        <arg name="tgt_system" value="$(arg tgt_system)" />
        <arg name="tgt_component" value="$(arg tgt_component)" />
    </include>

раздел gcs_url предназначен для конфигурации UDP. Более подробная информация на старом веб-сайте px4 https://pixhawk.org/peripherals/onboard_computers/intel_edison.
Как показывает пример

<arg name="gcs_url" default="udp://:14556@my-intel-edisons-ip:14550" />

означает, что QGC будет подключен через UDP к порту 14556.

  • В целях безопасности вы можете проверить порты UDP, чтобы убедиться, что они доступны или заняты.

Я выполнил вашу инструкцию, вот файл запуска, который я использовал

<launch>
    <!-- vim: set ft=xml noet : -->
    <!-- example launch script for PX4 based FCU's -->

    <arg name="fcu_url" default="/dev/ttyUSB0:57600" />
    <arg name="gcs_url" default="udp://:[email protected]:14550" />
    <arg name="tgt_system" default="1" />
    <arg name="tgt_component" default="1" />
    <arg name="log_output" default="screen" />

    <include file="$(find mavros)/launch/node.launch">
        <arg name="pluginlists_yaml" value="$(find mavros)/launch/px4_pluginlists.yaml" />
        <arg name="config_yaml" value="$(find mavros)/launch/px4_config.yaml" />

        <arg name="fcu_url" value="$(arg fcu_url)" />
        <arg name="gcs_url" value="$(arg gcs_url)" />
        <arg name="tgt_system" value="$(arg tgt_system)" />
        <arg name="tgt_component" value="$(arg tgt_component)" />
        <arg name="log_output" value="$(arg log_output)" />
    </include>
</launch>

и mavros все еще вылетает со следующим сообщением об ошибке, когда я запускаю QGC

ERROR] [1478057788.915106802]: serial0: receive: End of file
terminate called after throwing an instance of 'std::system_error'
  what():  Resource deadlock avoided
================================================================================REQUIRED process [mavros-2] has died!
process has died [pid 12427, exit code -6, cmd /opt/ros/kinetic/lib/mavros/mavros_node __name:=mavros __log:=/home/haoyu/.ros/log/849342f6-a0ad-11e6-8d09-000f6005d13e/mavros-2.log].
log file: /home/haoyu/.ros/log/849342f6-a0ad-11e6-8d09-000f6005d13e/mavros-2*.log
Initiating shutdown!
================================================================================
[mavros-2] killing on exit
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done

@zhahaoyu Я не совсем уверен в этой ситуации. По моему опыту, QGC должен работать независимо с ROS, поэтому он должен запускаться нормально, и мы могли бы настроить конфигурацию QGC UDP для прослушивания информации из mavros .

serial0: receive: End of file

Теперь я уверен, означает ли вышеприведенная информация, что QGC пытался подключить FCU к последовательному порту. Если бы это было правдой, QGC или mavros могли бы дать сбой.

Я считаю, что QGC пытается использовать последовательный порт. Когда я использую QGC с ROS в режиме SITL, все работает нормально. Я просто не знаю, как это сделать с настоящим pixhawk fcu.

@zhahaoyu Может быть, попробуйте сначала запустить QGC, а затем настроить его с использованием UDP-соединения вместо последовательного порта, прежде чем запускать mavros с PX4.

@weiweikong Большое спасибо. Я решил проблему. Для справки, вот что я сделал:

  1. Откройте QGroundControl Station и щелкните значок «Q» в левом верхнем углу, войдя в панель «Настройки».
  2. Нажмите «Общие» слева, затем найдите «Автоматическое подключение к следующим устройствам:», отключите «SiK Radio» и выберите «UDP».
  3. Закройте QGroundControl, чтобы убедиться, что он отключен от FCU.
  4. Отредактируйте файл px4.launch, который находится в папке пакета Mavros , добавьте « 14550 », 14560 и 14550 - любые неиспользуемые порты.
  5. Запустить roslaunch mavros px4.launch
  6. Откройте QGroundControl

Теперь цепочка FCU <---telemetry---> MAVROS <---UDP---> QGC установлена. QGC больше не будет автоматически подключаться к FCU vai Telemetry. Если мы все еще хотим этого, мы можем настроить подключение вручную.

К вашему сведению: попробуйте udp-b://@ качестве URL-адреса GCS.

Привет, у меня похожая проблема, у меня есть наземный модуль радиотелеметрии FPV, и я хочу, чтобы он обменивался данными с телеметрией, которой принадлежит дрон Iris.

Когда я подключаю телеметрию (заземление) к моему компьютеру ubuntu и включаю дрон, не запускает станцию ​​Qground.

Почему такая проблема?

Нужно ли мне устанавливать какие-то драйверы?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги