Dji RoboMaster Tello SDK封装.2
显示视频流的功能,可能用了线程会好一些
其实可以用队列来实现,后面可能会写相关的一些实现
这个就是我们万事第一步,连接。具体可以看上面的初始化
和SDK里面的说法是对应的
对偶操作,关闭视频流
而且更新一次流状态
在SDK里面有所体现
注意看第一个的响应,一定是OK。然后下面的操作都才会有意义
这个是对移动的指令的打包,如果自己想重新打包也可以。
我对ESP32的扩展器没有做封装,后面再做封装
使用指令的时候,对比官方的SDK里面的取值范围
对里面的控制命令的封装,最新的SDK又有了新的指令,我可能有没有封装到位的,可以自己去封装。下文会有安装的方法
参考的SDK,以上的设置类的主要参考资料
读取的指令都是一样的,只是它的命令不一样
以及还有若干指令未封装,就像SN,SDK的号码什么的。
def get_log(self):
return self.log
def close(self):
self.socket.close()
# 告诉飞机进入SDK控制模式
def command(self):
self.send_command('command')
def takeoff(self):
self.send_command('takeoff')
def land(self):
self.send_command('land')
def downvision(self):
self.send_command('downvision 1')
# 此时打开下视摄像头
def streamon(self):
self.send_command('streamon')
# 首先打开视频流的功能
self.stream_state = True
# 将视频流的状态更新一次
self.video_thread = threading.Thread(target=self._video_thread)
# 这个函数看我初始化的代码
self.video_thread.daemon = True
self.video_thread.start()
def streamoff(self):
self.stream_state = False
self.send_command('streamoff')
def emergency(self):
self.send_command('emergency')
# 移动指令
def up(self, dist: int):
self.send_command('up {}'.format(dist))
def down(self, dist: int):
self.send_command('down {}'.format(dist))
def left(self, dist: int):
self.send_command('left {}'.format(dist))
def right(self, dist: int):
self.send_command('right {}'.format(dist))
def forward(self, dist: int):
self.send_command('forward {}'.format(dist))
def back(self, dist: int):
self.send_command('back {}'.format(dist))
def cw(self, degr: int):
self.send_command('cw {}'.format(degr))
def ccw(self, degr: int):
self.send_command('ccw {}'.format(degr))
def flip(self, direc: str):
self.send_command('flip {}'.format(direc))
def go(self, x: int, y: int, z: int, speed: int):
self.send_command('go {} {} {} {}'.format(x, y, z, speed))
def curve(self, x1: int, y1: int, z1: int, x2: int, y2: int, z2: int,
self.send_command('curve {} {} {} {} {} {} {}'.format(
x1, y1, z1, x2, y2, z2, speed))
# 设置指令
def set_speed(self, speed: int):
self.send_command('speed {}'.format(speed))
# 设置熟读
def rc_control(self, a: int, b: int, c: int, d: int):
self.send_command('rc {} {} {} {}'.format(a, b, c, d))
# 这个rc指令是对于自动控制必须有的
def set_wifi(self, ssid: str, passwrd: str):
self.send_command('wifi {} {}'.format(ssid, passwrd))
def station(self, ssid: str, passwrd: str):
self.send_command('ap {} {}'.format(ssid, passwrd))
def wifisetchannel(self, xxx: int):
self.send_command('wifisetchannel {}'.format(xxx))
def mon(self):
self.send_command('mon')
def moff(self):
self.send_command('moff')
def mdirection(self, x: int):
self.send_command('mdirection {}'.format(x))
# 读取指令
def get_speed(self):
self.send_command('speed?', True)
return self.log[-1].get_response()
def get_battery(self):
self.send_command('battery?', True)
return self.log[-1].get_response()
def get_time(self):
self.send_command('time?', True)
return self.log[-1].get_response()
def get_height(self):
self.send_command('height?', True)
return self.log[-1].get_response()
def get_temp(self):
self.send_command('temp?', True)
return self.log[-1].get_response()
def get_attitude(self):
self.send_command('attitude?', True)
return self.log[-1].get_response()
def get_baro(self):
self.send_command('baro?', True)
return self.log[-1].get_response()
def get_acceleration(self):
self.send_command('acceleration?', True)
return self.log[-1].get_response()
def get_tof(self):
self.send_command('tof?', True)
return self.log[-1].get_response()
def get_wifi(self):
self.send_command('wifi?', True)
return self.log[-1].get_response()
都加入了日志功能,加到log里面
这个是读取命令的SDK,同上。参考资料
这里其实还有对ESP32的命令的集成,我没有写。
有空再写,就是体力活
赞 (0)