0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

具有旋转轴的物体跟踪相机滑块的制作

454398 来源:工程师吴畏 2019-08-22 08:42 次阅读

步骤1:硬件设计+构建+ 3D打印

具有旋转轴的物体跟踪相机滑块的制作

作为构建滑块的第一步,我们将从物理部件开始。所有部件都设计为3D打印,STEP和STL文件可以在这里下载

从上面的图片可以看出,有很多单独的部件。我将在这里简要介绍一下他们的目的

电机安装 - 此部件用于保持负责横向移动摄像机的电机。这部分也像项目的立场。该部件通过10 mm螺纹杆和m10螺母连接到电子设备外壳。

电子设备外壳 - 此部件包含控制相机滑块的所有电子设备。 Arduino和Roboclaw电机控制器滑入主要的大型隔间。旁边是一个较小的电池隔间。我为这个电池调整了这个隔间的大小,但你可以修改我的电池文件。 2 M10螺母也可以插入凹孔,通过M10螺纹杆将电子设备外壳连接到电机座上。在电子元件支架的顶部,有一个用于屏幕的凹槽和用于旋转编码器和启动按钮的孔。

惰轮 - 与电机座+电子元件相对,在滑块的另一侧是惰轮侧。惰轮部分使用滚珠轴承让皮带自由旋转。该部件也通过M10螺纹杆固定在摄像机滑块上,使用M10螺母夹紧零件的两侧。

滑块底座 - 当滑块的主电机旋转时,该部分实际上是左右移动的部分。该部件通过每侧2 lm8uu轴承连接到8mm光滑杆上。我使用2个轴承来稳定平台并防止振动。该部件还在其底部印有Gt2皮带齿,因此您可以轻松地将皮带从电机座安装到该部件上。该部件在零件的两侧使用2个标准滑板轴承。这些轴承将摄像机安装部件连接到此滑块底座,使摄像机支架能够以最小的摩擦自由旋转。最后,还有将旋转马达连接到该部件的空间。电机座的设计使您可以在拧紧前滑动电机,以确保电机齿轮和摄像机支架齿轮之间的最佳连接。

相机装载 - 此部分也非常独特。它有一个四分之一英寸螺丝孔,可用于将零件连接到任何相机。该部件还有一个圆柱形挤压件,通过2个滚珠轴承安装在滑块底座内。这有助于防止摩擦。最后,该部件具有内部环形齿轮,其与滑块底座中的旋转电机连接,并有助于旋转摄像机支架。

我如何设计齿轮:

建立这个项目,我制作了大约30个原型,其中15-20个是齿轮。我想确保最大的平滑度和准确度,所以我不得不使用高传动比(大马达运动=小相机运动)。使用Fusion 360的McMaster集成,无需重新CAD即可轻松尝试不同的齿轮。通过点击Fusion 360中的添加部件选项卡,我可以打开整个McMaster部件目录,只需选择我需要的齿轮。这样做允许我将这些齿轮的CAD版本导入到我的项目中,我可以简单地将它们添加到我现有的零件中而无需自己加工。

第2步:电子

接下来让我们继续讨论电子产品。电子产品是该项目具有很大灵活性的地方。

让我们从这个项目的核心开始 - 2个有刷直流电机。

我选择有刷直流电机有几个原因。

步进电机相比,有刷电机的布线和操作更加简单

有刷直流电机比直流电机轻得多,这对于旋转轴电机尤其重要电机在相机上横向移动并使其尽可能轻,对于防止主摄像机滑块电机过度拉紧非常重要。

我选择了这种特殊的直流电机。这台电机给了我极大的扭矩,这是移动如此沉重的相机负载所必需的。此外,高传动装置意味着峰值RPM很慢,这意味着我可以拍摄较慢的运动,而高传动装置也会导致更高的位置精度,因为输出轴的360度旋转意味着电机编码器的计数为341.2。

这将我们带到了RoboClaw运动控制器。 Roboclaw电机双直流电机控制器通过简单的代码命令从Arduino获取简单的指令,并执行所有繁重的处理和电源传输,使您的电机按预期运行。 Arduino可以通过PWM,模拟电压,简单串行或数据包串行向Roboclaw发送信号。数据包序列是最好的方法,因为它允许您从Roboclaw获取信息,这是位置跟踪所必需的。我将在下一步(编程)深入深入了解Roboclaw的软件/编程部分。

从本质上讲,由于RoboClaw能够进行位置控制,Roboclaw可以将带有编码器的DC有刷电机转换为更像伺服。然而,与传统伺服不同,现在您的有刷直流电机具有更大的扭矩,由于高电机齿轮传动而具有更高的定位精度,最重要的是,您的直流电机可以连续旋转360度,这是传统伺服无法做到的。

下一个电子部件是屏幕。对于我的屏幕,我选择这款OLED面板因为它的尺寸和高对比度。这种高对比度令人难以置信,使得屏幕在阳光直射下非常容易使用,同时不会发出太多可能干扰潜在暗相机拍摄的光线。此屏幕可以轻松换成另一个U8G兼容屏幕。此处提供了兼容屏幕的完整列表。实际上这个项目是在U8G库周围有意编码的,所以像你这样的DIY建造者在他们的部件中有更多的灵活性

这个项目的最终电子部件是旋转编码器,以及用于启动滑块运动的按钮。编码器允许您导航屏幕菜单并仅使用一个拨盘配置所有滑块菜单。旋转编码器没有像传统电位器那样的“终点”位置,这对于调整屏幕上对象跟踪的x和y坐标特别有用。按钮专门用于启动滑块的运动,而无需摆动旋转编码器。

第3步:编程相机滑块

编码是迄今为止最难的挑战这个项目。你看,从一开始我就想让滑块可以在屏幕上控制。为了使这个项目与尽可能多的屏幕兼容,我不得不使用U8Glib库来代替Arduino。该库支持超过32个屏幕。但是,U8Glib库使用图片循环在屏幕上绘制菜单,这与Arduino同时收集摄像机角度计算功能所需的摄像机位置信息的能力相矛盾(这将在接下来的几段中介绍) )。 U8Glib2通过使用称为全页缓冲区选项的东西替代了图片循环,但是由于Arduino Uno的内存限制,库占用了太多内存并且难以适应其余代码。这意味着我被U8G困住了,不得不通过防止屏幕在滑块处于运动状态时更新屏幕并且Arduino需要从Roboclaw收集位置数据来解决这个问题。当我进入子菜单时,我也被迫触发滑块开始移动到菜单循环之外,我将进入图片循环,滑块将无法正常工作。我还通过单独的物理按钮触发滑块的移动来规避这个问题。

下一步我们来谈谈旋转跟踪元件。这部分看起来非常复杂,但它实际上相当简单。这个实现是在我的Arduino代码中的‘motor()’函数下。第一步是制作一个二维网格,并决定放置要跟踪的对象的位置。基于此,您可以在当前位置绘制三角形。您可以从电机的编码器值获取当前位置。如果要以cm/mm为单位配置被跟踪对象的位置,则需要将编码器值转换为cm/mm值。这可以通过将摄像机滑块移动1 cm并测量编码器值的增加来完成。您可以在encoder_mm变量下的代码顶部输入此值。

继续前进,现在我们将使用反正切函数来获取相机必须面对的角度以指向对象。反正切取自三角形的相对侧和相邻侧。三角形的另一侧永远不会改变,因为它是从滑块到对象的y距离。然而,相机滑块的相邻侧确实改变了。可以通过获取对象的x位置并从中减去当前位置来计算此相邻边。当滑块移动其运动范围时,它将继续更新编码器值上的Arduino。 Arduino将重复将此编码器值转换为cm/mm x位置值,然后计算相邻边长,最后计算相机需要始终面对的角度以指向对象。

现在我们的Arduino正在动态处理摄像机角度,我们可以解决将此角度转换为旋转电机移动到的位置值的问题。这让我们了解了RoboClaw这个项目的最大特色。通过赋予Roboclaw一个位置值,它基本上可以使DC有刷电机像伺服一样工作。除了伺服之外,我们的电机具有更大的扭矩,更高的精度,还可以旋转360度。

将Roboclaw移动到某个位置的Arduino代码如下:

roboclaw.SpeedAccelDeccelPositionM1(地址,‘速度’,‘加速’,‘减速’,‘你要去的位置’,1);

调整电机的位置值以对应使用相机角度,您需要手动将相机板移动180度。接下来看看从将摄像机板从0度移动到180度后编码器值的变化程度。这为您提供了编码器范围。您可以在将Arduino摄像机角度映射到位置值的电机功能中输入此范围。这也在代码中注释,因此应该很容易找到*****

RoboClaw还让我能够调整其他因素,如加速度,减速度和PID值。这进一步使我能够平滑旋转轴运动,特别是当角度变化很小并且增加了没有高“D”PID值的加速度时。您还可以通过Roboclaw的桌面应用程序自动调整PID值。

步骤4:操作相机滑块

现在我们来到有趣的部分,操作滑块菜单有4个主要选项卡。顶部标签专用于速度控制。菜单的中间行包含用于以mm为单位配置被跟踪对象的X和Y位置的选项卡,还可以配置我们是否希望滑块旋转和跟踪我们的对象,或者只是进行简单的滑动而不旋转。扭转旋转编码器允许我们导航菜单的不同选项。要配置任何选项,请导航至该选项并按下旋转编码器。按下后,旋转旋转编码器将改变突出显示的子菜单的值,而不是擦除菜单。达到所需值后,可以再次单击旋转编码器。现在您返回主菜单,可以在不同选项卡之间导航。准备好后,只需按下屏幕旁边的“开始”按钮,滑块即可完成任务!

确保完成使用相机滑块后,相机处于“原位”位置:滑块侧面开始。原因是电机编码器不是绝对编码器,这意味着Roboclaw/Arduino无法分辨编码器的位置。它们只能说明自上次上电以来编码器的变化程度。这意味着当您关闭相机滑块时,滑块将“忘记”滑块位置并将编码器重置为0.因此,如果关闭另一侧滑块的电源,打开电源时,滑块将尝试比边缘移动更多并撞到滑块墙。此编码器行为也是相机在每次相机滑动移动后重置其旋转角度的原因。旋转轴还保护自身不会撞到其运动范围的末端。

您可以通过在启动时添加终点停止和归位过程来解决此问题。这就是3d打印机使用的方法。

第5步:最后的想法+未来的改进

我强烈建议每个构建者自己制作这个滑块的版本而不是构建完全相同的滑块。调整我的设计将允许您根据您的确切规格构建滑块,同时更好地了解电子设备和代码的工作方式。

我使代码尽可能可读和可配置,以便您可以调整/校准滑块规格的不同代码变量。代码也完全围绕函数构建,因此如果要复制/调整/重写滑块的某些行为,则无需对整个代码进行反向工程和返工,而只需要编辑要编辑的部分。

最后,如果我制作了2.0版,我会做一些改进

旋转轴电机的齿轮比更高。较高的传动比意味着我可以做出更精确的小动作。当相机远离物体并且相机角度变化非常缓慢时,这一点尤其重要。目前,我的电机没有过高的转速,当相机滑块运行得太慢或旋转角度变化很小时,它可能导致略微不平稳的运动。添加高‘D’PID值有助于我摆脱这一点,但代价是略低的目标跟踪精度。

模块化长度。这是一个牵强附会的目标,但我希望相机滑块的长度模块化,这意味着您可以轻松地为更长的轨道连接相机滑上。这是非常困难的,因为完全必须对齐两个轨道并找出如何使带系统工作。不过,这将是一个很酷的升级!

自定义运动Keyframing。我很想将关键帧运动的概念引入此相机滑块。关键帧是一种在视频音频制作中非常常用的技术。它可以实现非线性相机移动,相机移动到某个位置,等待,然后以不同的速度移动到另一个位置,等待,然后进入第三个位置等。

蓝牙/无线电话控制。能够无线配置摄像机滑块的参数并能够在难以访问的位置部署摄像机滑块真的很酷。手机应用程序还可以提供集成关键帧的机会,如上一段所述。

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

    关注

    4

    文章

    1253

    浏览量

    52437
收藏 人收藏

    评论

    相关推荐

    转矩和扭矩是一样的吗为什么

    。转矩是一个向物体施加的力和物体某一点到旋转轴的距离的乘积。它的单位是牛顿米(N·m)。扭矩则是沿物体轴线方向的力对物体产生的转动效果。它的
    的头像 发表于 02-20 13:53 710次阅读

    解析旋转屏的基础原理与功能有哪些?

    屏的主要特点是能够在任意角度下进行显示,这主要得益于其独特的机械结构和电子技术。 1. 机械结构:旋转屏的机械结构主要由旋转轴旋转臂、显示屏等组成。旋转轴
    的头像 发表于 01-11 09:42 287次阅读

    陀螺仪三轴角速度转姿态角速度

    的工作原理是基于角动量守恒定律。当物体绕着固定轴旋转时,角动量的大小和方向保持不变。陀螺仪利用这一原理,通过测量物体绕三个轴的角速度变化来计算姿态角速度。 陀螺仪通常由三个单独的旋转轴
    的头像 发表于 01-02 14:24 547次阅读

    华为重磅新专利公开:能提高晶圆对准效率、精度

    晶圆处理装置包括:晶圆载台,晶圆载台可沿旋转轴线旋转;机械臂,包括机械手,用于搬运晶圆并将晶圆放置在晶圆载台上;控制器;以及校准组件。
    的头像 发表于 12-19 16:36 407次阅读
    华为重磅新专利公开:能提高晶圆对准效率、精度

    GUI中Scale移动滑块代码

    Scale 移动滑块 Scale(移动滑块)用于在指定的数值区间,通过滑块的移动来选择值 实操代码 """scale 滑块的使用测试【示例】使用 Scale(移动
    的头像 发表于 11-26 16:48 728次阅读
    GUI中Scale移动<b class='flag-5'>滑块</b>代码

    怎么用旋转编码器获取一个物体的加速度?

    怎么用旋转编码器获取一个物体的加速度
    发表于 10-11 07:09

    旋转编码器如何工作?如何与Arduino-HowToMechanicronics一起使用?

    包含详细说明+代码在本教程中,我们将学习旋转编码器的怎样工作的,以及如何使它与Arduino配合使用。旋转编码器是一种位置传感器,用于确定旋转轴的角度位置。
    发表于 09-26 07:52

    自动化视觉跟踪:帮助相机自动地跟踪某种颜色的物体

    在之前的某个教程里,我们探讨了如何控制Pan/Tilt Servo设备来安置一个PiCam(树莓派的相机)。这次,我们将使用你的设备来帮助相机自动地跟踪某种颜色的物体
    的头像 发表于 07-31 11:08 761次阅读
    自动化视觉<b class='flag-5'>跟踪</b>:帮助<b class='flag-5'>相机</b>自动地<b class='flag-5'>跟踪</b>某种颜色的<b class='flag-5'>物体</b>

    Arduino电动相机滑块

    电子发烧友网站提供《Arduino电动相机滑块.zip》资料免费下载
    发表于 07-10 14:55 0次下载
    Arduino电动<b class='flag-5'>相机</b><b class='flag-5'>滑块</b>

    介绍一个简单的模拟旋转变压器系统的方法

    所谓旋转变压器,即是一种电磁传感器,通常被用于测量“旋转物体“的转轴角位移和角速度。这些“旋转物体”通常应用于汽车电子(凸轮/曲轴位置),航空(襟翼位置)以及舵机等工业领域。
    的头像 发表于 07-10 14:36 1131次阅读
    介绍一个简单的模拟<b class='flag-5'>旋转</b>变压器系统的方法

    电机旋转借助磁铁、磁力

    在带旋转轴的永久磁铁周围,①旋转磁铁(使产生旋转磁场),②则根据 N极与S极异极相吸、同级相斥原理,③带旋转轴的磁铁将旋转。 这就是电机
    的头像 发表于 07-05 17:12 949次阅读
    电机<b class='flag-5'>旋转</b>借助磁铁、磁力

    2D机器视觉系统使用面阵扫描相机工作原理

    逐个像素线构建最终的2D图像。   构建线扫描图像需要相机物体之间保持相对运动,通常为沿着输送带或旋转轴运动。当物体移动经过相机面前时,
    的头像 发表于 06-26 10:29 1933次阅读
    2D机器视觉系统使用面阵扫描<b class='flag-5'>相机</b>工作原理

    转子平衡的选择与确定 转子动平衡技术的方法

    转子的不平衡是因其中心主惯性轴与旋转轴线不重合而产生的,而平衡校正就是改变转子的质量分布,使其中心主惯性轴与旋转轴线相重合从而达到平衡。常用的校正方法有调整校正重量,加重或去重等。
    发表于 06-15 09:16 965次阅读

    什么是旋转编码器 旋转编码器的工作原理

    旋转编码器是一种常见的传感器,它能够通过检测旋转轴的转动实现实时位置监测与控制。它具有高精度、长寿命、可重复性高、体积小等特点,因此在机器人控制、自动化生产、医疗设备、轮廓检测等方面被广泛应用。
    发表于 06-09 10:16 1735次阅读
    什么是<b class='flag-5'>旋转</b>编码器 <b class='flag-5'>旋转</b>编码器的工作原理

    旋转编码器是什么?浅读旋转编码器工作原理与特点及应用

    旋转编码器是什么?浅读旋转编码器工作原理与特点及应用:旋转编码器是一种常见的传感器,它能够通过检测旋转轴的转动实现实时位置监测与控制。它具有
    的头像 发表于 05-29 09:21 2233次阅读
    <b class='flag-5'>旋转</b>编码器是什么?浅读<b class='flag-5'>旋转</b>编码器工作原理与特点及应用