找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 3925|回复: 9

EV3从图形化编程到内核编译(一)

  [复制链接]
发表于 2022-3-16 16:39:36 | 显示全部楼层 |阅读模式
很多人都玩过乐高解模方机器人,不知道大家注意过没有,在乐高官方提供的解魔方的方案中,解魔方的程序和执行操作的程序是各自独立的,为什么执行程序不能直接控制解魔方程序呢?
有谁能够写出一套完整图形化的解魔方案吗?很遗憾,到目前为止,我发现所有的解魔方案都是高级语言写的。使用图形化编程根本无法完成解魔方这么复杂的算法。图形化编程语言的特点是简单易懂,缺点是稍微复杂一点的算法都要整好几页。就拿那个简单的PID算法来说吧,C语言应该不超过10行代码,但是图形化语言要写好多页。那么可不可将复杂的算法写用高级语言写,让后通过图形化编程去调用呢?很遗憾,乐高图形化编程没有提供这样的接口。
我通过对乐高内核的研究,要使用图形化编程调用高级语言写的模块,至少涉及到以下三种编程方式:
1. C语言编程,内核是用这个语言写的,在后面我称之为C语言编程
C语言.png
2. EV3-block编程,EV3的图形化编程界面的下面,大家会看到有个动作、流程控制、传感器等等模块。就是用Block写的,在后面我称之为B语言编程。
block.png
3. 另一个就是大家用的LEGO MINDSTORMS Education EV3 图形化编程,在后面我称之为G语言编程。
上面三种编程的关系是:G语言通过调用B语言的模块编写程序,然后编译称二进制文件,此二进制文件的类型为*.rbf,然后被C编程写程序调用。注意,*.rbf 尽管是二进制文件,但还不是可执行的机器语言文件,它和我们在LinuxC语言编译出来的可运行程序是有差别的。
如何将这三种语言混合使用呢?用G语言写流程,用B语言写模块,用C语言写算法,不是很完美么?前面说了乐高没有提供这三种语言交互使用的接口,不过提供了大量的说明书,包括软件的,硬件的!我通过阅读这些说明书,终于将这条路走通了。在接下来的文章中我将逐步讲解如何将这三种语言编程语言串联起来使用,为了避免和网上的其它资料重复,在此我借用陈寅恪老人家的那句话:前人讲过的,我不讲;近日讲过的,我不讲;外国人讲过的,我不讲,这里我只讲大家都没有讲过的。由于涉及的内容太多了,如果从每一个知识点都讲到,不是三五篇文章能够说完的。因此我会在如下的文章中尽量注重解决问题的思路,而不是某个细节。
当然,如果只有思路,没有具体的成果,有人又会说我在这里讲毫无用处屠龙之术,在这里我先自我介绍一下。毕业于某九八五,混迹于自动化行业20年有余,在某乐高培训机构兼职10年有余,身无半截功名,空有雕虫小技。
为了说明我的方案是成功的,我提供了一下示例:在示例中,我在内核中融合了PID算法和卡尔曼滤波等算法。比用G语言直接写这些算法简单多了。详情见另一篇文章自定义算法内核1.10F 》
内核文件、block文件、示例程序、示例程序说明见百度网盘
链接:https://pan.baidu.com/s/1BVcrYhNGAu_e8lTAO00FFQ
提取码:euhg
EV3 Firmware V1.10F.bin    内核程序:高级语言写的算法融合到内核中
HaoQiCal.ev3b    B语言编程,调用高级语言写的算法
HQDemo.ev3     算发调用G语言示例。
大家可以先用内核EV3 Firmware V1.10F.bin更新主机,再导入HaoQiCal.ev3b,然后打开HQDemo.ev3程序测试。由于HaoQiCal.ev3b是和上面的内核对应,不跟新内核只导入此模块应该不能获得正确结果。
测试小车如下:
小车.png

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
 楼主| 发表于 2022-3-16 16:47:18 | 显示全部楼层
什么龟腚,一个小时只能发一个帖子,想发5个帖子,看来只能慢慢发了!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2022-3-16 22:38:09 | 显示全部楼层
能玩到c的在国内不多了!能把那两个算法搞清楚凤毛麟角了,加油!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2022-3-16 22:40:38 | 显示全部楼层
你这应该是下载了linux2.6内核了吧,然后交叉编译了一个自己固件吧!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2022-3-17 08:55:41 | 显示全部楼层
原来的连接已经失效了,用这个!
链接:https://pan.baidu.com/s/1kas53edBp44qB_wgrzqGDw?pwd=euhg
提取码:euhg
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2022-3-17 09:06:32 | 显示全部楼层
语音控制开关 发表于 2022-3-16 22:40
你这应该是下载了linux2.6内核了吧,然后交叉编译了一个自己固件吧!

没有动到那么多,在原来的内核基础上修改的,
还是熟悉的味道,还是原来的配方!
喜欢乐高的原因就是因为从低级到高级都可以玩
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2022-3-17 10:50:32 | 显示全部楼层
IT_Buddhist 发表于 2022-3-17 09:06
没有动到那么多,在原来的内核基础上修改的,
还是熟悉的味道,还是原来的配方!
喜欢乐高的原因 ...

是的。能改动内核的也是Linux玩家了。至少学过嵌入式linux开发吧。我玩的的扩展模块方向,没在纯软件上搞太多,你多深入点
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2022-3-17 13:18:35 | 显示全部楼层
语音控制开关 发表于 2022-3-17 10:50
是的。能改动内核的也是Linux玩家了。至少学过嵌入式linux开发吧。我玩的的扩展模块方向,没在纯软 ...

能做出与乐高兼容的传感器,说明你在硬件方面就是顶尖高手了
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2022-3-17 15:20:25 | 显示全部楼层
大佬!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2023-2-4 09:17:44 | 显示全部楼层
新版本下载网址
链接:https://pan.baidu.com/s/1OfJtyTe3LwAMh02Z0wTOzg?pwd=euhg
包含有PID自动调参程序。注意新就版本block不兼容
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-5-20 20:16 , Processed in 0.080189 second(s), 23 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

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