×

YolkaBot机器人开源分享

消耗积分:0 | 格式:zip | 大小:0.30 MB | 2023-07-11

卢表镜

分享资料个

描述

描述

如果您想让朋友在另一个国家参加您的新年派对,请构建一个远程呈现机器人!这比普通的 Skype 对话要好得多,因为你的朋友可以控制机器人并到处乱跑,这实际上感觉就像他和你在同一个房间里,而不是在屏幕后面。

请注意照片上的 USB 记忆棒。我的硬盘突然坏了,我正在从 USB 运行实时 Manjaro Linux。只需要安装几个包。它实际上是我们的“圣诞树”,因为我们懒得带一棵真正的圣诞树。TODO:添加 LED!

特征

  • 建筑简单,材料成本低(如果您已经有笔记本电脑)
  • 不需要电子电路设计技能(实际上,您必须了解学校基础知识并焊接几根电线)
  • 适用于任何 Windows 或 Linux 笔记本电脑(如果您不害怕从 1.5 米高处掉落,那就更好了)

可以通过以下方式控制:

  • 键盘(Windows、Linux)
  • 带两根棍子的游戏手柄(Windows、Linux)
  • 安卓
  • 支持多个并发客户端(因此您可以在 Skype 中进行电话会议,并看到您的朋友争夺控制权!)

此文本是从项目的GitHub 页面导入的,并且丢失了大部分格式。我检查了它,但我确定我错过了一些东西。请在github上查看。

指示

机壳

使用的材料(没有价格,因为它们是₽):

  • 3个铝管用于三角架
  • 1 个用于底座的刨花板搁板
  • 2 个割草机轮子(和电机,见下文)
  • 1 个购物车车轮(带旋转支架)
  • 电工胶带、扎带、螺丝
  • 1 块小木头,大约 5x5x5 厘米

主要想法是制作稳定的三角形底座,带有 2 个电动轮和一个支撑“购物车”轮,然后凭经验找到笔记本电脑的重心。

我不知道如何将轮子连接到电机并使用环氧胶。不要那样做!找到更好的方法...然后使用穿过孔的电缆扎带将电机安装在底座下方。我还使用了一些螺丝来更好地固定。也安装第三个轮子。我很幸运,车轮高度相互匹配,所以我不需要平衡底座。然后用锤子将两个管子的末端弄平,弯曲它们并用螺丝固定在电动轮上方。穿过管子并决定要安装笔记本电脑的高度。切割比这个长度稍长的管子。在此之后,将第三个管子连接到第三个轮子上方并找到最适合它的长度,请记住笔记本电脑很重并且您希望将重心放在底部三角形的中间。最后,切割最后一根管子并使用小木头和螺丝将它们全部连接起来。在连接笔记本电脑并将电池放在底座上的情况下测试您的结构,看看它是否稳定。

电子产品

部分:

  • 1个Arduino(我用的是莱昂纳多)
  • 1 L298N 双 H 桥直流步进电机控制器模块
  • 2个直流电机(详见下文)
  • 1 个电压等于或高于电机电压的 UPS 电池(我有 6V 电机和 12V 电池,见下文)。还有一个充电器。
  • Arduino 电线(带连接器)
  • 电池和电机的通用电线(比 Arduino 的更粗),外加 2 个端子,可轻松拆卸电池
  • 任何带 WiFi、摄像头、免费 USB 端口和良好电池的笔记本电脑
  • 用于将 Arduino 连接到笔记本电脑的长 USB 电缆
  • (可选)便携式扬声器,如果您的笔记本电脑的扬声器不够强大

电路

 
pYYBAGOuNI2AMfv1AAGtAV9o9dM803.png
 

如何确定您需要哪些电机是一个很好的问题。非常推荐这么好的WiFi。最大的问题是摄像头通常水平指向,所以客户端不会看到轮子下面的东西,如椅子、宠物等。如果你不在家并且无法设置网络以使服务器端口可以从互联网访问,请参阅 NAT下面的部分。

代码

先决条件

我使用了 Arduino IDE、Visual Studio 2015 Community、MonoGame 和它们附带的默认 Android 模拟器。我不确定,但看起来 MonoGame 也自动安装了 Xamarin。所有这些工具都是免费的。您可以轻松找到它们。

依赖关系

该项目的 C# 部分具有正常的 NuGet 依赖项,因此它可以正常工作。Arduino 代码依赖于CmdMessenger ,它可以安装在 Arduino IDE 包管理器中。

建造

我无法让 Visual Studio 在构建时创建 .apk,因此您需要运行 Deploy 并在 bin 文件夹中找到 .apk。

调试

默认的安卓模拟器花了我一些时间来设置。如果您遇到错误,请使用谷歌。另外,如果应用程序没有启动,请在android中手动解锁屏幕并重新启动调试。

用法

阿杜诺

只需上传草图。它看起来很稳定,无需手动重置即可工作。

服务器

通过 USB 将 Arduino 连接到笔记本电脑并运行服务器。在 Linux 上:您将需要mono软件包。串行端口访问要求用户是特殊组的成员,或者只是以 root 身份运行。

桌面客户端

使用键盘或任何带两根棍子的游戏手柄。在 Linux 上:MonoGame 中有一个错误:它不喜欢真正的 PS3 控制器,只是崩溃。尝试另一个或重新映射它xboxrdv键盘控制:

键-动作

  • 1 - 左电机前进 100%
  • Q - 左马达前进 50%
  • A - 左电机向后 50%
  • Z——左电机后退100%
  • 2 - 右电机前进 100%
  • W - 右电机前进 50%
  • S——右电机后退50%
  • X - 右电机向后 100%
  • Esc——退出
  • Enter - 让机器人听这个客户的命令
  • Space - 强制电机立即停止

安卓客户端

使用两个虚拟摇杆(@符号)。[ACTIVATE]让机器人听取这个客户的命令。[STOP]强制电机立即停止。

错误、限制

这是一个快速编写的项目,所以有一些肮脏的黑客攻击,有时我会遇到挂起,不确定是在客户端还是服务器端。

笔记

你需要在这里或那里调整代码,因为它有一些硬编码的东西,最重要的是:

  • 客户端Program.Main和中的网络地址Activity1.OnCreate
  • 别针global.cpp
  • PWM 限制(在我的例子中是由于电池电压)和其他一些常量motor.cpp
  • Android 客户端不依赖于 Android,因为它基于可在便携式 Windows 和 iOS 上运行的 MonoGame。所以如果你愿意,你可以在 Lumia 或 iPhone 上运行它,这需要一些小的调整和适当的构建设置。

流量消耗应该非常小,因为我发送原始 TCP 数据包并且仅在客户端更改输入时发送。

如果您在随机位置运行机器人,则绕过 NAT

服务器绑定到 TCP 端口,可以与多个客户端一起工作。如果你把你的 YolkaBot 带到一个随机的地方,你可能会发现自己落后于 NAT。我用 SSH 反向端口 worwarding 绕过了它,但它需要一个具有 SSH 访问权限和公开可用 IP 的主机。你会需要:

  • 将主机的 IP 和所需端口硬编码到客户端
  • 设置 SSHd(有默认安全设置防止非本地 IP 上的反向绑定)
  • 在 YolkaBot 的笔记本电脑上使用 ssh -R
  • 运行服务器并监听 SSH 转发到的端口。

使用此设置,您需要在客户端上进行零配置,如果出现问题,您可以简单地重新启动服务器/ssh。

什么是“约尔卡”?

Ёлка在俄语中是圣诞树的意思。

学分

随时用英语或俄语提问或提交错误或 PM 我(学分链接)


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !