RoboMaster SDK 解读.3
家中布偶猫镇楼
import time
from robomaster import robot
from robomaster import led
if __name__ == '__main__':
ep_robot = robot.Robot()
ep_robot.initialize(conn_type="sta")
ep_led = ep_robot.led
# 设置灯效为常亮,亮度递增
bright = 1
for i in range(0, 8):
ep_led.set_led(comp=led.COMP_ALL, r=bright << i, g=bright << i, b=bright << i, effect=led.EFFECT_ON)
time.sleep(1)
print("brightness: {0}".format(bright << i))
ep_robot.close()
我们直接拿一段代码来看,和以往不一样的是引入了LED的包,看来作为装饰的灯也是一个独立的系统,有很多的方法去控制。
记得创建一个新的led对象,下面是是要设置一个递减变化用的标志变量~
bright = 1
for i in range(0, 8):
ep_led.set_led(comp=led.COMP_ALL, r=bright << i, g=bright << i, b=bright << i, effect=led.EFFECT_ON)
time.sleep(1)
print("brightness: {0}".format(bright << i))
这段是对一个RGB的灯的控制,这段代码可以封装好复用
r=bright << i,
g=bright << i,
b=bright << i
for搭配<<运算来实现显示效果,记录下来
昨天的话其实没有说完,我们今天继续
延时的作用就是保证当前任务执行的完整性,这里的设计是设计了一个阻塞性质的代码,在执行的时候会停在这里,直到完成任务或者被强制回收。对地位一样的模块,任务相同是互斥的。不同模块之间是互相独立的。总之所有的设计就是保证任务的完整运行
没忍住还是搜索了一下这个单词的意思
以及ACK也去找了一下相关的定义
接着说了TT无人家里面的一个实时控制
就是不提前写好序列让机器去执行,而是实时的发出控制的命令去操作机器
这个也给出了一个代码,我按照逻辑和作用分类了
可以看到所谓的实时模式就是用了rc的方法
多机的控制流程是这样,我想对于一个大型的无人机控制的流程也是这样
首先将所有的待控制的飞行器连接在同一个中继器上面(路由器),而后进行飞行前的初始化。
接着就是对连接的所有的飞行器进行排队,编号
接着是两种模式,我没有看懂,也不知道该怎么办来实现
接着就是执行飞行任务
https://pypi.org/project/netifaces/
这是什么?
一段时间,没有简单的方法从Python获取计算机网络接口的地址,这让我很恼火。这种困难有充分的理由,即几乎不可能以便携式的方式做到这一点。然而,在我看来,应该有一个包,你可以easy_install将照顾出这样做的细节,你使用的计算机上,然后你可以继续编写Python代码,而不用关心自己与系统依赖的低级网络 API的细微的坚韧。
此包尝试解决此问题。
这就是说。用Py获得一个计算机的IP地址
def GetNetworkIP():
#获取本地网卡IP地址
import netifaces
#routingGateway = netifaces.gateways()['default'][netifaces.AF_INET][0] #网关
routingNicName = netifaces.gateways()['default'][netifaces.AF_INET][1] #网络适配器信息
for interface in netifaces.interfaces():
if interface == routingNicName:
#print (netifaces.ifaddresses(interface))
try:
routingIPAddr = netifaces.ifaddresses(interface)[netifaces.AF_INET][0]['addr'] #获取IP
except KeyError:
pass
#print ("Routing IP Address:%s"% routingIPAddr)
return routingIPAddr
if __name__ == "__main__":
try:
print ("Routing IP Address:",GetNetworkIP())
except:
print ("Unable to get the address, there may not be installed netifaces module! command: pip install netifaces")
以上代码给出了一个demo,如果有使用的,可以直接拿来去使用。
对于多机的编号,使用列表的方式
是想要编号的机器id
一个是实体机器的号码,形成了映射的关系
组的方法,可以复用无人机
先将机器编组,然后向组发送命令来控制飞行器
特别的给出了两个方法,在一个组内添加机器或移除机器
for drone_id in drone_group.robots_id_list:
drone_obj = drone_group.get_robot(drone_id)
drone_obj.flight.takeoff().wait_for_completed()
给出了一个依次起飞的代码,drone_group 为获取到的“组对象”
用循环依次的放飞飞行器~