1、机器人操作系统(ROS)开源资料
URL:http://www.ros.org/
简介:
ROS起源于2007年斯坦福大学人工智能实验室的项目与机器人技术公司Willow Garage的个人机器人项目(Personal Robots Program)之间的合作,2008年之后由Willow Garage来进行推动。ROS是一个开源的元级操作系统(meta-operating system),它提供类似操作系统的功能,包含硬件抽象描述、底层驱动程序管理、程序间的消息传递、程序代码包管理,也提供一些开发工具和库,用于获取、编译、编辑代码以及在多个计算机之间运行程序完成分布式计算。
ROS节点之间是一种P2P的、松耦合的网络连接架构,并且提供了多种通信机制,包括基于Service的同步通信机制、基于Topic的异步通信机制,参数服务器等,但是ROS本身并没有实时性。ROS的主要特点包括:
(1) 点对点设计
ROS中的多个节点存在于多个不同的主机,并且在运行过程中通过端对端的拓扑结构进行通信,节点之间相互独立;
(2)多语言支持
ROS目前支持多种不同的语言,包括C++、Python、Java等;
(3)精简与集成
ROS建立的系统具有模块化的特点,各模块的代码可以单独编译,编译使用的CMake工具,使它很容易实现精简的理念。同时,ROS也利用了很多现在已经存在的开源项目的代码,将它们集成到ROS生态中去;
(4)工具包丰富
ROS中提供了丰富的开发工具包,包括代码组织、参数配置、自动生成文档、开发调试、可视化等等,这些工具包方便了用户的开发;
(5)开源
ROS遵循BSD开源协议,任何机构和个人都可以免费使用ROS。
参考资料:
[1] 机器人操作系统(ROS)浅析,肖军浩译
[2] http://wiki.ros.org
[3] http://blog.csdn.net/hcx25909/article/details/8795043
2、群体机器人的通用软件开发框架(GSDF)开源资料
URL: http://wiki.ros.org/micros_swarm_framework
简介:
GSDF是一个开源的面向群体机器人的通用软件开发框架,提供群体机器人软件开发所需的一些基础支撑,包括群体共识机制、群体编程原语与开发接口、通用算法库等。它采用完全去中心化的分布式架构设计:在每个机器人个体上是一个独立的ROS网络,机器人个体之间则通过邻域通信进行局部交互(目前已经适配UDP广播、Opensplice DDS)。GSDF框架主要具有以下特点:
(1)不存在中心节点,因此具有更好的鲁棒性和可扩展性,适用于群体机器人系统;
(2)与ROS兼容,能够复用ROS生态中已有的代码包;
(3)设计实现了buzz语言中提出的面向群体的编程原语,包括邻居操作、群体管理、数据共享等,方便用户定义群体行为;
(4)采用基于插件的应用开发方法,提高开发效率、提升程序性能。
参考资料:
[1] https://github.com/xuefengchang/micros_swarm_framework
[1] http://the.swarming.buzz/
[2] Pinciroli C, Beltrame G. Buzz: An extensible programming language for heterogeneous swarm robotics[C]//Intelligent Robots and Systems (IROS), 2016 IEEE/RSJ International Conference on. IEEE, 2016: 3794-3800.
3、无人机集群分布式编队飞行上位机系统
URL: https://github.com/SysuUavFormation/UAV_Formation_Ground_Station
简介:
“集群无人机分布式编队飞行上位机系统”开源项目的目的是实现室外场景中集群无人机基于GPS的分布式编队飞行,项目工作包括:分布式自主协同编队、集群内无人机之间的避碰、实时路径规划、无人机与地面站及无人机之间的实时信息传输。
该项目构建了集群无人机编队飞行的基础平台,实现了集群的三维队形生成与队形切换、合作式避碰、编队保持、通信协议以及上位机系统。内嵌离线谷歌地图的上位机使用Qt开发,可实时监控各无人机的状态,并能随时接管无人机的控制;同时,上位机系统包括三维队形生成与队形切换、目标点匹配、手动设置目标点以及通信协议的功能模块。
考虑到QT的跨平台性,开源上位机系统可以给集群无人机自主编队飞行的开发者减少前期环境搭建的时间开销,更好地进行集群无人机分布式编队飞行方面的开发,对于不同的开发者们,项目方允许提供通信协议的接口,可以改进其现有的通信协议,或者采用开发者自己的通信协议,维护该上位机工程的多态性和可扩展性。
4、机器人控制软件开源项目(Orocos)
URL:http://www.orocos.org/
简介:
Orocos(Open Robot Control Software)开源项目的目的是要开发一种通用的,免费的模块化架构,用于机器人控制,主要包括:运动学与动力学库,贝叶斯过滤库及 Orocos工具链。
(1) 运动学和动力学库(KDL)[1]为运动链的建模和计算开发了独立于应用程序的框架,如机器人、生物力学模型、计算机动画人物、机床等。它为几何对象(点,框架,...),不同系列(串行,人形,平行,移动...)的运动链,以及它们的运动规律和插值提供了类库。
(2) 贝叶斯过滤库(BFL)[2]为动态贝叶斯网络中的推理提供了一个应用无关的框架,即基于贝叶斯规则的递归信息处理和估计算法, 例如(扩展)卡尔曼滤波器,粒子滤波器(或顺序蒙特卡罗方法)等。这些算法可以在实时服务之上运行,或者用于运动学和动力学应用中的估计。
(3) Orocos工具链[3]是使用模块化,运行时可配置软件组件创建实时机器人应用程序的主要工具。它提供:
多平台支持:Linux,Windows(Visual Studio)和Mac OS-X
其他机器人框架的扩展:ROS,Rock,Yarp
代码生成器,以在分布式组件之间传输用户定义的数据
运行时、实时可配置和脚本化组件
记录和报告系统事件和通信数据。
它包括:
AutoProj,一个工具来下载和编译必要的库(可选)
Real-Time Toolkit,一个组件框架,允许用C ++编写实时组件
Orocos组件库,用于启动应用程序并在运行时与其交互的必要组件
OroGen和TypeGen,这些工具可以从现有的头文件或组件描述文件中生成可立即编译并运行的代码
由Orocos用户构建的组件托管在他们自己的仓库中。Orocos还提供了几何关系语义[4]、使用约束的即时任务规范(iTaSC)[5]等。
参考资料:
[1] http://www.orocos.org/kdl
[2] http://www.orocos.org/bfl
[3] http://www.orocos.org/toolchain
[4] http://www.orocos.org/wiki/geometric-relations-semantics-wiki
[5] http://www.orocos.org/wiki/orocos/itasc-wiki