球平衡机器人

25916年

323

34

简介:球平衡机器人

关于:我做东西

在本教程中,我将逐步向您展示我如何创建一个球平衡机器人。更正式的说法是Stewart平台,这个机器人有6DOF机器人是全旋转和全平移的。加上一个摄像头,这个Stewart平台可以变成一个机器人,防止球掉下来。让我们开始吧!

供应

下面是构建所需的工具和部件的列表。欲了解所需物资的更详细概述,请下载材料清单excel文件在这里

工具

  • 尖嘴钳
  • 剪线钳
  • 剥线钳
  • 2.5mm六角扳手
  • 烙铁和焊料
  • exacto刀
  • 热胶枪和热胶

部分(483美元)


电子产品(400美元)

其他用品(83美元)

第一步:制作平台

球放在一个清晰的0.118“厚8”x 8“聚碳酸酯平台上。你需要制造这个平台。我没有使用喷水机,所以我使用了喷水机服务Andymark网站。如果你走这条路,我在下面附上了dxf文件。另一种选择是简单地从聚碳酸酯板上剪出一个8英寸x 8英寸的平台,并钻出所有的孔。我在下面附上了一个平台的pdf图。

步骤2:3D打印零件

我在Autodesk Inventor中设计了这个188bet比分机器人。总共有18个3d打印部件。我用PLA灯丝打印了所有这些部件。我已经在下面附上了所有的STL文件。请记住,有些部件必须打印多次。这个数字在文件名中指定。除了球和中心标记外,其他部分的颜色无关紧要。这些都应该用红色打印出来,以便摄像头能轻易发现。

我建议使用以下打印机设置:

  • 20%填充(除了球,我打印它在100%填充真的很重)
  • 自动生成的支持
  • PLA(210°挤出机和45°床层)

所有零件的灯丝用量合计约183g。打印所有零件总共花了15个小时。

Stewart平台

第三步:组装球

球分为三个部分,两个半球和中间的连接部分。你只需要把这三个部分压在一起就能做出一个球。如果配合太紧,那么就打磨中间的连接件。如果衣服太松了,就用强力胶把它粘住。

步骤4:添加插入到打印部件

18个零件中有7个需要将螺纹插入物压入其中。这些插入物充当螺钉的螺纹。你总共需要36个插片。需要这些插入的部件有:

  • 图片# 1:平台框架(6个插入件)
  • 图片# 2:底板(14个嵌件)
  • 图片# 3:盖板(12个嵌件)
  • 图片# 4:4个中心记号笔(每个插入1个)

要将这些插入件压入零件,请使用加热的烙铁。

第五步:迷你4.1

现在进入项目的核心,电子设备!正确地创建电路对这个项目至关重要。电路制作的第一部分是制作微型4.1单片机。小的是机器人的大脑。所有其他的电子元件都连接到这个小机器上。我们将使用Arduino IDE.如果你以前从未使用过这个微型机器人,你需要做以下两件事中的一件,才能让Arduino软件支持这个微型机器人。

  • 如果您使用的是Arduino 2.0.0或以上版本,则需要按照说明操作在这里让Arduino支持微型机器人。
  • 如果您使用的Arduino版本低于2.0.0,则需要下载Teensyduino为的是让Arduino支持微型机器人。

一旦完成,我建议通过上传眨眼示例草图到tiny来验证一切正常。

在此之后,您将需要修改通过切断VIN到USB痕迹在后面的微型。我指的是在哪里切这条线图片# 2。它也被标记在图中图片# 4.这样做可以确保这个小家伙需要一个外部电源来工作。我们希望这样做,因为我们将用7.4V电池供电。我们不需要在电脑插上电源的时候,用电脑来供电。

更多关于微型4.1微控制器的信息可以在这里找到在这里

注意:迷你将不会收到7.4V的电池,因为这太高了。mini将接收5V。它将从polulu maestro获得这5V(更多关于这在下一步)。

第六步:波鲁大师

6针polulu大师是什么控制伺服。伺服连接到maestro和maestro连接到通过maestro的RX和TX引脚(分别为Teensy引脚1和0)。大师是唯一一个直接连接到7.4V电池的组件。这位大师有一个5V的调节器,将用于为teeny供电。在图片# 1你可以看到,我已经焊接了两根电线(+5V和地面)连接到Teensy。

我们要对波鲁鲁大师做的第一件事就是把它设置好。您将需要下载大师控制中心软件验证/更改两个设置。一旦你下载了软件并连接了大师,插入其中一个伺服器,并从软件中移动它,以验证电路板是否工作。在这里是一本很好的教程教你如何和大师搭讪。

一旦你验证了大师的工作,你将需要验证/改变板上的2个设置。进入标题标签串口设置并确保:

  • 串行模式为UART固定波特率(9600)
  • CRC被禁用

这些设置显示在图片# 4

接下来,我们将修改大师焊接电线连接VIN伺服电源(+)。这些别针已贴上标签图片# 3焊接导线如图所示图片# 2。这种连接允许伺服系统和大师板由7.4V电池供电。

欲了解更多关于6通道polulu大师的信息,请访问在这里

第七步:Pixy 2相机

我们将使用pixy2摄像机进行物体检测。pixy上的任何内容都不需要修改,但需要下载Pixymon v2以便查看摄像机拍摄的画面并设置待检测对象。现在,你所需要做的就是把它插到你的电脑上,并通过在Pixymon上查看视频来确保它能正常工作。我还建议通过设置一个要检测的随机物体来测试物体识别。有两种方法来设置目标检测。我发现手动方法是有效的。

下面是一些有用的资源,用于设置Pixy并让金宝博比分直播手机版它识别对象:

注意:当电路在下一步设置时,Pixy2相机将不会由7.4V电池供电,因为它消耗太多电力。相反,相机通过微型usb连接到电脑上。换句话说,当你使用机器人时,机器人、polulu maestro和伺服系统将由7.4V电池供电,相机将由计算机供电。

步骤8:创建电路

现在让我们创建完整的电路。

所需电子元件:

  • 改进的Teensy 4.1单片机
  • 改进的6针Polulu Maestro伺服控制器
  • Pixy2相机
  • 3.3至5v逻辑电平转换器
  • 半原型板
  • 开关

到目前为止,我们已经讨论了5个主要电子产品中的3个:小巧的4.1,polulu maestro和pixy2相机。以下是对其余两个电子组件的简要说明:逻辑电平转换器(LLC)和伺服系统。

  • 逻辑电平转换器(LLC):由于微型4.1微控制器使用3.3V逻辑电平,而大师使用5V逻辑电平,Pololu大师的RX和TX引脚不能直接连接到teensy。相反,它们必须连接到LLC(从逻辑层向下走),LLC再连接到小对象。
  • 伺服系统:6个伺服连接到pololu maestro上的6个频道。每个伺服连接的特定通道是重要的!我将在下一步讨论这个问题。我特意选择了JX CLS6336HV因为它们是高速的。快速反应时间对这个项目至关重要。

创建电路

中所示的原理图创建电路非常简单图片# 3(PDF格式也在下面)。你会想要焊接微小的4.1和LLC到原板。maestro和pixy将是外部组件,通过电线连接到微型设备上。

制作电路的技巧

  • 使用头部引脚,以允许电子可拆卸。
  • 用热缩套管将电线绝缘。
  • 手边准备万用表测试连接性,确保连接正确。
  • 我发现最好使用伺服延长线来连接一堆电子设备。允许即插即用的动作,使东西容易移动。当事情不像预期的那样运行时,这是很有用的。
  • 图片# 2显示所使用的开关接线。开关通过电池的一根引线完成电路,使机器人开关。使用XT60H母头连接交换机。这样,7.4V脂肪电池可以插拔。
  • 所有部件上的接地引脚应连接在一起。这就是所谓的共同点。你可以用万用表检查连接性来确认这一点。

步骤9:组装底座

为了组装机器人的底座,你需要:

  • 6个伺服
  • 底板
  • pixy2底部安装
  • M3 × 5mm螺钉(x8)
  • M3 × 15mm螺钉(x4)
  • 首先使用m3 x 15mm螺钉将pixy2底部安装到两个伺服器上,然后安装到底板的前面(机器人的前面被标记在图一,图二,而且图片# 3).
  • 然后,您将想螺丝其余4伺服到底座的另一边使用m3 x 5mm螺钉。
  • 接下来,螺丝半原板上的基础板的顶部。你需要移除微小的4.1和LLC,以进入原板上的孔,将板拧上(这就是为什么我建议使用头部引脚)。
  • 热熔胶波鲁大师到底板上。
  • 最后,你会想要连接6伺服到大师上的6个频道。顺序很重要,而且已经标注出来了图一,图二,而且图片# 3。伺服必须连接到maestro上的指定通道。

第十步:覆盖底部

现在我们将覆盖机器人的底座。你需要:

  • 上一步的基础
  • M3 × 5mm螺钉(x12)
  • 用热胶将开关粘在盖板上
  • 使用m3 x 5mm螺钉,将盖板拧到每个伺服的顶部。

步骤11:组装伺服臂

现在我们将组装伺服臂。你需要:

  • 链接1 (x6)
  • 25T伺服盘(x6)
  • M3锁紧螺母(x18)
  • M3 × 120mm推杆连接器(x6)
  • 22毫米长m3拉杆(x12)
  • M3 × 12mm螺钉(x12)
  • M3 × 22mm螺钉(x6)
  • 开始拧每个25T伺服盘到每个3D打印链接使用两个锁紧螺母和两个m3 x 12mm螺钉每个盘见图片# 1而且图片# 2。
  • 通过将两个拉杆端连接到每个推杆连接器上,组装六个拉杆,如图所示图片# 3。
  • 将六个3D打印链接的另一端拧到拉杆的一端,使用m3 x 22mm螺钉和每个链接的锁紧螺母,形成六个伺服臂。这在图片# 4而且图片# 5

步骤12:安装两个Arduino库

在继续此构建之前,我们必须安装两个Arduino库

  • pololu大师的图书馆
  • pixy2相机的库

学习如何安装Arduino库在这里

步骤13:安装伺服臂

我们现在将伺服臂安装到伺服器上。为了做到这一点,我们必须首先上传Arduino草图,将所有的伺服器移动到它们的主位置。

  • 确保电池已插好,开关已打开,然后将下面的Arduino草图上传到微型电脑上。你应该能听到所有的伺服器都转回原位了。
  • 现在拧上伺服臂(使用m3 x 12mm螺钉(x6)),使他们尽可能接近垂直于伺服所示图片# 4.对所有的伺服都这样做。

微调伺服位置

正如你会注意到,当伺服臂连接,他们不会像在完全垂直图片# 4。他们很可能看起来更像图片# 3。为了使这些伺服臂完全垂直,您需要更改代码中每个伺服的偏移值。

在这部分代码中,所有偏移值最初都将设置为0,如图片# 5。通过每个伺服和改变偏移值从0到5。看伺服臂是否向垂直方向移动。

  • 如果它确实移动到接近垂直,微调伺服臂的位置,通过高于或低于5,但仍保持正值。例如,如果伺服臂需要向垂直方向移动,则可以将值更改为7。
  • 如果伺服运动远离垂直,然后使偏移值-5并微调值(同时仍保持为负),直到手臂完全垂直。对所有伺服都这样做。最后,您将得到每个伺服的偏移值,如图所示图片# 6
  • 任何伺服都不应超过-14和14之间的偏移值范围。

注意:每次更改偏移值时,请重新加载草图以查看其效果。

确保您将这些偏移值保存在某个地方,稍后您将需要更改其他两个程序的偏移值。

一旦完成了这一步,每次将这个草图上传到机器人上,所有的手臂都应该移动到各自的位置,并且完全垂直。

步骤14:搭建平台

让我们使用以下方法来构建平台:

  • 聚碳酸酯平台
  • 平台框架
  • M3 × 20mm钮扣头螺钉(x3)
  • M3锁紧螺母(x3)
  • M3 x 5mm支架(x3)

使用m3 x 20mm螺钉和锁紧螺母将聚碳酸酯平台拧到打印平台框架上。确保在平台和平台框架之间的空间中每个螺丝都增加了5mm的间隔。

步骤15:安装平台

现在让我们把平台连接到机器人的主体上。我们需要:

  • M3 × 5mm支架(x6)
  • M3 × 14mm螺钉(x6)

将每个m3 x 14mm螺丝安装在每个伺服臂的末端。将每个m3 x 5mm的螺杆固定在螺杆的另一侧,然后将伺服臂固定在有螺纹插入的平台框架上。

步骤16:安装相机支架

  • 将3/4"木销子剪成19"长。
  • 使用#6螺丝(x2)螺丝木销子到pixy2底部安装。
  • 使用#6螺丝(x2)将pixy2顶部安装到木销子的另一端。

步骤17:连接Pixy2相机

现在使用以下方法将Pixy2相机连接到Pixy2顶部挂载:

  • M3 × 30mm螺钉(x3)
  • M3 x 10mm支架(x3)
  • M3锁紧螺母(x3)

通过在pixymon上查看镜头,确保pixy2摄像头能很好地查看平台。当你看到摄像机的镜头时,你应该能够看到整个平台。如果不是,请调整顶部支架的位置。

第18步:教Pixy2检测球

现在让我们教小精灵如何发现球。就像在步骤7中,参考视频学习如何教Pixy2一个对象(14:00开始)。作为提醒,我建议使用手动方法。我还建议在训练小精灵的时候把球放在平台上,因为当机器人试图平衡它的时候,球就会在这里。你把球设为哪个签名并不重要。为了简单起见,我将自己的签名设置为#1。您可能还需要更改签名范围,如图片# 2。这个设置改变了pixy的检测精度。更多信息在这里

步骤19:校准平台

为了使球平衡程序正常工作,我们必须从相机的视图中找到平台中心的位置和另一个称为r_platform的值,该值将帮助确定球何时在平台上。为此,我们将使用红色3d打印中心标记。

  • 首先,使用m3 x 5mm螺钉(x4)将每个中心标记固定在平台的每个角落上。
  • pixy凸轮应该将中心标记识别为我们在前一步中训练它识别的球。这就是为什么球和中心标记都应该是红色的。通过查看pixymon上的摄像机镜头,确保pixy cam可以识别每个中心标记。确保你只看到四个标记的四个签名。如果pixy检测到多于或少于四个签名,则该程序将无法工作。
  • 下载下面的Arduino程序,并将偏移值从0更改为步骤13中找到的偏移值。此部分看起来类似于步骤13中的部分,如图片# 4
  • 上传草图
  • 该程序将每个伺服移动到其主位置,然后在串行监视器上显示一些值(见图片# 5).第一个值是中心的位置,格式为(X, Y)。第二个值是标记为r_platform的单个数字。保存这三个值!

注意:这些值大约需要30秒才能在串行监视器上显示

注意:球的位置应该在(150,100)的范围内,r_platform的值应该在113的范围内。对于这三个值,我给出的误差范围是+/- 20。

步骤20:上传球平衡草图

这是让球平衡机器人工作的最后一步。

  • 首先,下载下面的球平衡Arduino代码。
  • 就像以前一样,你需要改变伺服的偏移值。这个部分看起来应该类似于最后两个程序,如图片# 2
  • 接下来更改起源而且r_platform将设置为0的值与您在最后一步中找到的值相对应。此部分显示在图片# 3
  • 现在上传代码,你应该看到机器人平衡球时,球被放在平台上。
  • 如果pixy凸轮在帧中看到一个以上的签名,机器人将回到它的home位置而不移动。
  • 如果球在框架内,但不在平台上,机器人就会回到自己的位置,不移动。

步骤21:如何工作

这个机器人的编程有两个主要组成部分:旋转平台和平衡球。能够向任何方向旋转平台是机器人能够平衡球的原因。那么机器人是如何完成这些任务的呢?

旋转平台:

为了能够旋转平台,机器人必须使用逆运动学方程。这些方程包含一个输入(我们希望机器人如何定向)和输出6个值(每个伺服转向的位置)。例如,当我们希望平台完全平坦时,机器人计算出所有的伺服系统必须移动到它们的主位置。我用向量微积分推导了所有这些方程。你可以看到这些方程图片# 1

平衡球:

为了能够平衡球,机器人使用PD算法,其中:

  • 设置点是平台的中心。
  • 错误是球相对于平台中心的位置。
  • 导数项是球的速度。

这是画进去的图片# 4

所以为了保持平衡,机器人必须考虑到球的位置和球在任何给定时刻的速度。然后,它使用这些值同时将球移近平台的中心,并使球慢下来。

  • 如果只考虑球的位置,那么机器人将无法使球减速,球将会下落。
  • 如果只考虑球的速度,那么机器人将无法将球移动到平台的中心,球最终会下落。

一旦机器人确定了最有效的角度平台的方向,使球减速并使其更接近中心,它使用逆运动学方程来确定移动伺服系统的位置,以使平台移动到该角度位置。

可选:图片# 5你可以在Ball Balance程序中改变kp和kd常数,以获得机器人不同程度的反应性。我在视频中讨论了增加或降低这些值的影响。

Anything Goes大赛

这是
Anything Goes大赛

做第一个分享的人

    建议

    • 分组代码竞赛

      分组代码竞赛
    • 让它发光比赛

      让它发光比赛
    • 游戏设计:学生设计挑战赛

      游戏设计:学生设计挑战赛

    34个评论

    1
    rpangel59

    11天前简介

    你是个聪明的绅士,而且很有才华。

    0
    leshemeli

    12天前

    我非常喜欢它。
    具有PID控制,plc,电机运动,温度控制,流量控制的经验…我知道你完成了一项多么艰难的工作。
    ...为我们记录这一切,可能是最难的工作。
    谢谢,你应该为NASA在火星或月球上制造飞行器。:)

    问题:发动机像我在我的遥控飞机上使用的那样,由PWM控制吗?

    0
    aaedmusa

    12天前回复

    如果你指的是无刷电机,那么是的,那些是由具有PWM引脚的ESC控制的。

    0
    ubiube

    15天前

    很有趣。做得很好,恭喜!!!!

    0
    aaedmusa

    14天前回复

    谢谢!

    1
    mdeudon

    14天前

    哇,惊人的,奇妙的,疯狂的,异常的:-0

    0
    aaedmusa

    14天前回复

    谢谢!

    0
    jantiemen

    15天前

    不错的工作!
    我只是想知道为什么你用6个伺服而不是3个。是为了速度,力量还是运动范围?
    甚至只有2个伺服和1个固定支持。是的,我很便宜....: -)

    0
    aaedmusa

    15天前回复

    这是为了活动范围。6伺服意味着6DOF(平移和旋转)。3伺服将意味着3DOF(只是旋转)。从技术上讲,3DOF应该可以完成这项工作,但我想探索机器人的翻译能力及其旋转能力。此外,3伺服配置是不可能与这种设计。如果你想要更便宜,我建议使用更便宜的伺服和批量购买。我使用的那些是值得的,但它不会对项目有害。

    0
    alfadog67

    16天前

    这是一个有趣的教学表!
    如果我把支票簿放在站台上会发生什么?

    0
    ChrisWx

    15天前回复

    没关系。因为你把所有的钱都花在了这个项目上,所以你的支票簿已经是零了。: -)

    0
    aaedmusa

    15天前回复

    哈哈!我展示的价格是如果你完全从零开始购买。我个人已经有很多组件了,所以我没有花那么多钱。

    0
    aaedmusa

    15天前回复

    任何不是圆形的物体都不行。

    0
    diy3dm2

    16天前

    非常好的解释,谢谢分享!

    0
    aaedmusa

    15天前回复

    没问题,谢谢!

    0
    aaedmusa

    15天前回复

    很感激!

    0
    louigino

    16天前

    这太棒了。很好的解释和记录。谢谢你的工作。

    0
    aaedmusa

    15天前回复

    当然可以,谢谢!