rduino六足机器人第二部分:编程

KiCad 华秋发行版 new

供应链、设计、制造,一体成就未来

华秋PCB

高可靠多层板制造商

华秋SMT

高可靠一站式PCBA智造商

华秋商城

自营现货电子元器件商城

PCB Layout

高多层、高密度产品设计

钢网制造

专注高品质钢网制造

BOM配单

专业的一站式采购解决方案

华秋DFM

一键分析设计隐患

华秋认证

认证检测无可置疑

发资料

发帖

提问

发视频

扫码添加小助手

加入工程师交流群

实现该目的最简单的办法是将UNO更改为MEGA。MEGA和UNO是兼容的,所以对于原理图不用进行修改。另外,使用MEGA不仅可以为计算部分获取四倍多的RAM,还意味着将有八倍以上的闪存可用于我们的程序存储。我们很可能不会所有都用到,但是有更大的预留空间总是好的。以下是改进后的Fritzing原理图,如果您使用的是Arduino MEGA最新版本 (Rev 3),更换的过程很简单,跟断开UNO之后连接MEGA的过程一样。下面示意图以供参考。

图1:PWM扩展板改进后原理图

现在,我们来探究一些物理原理、所用到的大量数学知识以及少量代码。

可能有些人还记得,在高中的时候,物理课中有一部分内容叫做“运动学”。简单地说,这是力学领域中对一个目标对象(或一个点)运动的描述。这意味着在运动学中,您将使用数学公式和模型来对单个点的已知运动进行分析。顾名思义,逆运动学(IK)恰恰相反:通过一系列数学公式来反推并创建运动。

在机器人领域,通常使用的算法只能根据相应的端点运动来计算所有关节的运动。现在,您可以清楚地看到逆运动学在伺服运动编程部分的难题上所具有的优势——它是可以通用的。从理论上来说,仅一个算法就可以处理机器人所执行的任何运动。从使用者的角度来说,它非常易于使用—您只需要告诉机器人向左转90°,然后直行1米就可以了,而不必考虑每个伺服的位置。

struct body {float x;float y;float z;float facing;};

struct leg {uint8_t number;bool move;float phi;float z;};

body origin;leg legs[6];

将这些结构私有化有以下两个原因:

如果需要,我们可以将这些点可视化。现在,我们的整个机器人由七个点来表示(图3)。

图3:IK模型的图形表示。简而言之,这就是六足机器人“认为”它所看起来的样子。红点是身体,蓝点是腿。

这些结构用于追踪所有腿部的位置以及机器人本身的位置。您可能注意到了,腿部的位置仅由两个坐标来定义:phi 和 z。这是因为每条腿只有两个自由度,因此只能沿着两个轴进行移动。现在可以通过身体的x、y 和 z 坐标来对所有位置进行定义。每条腿的 phi 和 z 坐标的范围是-1到1,并且仅确定了腿相对于身体的位置。尽管现在来看这种复杂性似乎是不必要的,但是实际上这比每次运动后计算每条腿的 x、y 和 z 坐标容易得多。phi 坐标表示水平运动,z表示垂直运动。

图4:带有phi轴和z轴的腿部细节

现在,我们对于机器人有了足够简单的数学表达,但是还没有用它来做任何事。下一步就是研究如何通过仅仅修改该模型来实现伺服的运转。我们需要完成的程序是将输入作为一组点坐标,并将其转换为伺服的运行。

这时候另一个问题就出现了,而这次,仅仅替换成另一个Arduino无法解决。当启动伺服时,我们可能需要使大部分伺服同时运转。但是,Arduino(以及所有与此相关的AVRs)一次只能执行一项任务。这意味着如果我们如果想平稳地运转伺服,就需要一个一个进行启动。如果仅仅将伺服从一端直接运转到另一端,整个过程将非常不稳定。

这也是我们必须更换Arduino的原因。如果我们想要运行每一个伺服,那么我们需要大量的内存来存储刚刚所计算出的坐标。如果我们运转所有的伺服,我们将需要600个浮点数来存储运动坐标,因为每个伺服都至少需要50个位置才能产生平滑连续的运转效果。600个浮点数大约是 2.3 kB的RAM—这已经超过了UNO的容量。

现在我们开始进入IK编程的最后一步,即真正的行走。我们已经完成了所有基础工作:我们创建了一个模型来对所有事物进行追踪,我们可以运行多个伺服,甚至可以使伺服的运转变得相对平滑连续。在以下内容中,支腿的编号与下图中的编号相对应:

图5:支腿编号

该编号系统同时与您在库中找到的代码一致。

我们先从简单的操作开始:在场地上转向。通常,在为支腿设定新的位置时,您必须保证其中三条腿在地面上。这背后的原因很明显—除非您可以非常快地移动支腿,不然机器人将失去稳定性并跌倒。我们可以分几步使机器人转向:

1. 将支腿0、2和4移动到phi 坐标最大值处(最大水平角)。

图6:转向步骤1(支腿0、2和4)

2. 对支腿1、3和5进行相同操作。

图7:转向步骤2(支腿1、3和5)

3. 身体转向。这一步是通过沿与步骤1-3中相反的方向运行所有水平方向的伺服来完成的。因为所有的支腿都在地面上且不能移动,所以可以移动的只有身体。

图8:转向步骤3

对这些步骤进行重复执行后,机器人可以转弯80°。当然,只要不是在过程中一直保持 phi 轴最大坐标位置,可以实现小于该角度的转向。得益于 traceLeg() 函数背后的巧妙算法,我们不必计算支腿的任何 z 坐标值—这些计算会自动进行,并形成圆或椭圆的形状。您可以在以下视频中观察到这一过程。

最后一步是行走。具体来说,我们希望它至少能向前行走。六足机器人的行走算法有很多种,但大多数算法都基于有三个自由度的支腿。我们的支腿只有两个自由度,因此我们必须自己进行一些设计。我所提出的方法虽然没有达到预期的速度,但是这种方法是最易于编程的,并且易于观察过程中的现象。

1. 首先,支腿0和3向前移动

图9:行走步骤1(支腿0和3)

2. 然后,支腿2和5向相同方向移动

图10:行走步骤2(支腿2和5)

3. 对支腿1和4进行相同操作

图11:行走步骤4(支腿1和4)

4. 现在,身体移动向前,开始重复执行整个过程。

图12:行走步骤4

您可以在以下视频中观看整个运动:

您可能已经注意到了,库中有一部分专门用于SR04超声波测距仪。这是为了获取有关机器人所处环境的一些信息。当然,一个固定不动的传感器是不够的,因此在上一篇文章中我们在一个额外的伺服上也安装了一个传感器。

重要提示: 请注意,您需要Adafruit PWM驱动程序库来使AP_Utils运行,您可以点击此处 下载。下载完成后,和其他Arduino库一样对其进行安装。

Arduino 代码

审核编辑:汤梓红

浏览量

浏览量

浏览量

扫码添加小助手

加入工程师交流群

下载发烧友APP

电子发烧友观察

长沙市望城经济技术开发区航空路6号手机智能终端产业园2号厂房3层(0731-88081133)

THE END
0.小伙伴机器人编程课程1本节机器人课的主题是《事件与响应》 【1】复习知识 【2】设定主题《制作钢琴》 ①添加背景和角色 ②事件代码——当角色被点击 ③编写程序 ④运行程序 【3】认识简谱 【4】体验与互动 00:03 2.🎉🎉🎉尊敬的各位家长和亲爱的孩子们晚上好! 本节机器人课的主题是《制作钢琴》 【1】复习jvzquC41yy}/onnrkct/ew45dy8f7~y
1.编程代码图片大全编程代码高清图片下载科技信息技术代码程序背景图片 图像模糊的秘密电脑黑客程序员青年身穿帽衫与黑暗编程计算机代码背景,互联网犯罪概念 亚洲学生在家学习编程机器人汽车和电子板电缆的STEM, STEAM,数学工程科学技术计算机代码的机器人概念的孩子。 网站设计。开发编程和编码技术。 jvzquC41yy}/7:rk|0ipo8xq/v{qkjs177636?;0jvsm
2.机器人学代码实现机器人编程代码大全aAI运行代码python 利用列表字典定义DH表;DH表是用来表达机器人各个关节位置关系的方法;每个关节的坐标系都是根据DH表参考上一个坐标系而确定的;而最初的坐标系的位置可以自己定义。 theta:当前坐标系绕上一个关节的旋转轴旋转的角度;旋转方向符合右手法则! jvzquC41dnuh0lxfp0tfv8|gkzooa>:87:;478ftvkimg8igvcomu8665383898
3.《辐射4》合成人图鉴全机器人及合成人图鉴大全电视游戏新浪游戏今天小编给大家带来的是《辐射4》废土大图鉴,这次讲的是机器人、合成人篇,对合成人和机器人不了解的玩家,快跟小编一起来看看吧。 这次的是机器人与合成人(敌人)图鉴 机器人包括:眼球机、铁卫兵、打手先生、突袭者、保护者、自由至尊。 巧手先生因为敌人种类少就不加讲解了。大部分巧手先生都是特殊角色。 jvzquC41icsfu7xkpc4dqv3ep1z04968/27.2<4hzpizc{;45:8727xjvor
4.代码竞争机器人编程之战下载代码竞争机器人编程之战中文版下载代码竞争机器人编程之战(Code Rivals: Robot Programming Battle)是一款第三人称人工智能解谜自动化编程战斗游戏。游侠网分享代码竞争机器人编程之战下载,玩家需要编程你的机器人,按下执行,看它摧毁敌人。使用可视化节点编程,你将在几秒钟内学会真正的编程。jvzquC41fq}o0jqk439/pny1rembon4eqfkskfnutucq}utqixbovnpidguvuj0jvsm
5.基于G代码工业机器人自动编程.pdf工 并没有实物或是模型 就无法通过示教来实现 产生机器人代码并加以控制 这样 虽然具有很强的 因此 基于 系统的图形交互式离线编程 ≤⁄ ≤ 适用性 但是编码过程繁琐 工作量巨大 笔者结合 就成为了工业机器人发展的一个趋势 这两点考虑 提出利用 代码作为中转 实现机器人 德美日 法等工业发达国家从 世纪 年 jvzquC41oc~/dxtm33>/exr1jvsm1;5391682<433;?6:B>70unuo
6.python机器人编程入门教程(机器人编程python代码)python机器人编程入门教程(机器人编程python代码) 为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc,version是模块的预编译版本编码,一般都包含Python的版本号。例如在CPython 发行版3.4中,fibo.py文件的预编译文件就是:__pycache__/fibo.cpython-34.pycjvzquC41yy}/gxqkpm4dqv4pgyy0rxxv13<557mvon
7.杭州童程童美少儿精品编程课程介绍杭州童程童美少儿编程拥有3-18全龄段编程机器人学习系统,乐高搭建、乐高搭建+编程、代码编程。今天小编就为大家介绍部分我们杭州童程童美的少儿精品编程课程,供同学及家长们了解。 01 乐高机器人方向(中班及以上) 学龄前: 通过大颗粒教具与无屏幕实物化编程模块相结合,构建场景并通过编程完成任务挑战,做到手脑结合,jvzq<84uj0vnxt0eqs0ynsvk1zdvv4pgyy04B67984tj}rn
8.可生成、调试代码,谷歌为安卓开发者推出AI编程机器人StudioBotIT之家5 月 11 日消息,谷歌在 I / O 2023 开发者大会上,面向安卓开发者推出了 AI 编程机器人 Studio Bot。该工具可以生成代码、修复 BUG、以及回答关于安卓应用开发的相关问题。 谷歌表示该机器人建立在 Codey 模型基础上。Codey 是谷歌最新推出的基础编程模型,基于最新的 PaLM2 大型语言模型(LLM)。 jvzquC41yy}/k}mqog4dqv4218?21A:80jzn
9.安川机器人编程各指令详解!新闻中心安川机器人代理商手机版工博士智能工厂服务商,提供机器人及周边零部件,机械设备,AGV,AMR,PLC,变频器,传动伺服,减速机,触摸屏,仪表阀门,低压配电等MRO采购,打造专业的FA工业自动化及智能制造服务平台.jvzquC41o0mpppgqujo/exr1kpjfz7ujrAspf~qgkfC5(~xgtpgngF~cumgxchwqdqzje/fevkuo?wjyu(ougvnf?3728>5
10.工业机器人技术专业人才培养方案经过对福建地区典型中小企业调研分析,表明工业机器人技术类职业与其它职业相比,属于复合性的新型职业,要求具有较宽的理论和专业知识基础,具有娴熟的操作能力和解决问题能力,同时具有从事多重复杂性的工作能力。其专业职业面向如表4-1所示: 表4-1职业面向表 jvzquC41yy}/hshre0kew7hp1l~he87245518991e8:6cA=57:5qcpj0jvs