大学里的 Linux
Linux 操作系统 (OS) 结合强大而高效的可用软件开发工具,一直是位于博尔德的科罗拉多大学多个研究和商业项目的首选平台。这些项目包括多个有效载荷,这些载荷已在 NASA 航天飞机上执行了 17 次出舱任务。这些有效载荷由 BioServe Space Technologies 构建,该公司是 NASA 太空商业化中心 (CSC),隶属于工程学院的航空航天系。BioServe 的有效载荷已记录了总计超过一年的微重力联合运行时间,包括在俄罗斯和平号空间站上的两次长期停留。学生项目包括一辆无人地面车辆 (UGV),该车辆根据其对动态环境条件的评估自主导航。
从教学角度来看,Linux 已被证明是我们大学中非常宝贵的教学工具。航空航天工程科学和计算机科学系开设了几门课程,这些课程利用了 Linux 操作系统复杂而强大的功能,不仅作为开发平台,而且作为一种教授和实施硬件/软件集成、控制理论、操作系统研究和系统管理方面高级主题的方法。本文从科学和工程的角度详细介绍了几个项目,并概述了复杂控制方案开发中常用的软件方法,这些方案对于可靠和稳健的运行是必要的。
BioServe Space Technologies 已经构建并飞行了多个有效载荷,这些有效载荷使用 Linux 操作系统与控制硬件接口,为操作员输入和输出设备提供支持,并提供软件开发环境。BioServe 有效载荷机队的主力是商用通用生物处理装置 CGBA,其版本 1 配置如图 1 所示。操作员数据输入和视觉反馈设备位于前面板上。键盘和迷你 VGA 屏幕连接到运行 Linux 的嵌入式控制计算机。CGBA 有效载荷作为等温密闭模块 (ICM) 运行,能够精确控制腔室温度,范围从 4 到 40 摄氏度。内部是在发射前装载的生物和晶体生长实验。CGBA 是一个“单舱”有效载荷(约 21 英寸 x 17 英寸 x 10 英寸),可插入航天飞机中层甲板或航天飞机货舱中的大型有效载荷模块。
流体处理装置 (FPA) 如图 2 所示,是 CGBA 有效载荷的基本实验单元。它本质上是一个“微重力试管”,允许在轨道上受控、顺序混合 2 或 3 种流体。这些流体包含在内径为 13.5 毫米的玻璃桶内。最多八个 FPA 被装载到电动组激活包 (GAP) 中,如图 3 所示。一旦有效载荷达到微重力状态,控制软件会在指定时间启动包含不同细胞培养基的液体的混合。第二次电机启动,以类似于注射器的方式按下柱塞,将细胞培养混合物与固定剂试剂结合,从而抑制进一步的生物反应。然后将飞行样品与地面实验中的相同样品进行比较分析,以确定微重力对基本生物过程的影响。制药和结晶研究是这些类型实验的常见候选者;反应效率的小幅提高可能会导致所需产品的显着增加,从而提高公司的利润率。

图 1. 商用通用生物处理装置

图 2. 流体处理装置
CGBA 有效载荷的第二个版本突出了一个可配置的内部托盘,可以在其上构建几个不同的栖息地腔室。该有效载荷包含多个摄像机,以提供栖息地内容的按时间顺序排列的图像记录。BioServe 与 SpaceHab, Inc. 合作,利用这种有效载荷配置,向世界各地的小学和中学学生提供了令人兴奋的太空教育推广活动。SpaceHab 的太空技术和学生研究 (S*T*A*R*S) 计划支持各种潜在的实验研究。
1999 年 7 月,在 STS-93 航天飞机任务上飞行的两个实验涉及来自美国高中的学生和来自智利一所中学的学生。如图 4 所示,该有效载荷有三个中心栖息地,其中包含瓢虫和蚜虫,而前面左侧较大的腔室则容纳蝴蝶。第一个实验是美国学生感兴趣的,涉及蛹幼虫从晶石(茧)到蝴蝶成熟阶段的孵化和发育。第二个实验完全由一群智利少女设计,调查了微重力对瓢虫及其最喜欢的猎物蚜虫(以其破坏粮食作物而臭名昭著)的捕食关系的影响。图 5 显示了蚜虫,即在将捕食性瓢虫引入栖息地腔室之前,未成熟小麦植株上的小黑点。图 6 显示了释放瓢虫后的相同栖息地,显示蚜虫数量(预期)减少。请注意图像中间右侧的瓢虫,因为它试图在微重力中捕捉蚜虫。该实验的结果希望衡量使用自然捕食者/猎物关系作为最大限度减少有害昆虫对陆地和太空粮食作物破坏的手段的潜力。

图 5. 小麦上的蚜虫栖息地

图 6. 引入瓢虫后的相同栖息地
第二个 S*T*A*R*S 飞行将于 2001 年在 STS-107 航天飞机上进行,将支持一系列国际教育科学实验。该计划的参与是真正的全球性的。来自许多国家的教育部门提交了提案供选择,从中选出了六个实验。澳大利亚将进行一项 AstroSpider 实验,这是格伦韦弗利中学和皇家墨尔本理工大学研究人员之间的合作。他们将研究蜘蛛丝的机械性能(强度可能是钢铁的 100 倍)在微重力下产生时有何不同。中国景山中学提出了一个实验,该实验将研究他们国家的象征之一:蚕。他们的实验将试图揭示微重力对蚕丝生产和变态过程的影响,因为蚕从蠕虫状幼虫转变为蚕茧,然后变成成虫。新的 S*T*A*R*S 实验中的两个将是日本和美国研究人员的共同努力。两个小组都将分别飞行一个封闭的水生生态系统,其中包含植物和微小的水生动物。他们希望研究这些动物在微重力下游泳时的导航和运动过程。来自以色列莫茨金奥尔特初级中学的理科学生正在设计他们的实验,以研究微重力中晶体的形成。他们希望看到太空生长的晶体与类似生长的地球晶体在形状、结构、强度和尺寸上的差异。该航班的最后一名参与者是来自纽约州锡拉丘兹的福勒高中。他们与锡拉丘兹大学合作,正在设计一个零重力蚂蚁农场。他们希望绘制出太空飞行方向迷失引起的该物种良好表征的社交活动中的差异。最近,第三次 S*T*A*R*S 任务已安排在 2002 年在国际空间站上进行,这将允许进行更长期的科学研究。
CGBA 有效载荷在其版本 3 配置(见图 7)中,允许通过将每个 GAP 容器耦合到带有热电模块的水回路并将每个 GAP 彼此绝缘来实现对每个 GAP 容器的单独温度控制。水回路分布在该舱柜的顶部和底部,以几乎消除热梯度并提供对单个样品容器的有效温度控制。这些单独温度控制的容器允许按时间顺序启动和终止实验。美国国立卫生研究院将进行一项实验,研究果蝇从幼虫到成虫的成熟发育过程,并使用此配置。果蝇的成熟过程可以通过在不同时间使用预编程的温度曲线加热包含在单独温度控制的 GAP 中的培养皿来有效地控制。果蝇具有科学文献充分记载的发育过程。科学家已经能够用荧光标记对果蝇神经元进行基因拼接,并且对基于神经的肌肉活动的发育感兴趣。该研究旨在调查太空样品与类似地面控制样品之间神经通路发育的差异。科学目标是增加对重力如何影响神经发育的理解。

图 7. 带有温度控制容器的 CGBA-03 有效载荷
植物通用生物处理装置 (PGBA)(见图 8 和图 9)的体积是先前描述的“单舱”CGBA 有效载荷的两倍。它旨在精确控制植物生长室内的温度、湿度和氧气/二氧化碳水平等环境条件,以进行植物科学领域的基础太空研究。植物科学对于许多大型商业实体(包括制药和木材行业)至关重要。这两个商业上重要的行业都部分基于植物产生的化合物。例如,木材行业资助了重要的研究计划,调查木质素的生产,木质素负责为植物和树木提供结构强度。从商业角度来看,木质素对于纸制品的形成是不受欢迎的,但对于坚固的木材产品来说是理想的成分。在微重力下,植物对结构强度的需求大大降低。当前的研究重点是微重力植物和树木中木质素产生的变化,以确定调节该化合物在陆地原位生产的潜在方法。

图 9. 环境受控 PGBA 中的小麦植物
流体通用生物处理装置 (FGBA)(见图 10)从研究和商业角度来看都很有趣。FGBA 是与可口可乐公司合作开发的,并于 1996 年在 STS-77 上飞行。FGBA 用于提供关于人类味觉感知的基本研究,这种感知在微重力下会发生变化。该有效载荷还研究了与微重力下的两相流体流动和分配相关的基本关系,因为饮料以类似于地面苏打喷泉的方式使用加压二氧化碳进行混合和分配。从商业角度来看,该有效载荷证明了基于太空项目的资金潜力,不仅基于其基础研究潜力,还基于其为资金短缺的国际空间站带来商业广告收入的能力。
在所有有效载荷中,都使用基于加速度计的系统来检测发射,从而允许在进入轨道后立即启动实验(电机激活、温度变化、照明条件)。此外,可以对自动实验终止进行编程,使其在任务期间的任何时间发生,包括在再入之前,基于预先计划的(或更新的)航天飞机任务结束时间。这两种能力相结合,可以尽早启动实验,并尽可能晚地终止实验,因为这些时期通常是宇航员机组人员执行有效载荷任务的时间最少的时期。
选择 Linux 作为航天飞机(以及即将到来的国际空间站)任务有效载荷的操作系统有几个原因。首先也是最重要的原因是其高可靠性。在开发不同有效载荷的几年中,我们从未遇到过与操作系统相关的问题。使用 Linux 操作系统的其他原因包括
易于自定义内核配置,这可以实现针对手头任务优化的内核小尺寸;
能够编写内核空间自定义设备驱动程序,用于连接所需的外部硬件,例如模拟和数字 I/O 板或帧捕获器;
能够优化有效载荷非易失性存储介质上所需的应用程序包;
强大的软件开发环境的可用性;
进程间通信 (IPC) 方法、shell 脚本和多线程控制进程的标准类 UNIX 约定的可用性。
随着 Linux 操作系统的实时变体的最新进展和功能,关键的实时进程调度是可用的(如果需要)以集成到软件/硬件控制架构中。
由于这些复杂有效载荷的体积有限,因此有必要最大限度地减少每个硬件项目的体积,包括通信和过程控制计算机。在我们的有效载荷中,我们结合使用小型单板计算机 (SBC) 和 PC-104 外形尺寸板来补充 SBC 的功能。特别是,我们从 Ampro、Diamond Systems、SanDisk 和 Ajeco 产品中获得了巨大的成功和出色的可靠性。
我们设计和开发的计算机硬件架构是通用的,因为相同的架构用于所有不同的有效载荷。单板计算机提供 CPU、FPU、视频接口、IDE 和 SCSI 设备接口,以及串行和以太网通信接口(见图 11 和 12)。
控制计算机组件的内部,带有一个单板计算机和堆叠式 PC-104 模块,如图 11 所示。该单元宽 6 英尺,深 2.5 英尺。图 12 显示了控制计算机组件的外部正面,带有键盘和迷你 VGA。模拟和数字 IO 功能(连接控制硬件和传感器所必需的)通过额外的 PC-104 模块实现。有效载荷内实验的成像通过连接到 PC-104 帧捕获器的多个摄像机完成。这种通用硬件架构允许集成复杂的传感器和控制执行器阵列。此外,通过在串行 RS485 多点通信总线上连接微控制器来实现分布式处理,这有助于以模块化方式添加新的控制硬件。

图 12. 键盘和迷你 VGA 屏幕
与单片 DOS 系统相比,真正的多处理 Linux 环境提供的一个巨大优势是软件开发的相对简易性。类似的通用、多线程软件控制架构用于本文中描述的所有项目和图 13 中显示的过程控制和通信。
软件架构遵循多线程对等模型。在启动时,负责初始化整个系统的线程首先生成有效载荷到地面通信所需的过程。接下来,请求并初始化共享资源。初始化通信和同步控制变量,然后创建一个与有效载荷所需的不同服务相对应的单独线程。对于我们的有效载荷,这些服务被分类为主要服务或次要服务。主要服务包括那些控制有效载荷基本功能所需的任务。不同有效载荷的主要服务在功能上往往是相同的,但硬件实现方法可能差异很大。次要服务是特定于特定有效载荷的服务。
从开发的角度来看,在经过验证的多进程架构中使用线程有助于多程序员开发、模块重用和更快的测试和调试周期,因为可以轻松启用或禁用单个线程的处理。这允许以独立方式完全测试单个子系统,例如腔室温度控制。一旦完全测试,子系统就会被集成到整体有效载荷控制架构中,从而最大限度地减少集成的不利影响。

图 13. 软件架构的简单图表。
通信系统也以模块化方式实现。数据传输在编程接口级别被抽象为不同的消息(例如,模拟数据、健康和状态消息、图像等)。这些不同长度的消息被称为“通道”。希望向地面站传输消息的线程将预定义长度的动态消息排队(写入)到指定的通道(见图 14)。通道系统会在前面添加通道路由信息和数据包校验和。多个通道消息被组合成辅助数据包,以最大限度地利用可用带宽。此辅助数据包称为“RIC”数据包;它充当国际空间站上用于与不同有效载荷通信的机架接口计算机的接口抽象。RIC 数据包内容也通过附加的校验和进行完整性检查。最后,RIC 数据包被封装到 TCP/IP 数据包中,以便交付给有效载荷。
RIC 和有效载荷之间的通信基于 TCP/IP,以实现可靠的通信。不幸的是,从有效载荷传输到 RIC 的遥测数据最终通过 UDP 从马歇尔太空飞行中心分发到远程用户,而 UDP 是不可靠的。此外,TDRSS 卫星网络形式的物理通信链路也容易发生中断。为了最大限度地减少数据包丢失和 TDRSS 卫星网络覆盖范围内的漏洞造成的信号丢失的潜在影响,已实施“回放”系统,该系统重新传输关键信息,以提高地面站正确接收完整遥测数据文件的概率。
最后,其中一个通道已被配置为充当有效载荷上的远程 shell。bash shell 的输入和输出首先重定向到通道,然后如上所述进行数据包化。以这种方式,真正的远程 shell 在实际有效载荷上运行,其功能等同于通过 TELNET 或 ssh 建立远程连接。bash shell 输入和输出通过 NASA 通信方案“隧道传输”,并允许从地面进行远程系统管理活动。尝试在 Windows 下实现该功能!有关通信子系统设计的更多信息,请参阅 Sebastian Kuzminsky 于 1997 年 7 月在Linux Journal上发表的优秀文章“Linux Out of the Real World”。
随着美国经济从工业时代向信息时代转型,所有工程学科的学生都需要实现大型和小型工业生产过程的自动化和控制。存储介质、CPU 周期和接口硬件的每美元成本持续下降,这使得研究机构和营利性公司能够实施生产过程的自动化,以努力降低成本并提高利润率。在位于科罗拉多大学主校区的工程与科学学院,随着集成教学与学习实验室 (ITLL) 的建成,一种新的教学模式已经实现。ITLL 的建立是为了为所有工程学科的学生提供资源,以促进课堂上学到的理论向实验室实际操作的转移,从而教授现实世界的工程和科学技能。
ITLL 提供资源,使学生能够设计和构建复杂的工程项目。典型的实验室工作站如图 15 所示。每个实验室工作站都配备了一台惠普 Vectra PC,配备 500MHz Pentium-III 处理器、384MB RAM、8GB 硬盘驱动器、常用的 NIC 和 National Instruments 模拟和数字数据采集卡。80 个可用系统中的几个已配置为启动 Linux 和 RTLinux,以及 Windows NT。每个实验室工作站的标准测试设备包括波形发生器、数字万用表、可变电压电源和示波器。接线板提供对模拟和数字 IO 信号以及信号调理硬件的轻松访问。精密测试设备的可用性,加上 Linux 和 RTLinux 操作系统的功能,使学生能够设计和构建复杂的现实世界应用程序,将硬件和软件集成在一起以完成指定的工程或科学任务。

图 15. 运行 Linux/RTLinux 的 ITLL 工作站。
其中一个项目是科罗拉多大学的机器人自主运输车,又名 RATmobile,如图 16 所示。RATmobile 是一辆无人地面车辆 (UGV),它通过感知环境中的静态和动态特征来自主导航。该车辆完全由来自多个工程学科的本科生和研究生小组在航空航天系成员的监督和指导下从头开始设计。车辆的设计和建造是真正的多学科的,需要机械、电气、航空航天和计算机科学的理论和专业知识。
该车辆使用安装在前面的微型摄像机来提供有关周围环境的视觉信息。静态和动态障碍物检测由一系列超声波传感器补充。感知的环境条件被组合成局部坐标系,然后转换为世界表示地图,其中包含机器人关于其环境的全部知识。根据手头的任务,机器人能够利用不同的导航算法来遍历到期望的目的地。
一种这样的导航模式允许车辆导航由大型场地上的白色油漆线划定的障碍物课程。这些线大约相隔 10 英尺,有直道、急弯和弯道,甚至出现一些缺失线,这需要导航算法根据历史信息预测期望的车辆方向。第二种导航模式利用差分 GPS 信息来精确评估机器人在世界参考系中的位置。在这种模式下,车辆预先了解其静态环境,并且可以在避开未映射或动态障碍物的同时导航到预定位置。路径长度或所需路径能量的优化等不同的导航策略很容易实现。
选择 Linux 作为该项目的操作系统是因为它满足所有设计要求,允许多人开发环境并且是免费的,这对于项目预算有限的学生来说是一个需要考虑的问题。Linux 提供的多线程软件控制架构的功能允许轻松实现不同的车辆功能。车辆的主要功能,即视觉图像采集;障碍物检测信息采集;将输入传感器数据组合成世界表示;以及确定速度和转向角等所需导航控制输出,都抽象为不同的线程。如有必要,可以更改与不同进程关联的 CPU 调度策略,从针对平均情况进行优化的默认调度程序更改为允许在标准 Linux 操作系统下提高实时性能。在需要毫秒级及以下保证调度的过程控制系统中,可以使用实时 Linux 变体,例如 RTLinux。

图 16. 机器人自主运输车 (RATmobile)
运行 Linux 或 RTLinux 的 ITLL 工作站也用于一门课程,该课程强调本科生和研究生的硬件/软件集成技能。强调集成真实硬件(例如电机和微控制器)的实验室练习需要使用 C 和 C++ 语言的高级编程结构。这使学生不仅对正确的软件编程实践充满信心和专业知识,而且对将控制硬件与标准 PC 相结合也充满信心和专业知识。本课程中学生最终项目(全部使用 Linux 或 RTLinux)的示例包括
使用图像处理来确定星场内方向的自旋稳定卫星的工作模型。
用于确定结构内机械振动模式的方向控制扫描激光器。
从无线电控制飞机传输实时加速度计数据,并具有随后的实时绘图功能。
构建流体腔室以模拟流体流经心脏不同腔室,并进行相关的实时数据收集以进行分析。
使用 Linux 操作系统和用户可配置的开发环境作为基础,我们能够向学生传授更广泛的知识,这些知识适用于现实世界的工程问题。这是一项真正的成就,其赞誉归功于众多为 Linux 的强大功能和成功做出贡献的内核和开发程序员。
Linux 还在我们的计算机科学系中充当强大的教学工具。Linux 操作系统和相关开发包的免费可用性为系统管理课程中更广泛的课程内容打开了大门。凭借免费的操作系统和廉价 PC 硬件的可用性,学生能够在大学计算机实验室中配置和管理他们自己系统的所有方面。如果出现严重错误,只需通过网络从主系统还原整个磁盘即可。这鼓励学生进行实验,而不会产生灾难性的后果。磁盘级文件恢复、设备安装和管理、用户和文件管理、内核配置和网络等主题都是使用免费 Linux 操作系统作为支持技术轻松构建练习的候选主题。
Linux 内核源代码树的开源发布使得操作系统理论课程不仅可以教授基础知识,更重要的是,还可以让学生实验内核代码的更改。因此,学生可以获得更丰富的练习集,这些练习可以直接应用于内核源代码,而不仅仅是纸上谈兵。最肯定的是,学生在实验时会破坏他们的系统,但系统恢复策略具有明确的教育价值——现在在一台运行 Linux 的廉价 PC 上进行比将来在某个价值数百万美元的平台上进行要好得多。拥有内核源代码允许对广泛主题进行深入练习,包括进程、资源、设备、文件和内存的管理,以及内核空间进程作为 Linux 模块的实现、调度策略和优先级以及基本同步方法。Linux 为我们的学生提供了更丰富、更真实的教育体验。
在设计和构建需要软件和硬件低级集成的复杂系统时,需要做出许多设计权衡和决策。始终评估的两个主要标准是:系统能否满足指定的性能要求,以及系统能否满足强制的预算约束?根据过去的经验,Linux 及其实时变体都达到或超过了典型的性能指标。开发环境功能强大且易于配置。操作系统服务充足,资源抽象遵循标准的、简单的、类 UNIX 的方法。商业部门内的公司从根本上关心的一个设计问题是技术支持。随着仅限 Linux 的技术支持公司的出现,以及越来越多的合格 Linux 程序员,与免费开源操作系统的众多优势相比,这个问题正在逐渐减少。预算约束不是问题。世界一流的内核黑客团队继续为尖端技术和硬件提供支持。今天的学生,也就是未来的程序员和系统管理员,正在接受培训,以驾驭 Linux 的赋能力量。

Kevin Gifford (gifford@rintintin.colorado.edu) 是 BioServe Space Technologies 的首席自动化和机器人工程师,也是科罗拉多大学航空航天系的教研人员,他在那里教授硬件/软件集成课程并指导高级设计项目。像许多热爱工作的 Linux 爱好者一样,他需要通过其他能带来成就感的活动来丰富他的生活,而不仅仅是提高技术能力。