Olá, se eu conectar a telemetria ao meu computador e abrir um nó mavros para me comunicar com a FCU por meio da telemetria. Que endereço UDP devo colocar ao iniciar o mavros?
launch file
ou na linha de comando ao executá-lo.roslaunch mavros px4.launch fcu_url:="udp://:[email protected]:14557"
entretanto, a porta e o endereço dependem do seu sistema.
obrigado. Eu entendo isso, mas quando eu conecto a telemetria no meu computador, qual endereço IP eu uso. Onde posso encontrar o endereço IP da FCU? Estou usando telemetria rc para transmissão
@zhahaoyu Você pode verificar o endereço IP do seu PC usando ifconfig
.
mavros
já recebeu mavlink
mensagem do FCU (PX4) por meio da porta de telemetria e transferiu para mensagem ROS. Você apenas deixou o mavros
fazer outra coisa, publicar as mesmas informações na porta UDP, onde o QGC poderia receber as informações.<FCU> ---telemtry port --<MAVROS>
<MAVROS> --- UDP ----<QGC>
<MAVROS> ----ros message---<Other Nodets>
Obrigado @weiweikong. Agora eu entendo a estrutura. Tentei usar roslaunch mavros px4.launch
e consigo iniciar um nó Mavros se comunicando com FCU via telem, mas como faço para abrir uma porta UDP para QGC e instruir o QGC a ouvi-la?
Quando comecei a Mavros, estava tudo bem. Mas se eu abrir o QGC, ele escuta automaticamente a mesma porta de telem, e o mavros falha. Então, como posso criar a conexão entre QGC e 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>
a seção gcs_url
é para a configuração UDP. O antigo site do px4 tem mais detalhes https://pixhawk.org/peripherals/onboard_computers/intel_edison.
Como mostra o exemplo
<arg name="gcs_url" default="udp://:14556@my-intel-edisons-ip:14550" />
significa que o QGC será conectado via UDP à porta 14556.
Segui suas instruções, aqui está o arquivo de inicialização que usei
<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>
e mavros ainda trava com a seguinte mensagem de erro quando eu inicio o 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 Não tenho certeza sobre essa situação. Na minha experiência, o QGC deve funcionar independentemente com o ROS, portanto, deve ser inicializado normalmente e poderíamos definir a configuração UDP do QGC para ouvir as informações de mavros
.
serial0: receive: End of file
Agora tenho certeza de que as informações acima significam que o QGC tentou conectar a FCU à porta serial. Se fosse verdade, o QGC ou mavros
pode travar.
Acredito que o QGC está tentando usar a porta serial. Quando eu uso QGC com ROS no modo SITL, tudo funciona bem. Só não sei como fazer isso com o verdadeiro pixhawk fcu.
@zhahaoyu Talvez tente iniciar o QGC primeiro e depois configurá-lo usando a conexão UDP em vez da porta serial antes de iniciar o mavros com o PX4.
@weiweikong Muito obrigado. Eu resolvi o problema. Para referência de outras pessoas, aqui está o que eu fiz:
roslaunch mavros px4.launch
Agora uma cadeia FCU <---telemetry---> MAVROS <---UDP---> QGC
é estabelecida. O QGC não irá mais se conectar automaticamente com a FCU vai da Telemetria. Se ainda quisermos isso, podemos configurar uma conexão manual.
Para sua informação: tente udp-b://@
como URL do GCS.
Olá, estou com um problema semelhante. Recebi um Módulo Terrestre de Rádio Telemetria FPV e quero que ele se comunique com a telemetria que possui o drone Iris.
Quando ligo a telemetria (Ground) ao meu ubuntu pc e ligo o drone não liga a estação Qground.
Por que é esse problema?
Tenho que instalar algum driver?
Comentários muito úteis
Para sua informação: tente
udp-b://@
como URL do GCS.