我正在编写一个使用C++程序来控制无人机的程序。我在用AT指令来控制无人机。我能够通过向端口5554发送一个小数据包来接收导航数据。但是这个程序被无人机起飞的功能卡住了:
sprintfAT*REF="%u,x",序列号。
现在我的问题是,x的值应该是多少?只有第八位必须设置为一个起飞。因此,在这种情况下,它的值应该是11540100。但是我发现了很多例子,其中它的值是290718208。我试着用这两种值把无人机起飞,但无人驾驶飞机没有起飞。应该使用什么价值?
发布于 2014-01-24 10:20:02
来自arDrone api论坛的MAPGPS:https://projects.ardrone.org/boards/1/topics/show/852
问候: AT*CONFIG=1,\"control:altitude_max\",\“2000” Basic控件 起飞: AT*REF=101,290718208 着陆: AT*REF=102,290717696 悬停: AT*PCMD=201,1,0,0,0,0
当然,第一个参数(101,102,等等)应该用正确的序列号替换。
发布于 2015-04-26 18:36:35
来自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如果您希望无人机起飞,则也将bit 9(而不是像您在问题中所说的第8位)设置为1,然后得到:
>>> (1 << 18) | (1 << 20) | (1 << 22) | (1 << 24) | (1 << 28) | (1 << 9)
290718208这就是数字290718208的来源。
https://stackoverflow.com/questions/21275137
复制相似问题