vs如何跟踪一个变量在哪被修改_如何设计程序来控制机器人直线移动

​有两个程序模块可以用来控制机器人直线移动:移动转向模块(Move Steering)和移动槽模块(Move Tank)。如果我们想在程序中重复想要的动作或序列,我们可以把一些程序序列放入“我的模块(My Block)”中,今天我们就来聊聊这些内容。

移动转向模块和移动槽模块都以角度为单位测量电机的旋转。电机旋转一圈可以表示为360°或者1圈。如果我们愿意,12圈可以表示为12乘以360,即4320°。

注意:虽然电机的精度可以达到1°,但是要注意,电机是无法精确转动1°的。不要以为指定电机旋转1°,就能得到这个结果。

移动转向模块(Move Steering)

9cdd1a7f2bf4503df16197f5f79afd9c.png

EV3的移动转向模块是让机器人直线前进的最明显的编程方法,在大多数情况下确实是这样。移动转向模块可以同时控制两个电机,并使用内部电机同步算法让两个电机保持同步旋转。这个算法在大多数机器人上运行良好,但要避免在循环模块中放置移动转向模块,这可能会让移动转向模块在保持机器人直线前进时出现问题。移动转向模块的内部逻辑是通过跟踪电机的转动数据来保持两个电机同步的,但是在循环模块中,这个内部逻辑会不断被复位,可能会导致代码混乱。

移动槽模块(Move Tank)

52102efde0c778f512eecd809f6775a1.png

电机模块只能控制一个电机,因此要控制双电机驱动机器人(差速驱动)直线前进,需要使用两个电机模块,让两个模块保持同步非常重要。EV3包含一个移动槽模块,可以为我们完成这项工作。

移动槽模块与移动转向模块很相似,只有一点不同,我们可以为每个电机设置不同的功率参数。旋转角度参数和制动停止参数对两个电机都适用。

我的模块(My Block)

我的模块其实是EV3中简单的子程序,我们可以创建“我的模块”并在整个程序中反复使用,它们不仅可以让我们轻松实现子程序的重复使用,而且还可以使全局程序变得更加容易。例如,我们有一个连接到端口A的手臂,需要让电机A向上转动85°,用手臂的爪子抓住物品,在机器人的整个程序中,有6个不同的地方需要完成这一动作。现在假设我们修改了手臂,电机每次需要转动95°,那么我们就要修改程序的6个地方。但是,如果我们将这个部分的程序放入“我的模块”中,则只需要修改一个地方的参数,程序在加载新的“我的模块”后会对所有地方的参数做出修改。

注意:虽然在机器人的程序中并不是必须使用“我的模块”,但掌握它的使用方法可以让我们编写程序时更为高效,程序的适用性也会更强。“我的模块”还能使程序的可读性和一致性更好。

现在让我们用学过的知识为机器人的移动创建一个我的模块,我们把它称之为MyMove模块。我们之前讨论过用机器人轮子的周长和其所需的行驶距离来计算电机需要转动的圈数,我们要做的还可以更简单一些,可以将这个数学公式添加到MyMove模块中,让EV3帮我们算出电机需要转动的圈数数值。

0681105bc3490dde572d46b7d0e3cc18.png

在上面这个例子中,创建了3个变量:电机功率(Motor Power)、周长(Circumference)和距离(Distance)。在这些变量中,电机功率变量被直接输入到移动转向模块的功率参数中,周长和距离变量被输入到数学模块中,用距离除以周长可以得到电机到达目的地所需的圈数。

现在我们就用这个例子中的这段代码来创建我的模块MyMove。创建含有参数的“我的模块”时,要小心选择模块,不能选择变量模块,这些变量模块会成为“我的模块”的参数。

e0dd227f4f91589fcb1f8d7804aa3606.png

我们选择了数学模块和移动槽模块,接下来用“工具”菜单下的“我的模块创建器”来创建MyMove模块。

b93836d50764816a5e26f52d6c3fccc4.png

创建完成后,MyMove模块与移动槽模块一样拥有3个输入参数。我们用于输入的3个变量将显示为MyMove模块的3个参数。

fb474e36e1a027bd85607ca168b60405.png
8789a3f7e215eb216bb6aa45efa2abc9.png
d5bbc18f0b1d46b6e24b43ffb23e0d56.png

现在我们有了一个可重复使用的MyMove模块,它可以根据我们提供的信息自动计算电机的旋转圈数。

大家可以在此基础上为自己的机器人制作一个MyMove模块。也可以将机器人轮子的周长放入常量模块,从而将这个数值固定在MyMove模块中,使用MyMove模块时,只需要输入“距离”和“电机功率”两个参数。这样一来,如果我们更改了机器人上的轮子,我们只需要对MyMove模块中的周长的数值进行更改,让它符合新的车轮尺寸,程序中所有使用MyMove的模块都将相应更改——非常简单,并且不会混乱。

了解了这些内容,我们就可以更好的来设计我们直线行驶的程序,更好的控制机器人直线行驶。机器人直线行驶是机器人运动的基础,大家赶快练习起来吧!

推 荐 阅 读

机器人的结构设计对直线行驶的影响

在机器人设计中最常见的底盘

在机器人设计中如何选择合适的车轮

如何在机器人底盘设计中运用齿轮传动

重心在机器人底盘设计中的重要性

浅谈机器人底盘设计的基本因素

认识乐高头脑风暴(MINDSTORMS)EV3硬件

你所不知道的乐高EV3发展史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值