主页

用wifi棒子操纵ROS2机器人

本章属于人类迷惑行为:rofl::rofl: 设备简介 这次的主角是。。。一根棒子,喏,就它 自从高通MSM8916的Mainlining开源后,各种古董设备就被玩出了花。10年前的红米手机变身klipper上位机后,身价也是水涨船高。而国内的运营商们,出于内卷的原因,向市场投放了一批售价仅9.9元的4g wifi棒子。有好事者拆开后发现芯片竟是Snapdragon 410,就开发了一个openstick项目将Mainlining迁移到棒子上了。然后棒子立马被抢购一空,我也跟风买了一根。 配置不高,Snapdragon 410是高通第一款64位arm处理器,上市于2013年底,距今整整10年。Cortex-A53架构,四核1.2g。棒子给它搭载了512m内存和4g的ro...

阅读更多

实机操纵一个ROS2机器人

本章将在一款智能小车上实机部署eight系统,让我们首先来看看这次的主角 设备简介和系统部署 该款国产无人小车采用麦轮底盘,配备的STM32控制器上也部署了ros系统,具体说来是ros2的microros分支。该车核心控制板基于一款国产cpu(具体品牌不透露了),为4核心2g内存,承担上位机功能。该机有ros和ros2等多个镜像可用。这次我们选择了基于galactic的镜像,基于ubuntu的20.04.5。 顺带一提的是该款cpu还配置有gpu核心,可以本机执行一些深度学习算法,只不过性能并不怎样,尤其在编译ros2和rcljava时显得吃力。倒是运行eight非常流畅,毕竟eight对资源需求不高(eight是能够在奔3单核win98的64M内存上顺畅运行的物种)。2g内...

阅读更多

将Eight应用于ROS

本章将简单介绍eight在ROS2(Robot Operating System)平台上的应用,并提供几个示例 简单了解ROS2 ROS2应该是当前最为热门的嵌入式智能设备操作系统之一,实际上是一套开源的软件框架和工具集。它被广泛应用于机器人、无人机、智能汽车等应用领域,为诸多边缘设备提供信息感知和数据处理能力。在以自动驾驶汽车为代表的应用场景对于中间层和开发框架在实时性、可靠性、伸缩性、跨平台可移植等提出了相当高的要求,而ROS2则为之提供了成熟稳定的解决方案,因而被大量的在现代智能设备中使用。 ROS自2007年发布以来,为机器人社区提供了整套相对完善的中间层、工具、软件乃至通讯的接口和标准,可以说,凭借ROS,机器人工业领域的开发者能够快速开发系统原型并做测试和验证。而ROS...

阅读更多

关于gpt的一些想法和可能的应用

本章节是蹭热点,大体打算谈谈关于这一波AI的发展趋势,及其与Eight哲学上的共通之处。最后再谈论一下其发展展望及可能的运用。 语言与共识 GPT原理上是一个文字推理引擎,通过海量的文本处理和统计,得到了基于文字进行概率反馈的能力。之所以最近引起关注,还是因为它的能力引起了一系列戏剧性的效果,在某种意义上超乎想象,显得非常神奇。人们在觉得不可思议的同时,并不明白为何如此,以致于对其的未来展望和发展方向感觉困惑不解。 若要深入触及GPT能力的实质,就需要探讨语言的本质。这是一个漫长的论述,也并不适合在本专题中展开,但在此可以给出一个简单的定义:语言是人类对于经验形成共识的表述。在这个层面上,GPT的基本原理与Eight一致。 回忆一下第一章这张关于经验主义形成共识的图,GPT的奥...

阅读更多

无所不在无时不在 - 联系、运行与永恒的变化

事物的联系 我们继续上一章的话题,关于Search的那个小插曲。其实第一种情况很简单,大家基本能想到。UserInterface与Search分别“自闭”开发: public class UserInterface implements IProcessor<String, String> protected IProcessor<String, Integer> finder; public void setFinder(IProcessor<String, Integer> finder) { this.finder = finder; } public String process(String keyword){ ret...

阅读更多

思维实验 - 元件和组件

由本章我们就要进入eight的世界,理解她的编码、组合、配置、运行、调整等等过程,逐渐明晰她的世界观与方法论的独特之处。同样的,我们也从一些简单的小例子入手,浅显地呈现出这些不同。 什么是元件 初次看到eight的代码会让人感到困惑。它们都无头无尾,不知起始和结束。不仅如此,它们相互还毫无关联,几乎见不到有任何一个类会去引用另外一个,无法跟踪思维脉络。还不仅仅如此,每个类写得都很抽象,不知道它们都是用来做什么的。比如这样的: public class OverflowProcessor<T, R> implements IProcessor<T, R> { protected IProcessor<T, R> proxy; protected ...

阅读更多

eight的起点 - 共识接口

关于世界的认知 继续我们的话题吧。我们前面提到,代码依赖的实质是思维的依赖,思维的改变导致了代码的改变。可是另一方面,在真实的人类社会,尽管变化会传播和扩散,但是影响波动却没有那么剧烈,总会限制在一定范围之内。至少,我调整一个查询目录为何要影响我妈的外卖呢? 这肯定是语言的锅了吧,至少是框架的锅,它们的设计就有问题!如果事情就这么单纯,那为何不设计一种新的语言来摆平这个缺陷呢?仔细一想,换成任何一种语言,似乎也解决不了这个问题:UserInterface依赖着的Search发生变化了,于是它要改变,送外卖的系统又依赖着UserInterface,只能跟着倒霉,然后依赖外卖系统的业务接着倒霉,再然后。。。换成什么语言开发也都那样,只能把送外卖的系统和UserInterface分别服务化...

阅读更多

关于eight - 一个特别的Idea

本章开始,我们会通过一些简单的例子,逐渐接触到eight的理念,体会eight与众不同之处,理解她的概念与世界观,同时也初步了解她的基本的设计与开发模式。 动态系统为何难以实现 eight的一个特点就是全然的动态化,系统可以收放自如,随意改变。这让人印象深刻,也衍生出了新的系统形态。当然,这只是它独特理念的外在表现之一。 这里有一个有趣的小问题:既然这种形态的系统相当有效,为何以往却没有实现呢?究竟是什么阻碍了我们构建一种如此动态的系统? 说起模块的动态加载,我们会想起一种古老的技术,它曾盛行于20年前。不错,OSGi,这也是eight平台实现动态化的核心技术组成之一。这种技术目前仍然在一些领域被使用,比如IDE(没错,就是eclipse),应用服务器(WebSphere、Ger...

阅读更多