UDP交互架构
架构介绍
机器人头部处理器是整个机器人控制的核心,它承担着
- 收集肢体传感器信息
- 控制肢体
- 与控制台交互
UDP通讯模块是肢体末端信息收集与控制台交互的基础,头部的UDP相关交互内容如下图:

- 在机器人中,每一个模块(例如脚部,头部感知到信息)都对应一个类。在UDP部分会引用类实例;使用收到的感知数据来调整类的一些属性,然后基于类的另一些属性来输出UDP数据。
文件介绍
UDP_Bridge,包含了网络通讯相关的全部信息。在UDP_Bridge初始化中需要两个关键参数:- 需要引入一个
字典类型的配置字符串,在这个文件中存储了每个类型信息需要的端口def init(self,rootObj=None,config={}):
rootObject,程序根资源。UDP_Bridge将在根资源中寻找目标对象。
- 需要引入一个
UDP_Bridge也有几个关键的函数
数据收函数(回调函数)
L/R_Handler,接收到左右脚UDP数据时运行的函数,用于向上同步数据C_Handler,用于响应控制台指令
数据发函数
StampSync,用于同步时间戳InherentDataSync广播机器人内部数据(姿态,关节,传感器数值)PerceptDataSync广播机器人感知数据(图像)
获取局域网广播地址的方法
MicroPython方法
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(self.ssid,self.password)
self.ip=wlan.ifconfig()[0]
ip_parts = self.ip.split('.')
ip_parts[-1] = '255'
broadCastIP= '.'.join(ip_parts)
Python方法
def BroadcastAddr():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 连接到一个远程的地址,这个地址可以是任何能够连接的地址,不一定是实际的目标地址
s.connect(("8.8.8.8", 80)) # 这里选择Google的DNS服务器作为连接的目标
ip_address = s.getsockname()[0]
s.close()
splitIP=ip_address.split('.')
splitIP[-1]='255'
return '.'.join(splitIP)
except socket.error as e:
print("Error occurred while retrieving IP address:", e)
return None作者:admin 创建时间:2024-03-20 09:04
最后编辑:admin 更新时间:2024-04-22 09:38
最后编辑:admin 更新时间:2024-04-22 09:38