Привет, если я подключу телеметрию к своему компьютеру и открою узел mavros для связи с FCU через телеметрию. Какой UDP-адрес я ставлю при запуске mavros?
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> ---telemtry port --<MAVROS>
<MAVROS> --- UDP ----<QGC>
<MAVROS> ----ros message---<Other Nodets>
Спасибо @weiweikong. Теперь я понимаю структуру. Я попытался использовать roslaunch mavros px4.launch
, и я могу запустить узел Mavros, обменивающийся данными с FCU через Telem, но как мне открыть порт UDP для QGC и дать команду QGC прослушать его?
Когда я запустил Маврос, все было хорошо. Но если я открываю QGC, он автоматически прослушивает тот же телем-порт, и mavros вылетает. Итак, как я могу создать связь между QGC и mavros
@zhahaoyu
<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.
Я выполнил вашу инструкцию, вот файл запуска, который я использовал
<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 Большое спасибо. Я решил проблему. Для справки, вот что я сделал:
roslaunch mavros px4.launch
Теперь цепочка FCU <---telemetry---> MAVROS <---UDP---> QGC
установлена. QGC больше не будет автоматически подключаться к FCU vai Telemetry. Если мы все еще хотим этого, мы можем настроить подключение вручную.
К вашему сведению: попробуйте udp-b://@
качестве URL-адреса GCS.
Привет, у меня похожая проблема, у меня есть наземный модуль радиотелеметрии FPV, и я хочу, чтобы он обменивался данными с телеметрией, которой принадлежит дрон Iris.
Когда я подключаю телеметрию (заземление) к моему компьютеру ubuntu и включаю дрон, не запускает станцию Qground.
Почему такая проблема?
Нужно ли мне устанавливать какие-то драйверы?
Самый полезный комментарий
К вашему сведению: попробуйте
udp-b://@
качестве URL-адреса GCS.