[M10项目]行空板控制六足机器人 精华

9462浏览
查看: 9462|回复: 19

[M10项目] 行空板控制六足机器人

[复制链接]
本帖最后由 cary_skx 于 2023-2-27 17:40 编辑

六足机器人源于国外的一个开源项目,最早在B站看到相关的视频,国内很多UP主也参考制作,另外有一些衍生版本。相比常规的轮式机器人,双足和四足来说,感觉是眼前一亮,更有是仿生的科技感,在参考一些开源的内容后,发现制作起来难度主要在两个方面:1、需要制作控制舵机的主控板;2、需要制作的零件较多(6只脚)。所以购买成品更加高效,这边推荐幻尔的六足机器人散件。

相关视频:
行空板控制六足机器人



提前准备的设备零件:
  • 行空板x1,
  • 六足机器人基本款/散件,
  • USB转TTL工具,
  • Type-C充电线(20厘米以内),
  • 20厘米杜邦线。


行空板控制六足机器人图8



本次以幻尔的这款设备作为底盘,这款产品共使用18个总线舵机,舵机接入到总线控制器(如下图),机器人的动作组文件一共有56个,大多数是和开源项目一致,少部分动作是幻尔自己开发的,可以下载安装到控制器,实际上我们需要做的事情只是让行空板通过串口发送指令给到总线控制器

第一部分      连接行空板与六足机器人

1,串口连接方式有两种:
A方案 行空板上的UART接口是金手指P0和P3,增加拓展件,用杜邦线连接;
B方案 增加一个USB转TTL设备,行空板板载了USB接口,内置了ch340、cp2102、pl2303串口驱动,因此可以直接使用一个USB to TTL转接板连接串口设备,使用pyserial库进行通信
本文使用了B方案

2,六足机器人总线控制器上的二次开发通信接口一共有4个针脚,除了用于串口通信,电压正好是5V,可以给行空板供电,需要购买一根Type-C的供电线,供电端需要改装成杜邦线头。

4根线全部连接后如下图:
行空板控制六足机器人图6行空板控制六足机器人图1



第二部分      用行空板向六足机器人发送指令

1,关于串口的使用,建议大家先下载微软官方的串口调试工具,使用mind+控制行空板发送消息给到自己电脑上,就像把左口袋的东西放到右口袋。
连接时注意TX和RX相对连接。


行空板控制六足机器人图2



2,   通过阅读六足机器人的二次开发串口通信协议,波特率为9600,动作指令类型:
行空板控制六足机器人图7

3,    在mind+端用于的测试程序:

  1. from pinpong.board import Board, UART
  2. import serial
  3. ser=serial.Serial("/dev/ttyUSB0",9600)
  4. buf = bytearray(b'\x55\x55')
  5. buf.append(5 & 0xff)
  6. buf.append(6 & 0xff)
  7. buf.append(18 & 0xff)
  8. buf.append(1 & 0xff)
  9. buf.append(0 & 0xff)
  10. print(buf)
  11. ser.write(buf)  
复制代码

4,   打开串口调试工具后,记得是十六进制显示,在mind+运行后,可以得到如下结果,说明成功用行空板的串口向机器人发送一个动作指令:
行空板控制六足机器人图3


5,  这时候我们应该将行空板连接到本地WIFI,这样mind+可以通过路由器连接到行空板,返回到行空板与六足机器人连接的状态后,再次运行以上程序,将控制六足机器人行走一小步。




第三部分 如何更容易的通过行空板控制六足机器人

因为Mind+提供了大量的软件和拓展硬件,我们可以通过多种方式控制六足机器人,这边列举其中一种方法。
1,首先我们可以通过input的方式,如果输入一个字符”w”就让机器人前进(对应1号动作),字符”s”就让机器人后退(对应2号动作):
行空板控制六足机器人图5
2,我们也可以通过mind+中MQTT的方式,接收iot.dfrobot.com.cn服务器中的指令,从而实现远程控制。

例如:收到服务器中字符串”w”后,让机器人向前行走一小步。

行空板控制六足机器人图4


3,通过pygame制作一个简易的按键控制软件,当键盘上的w键被按下时,自动将字符串”w”发送到服务器端,同时机器人收到服务器端的字符串”w”后,让机器人向前行走一小步。

注意:此时一台电脑的Mind+连接行空板,另一台电脑上运行pygame程序

  1. import pygame,sys
  2. import siot
  3. import time
  4. def on_message_callback(client, userdata, msg):
  5.     print(msg.payload.decode())
  6. pygame.init()
  7. siot.init(client_id="",server="iot.dfrobot.com.cn",port=1883,user="iot用户名",password="iot密码")
  8. siot.connect()
  9. siot.loop()
  10. siot.set_callback(on_message_callback)
  11. siot.getsubscribe(topic="ioth话题")
  12. s = pygame.display.set_mode((600,400))
  13. pygame.display.set_caption("hi 键盘")   
  14. while True:
  15.     for event in pygame.event.get():
  16.         if event.type == pygame.QUIT:
  17.             sys.exit()
  18.         elif event.type == pygame.KEYDOWN:
  19.             if event.unicode == "":
  20.                 print("#",event.key,event.mod)
  21.             else:
  22.                 print(event.unicode,event.key,event.mod)
  23.                 siot.publish(
复制代码

附:mind+控制行空板代码;





move.mp

170.74 KB, 下载次数: 4512

mind+

Forgotten  版主

发表于 2023-2-28 18:07:56

回复

使用道具 举报

Mr-k  初级技匠

发表于 2023-3-6 20:41:11

厉害厉害
回复

使用道具 举报

aYYSW8AepLLd  初级技匠

发表于 2023-3-8 19:21:43

厉害厉害,不错不错
回复

使用道具 举报

Eric高伟胜  初级技匠

发表于 2023-3-9 08:37:05

厉害厉害真厉害
回复

使用道具 举报

地下铁  高级技师

发表于 2023-3-10 09:03:35

这个厉害了
回复

使用道具 举报

ThhWvnKJUAxi  学徒

发表于 2023-3-16 18:59:49

希望你能用它代替劳累的外卖员
回复

使用道具 举报

潘一豪  学徒

发表于 2023-3-25 14:37:53

真厉害!继续加油啊!
回复

使用道具 举报

腿毛利小五郎  初级技匠

发表于 2023-3-27 09:06:44

厉害厉害!
回复

使用道具 举报

三春牛-创客  初级技神

发表于 2023-3-28 16:30:58

厉害厉害
回复

使用道具 举报

三春牛-创客  初级技神

发表于 2023-3-28 16:33:59

来学习了
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-3-28 16:35:55

厉害厉害
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-3-28 16:37:25

好赞啊!
回复

使用道具 举报

腿毛利小五郎  初级技匠

发表于 2023-4-3 09:34:40

厉害厉害
回复

使用道具 举报

Forgotten  版主

发表于 2023-5-8 20:39:51

改造了一下,使用行空板板载的siot服务器,控制起来更迅速:
  1. import time
  2. from pinpong.board import Board, UART
  3. import serial
  4. import pygame,sys
  5. def action(act,times):
  6.     buf = bytearray(b'\x55\x55')
  7.     buf.append(5 & 0xff)
  8.     buf.append(6 & 0xff)
  9.     buf.append(act& 0xff)
  10.     buf.append(times & 0xff)
  11.     buf.append(0 & 0xff)
  12.     ser.write(buf)
  13. def stop():
  14.     buf = bytearray(b'\x55\x55')
  15.     buf.append(2 & 0xff)
  16.     buf.append(7 & 0xff)
  17.     ser.write(buf)   
  18. def contr(keys):
  19.     key = keys[0]
  20.     n = len(keys)
  21.     if key == "w":
  22.         action(21,n)
  23.     elif key == "s":
  24.         action(22,n)
  25.     elif key == "a":
  26.         action(7,n)
  27.     elif key == "d":
  28.         action(8,n)
  29.     elif key == "q":
  30.         action(23,n)
  31.     elif key == "e":
  32.         action(24,n)
  33.     elif key == " ":
  34.         stop()
  35. ser=serial.Serial("/dev/ttyUSB0",9600)
  36. import siot
  37. # siot事件回调函数
  38. def on_message_callback(client, userdata, msg):
  39.     val = msg.payload.decode()
  40.     contr(val)
  41. # siot初始化
  42. siot.init(client_id="",server="127.0.0.1",port=1883,user="siot",password="dfrobot")
  43. siot.connect()
  44. siot.loop()
  45. siot.set_callback(on_message_callback)
  46. siot.getsubscribe(topic="spider/contrl")
  47. siot.publish(topic="spider/contrl", data="hello")
  48. import time
  49. while True:
  50.     time.sleep(1)
  51.    
  52.    
复制代码


配合实时模式获取键盘更简单点:
行空板控制六足机器人图1
回复

使用道具 举报

cary_skx  见习技师
 楼主|

发表于 2023-9-8 14:16:20

Forgotten 发表于 2023-5-8 20:39
改造了一下,使用行空板板载的siot服务器,控制起来更迅速:

收到,谢谢
回复

使用道具 举报

Amos Young  中级技师

发表于 2023-9-11 09:01:35

学习好教程
回复

使用道具 举报

大海986  初级技师

发表于 2023-11-15 10:55:02

好!来个合作,如何?
回复

使用道具 举报

11111111111  见习技师

发表于 2024-7-19 17:29:07

从硬件的串口连接到软件的指令发送,每一步都讲解得非常清晰,期待将这些知识应用到自己的项目中,创造出更多有趣的作品。
回复

使用道具 举报

昊盟  见习技师

发表于 2024-11-27 11:22:31

厉害厉害真厉害
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
关于楼主

楼主的其它帖子

上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail