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)

相关推荐