我正在做一个与遥测有关的项目,我想让ArduPilot(用ArduPlane 2.73编程)通过串行端口发送传感器信息,例如高度,GPS位置等。我试图使用ArduStation,但是我可以不要更改其固件以执行我想要的操作。

想法是使用Arduino Uno读取Ardupilot的串行端口,然后将其实时保存在SD卡中。因此ArduPilot需要在没有任何用户输入或类似输入的情况下发送数据。我已经尝试过操纵ArduPlane源代码来做到这一点,但是我也不能。

以前有人在这里做过类似的事情吗?我需要一些建议!

评论

我正在做同样的事情,我有一个APM 2.6,我想通过串行端口读取传感器发出的数据!你能帮我吗

如果有人知道如何做到这一点,请发布解决方案。我正在做一个类似的项目,其中我要求Arduino Mega 2560从APM 2.6接收GPS数据。请就如何实现这一点提出建议。我是初学者,arduino只有mt编码背景。

@Robin_Thomas,您好,欢迎来到Robotics Stack Exchange。如果您有新问题,请开始一个新话题。否则,将删除实际上不是答案的问题的“答案”(例如此答案)。请查看帮助中心,了解如何提问和回答问题。

#1 楼

我了解到最近发布了新的Ardupilot。我不熟悉它,所以如果您使用的是该设备,那么此答案可能无济于事。话虽如此,我所做的事情与您对Ardupilot Mega所做的事情类似。具体来说,我在ROS中编写了一个节点来控制四旋翼并读取其状态。 Ardupilot使用一个称为Mavlink的相当简单的协议与其他系统进行通信。您可以从上面链接的QGroundControl网站获得该库。从那里,您将Uno上的串行端口连接到APM上的Xbee端口。但是有两个警告。首先,我不知道Mavlink库是否适合Uno,尽管我相信它会适合。其次,它确实要求您的Uno通过发送数据请求来查询APM,但它们的构造非常简单。这样做的目的是控制信息流。如果我没记错的话,您可以指示设备重复发送您感兴趣的数据,但是您必须查看文档以进行确认。

评论


$ \ begingroup $
因此,也许可以使用该库使Arduino向ArduPilot发送一些请求并获得所需的数据作为响应?你到底做了什么?
$ \ endgroup $
–亚历山德罗·苏亚雷斯(Alessandro Soares)
2013年6月18日22:36



$ \ begingroup $
是的,这是正确的。我在实验室中使用Ardupilot和ROS来控制自主四旋翼。我使用Mavlink既向四旋翼飞机发送命令,又查询Ardupilot的状态和传感器数据。
$ \ endgroup $
– DaemonMaker
2013年6月19日下午4:08

#2 楼

要获取传感器数据,您需要:


首先向arduCopter写一个MAV_DATA_STREAM_EXTRA1消息。此消息告诉它发送传感器数据(以什么速率发送)。 (顺便说一句-该消息仅与偏航/俯仰/侧倾数据有关。)然后,您阅读相关的数据消息(在本例中为MAVLINK_MSG_ID_ATTITUDE)并解码相关的传感器数据。


#3 楼

如果仅要将数据写入UART,则可以使用

cliSerial->printf("my output");




APM上没有使用UART 2,所以我认为您可以检查hal.console的设置方式以及使用UART 2的等效设置。

hal.uartB->begin(115200);


也可以选择使用mavlink协议,但是您可能想要自己的简单协议。如果要使用mavlink,可以使用gcs_send_text_fmt()函数。例如,在commands_logic.pde的verify_nav_wp()中使用它。