1

我正在编写一个程序来使用 C++ 程序控制无人机。我正在使用 AT 命令来控制无人机。我可以通过向端口 5554 发送一个小数据包来接收导航数据。但是程序卡在了无人机起飞功能上:

sprintfAT*REF="%u, x",序列号。

现在我的问题是 x 的值应该是多少?起飞时只需将第八位设置为 1。所以在这种情况下,它的值应该是 11540100。但是我发现了很多例子,其中它的值是 290718208。我试图用这两个值起飞无人机,但无人机没有起飞。应该使用什么值?

4

2 回答 2

1

来自 arDrone api 论坛上的 MAPGPS: https ://projects.ardrone.org/boards/1/topics/show/852

设置:AT*CONFIG=1,\"control:altitude_max\",\"2000\"

基本控制

起飞:AT*REF=101,290718208

登陆:AT*REF=102,290717696

悬停:AT*PCMD=201,1,0,0,0,0

当然第一个参数(101,102 等)应该替换为正确的序列号。

于 2014-01-24T10:20:02.383 回答
0

来自AR.Drone 开发人员指南的部分AT*REF

发送此命令来控制无人机的基本行为。在 SDK 版本 1.5 中,控制位字段中仅使用位 8 和 9。第 18、20、22、24 和 28 位应设置为 1。其他位应设置为 0。

这意味着如果第 8 位和第 9 位为零,您仍在发送(使用 Python):

>>> (1 << 18) | (1 << 20) | (1 << 22) | (1 << 24) | (1 << 28)
290717696

如果您希望无人机起飞,那么您还将第 9 位(不是您在问题中所说的第 8 位)设置为 1 并获得:

>>> (1 << 18) | (1 << 20) | (1 << 22) | (1 << 24) | (1 << 28) | (1 << 9)
290718208

这就是数字 290718208 的来源。

于 2015-04-26T18:36:35.247 回答