Kittenbot 小喵科技——专注人工智能编程教育

快捷导航
查看: 5332|回复: 5

[喵otto] Robotbit版的OTTO(2)-程序下载与概述

[复制链接]

13

主题

22

帖子

119

积分

热心会员

Rank: 2

积分
119
发表于 2018-1-25 18:52:53 | 显示全部楼层 |阅读模式
关于Micro:bit版OTTO机器人的那些事(持续更新)
控制逻辑与程序开机状态程序与控制程序概述
程序.gif
主图.png
       经过若干天的调试与测试,终于完成了Micro:bit版OTTO机器人的基本动作程序的编写,直接使用Makecode图形化编写,可能各位亲们在看到编写过后的十分长的积木块时会感到害怕,没有关系,跟着工程师一起去探索程序的奥秘!
       看过我们功能演示视频的小伙伴应该知道,我们Micro:bit通过Robot:bit的强大的拓展功能的帮助,实现了同时操控八个舵机同时进行工作的能力,使得Micro:bit版OTTO机器人不同于其他开源的Arduino版本的OTTO机器人直接多了四个舵机,使得机器人的动作更加的灵活和仿真,大大提高了编程所带来的乐趣。
重点来了,或许你以前做过图形化发面的编程,那么如果你能真正弄明白Micro:bitOTTO机器人的控制逻辑并用图形化指令将它编译出来,说明你的逻辑能力已经初具程序员的水准了,哈哈哈!开个玩笑,话不多说让我们开始讲讲关于程序控制逻辑的那些事!!!

开机状态控制逻辑
开机设置流程图.png
开机状态设置逻辑流程图
开机状态程序简介
       开机控制时设置程序段开始的初始状态,也把握着程序的大方向,这里使用抽调数组的程序控制每个舵机旋转的角度,说的专业一点,将每一个舵机旋转所涉及到的角度参数规定成数组,并按照顺序排列在一起,一个舵机对应一个数组,程序运行时从数组中抽取数字,并根据经验公式进行计算得到此刻舵机所转动的角度,并将其以信号形式传送给舵机引脚,这样使得舵机按照设定,做出相应的动作。
       数组可以说就是一个单阶矩阵,这里每个舵机我给它们设置了是个数据,一共控制八个舵机,所以所有的数组构成了一个8X10的矩阵,每一个舵机在执行角度旋转时,就是在对应的单阶矩阵中抽取数字,舵机的位置在每一个时刻都有对应角度,那么就构成了一个随变量变化的多元函数关系,简单的说舵机的角度与时间构成了一个函数关系,而时间又与数组构成了对应关系,所以可以说是数组的排列决定了舵机的角度,数组是中的数字和舵机角度构成了函数关系。形象一点的来说,舵机每个时刻的角度就是一个数字,这些数字是按照一定的顺序排列在一个盒子里,时刻一的时候拿出排在第一个顺序的数字传给舵机执行,时刻二的时候就拿出排在第二个顺序的数字传给舵机执行,以此类推。
      

     
       打个比方,如果在一个盒子里装满了苹果,我们如果要一个一个的拿出来这就要循环的做着拿取的动作,你要拿几个就决定着你要做的这个拿取的动作你需要循环多少次,这里就涉及到我们在编写程序时需要考虑的重要的程序控制逻辑——循环循环语句在C语言程序,单片机程序控制中用途广泛,而且对程序的功能实现具有重要的意义,一般的循环语句会规定循环初始量,循环条件等,在循环中写入实现其基础功能的基本语句,从而通过循环语句反复执行操作,单循环可以单独串入主程序中,也可以一个大循环囊括一个小循环这就是所谓的循环嵌套,这里就是循环语句的进阶运用,在程序段里面使用了循环的嵌套,马上通过主程序再进一步讲解。需要了解循环语句功能应用的亲们可以查阅相关编程控制书籍,这里就简单的介绍了一下,大家也可以直接点击循环语句了解一下。
       因为涉及到循环的嵌套,我自己在写程序的时候也是慢慢的才梳理出程序的逻辑,大家需要慢慢学,慢慢的去理解。这里我就自己浅显的通过简化的流程图来阐述一下我的编程控制逻辑思路。

      
      上面的图就是开机时的控制逻辑,逻辑分为两条主线,首先是循环各个状态量和数组的设定,另一个分支就是其他状态包括开机时的声光电效果的设置,可以看到数组我们建立了两个一个是前进要用到的八个舵机的数组,还有是后退要用到的八个舵机的数组,然和设置循环的标记位,上面说到我们的程序是一个循环嵌套,就分为内循环,外循环,根据我们的数组的个数,因为计数位是从0位开始,所以在这里根据数组的个数确定标记位count(内循环)为9,外循环Step(外循环)为7,并且设置完以后定义对应的舵机信号引脚。如果直接使用Robot:bit插件时这一步可以忽略,可以直接在主程序中设置呢。
       因为是通过另一个Micro:bit进行遥控的所以在程序的开始设置2.4G的无线数组。所以用Makecode编程的界面截图是下面这样:
开机程序1.png
设置开机状态程序前面
开机程序2.png
设置开机状态后面
       大家可以看到,首先设置了无线通讯的数组,开机时的界面,还有RGB灯的效果,中间没有截取的就是数组的设置,因为实在太长了,而且,在一开始安装舵机时,一定要校准舵机的初始位置。而且根据不同装配所出现的差异,需要校准的值也有所不一样,所以这些值参考意义并不是很大,但是如果你是正常校准过后安装的,那么偏差就不会很大,要达到同样的效果,可以就在附近取值。下面舵机的参考数组:
前进数组
forward_g2(S1) = [114, 108, 94, 80, 74, 80, 94, 108, 114, 180]
forward_g5 (S2)= [90, 108, 117, 108, 90, 72, 63, 72, 90, 180]
forward_g15 (S3)= [106, 100, 87, 72, 66, 72, 87, 100, 106, 180]
forward_g20 (S4)= [90, 105, 113, 105, 90, 65, 61, 65, 90, 180]
G1(S5) = [114, 108,94, 80, 74, 80, 94, 108, 114, 180]
G2(S6) = [90, 110,120, 110, 90, 110, 120, 110, 90, 180]
G3(S7) = [106, 100,87, 72, 63, 72, 87, 100, 106, 180]
G4(S8) = [90, 72, 63,72, 90, 108, 117, 108, 90, 180]
后退数组
backward_g2(S1) = [74, 80, 94, 108, 114, 108, 94, 80, 74, 180]
backward_g5 (S2)= [90, 108, 117, 108, 90, 72, 63, 72, 90, 180]
backward_g15(S3) = [66, 72, 86, 100, 106, 100, 87, 72, 66, 180]
backward_g20(S4) = [90, 105, 113, 105, 90, 69, 60, 69, 90, 180]
G11 (S5)= [74, 80, 94,108, 114, 108, 94, 80, 74, 180]
G12(S6) = [90, 110,120, 110, 90, 110, 120, 110, 90, 180]
G13 (S7)= [66, 72, 86,100, 106, 100, 87, 72, 66, 180]
G14 (S8)= [90, 105, 113,105, 90, 69, 60, 69, 90, 180]
就把对应的值按照从上往下的循序填写到后面的数组当中就可以了。这样我们就完成了程序初始化的设置。
在这你可以下载到源程序亲们可以好好研究一下



otto机器人与遥控器程序.zip (459.16 KB, 下载次数: 197)
回复

使用道具 举报

47

主题

139

帖子

752

积分

高级会员

Rank: 4

积分
752
发表于 2018-1-26 09:33:03 | 显示全部楼层
程序看懂了会飞了~
回复 支持 反对

使用道具 举报

1

主题

7

帖子

52

积分

热心会员

Rank: 2

积分
52
发表于 2018-1-26 12:42:29 | 显示全部楼层
点赞,确实看着程序好复杂
回复 支持 反对

使用道具 举报

0

主题

11

帖子

77

积分

热心会员

Rank: 2

积分
77
发表于 2018-1-31 19:22:17 | 显示全部楼层
哈哈 确实有点坑
回复 支持 反对

使用道具 举报

4

主题

25

帖子

74

积分

热心会员

Rank: 2

积分
74
发表于 2018-2-8 09:48:42 | 显示全部楼层
有用,学习学习!
回复 支持 反对

使用道具 举报

0

主题

4

帖子

40

积分

新手小白

Rank: 1

积分
40
发表于 2019-9-8 17:33:19 来自手机 | 显示全部楼层
下一篇什么时候出呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

全力为Stem教育行业提供新技术、新方案和新产品。

 

地址:广东省深圳市华丰互联网+创意园 419~420

© 2019 Kittenbot Inc. 深圳市小喵科技有限公司 ( 粤ICP备16110073号 )

GMT+8, 2020-7-16 02:48 , Processed in 0.028411 second(s), 37 queries , Gzip On.
Powered by Discuz! X3.2

快速回复 返回顶部 返回列表