在本教程中,我们将学习如何将 uROS 库用于 micropython: https://github.com/mgtm98/uRos
ROS 是一个机器人操作系统,其中不同的“节点”通过 JSON 格式的 TCP 消息与中央服务器通信。
这个库允许我们在我们的 SBC. 它将连接到服务器并能够发送(发布)或接收(订阅)消息。
发布消息的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 进口 网络 from 尿路 进口 * from uros.std_msgs 进口 std_Bool 局域网 = 网络.局域网()局域网.积极的(真) 局域网.如果配置(( “10.0.0.1”, “255.255.255.0”, “10.0.0.2”, “8.8.8.8” )) 而(兰.地位() != 3 ): 打印( “。”, 结束="" ) 时间.睡觉(1) 打印( “连接的!” ) uRos = 罗斯( “10.0.0.2”, 9090 ) #创建新的uRos对象 味精 = std_Bool( 数据 = 真 ) #创建一个Ros字符串msg对象 尿素.发布( “uRos话题”,味精) #发布消息对象 打印(“完毕”) |
在这段代码中,我们首先连接到 LAN 网络,然后连接到 ROS 服务器; 我们定义消息的格式,最后发布。
在 PC 上,我们在 python 中执行一个充当 ROS 服务器的代码。 为简单起见,这段代码只是一个将数据打印到控制台的套接字服务器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 进口 插座 进口 系统 DEF 套接字服务器(主机,端口):s = 插座.插座(插座.AF_INET,套接字.SOCK_STREAM) s.绑定((主机,端口)).听(1) 而 真: 连接, 地址 = s.接受() 打印('连接者', 地址) 而 真: 数据 = 康恩.收据(1024) if 无需 数据: 打破 打印(数据)conn.关() 打印(“关门”) 年代.关() 打印(“关门了”) socket_server( '10.0.0.2', 9090 ) 打印(“完毕”) |
结果,显示在服务器上接收到的数据:
如果我们检查数据,我们会看到两个部分:
1.我们的uRosTopic消息的定义。 对于每种新类型的消息,仅发送一次。
2.以及公布的数据。 每次我们发布新值时都会发送此信息。
现在您已准备好通过以太网将您的 SBC 连接到任何 ROS 设备,定义自定义消息并仅使用几行 python 代码发送它。