嗨,如果我将遥测仪插入计算机,然后打开一个mavros节点以通过遥测仪与FCU通信。 启动mavros时应输入什么UDP地址?
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> ---telemtry port --<MAVROS>
<MAVROS> --- UDP ----<QGC>
<MAVROS> ----ros message---<Other Nodets>
谢谢@weiweikong。 现在我了解了结构。 我尝试使用roslaunch mavros px4.launch
,并且能够启动通过Telem与FCU通信的Mavros节点,但是如何打开QGC的UDP端口并指示QGC监听它呢?
当我启动Mavros时,一切都很好。 但是,如果我打开QGC,它将自动侦听相同的Telem端口,并且宏崩溃。 那么我该如何在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>
当我启动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非常感谢。 我解决了问题。 供他人参考,这是我所做的:
roslaunch mavros px4.launch
现在建立了一个链FCU <---telemetry---> MAVROS <---UDP---> QGC
。 QGC将不再自动与FCU vai Telemetry连接。 如果仍然需要,我们可以配置一个手动连接。
仅供参考:尝试将udp-b://@
作为GCS URL。
嗨,我有一个类似的问题,我有一个FPV无线电遥测地面模块,我希望它与拥有Iris无人机的遥测通信。
当我将遥测(地面)连接到ubuntu pc并打开无人机时,不会启动Qground站。
为什么会出现这个问题?
我需要安装任何驱动程序吗?
最有用的评论
仅供参考:尝试将
udp-b://@
作为GCS URL。