简介:球平衡机器人
在本教程中,我将逐步向您展示我如何创建一个球平衡机器人。更正式的说法是Stewart平台,这个机器人有6DOF机器人是全旋转和全平移的。加上一个摄像头,这个Stewart平台可以变成一个机器人,防止球掉下来。让我们开始吧!
供应
下面是构建所需的工具和部件的列表。欲了解所需物资的更详细概述,请下载材料清单excel文件在这里.
工具
- 尖嘴钳
- 剪线钳
- 剥线钳
- 2.5mm六角扳手
- 烙铁和焊料
- exacto刀
- 热胶枪和热胶
部分(483美元)
电子产品(400美元)
- JX CLS6336HV 35kg数字伺服(x6)
- 很小的4.1
- 6通道Polulu Maestro伺服控制器
- Pixy2相机
- 3.3至5v逻辑电平转换器
- 半原型板+螺丝端子
- SPST开关
- 18awg线
- XT60H连接器对
- 2S (7.4v) 6200mah脂电池
其他用品(83美元)
- 25T伺服盘(x 6)
- M3 × 120mm推杆连接器(x6)
- 22毫米长的m3拉杆(x12)
- M3 x 6mm螺纹插入(x36)
- M3 x 10mm的支架(x3)
- M3 x 5mm的隔离(x14)
- m3锁紧螺母(x24)
- 3/4 × 48英寸木销子
- #6 × 1-1/4英寸木螺丝(x4)
- M3螺丝
- M3 x 5mm(x24)
- M3 x 10mm(x2)
- M3 x 12mm(x18)
- M3 x 14mm(x6)
- M3 x 15mm(x4)
- M3 x 20mm按钮头(x3)
- M3 x 22mm(x6)
- M3 x 30mm(x3)
第一步:制作平台
球放在一个清晰的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并让金宝博比分直播手机版它识别对象:
- 设置Pixy并识别物体(14:00开始)
- 提高检测精度
注意:当电路在下一步设置时,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库
步骤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检测球
步骤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常数,以获得机器人不同程度的反应性。我在视频中讨论了增加或降低这些值的影响。
34个评论
11天前简介
你是个聪明的绅士,而且很有才华。
12天前
我非常喜欢它。
具有PID控制,plc,电机运动,温度控制,流量控制的经验…我知道你完成了一项多么艰难的工作。
...为我们记录这一切,可能是最难的工作。
谢谢,你应该为NASA在火星或月球上制造飞行器。:)
问题:发动机像我在我的遥控飞机上使用的那样,由PWM控制吗?
12天前回复
如果你指的是无刷电机,那么是的,那些是由具有PWM引脚的ESC控制的。
13天前
良好的工作
15天前
很有趣。做得很好,恭喜!!!!
14天前回复
谢谢!
14天前
哇,惊人的,奇妙的,疯狂的,异常的:-0
14天前回复
谢谢!
15天前
不错的工作!
我只是想知道为什么你用6个伺服而不是3个。是为了速度,力量还是运动范围?
甚至只有2个伺服和1个固定支持。是的,我很便宜....: -)
15天前回复
这是为了活动范围。6伺服意味着6DOF(平移和旋转)。3伺服将意味着3DOF(只是旋转)。从技术上讲,3DOF应该可以完成这项工作,但我想探索机器人的翻译能力及其旋转能力。此外,3伺服配置是不可能与这种设计。如果你想要更便宜,我建议使用更便宜的伺服和批量购买。我使用的那些是值得的,但它不会对项目有害。
16天前
这是一个有趣的教学表!
如果我把支票簿放在站台上会发生什么?
15天前回复
没关系。因为你把所有的钱都花在了这个项目上,所以你的支票簿已经是零了。: -)
15天前回复
哈哈!我展示的价格是如果你完全从零开始购买。我个人已经有很多组件了,所以我没有花那么多钱。
15天前回复
任何不是圆形的物体都不行。
16天前
非常好的解释,谢谢分享!
15天前回复
没问题,谢谢!
16天前简介
哇
非常精彩
15天前回复
很感激!
16天前
这太棒了。很好的解释和记录。谢谢你的工作。
15天前回复
当然可以,谢谢!