Mavros: Como construir uma corrente FCU mavros QGC

Criado em 1 nov. 2016  ·  12Comentários  ·  Fonte: mavlink/mavros

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?

question

Comentários muito úteis

Para sua informação: tente udp-b://@ como URL do GCS.

Todos 12 comentários

  • O endereço UDP é baseado no endereço IP do seu PC e na porta relacionada. Você pode definir o endereço em seu launch file ou na linha de comando ao executá-lo.
  • A estrutura básica é
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 .

  • Se você estiver usando o método de telemetria, 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.

    • Conexão entre FCU e seu PC

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

  • Em seu PC:
<MAVROS> --- UDP ----<QGC>
<MAVROS> ----ros message---<Other Nodets>

  • Portanto, não há necessidade de saber o endereço IP da FCU e, na verdade, não há endereço IP da FCU.

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

  • Para configuração 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>

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.

  • Por segurança, você pode verificar as portas UDP para certificar-se de que estão disponíveis ou ocupadas.

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:

  1. Abra o QGroundControl Station e clique no ícone "Q" no canto superior esquerdo, entrando no painel "Preferências"
  2. Clique em "Geral" à esquerda, localize "Autoconectar aos seguintes dispositivos:", desative "SiK Radio" e selecione "UDP"
  3. Feche o QGroundControl para garantir que ele esteja desconectado da FCU
  4. Edite o arquivo px4.launch, que se encontra na pasta do pacote Mavros, adicione " udp: //: [email protected] : 14550", 14560 e 14550 são quaisquer portas não utilizadas
  5. Execute roslaunch mavros px4.launch
  6. Abrir QGroundControl

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?

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

trishantroy picture trishantroy  ·  10Comentários

tfoote picture tfoote  ·  5Comentários

mohand150 picture mohand150  ·  5Comentários

Tutorgaming picture Tutorgaming  ·  4Comentários

TSC21 picture TSC21  ·  12Comentários