gpt4 book ai didi

ios - 无法下载适用于 IOS 的 Tello SDK

转载 作者:行者123 更新时间:2023-11-28 23:44:16 24 4
gpt4 key购买 nike

任何人都知道如何下载适用于 iOS 的 Tello SDK。我访问了链接 https://www.ryzerobotics.com/tello , 但它没有用

最佳答案

Tello 没有可供下载的官方 SDK。您可以在 this link 找到说明。它提供了通过网络连接向无人机发送 UDP 数据包的详细信息。您可以使用 CocoaAsyncSocket在 GitHub 上找到,可帮助您创建与套接字的连接,然后将命令作为 ASCII 数据传递给 Tello。

下面是一些示例代码(我今天早些时候自己写的 website ):

var socket = GCDAsyncUdpSocket()
let sendHost = "192.168.10.1"
let sendPort: UInt16 = 8889
let statePort: UInt16 = 8890

首先,创建套接字,一个带有 Tello IP 的字符串,以及几个保存端口号的常量(8889 用于向其发送命令,如果命令成功,也会收到诸如“OK”之类的响应。 8890用于每秒多次接收无人机的遥测数据。

这将向 Tello 发送初始“命令”命令:

// Set the delegate and dispatch queue
socket.setDelegate(self)
socket.setDelegateQueue(DispatchQueue.main)

// Send the "command" command to the socket.
do {
try socket.bind(toPort: sendPort)
try socket.enableBroadcast(true)
try socket.beginReceiving()
socket.send("command".data(using: String.Encoding.utf8)!,
toHost: sendHost,
port: sendPort,
withTimeout: 0,
tag: 0)
} catch {
print("Command command sent.")
}

您需要确保该类符合 GCDAsyncUdpSocketDelegate。

实现从 Tello 接收数据的委托(delegate)方法。

func udpSocket(_ sock: GCDAsyncUdpSocket, didReceive data: Data, fromAddress address: Data, withFilterContext filterContext: Any?) {
let dataString = String(data: data, encoding: String.Encoding.utf8)
if (sock.localPort() == sendPort) {
print(dataString)
}

if (sock.localPort() == statePort) {
var telloStateDictionary = [String:Double]()
let stateArray = dataString?.components(separatedBy: ";")

for itemState in stateArray! {
let keyValueArray = itemState.components(separatedBy: ":")
if (keyValueArray.count == 2) {
telloStateDictionary[keyValueArray[0]] = Double(keyValueArray[1])
}
}
print(telloStateDictionary)
}

设置端口 8890 以监听遥测数据:

let receiveSocket = GCDAsyncUdpSocket(delegate: self, delegateQueue: DispatchQueue.main)
do {
try receiveSocket.bind(toPort: statePort)
} catch {
print("Bind Problem")
}

do {
try receiveSocket.beginReceiving()
} catch {
print("Receiving Problem")
}

运行应用程序。假设您已手动连接到 Tello(就像您使用 Tello 应用程序控制它一样),您应该开始从 Tello 取回信息。

要向它发送更多命令,例如“起飞”或“cw 360”,您可以执行以下操作:

func sendCommand(command: String) {
let message = command.data(using: String.Encoding.utf8)
socket.send(message!, toHost: sendHost, port: sendPort, withTimeout: 2, tag: 0)
}

将命令作为字符串传递,这会将其发送到 Tello。

关于ios - 无法下载适用于 IOS 的 Tello SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52926803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com