522浏览
查看: 522|回复: 0

[M10项目] 基于行空板的开源“宠物”机器人——Tillu

[复制链接]
本帖最后由 zoey不种土豆 于 2025-1-10 11:55 编辑

本周分享一个基于行空板M10制作的开源“宠物”机器人——Tillu,其灵感来源于Otto机器人Tillu具备行走、跳舞等动态功能,配备了显示屏用于展示表情,还集成了麦克风、陀螺仪等传感器,支持语音识别和触摸交互。项目完整开源了3D打印文件和Python代码,小伙伴们可以通过Fusion 360修改设计,使用Mind+进行可视化编程。整个项目的成本控制合理,制作难度适中,非常适合想要入门机器人开发的创客们进行学习和实践。
基于行空板的开源“宠物”机器人——Tillu图58


特色功能
趣味表情:通过行空板显示屏,来帮助Tillu显示各种灵活可爱的面部表情;

行走、舞蹈:Tillu通过两条腿上的四个舵机来实现行走,或向前后左右的移动,甚至完成一系列连续的舞蹈动作,共计含有约10种行动模式;
触摸传感和语音指令:
内置触摸传感器,每当有人触摸Tillu的头部,它就会开始一些随机的动作;由于行空板M10内置的麦克风,它可以识别语音指令,每当你对它说“Tillu,dance”(Tillu,跳舞它就会开启一段随机舞蹈。它还可以根据你的指令来向前、退后或左右转动或舞蹈。
外观方面,使用深灰色和橙色丝线为Tillu打造酷炫的双色外观;
其它方面,头部背壳的开孔设计方便充电和连接电脑扩展编程。


作者分享


材料清单
基于行空板的开源“宠物”机器人——Tillu图2

硬件
行空板M10
DF15MG舵机
2路18650电池座
Type-C L型公对母转接线 (行空板M10专用)
触觉按钮
触摸传感器
螺丝套件

软件
Mind+
Autodesk Fusion

其他
3D 打印机

项目过程
第一步:CAD和3D打印
组件导入:我导入了所有标准组件,如行空板M10、舵机,并手动测量了尺寸以创建电池管理板。


基于行空板的开源“宠物”机器人——Tillu图1

机器人主体设计:
头部外壳:设计用于稳固地承载重型电池和行空板。
主体(中心框架):作为结构支柱,连接头部和腿部,同时确保稳定性。
盖板:提升机器人的美观性。
腿脚:灵感来自Otto DIY机器人,确保流畅运动和平衡。
耳机设计:为增添趣味和酷炫外观而设计,赋予Tillu更多个性,
整个机器人的部件使用螺丝组装固定,项目作者在外壳背面设计了电源按钮和两个USB Type-C接口的插槽,一个用于电池充电,另一个用于行空板编程。

你可以在 Fusion 360 中打开模型,以根据您的要求对其进行修改。或者可以直接下载用于 3D 打印的 STL 文件
以下是要打印的部件:

Main.stl  
Cover.stl
Servo Housing Right.stl
Servo Cover Right.stl
Servo Cover Left.stl
Right Leg.stl
Left Leg.stl
Head Phone P1.stl
Head Phone P2.stl
Head Phone P3.stl


第二步:3D打印部件组装
1.组装外壳和面罩:
所需打印部件:Housing.stl(灰色)+ Visor.stl(橙色)
步骤:
  • 取机器人的头部外壳(Housing),找到用于安装显示屏(Visor)的插槽。
  • 将显示屏(Visor)插入头部外壳的对应插槽中。
  • 取少量快干胶将面罩固定到位,为了保持外观整洁,注意不要使用过量。

基于行空板的开源“宠物”机器人——Tillu图3


基于行空板的开源“宠物”机器人——Tillu图4

2.组装耳机:
所需打印部件:
Head Phone P1.stl、 Head Phone P2.stl 、Head Phone P3.stl
步骤:
  • 双色打印: 如果你希望耳机部分呈现双色效果,可以选择更换丝线。在打印过程中暂停,更换耗材,以达到理想的效果。
  • 打印完成后,将四个耳机部件对齐组装:
  • 将耳机部件P2安装到耳机部件P1上。
  • 将两个耳机部件P3安装到位,完成耳机的设计。
  • 虽然这些部件设计为紧密贴合,但如果你需要额外的牢固性,可以适量使用胶水进行固定。

第三步:为舵机添加接线
基于行空板的开源“宠物”机器人——Tillu图5
舵机自带接线,但这些接线与行空板M10的接口不兼容。因此,需要对接线进行改造,以确保兼容性和正常连接。
行空板M10带有三个含PWM 信号的 GPIO 接口(P21、P22 和 P23),而在我们的项目中,需要连接四个舵机,为解决此问题,我们可以:
  • 给前三个舵机使用可用的 GPIO 引脚
  • 把第四个舵机的信号引脚直接焊接到行空板上的 P16 上

1.改造和添加接口准备接线:取出行空板附带的两个双面三pin接线,将它们从中间剪开,得到四个独立的接线。保留三条接线用于连接舵机,另一个用于触摸传感器(在后续步骤中使用)。

2.连接舵机:
使用两组接线分别连接两个舵机。按照下图所示的极性和接线图进行连接:
  • 信号线(橙色)
  • 5V电源线(红色)
  • 地线(棕色)

确保接线的方向与接线图一致。

3.将两个舵机连接到一组接线上:
对于第三组接线:
  • 将两个伺服电机的地线和5V电源线连接到同一组接线上。
  • 将其中一个伺服电机的信号线连接到接线上。
  • 保持第二个舵机的信号线畅通;稍后将焊接到 P16 上。

检查所有连接,确保极性和接线图一致。

基于行空板的开源“宠物”机器人——Tillu图6


基于行空板的开源“宠物”机器人——Tillu图7

基于行空板的开源“宠物”机器人——Tillu图8

第四步:扩展按钮以控制电源开关

基于行空板的开源“宠物”机器人——Tillu图9


基于行空板的开源“宠物”机器人——Tillu图10

基于行空板的开源“宠物”机器人——Tillu图11

基于行空板的开源“宠物”机器人——Tillu图12

项目设计中的电池座包含一个小按钮,用于控制Tillu机器人的电源开关。然而,由于外壳设计的原因,无法触摸到按钮,并且由于尺寸过小,实际使用时不够方便。为了解决这个问题,我们将通过添加一个外部触摸按键来扩展其功能。

所需材料:
触觉按钮、焊接器材、用于扩展连接的绝缘线
步骤:

  • 识别电池座上的微型内置按钮
  • 注意连接点(两个端子)
  • 将两根绝缘线连接到按钮端子,确保它们长度足够
  • 将外部按键的一端焊接到与连接图一致的相同端子上。

第五步:连接电池
基于行空板的开源“宠物”机器人——Tillu图13

基于行空板的开源“宠物”机器人——Tillu图14

在此步骤中,我们将使用电池座为行空板准备电源,并用同一个 USB Type-C 接口实现无缝编程。通过创建一个定制的扩展接线,我们将使电池组能同时为电路供电,并且可以访问行空板的Type-C 接口进行编程。

所需材料:
USB Type-C 延长线、电池座、焊接器材、电线(处理电力负责)
步骤:
  • 取一根USB Type-C延长线,在母头一端剥开绝缘层。
  • 找到G(GND,地线)和V(Vcc,电源)端子。
  • 将两根高质量的导线分别焊接到母头的GND和VCC端子上。
  • 将焊接好的导线另一端连接到电池座的GND和5V输出端子上。
  • 参考连接图以确保接线正确。
  • 使用热缩管或绝缘胶带包裹Type-C延长线上裸露的焊接部分,确保绝缘和安全。

基于行空板的开源“宠物”机器人——Tillu图15


基于行空板的开源“宠物”机器人——Tillu图16

第六步:触摸传感器接线

基于行空板的开源“宠物”机器人——Tillu图17

所需材料:
触摸传感器模块、兼容接线(来自步骤三)、焊接器材、跳线(按需使用)
步骤:
取步骤三中准备好的接线,根据上面的电路图,将接线焊接到触摸传感器的引脚上。

基于行空板的开源“宠物”机器人——Tillu图18

基于行空板的开源“宠物”机器人——Tillu图19

第七步:编程测试
基于行空板的开源“宠物”机器人——Tillu图21

如上图所示,连接所有舵机和触摸传感器以及在前期步骤中准备的Type-C电池组。暂时不要焊接第四个伺服电机的裸露导线。

基于行空板的开源“宠物”机器人——Tillu图20

运行Mind+,测试程序
下载并安装Mind+,在菜单中读取行空板,切换到Python模式,开始编程。(如何连接?点击查看行空板Mind+编程说明
从 Tillu GitHub 存储库下载提供的文件夹,解压缩后,将整个 Tillu 文件夹拖放到行空板的文件系统中,打开位于 Tillu 文件夹中的 forward.py 文件并运行该程序。
  • 将行空板从电脑上断开连接。
  • 打开电池模块的电源。
  • 行空板应该会开机启动。
  • 使用行空板上的导航按钮,在根目录中找到forward.py文件。
  • 在行空板上直接选择并运行该程序。
  • 舵机应该会响应,触摸传感器也应该能够正常接收输入。

提醒:在测试前,要确保电池座电量充足。另外,如果有组件没按预期触发运行,则需要检查连接和接线。

第八步:安装行空板支架
基于行空板的开源“宠物”机器人——Tillu图22

所需材料:
行空板M10、3D打印的行空板支架、3颗M3螺丝、电池座
步骤:
  • 将电池组的Type-C线通过支架上的预留槽连接到行空板上。
  • 将3D打印的行空板支架与行空板上的安装孔对齐。
  • 使用3颗M3螺丝将支架固定到行空板上。

基于行空板的开源“宠物”机器人——Tillu图24

基于行空板的开源“宠物”机器人——Tillu图23

基于行空板的开源“宠物”机器人——Tillu图25

第九步:安装触摸传感器

取触摸传感器,并在其背面涂抹少量胶水。
将触摸传感器安装到外壳主体上,用手按压几秒钟,直到胶水变干。

基于行空板的开源“宠物”机器人——Tillu图26

第十步:安装电池座

基于行空板的开源“宠物”机器人——Tillu图27

所需材料:
电池座、Type-C延长线、M2螺丝、螺丝刀
步骤:
  • 取第二根Type-C延长线,将其牢固地插入电池管理板。
  • 将电池组与外壳上预设的螺丝孔对齐。
  • 使用M2螺丝将电池组固定到外壳上。

基于行空板的开源“宠物”机器人——Tillu图28

基于行空板的开源“宠物”机器人——Tillu图29

第十一步:组装Tillu电机

基于行空板的开源“宠物”机器人——Tillu图30

所需材料:
2个舵机(髋部舵机)、M2螺丝、小型螺丝刀
说明:
由于舵机侧面的接线会与主体槽位的壳壁发生碰撞,导致舵机无法直接安装到主体槽位中。为了解决这个问题,我们需要暂时拆卸舵机外壳的一部分。
步骤:
  • 用螺丝刀拆下每个舵机底部盖板的螺丝。
  • 小心地将舵机的底部部分分离。
  • 先将舵机外壳的底部部分放入主体槽位中。
  • 将舵机与槽位对齐,并轻轻放置到位。
  • 当舵机位置正确后,重新将底部部分安装到舵机上。
  • 拧紧之前拆下的螺丝,确保舵机外壳牢固闭合。
  • 使用舵机配件包中的M2螺丝将舵机固定到主体上。

基于行空板的开源“宠物”机器人——Tillu图31

基于行空板的开源“宠物”机器人——Tillu图32

第十二步:组装Tillu的脚

基于行空板的开源“宠物”机器人——Tillu图33

基于行空板的开源“宠物”机器人——Tillu图34

所需材料:
2个舵机(连接到一个共用接线)、2个舵机外壳、2个舵机盖板、M2螺丝、速干胶
步骤:
  • 取出之前连接到一个共用接线的两个舵机,以及3D打印的脚部舵机部件。
  • 将每个舵机插入其对应的外壳中,确保舵机的方向与外壳结构对齐。
  • 使用舵机配件包中的M2螺丝将每个舵机固定到其外壳上。
  • 取出盖板,对齐轴心,轻轻按压将盖板扣合到外壳上。
  • 在盖板与外壳接触的边缘处涂抹少量速干胶,确保粘合牢固。

基于行空板的开源“宠物”机器人——Tillu图36

基于行空板的开源“宠物”机器人——Tillu图35

第十三步:组装Tillu的腿
所需材料:
3D打印的腿部部件、4个舵机摆臂、M2螺丝
步骤:
  • 取出舵机附带的4个舵机摆臂,按照提供的图片所示,将其中两个摆臂从中间剪开。
  • 将舵机摆臂与3D打印腿部部件上的设计槽位对齐,参考图片中的方向,确保摆臂位置正确。
  • 使用M2螺丝将每个舵机摆臂固定到腿部部件上。

基于行空板的开源“宠物”机器人——Tillu图37

第十四步:启用自运行(开机启动)功能
1.使用行空板上的导航按钮进入系统菜单。
2.启用自动启动功能:
导航到“服务切换” -> “自动启动”。
将选项切换为“启用”。

基于行空板的开源“宠物”机器人——Tillu图38

3.设置程序自动运行:
导航到“运行程序” -> “root/” -> “main.py”,选择“main.py”并运行一次。

基于行空板的开源“宠物”机器人——Tillu图39

手动运行程序后,该程序将被设置为开机时的默认运行程序。
关闭并重新启动行空板,确认main.py是否自动运行。
注意事项:
如果行空板已经安装到外壳中,导航按钮可能无法直接操作。在这种情况下,可以通过行空板的USB接口连接鼠标来完成这些步骤。

基于行空板的开源“宠物”机器人——Tillu图40

基于行空板的开源“宠物”机器人——Tillu图41

第十五步:将行空板安装到头部内壳
  • 取出已经预先安装到定制3D打印支架上的行空板。
  • 接入所有接线,包括:通过Type-C接口连接的电池组、3个舵机、触摸传感器。
  • 将第四个舵机的信号线焊接到行空板的P16引脚上。
  • 将行空板组件放置到位,对准外壳(头部)上的安装孔。
  • 使用M2螺丝将行空板组件牢固地固定到外壳上。

基于行空板的开源“宠物”机器人——Tillu图42

基于行空板的开源“宠物”机器人——Tillu图43

基于行空板的开源“宠物”机器人——Tillu图44

基于行空板的开源“宠物”机器人——Tillu图45

第十六步:主体组装
1.定位Type-C数据接口(用于编程和充电)
  • 找到外壳上的Type-C数据接口槽位。
  • 将Type-C接口小心地放入其指定槽位,并使用速干胶固定。
  • 用同样方式,定位充电接口并使用速干胶固定。
2.定位触控开关按钮:找到外壳上触控开关按钮的槽位,将按钮放入槽位,使用少量速干胶固定。
3.主体组装:
  • 取主体部件,小心地将其放置到外壳上。
  • 对齐螺丝孔位,将所有线缆整齐地收纳在外壳内,确保没有线缆被挤压。
  • 确保两条舵机腿部线缆从设计好的槽位中引出。
  • 使用5颗M2螺丝将主体固定到外壳上。
基于行空板的开源“宠物”机器人——Tillu图46

基于行空板的开源“宠物”机器人——Tillu图47

基于行空板的开源“宠物”机器人——Tillu图48

第十七步:封闭部件
取下外壳并将其与主体组件对齐,使用 3 个 M2 螺丝将外壳固定到主体组件上。

基于行空板的开源“宠物”机器人——Tillu图49

基于行空板的开源“宠物”机器人——Tillu图50
第十八步:完成总装
1.运行初始化脚本:
将行空板连接到电脑,运行initialize.py脚本。该脚本会将所有舵机调整到90°中立位,确保组装时正确对齐。

基于行空板的开源“宠物”机器人——Tillu图51

2.安装腿部:
取两条腿部部件,将它们安装到处于90°位置的舵机上,使用螺丝固定腿部。

基于行空板的开源“宠物”机器人——Tillu图52

3.安装脚部:
取出之前组装好的脚部舵机,将它们以90°位置安装到腿部上,用螺丝将脚部舵机固定牢固。

基于行空板的开源“宠物”机器人——Tillu图53

4.安装头部(耳机部分):
取出耳机部分(头部组件),小心地将其安装在机器人的头部。
现在所有部件都已组装完成,设备已通电并准备就绪,Tillu机器人可以开机了!

基于行空板的开源“宠物”机器人——Tillu图54

代码注释
基于行空板的开源“宠物”机器人——Tillu图55

1. 初始化
  • 导入模块:程序导入了多个模块:random、threading 和 time 用于随机化、多任务处理和计时。
  • 自定义模块:
       robot_control.py 用于控制舵机运动。
       facial_expressions.py 用于显示基于视频的表情。
      speech_text.py 用于语音命令识别。
      Pin 用于与硬件按钮交互。
  • 触摸传感器:初始化一个数字引脚(Pin.P24)作为输入触摸传感器。
  • 动作控制锁:使用线程锁(action_lock)确保同一时间只能运行一个动作(触摸或语音触发)。


2. 关键功能
2.1. random_movement_and_expression
该函数随机选择一个动作和一个表情,并执行这些动作5秒:
  • 随机化:从13个预定义的舞蹈动作(如dance1、dance2)中选择一个,选择一个表情(如angry、heart)。
  • 并行执行:使用线程同时执行动作和表情。
  • 时长管理:两个线程运行5秒后重置到中立状态(reset_positions 和 blink)。
2.2. touch_listener
持续监控触摸传感器,如果按下:
  • 确保没有其他动作正在运行(通过action_lock)。
  • 执行random_movement_and_expression。
2.3. voice_listener
持续监听麦克风的语音命令(listen_for_command):
  • 命令映射:
将识别的命令(如“前进”、“后退”、“Tillu跳舞”)映射到机器人功能,如forward()或random_movement_and_expression。执行命令时确保与正在进行的动作没有冲突。
2.4. cleanup
一个工具函数,用于重置机器人并停止正在运行的进程。

基于行空板的开源“宠物”机器人——Tillu图56

3. 主程序
main() 函数:
  • 以中立状态的眨眼表情开始。
  • 在单独的线程中启动touch_listener和voice_listener。
  • 持续运行,直到被中断(如按下Ctrl+C),此时调用cleanup函数。

4. 自定义模块
4.1. robot_control.py
通过舵机控制机器人的运动:
运动类型:
  • 基本运动(如前进、后退)。
  • 转向(左转、右转)。
  • 舞蹈(13个独特的动作,使用同步舵机运动)。
确保平滑过渡:
通过将舵机设置为休息位置(reset_positions)。
4.2. facial_expressions.py
使用Pygame显示动态表情:
  • 播放预录制的视频循环(如blink.mp4、angry.mp4)。
  • 确保资源正确清理。

4.3. speech_text.py
使用Google Web Speech API识别语音命令:包括噪声调整和错误处理,以提高识别流畅度。

5. 关键特性
交互性:用户可以通过触摸或语音触发动作。
并行执行:表情和运动可以同时进行。
可扩展性:通过扩展相应模块,可以添加新的动作或表情。
错误处理:处理无效语音命令,并确保动作之间的互斥性。
故障排除与自定义:
如果机器人的表现不符合预期,可能需要调整初始舵机角度以匹配你的机器人设置。这些角度定义了机器人的中立位置,并在robot_control.py的reset_positions函数中配置:
  1. servo_hip_right.write_angle(95)
  2. servo_hip_left.write_angle(85)
  3. servo_foot_right.write_angle(85)
  4. servo_foot_left.write_angle(100)
复制代码

可以尝试微调这些值以优化机器人的姿态和运动:
  • 增加或减少servo_hip_*的值以调整腿部角度。
  • 调整servo_foot_*的值以更精确地定位脚部。

提示:
测试时使用小幅度调整(例如±5度),并观察变化,以避免舵机过载或错位。

最终成果
Tillu 是一个兼具趣味性和挑战的的机器人项目,它结合了高质量的硬件、灵活的软件和定制的3D打印设计。行空板M10通过舵机实现精确的运动控制,而触摸传感器则为机器人增添了交互性。Tillu 机器人采用电池供电,便携性强,非常适合随时随地使用。
3D打印部件提供了设计灵活性,而 Mind+ 软件支持图形化编程和 Python 编程,适合不同水平的学习者。使用 Type-C 接口进行充电和编程,简化了设置和操作流程。这个项目提供了一个动手实践的学习体验,将编程、电子技术和设计融为一体,充满趣味性和吸引力。无论是个人使用、教学还是探索,Tillu 都为对机器人感兴趣的人提供了一个坚实的基础。

项目文件

项目作者:Mukesh Sankhla
发表时间:2024.12.15


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

本版积分规则

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

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

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

mail