×

使用Arm link软件控制Arduino机械臂

消耗积分:2 | 格式:zip | 大小:0.00 MB | 2023-06-19

王燕

分享资料个

描述

想像 Simone Giertz一样酷,但不知道从哪里开始?

InterbotiX Arm Link 软件为兼容 Arduino 的机械臂提供了一个简单的界面。使用该软件,您可以通过多种运动模式控制机械臂,包括笛卡尔 IK 模式、圆柱 IK 模式和反铲/关节模式。

除了直接控制您的机械臂外,Arm Link 软件还可以激活数字输出、读取模拟输入、播放运动序列和显示网络摄像头馈送。

该软件作为这些机械臂的简单控制解决方案提供,同时也是希望将机械臂集成到自己的应用程序和系统中的个人的示例。InterbotiX Arm Link 是一个在处理环境中用 Java 编写的开源程序。Arm Link 软件目前兼容:

在本教程中,我们将介绍带有 Arm Link 软件的RobotGeek Snapper Arm的设置和使用。如果您想设置其中一个 InterbotiX 手臂,您可以按照本指南进行操作,该指南将为您设置适合您的机器人手臂的固件。

第 1 步:设置您的机械臂硬件

 
poYBAGOYmGWALVYCAADX8JXn6SQ816.jpg
 

RobotGeek Snapper 机器人手臂套件随附本教程所需的所有机器人硬件 - 您只需要一台 Windows、Mac 或 Linux 计算机。

这个项目也可以使用RobotGeek Snapper Core Arm Kit来完成,假设您有自己的微控制器、电源和接线。

按照入门指南组装指南构建您的机器人手臂。

第 2 步:固件安装

Arm Link 库和固件会随RobotGeek 工具和库文件自动安装,无需单独安装。如果您希望手动安装文件,请下载并解压缩InterbotiX Arm Link Library & Firmware 文件打开文件夹ArmLinkLibrary-master 并将文件夹复制ArmLink 到您的 Arduino Library 文件夹中。

 

从 Arduino IDE打开固件。ArmLinkSerial

File -> Examples -> Arm Link -> SnapperArmLinkSerial 

在将代码加载到机器人手臂之前,您需要调整代码以匹配您的夹具类型。在 Arduino IDE 中,单击GlobalArm.h 第 16 行附近的选项卡,您应该会看到以下代码块

//#define GRIPPER_TYPE ROBOT_GEEK_9G_GRIPPER
//#define GRIPPER_TYPE ROBOT_GEEK_PARALLEL_GRIPPER

如果您使用的是 RobotGeek Parallel Gripper,请取消注释第二行。您的代码应如下所示

//#define GRIPPER_TYPE ROBOT_GEEK_9G_GRIPPER
#define GRIPPER_TYPE ROBOT_GEEK_PARALLEL_GRIPPER

如果您使用的是 RobotGeek 9G Gripper,请取消注释第一行。您的代码应如下所示

#define GRIPPER_TYPE ROBOT_GEEK_9G_GRIPPER
//#define GRIPPER_TYPE ROBOT_GEEK_PARALLEL_GRIPPER

现在已经定义了夹具类型,代码将负责正确处理您的夹具类型。如果您在查找这些行时遇到问题,请单击Compile Arduino IDE 中的按钮,它将在您需要更改的行附近显示错误。

现在您可以将固件加载到 Geekduino 上。完成后,将 USB 电缆插入计算机,因为这是软件与 Arm 通信的方式。

第 3 步:Arm Link 软件安装

下载 Arm Link 控制软件

Arm Link 软件是用 Java 编写的。我们建议您为您的操作系统下载带有嵌入式 java 的版本(有关更多信息,请参阅下载页面)。该软件与 Windows XP、Vista 和 7、Mac OS 10.5+ 和 Linux 兼容。

Mac 用户请参阅此处的“Mac 用户注意事项”,然后再阅读本指南的其余部分。

如果您在运行 Arm Link 软件时遇到任何问题,我们建议您在处理环境中运行该软件。这个过程相对简单,并为您提供了额外的选择。

第 4 步:使用 Arm Link 软件

 
poYBAGOYmGiANtgBAACsgYobbPA791.jpg
 

使用自动连接按钮,或选择一个串行端口并使用连接按钮。手臂将从“睡眠”位置移动到“家”位置。这可能需要几秒钟。一旦手臂移动到其原始位置并准备好接受命令,就会出现各种面板。您可以调整滑块或文本面板来调整手臂的位置。使用更新按钮将这些值发送到手臂。

您可以使用“自动更新”复选框自动向机械臂发送命令。因为每个姿势都需要在发送下一个姿势之前完成,所以用户可能希望降低Delta值以使手臂更具响应性。

 
 
 
 
pYYBAGOYmGqANTT4AACYd09LArg845.png
 
1 / 5
 

使用说明

缺少串行端口

在打开程序之前插入您的 FTDI-USB 电缆Arm Link软件目前在连接后不会刷新串口列表,所以程序启动时串口必须是可用的。如果 Arm Link 中的串行端口不可用,请关闭并重新打开应用程序。插入/拔出

使用网络摄像头

网络摄像头支持目前处于试验阶段。我们建议将带有 250 毫米鹅颈管的 RobotGeek VGA 网络摄像头与Arm Link 软件一起使用。其他网络摄像头应该可以正常工作,但尚未经过测试。该程序将尝试连接到可用的第一个网络摄像头。如果您遇到问题,请尝试将相机直接插入您的计算机(而不是通过集线器或扩展器)。

序列面板

通过模式面板手腕面板更改模式或手腕方向将删除序列面板中的所有当前姿势。该软件目前不支持混合模式播放。

数据包数据

如果您想查看您发送的数据包,请参见此处

模拟反馈和自动更新

我们不建议同时使用“自动更新”和“模拟输入”。模拟反馈功能与其他控件的工作方式略有不同。所有其他控件都向机械臂发出命令,但模拟反馈功能需要数据。为了获得一段模拟数据,程序必须发送一个命令包,请求特定端口的当前模拟值。启用后,模拟反馈将每 33ms 请求一条新数据。开启自动更新后,每 33ms 也会发送一个命令包。当这两者同时工作时,手臂的响应速度可能比正常情况下要慢。

第 5 步:播放序列

 

设置好固件和软件后,在 Arm Link 软件中连接到机械臂。单击序列面板中的“新姿势”按钮以创建新姿势。新姿势将由姿势面板按钮右侧的编号面板指示。这个新创建的姿势将包含控制面板当前显示的坐标,即默认姿势。

现在使用控制面板选择手臂移动到的新位置。单击“更新”以确保手臂已移动到您想要的位置。随意将手臂稍微调整到正确的位置。一旦您对手臂的位置感到满意,再次单击“新姿势”按钮,您将看到创建的另一个姿势。此姿势将包含控制面板当前显示的坐标。

重复这个定位手臂并做出新姿势的过程,直到您拥有所需数量的姿势。单击“播放姿势”按钮以查看所有动作中的姿势。按“停止姿势”停止播放。播放将始终从所选姿势开始,除非未选择任何姿势,否则将从姿势 0 开始播放。

如果您需要调整姿势,请先单击单个姿势以将其选中。该姿势应扩展为大于其他姿势以显示它已被选中。现在单击“加载姿势”将姿势加载到控制面板中。您需要单击“更新”以将手臂物理移动到该姿势的位置。您现在可以对控制面板进行任何调整以调整姿势。对姿势感到满意后,单击“保存姿势”将姿势数据保存回所选姿势。

您可以加载姿势,然后创建新姿势以复制特定姿势。您还可以拖放姿势以重新排序。姿势将保持其颜色,但会丢失其特定编号。

您可以调整两个时间变量。第一个是 Delta 值(完成姿势所需的时间)。每次运动的增量值都是唯一的。较小的 delta 值将产生较快的运动,较大的 delta 将产生较慢的运动。

第二个变量是暂停值。该值决定了手臂在姿势完成后开始下一个姿势之前等待的时间。此姿势可以设置为 0,或任何任意值。只需输入以毫秒为单位的时间值,每个姿势都会等待该时间段。在 Arm Link 软件中,此值对所有姿势都是全局的,但可以在导出序列后按每个姿势更改它。

一旦您对您的顺序和时间感到满意,请按“保存到文件”。这将打开一个窗口对话框并要求您选择一个文件夹来放置导出的armSequence.h 文件。暂时将文件放在桌面上。

第 6 步:将序列加载到独立固件中

Snapper Arm 入门指南中,您应该已经下载了Snapper Arm 演示代码并将其添加到您的 RobotGeek 草图文件夹中。该文件包含SnapperArmPlayback 代码。在 IDE 中打开草图之前,您需要将armSequence.h 文件复制到SnapperArmPlayback 文件夹中。假设您的Arduino 文件夹在您的Documents 文件夹中,您可以在SnapperArmPlayback 此处找到:

 
Documents -> Arduino -> RobotGeek sketches -> SnapperArm -> SnapperArmPlayback

在此文件夹中,您将找到多个文件,包括armSequence.h . 该文件的默认副本按顺序移动手臂上的每个轴。您可以将此文件保存在另一个文件夹中以供以后使用,也可以将其删除。现在将armSequence.h 保存到桌面的文件复制到文件SnapperArmPlayback 夹中。

现在您可以将SnapperArmPlayback 草图打开到您的 Arduino IDE 中。在 Arduino IDE 中,您可以在以下位置找到草图:

File -> Sketchbook -> RobotGeek sketches -> Snapper Arm -> SnapperArmPlayback 

在将代码加载到机器人手臂之前,您需要调整代码以匹配您的夹具类型。在 Arduino IDE 中,单击GlobalArm.h 第 16 行附近的选项卡,您应该会看到以下代码块:

//#define GRIPPER_TYPE ROBOT_GEEK_9G_GRIPPER
//#define GRIPPER_TYPE ROBOT_GEEK_PARALLEL_GRIPPER

如果您使用的是 RobotGeek Parallel Gripper,请取消注释第二行。您的代码应如下所示:

//#define GRIPPER_TYPE ROBOT_GEEK_9G_GRIPPER
#define GRIPPER_TYPE ROBOT_GEEK_PARALLEL_GRIPPER

如果您使用的是 RobotGeek 9G Gripper,请取消注释第一行。您的代码应如下所示:

#define GRIPPER_TYPE ROBOT_GEEK_9G_GRIPPER
//#define GRIPPER_TYPE ROBOT_GEEK_PARALLEL_GRIPPER

现在已经定义了夹具类型,代码将负责正确处理您的夹具类型。如果您在查找这些行时遇到问题,请单击Compile Arduino IDE 中的按钮,它将在您需要更改的行附近显示错误。

现在您可以将草图加载到您的 Geekduino 上。在等待序列开始时,手臂应该回到其原始位置。您可以通过按下连接到手臂的按钮来激活序列,或者打开串行监视器(38400 波特)并发送1 .

您的手臂现在将播放您设计的序列。手臂将播放一次序列,然后在最后一个姿势上停止。操作应与 Arm Link 软件中的操作相同。您可以通过按下按钮/再次输入串行命令来重新开始姿势。

如果您再次按下按钮,手臂将在完成当前姿势后停止。如果您通过串行终端发送“1”,则手臂将完成其整个序列,然后停止。

第7步:你完成了!现在怎么办?

现在您已经设置好手臂,熟悉 Arm Link 的工作方式,并且可以记录和回放姿势,您能做什么?

我们有一只手臂:

我们很想看到你的机械臂做一些疯狂的事情!

第 8 步:高级用法

最小代码

该文件夹SnapperArmPlaybackMinimal 包含一个草图,其中包含一次播放手臂序列的最少代码量。如果您希望将 arm 播放代码集成到现有项目/代码中,此代码可能会为您提供帮助。如果你想将自己的序列添加到这个文件中,将循环输入的内容添加doarmSequence.h 循环setup 输入中SnapperArmPlaybackMinimal.ino

IKSequencingControl() 概述

armSequence.h 文件通过多次调用该IKSequencingControl() 函数来工作。此功能使您可以轻松地将手臂移动到特定位置。

IKSequencingControl() 函数接受参数。鲷鱼臂仅使用其中的 8 个参数。“手腕旋转”参数应设置为“0”值。

 
pYYBAGOYmG2AKYlpAABYQXIgxwc224.png
 

例如,在笛卡尔模式下,以下行将手臂移动到 (0,150,150) (X,Y,Z),手腕角度为 0°,并且夹持器关闭。它将在 2 秒内移动,并在姿势完成后等待一秒。

IKSequencingControl(0 , 150 , 150 , 0 , 0 , 0 , 2000 , 1000, 1);

调整时机

您可以通过调整函数中的第 7 和第 8 个参数来微调每个姿势IKSequencingControl()更改第 7 个参数,增量值将影响手臂从当前位置移动到下一个位置所需的时间。前面的示例中,手臂移动了 2000 毫秒以上。如果您希望手臂移动超过 5000 毫秒,请将代码更改为

IKSequencingControl(0 , 150 , 150 , 0 , 512 , 0 , 5000 , 1000, 1);

更改第 8 个参数,暂停值将影响姿势完成后手臂等待的时间。前面的示例让手臂等待 1000 毫秒。如果您希望手臂立即移动到下一个位置,请将代码更改为

IKSequencingControl(0 , 150 , 150 , 0 , 512 , 0 , 2000 , 0, 1);

手动调整值

使用 Arm Link 软件是生成手臂值的最佳方式,因为它会检查限制并让您试用手臂。但是,可以从头开始手动创建自己的姿势。请参阅Arm Limits表以查看您可以为每个 arm/参数使用的值范围。注意:前面表格中列出的增量值不适用于该IKSequencingControl() 函数。有关调整 delta 值的说明,请参阅上面的“调整时序”。

中断序列

一旦您发送了手臂移动命令并且它开始移动,则不能中断单个姿势 - 它始终会完成姿势。

代码可以通过SnapperArmPlayback 按钮在任何姿势后停止序列。这是因为按钮连接到中断引脚。当对该引脚进行更改(例如激活按钮)时,当前运行的代码将暂停并执行特殊的中断代码。此代码将playState 变量设置为0 . 任何进一步IKSequencingControl() 的调用都不会执行手臂运动,因为此启用已关闭。

也可以在IKSequencingControl() 函数中插入额外的代码来检查额外的条件。这将允许您根据其他条件(如串行事件、模拟数据和其他非中断数字引脚)中断序列。

高级按钮选项

如果您不使用按钮(而是依靠串行终端或自动序列),则需要将第 41 行从

#define USE_BUTTON true

#define USE_BUTTON false

这将禁止代码尝试读取数字引脚(以及可能的读取噪音/激活手臂)

如果您使用的是带跳线的按钮或任何其他 2 线瞬时开关,则应将第 45 行更改为

#define BUTTON_TRUE LOW

更改此#define 将为您的按钮设置逻辑和上拉电阻。

如果您使用的是RobotGeek 按钮或带有内置下拉电阻的按钮,您可以保持原样定义。

#define BUTTON_TRUE HIGH

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

评论(0)
发评论

下载排行榜

全部0条评论

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