Mavros: 如何建立FCU大批QGC链

创建于 2016-11-01  ·  12评论  ·  资料来源: mavlink/mavros

嗨,如果我将遥测仪插入计算机,然后打开一个mavros节点以通过遥测仪与FCU通信。 启动mavros时应输入什么UDP地址?

question

最有用的评论

仅供参考:尝试将udp-b://@作为GCS URL。

所有12条评论

  • UDP地址基于您的PC IP地址和相关端口。 您可以在运行launch file或在命令行中设置地址。
  • 基本结构是
roslaunch mavros px4.launch fcu_url:="udp://:[email protected]:14557"

但是端口和地址取决于您的系统。

谢谢。 我理解这一点,但是当我将遥测仪插入计算机时,我将使用哪个IP地址。 在哪里可以找到FCU的IP地址? 我正在使用RC遥测进行传输

@zhahaoyu您可以使用ifconfig检查您的PC IP地址。

  • 如果使用遥测方法,则mavros已经通过遥测端口从FCU(PX4)接收了mavlink消息,并将其传输到ROS消息中。 您只需要让mavros做另一件事,就可以将相同的信息发布到UDP端口中,QGC可以在该端口中接收到该信息。

    • FCU与您的PC之间的连接

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

  • 在您的PC中:
<MAVROS> --- UDP ----<QGC>
<MAVROS> ----ros message---<Other Nodets>

  • 因此,不需要知道FCU的IP地址,并且实际上没有FCU的IP地址。

谢谢@weiweikong。 现在我了解了结构。 我尝试使用roslaunch mavros px4.launch ,并且能够启动通过Telem与FCU通信的Mavros节点,但是如何打开QGC的UDP端口并指示QGC监听它呢?

当我启动Mavros时,一切都很好。 但是,如果我打开QGC,它将自动侦听相同的Telem端口,并且宏崩溃。 那么我该如何在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>

当我启动QGC时,mavros仍然崩溃并显示以下错误消息

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正在尝试使用串行端口。 当我在SITL模式下将QGC与ROS一起使用时,一切正常。 我只是不知道如何使用真正的pixhawk fcu来做到这一点。

@zhahaoyu也许尝试先启动

@weiweikong非常感谢。 我解决了问题。 供他人参考,这是我所做的:

  1. 打开QGroundControl Station,然后单击左上方的“ Q”图标,进入“首选项”面板
  2. 单击左侧的“常规”,然后找到“自动连接到以下设备:”,选择退出“ SiK Radio”,然后选择加入“ UDP”
  3. 关闭QGroundControl以确保将其与FCU断开连接
  4. 编辑在Mavros软件包文件夹中找到的px4.launch文件,添加“ udp://:[email protected] :14550”,14560和14550是任何未使用的端口
  5. 运行roslaunch mavros px4.launch
  6. 打开QGroundControl

现在建立了一个链FCU <---telemetry---> MAVROS <---UDP---> QGC 。 QGC将不再自动与FCU vai Telemetry连接。 如果仍然需要,我们可以配置一个手动连接。

仅供参考:尝试将udp-b://@作为GCS URL。

嗨,我有一个类似的问题,我有一个FPV无线电遥测地面模块,我希望它与拥有Iris无人机的遥测通信。

当我将遥测(地面)连接到ubuntu pc并打开无人机时,不会启动Qground站。

为什么会出现这个问题?

我需要安装任何驱动程序吗?

此页面是否有帮助?
0 / 5 - 0 等级