针对当前复杂智能体系统设计耦合度高的问题,提出了一种在无人机导航系统中运用行为编程的方法,通过逐步构建无人机反应系统,实现无人机响应系统所期望的行为。该方法基于行为编程理论,将A-star算法与人工势场方法相结合,以减少系统间的耦合性,便于后续新功能的添加与维护。结果表明:本文提出的场景定义行为的方法,改变了传统无人机导航系统设计的现状。通过仿真实验和真实场景实验,对以行为编程为基础的无人机导航系统进行了验证,为其他智能系统在应用行为编程提供了实践基础。
无人机(Unmanned Aeial Vehicle, UAV)是一种无人驾驶的飞行器[1], 它的飞行由车辆中的计算机自主控制,或在地面中的飞行员的远程控制下进行。除了与无人机联系最为紧密的军事应用外,无人机还有很多其他应用,包括军事侦察、边境巡逻、天气探测、抢险救援、科学探测等。无人机是一个复杂的综合系统,它将自主规划、环境感知等诸多功能糅合在一起。这些功能都能归结为无人机的导航功能。随着无人机技术的不断发展,人们对无人机导航系统的研究越来越深入。传统的无人机导航系统通常采用惯性导航系统、全球定位系统和磁力计等技术进行定位和导航[2]。然而,在很多复杂的环境下,如城市峡谷、森林等密集区域,GPS 信号容易受到干扰,导致无人机定位精度下降,甚至失去定位。因此,研究一种能够适应各种环境并提高定位精度的无人机导航系统是非常必要的。
ROS (Robot Operating System) [3]是由伯克利加州大学、斯坦福大学等机构联合研发的一种开放源代码的机器人操作系统。ROS 提供了一系列工具和库,用于构建机器人应用程序,包括控制、感知、仿真、导航等方面。ROS 提供了许多用于导航的功能包,如gmapping、amcl、move_base 等,用户可以通过组合这些功能包来实现自己的导航系统,大大降低了导航系统的开发难度[4]。
自20 世纪以来, 越来越多的研究学者提出了软件危机的概念[5]。
软件危机的出现主要是由于软件开发需求不断增长,而软件开发技术的进步却难以跟上需求的增长速度。2008 年,David Harel 提出了“解放编程”的概念[6],他希望通过简单规范所需行为的方式,来开发复杂的软件系统。David Harel 认为, 软件的复杂性是因为需要交织许多同时发生的行为。研究人员希望使用类似于人类描述行为的方式来实现软件开发。David Harel 等人于2011 年提出了一种基于活动序列图(Live Sequence Chart, LSC)的Java 软件开发的通用方法[7]。该方法将程序划分为多个模块,每个模块独立描述各自的行为。作者在后来的研究中称其为行为编程[8]。行为编程是一种新的编程范式,它可以提高系统的可维护性、可测试性和可扩展性。通过行为建模、状态机设计和规则引擎等技术,可以实现对系统行为的精细化描述和控制。行为编程可以使智能体自主完成任务,提高其自主性和独立性[9]。
本文认为,将行为编程和ROS 机器人操作系统结合起来可以提高机器人的自主性,实现更灵活的机器人,加强机器人的安全性,并提高机器人的可维护性。行为编程可以使机器人在不需要人为干预的情况下自主完成任务,而ROS 提供了一系列的导航、控制、感知等功能包,可以为机器人提供自主决策和执行任务的能力。本文基于行为编程理论,设计并实现了一种基于ROS 的无人机导航系统。通过行为编