多机协同操作系统

简介: ROS(机器人操作系统)是一种开源的机器人软件平台,它提供了一系列工具和库,用于构建复杂的机器人应用程序。ROS支持分布式计算和协同工作,使得多台机器人可以协同完成任务。多机协同的目的是为了让每台设备都能和全体设备或者周边设备进行信息交互来实现相互感知相互控制的结果,通过算法收敛到一个最佳的轨迹,来实现协同工作从而可以提高运输效率和优化生产节拍,提高生产中的安全性和可靠性。在自动化工厂、仓储分拣、自动化货物超市等诸多场景,小车协同机械臂可以为物料的自动搬运、物品的上下料,以及物料的分拣提供自动化、柔性化的作业支持。

三、软、硬件描述
硬件描述:
该智能小车使用了32位微处理器STM32F407作为主控芯片,该芯片具有高速运算能力和较大的存储空间。与其他芯片相比具有更高的性能和更多的外设,并且还有更好的可拓展性。它提供了Cortex-M4内核(具有浮点单元)的性能,运行频率为168MHz 。其它硬件 组成包括:
麦克纳母轮[4]:麦克纳姆轮是一种全向轮,由轮毂和围绕轮毂的辊子组成,辊子的外廓线与轮子的理论圆周相重合,这样确保了轮子与地面接触的连续性,并且辊子能自由地旋转,辊子的轴线与轮子轴线通常成45°。麦克纳姆轮可以实现ROS小车在平面内做出任意方向平移同时自转的动作。
电机驱动模块:用于控制小车轮子的转动,从而控制小车行驶。
传感器模块:单线激光雷达是一种高同频脉冲激光测距仪,加上一个一维旋转扫描。它只有一路发射和一路接收,结构相对简单,使用方便;扫描速度高、角度分辨率高;体积、重量和功耗低;可靠性更高;成本低。用于获取小车周围环境信息,如距离。
通信模块:用于实现小车与远程控制设备之间的通信。
电源管理模块:它是所有电子产品和设备的电能供应中枢和纽带,负责所需电能的变换、分配、检测等管控功能,是电子产品和设备不可或缺的关键器件,用于管理小车的电源供应和电池状态。
软件描述:
该智能小车使用ROS作为软件平台,ROS(Robot Operating System)是一种用于构建机器人软件的开源框架,提供了一组通用工具和库,以简化机器人软件开发。在ROS中,机器人被视为由多个节点组成的分布式系统。每个节点都是一个进程,可以运行在不同的计算机上,通过ROS消息传递机制进行通信。节点之间通过话题(Topic)或服务(Service)进行通信。话题是一种发布/订阅模式,其中一个节点发布消息,而其他节点订阅该消息。服务是一种请求/响应模式,其中一个节点请求服务,而另一个节点提供服务并返回响应。ROS机协同的基本原理是将任务分解为多个子任务,并将每个子任务分配给不同的机器人。每个机器人都是一个ROS节点,可以独立地执行指定的任务。当所有机器人完成其子任务时,它们将合并其结果以完成整个任务。 该小车的软件功能包括:

底层控制模块:负责接收控制信号,控制电机驱动模块,从而实现小车的运动控制。
传感器数据采集模块:负责读取传感器模块获取的数据,并将其转换为可用的信息,如距离、光线等。ROS与STM32通信可以通过串口进行通信,主要有两种方式:一是将STM32作为一个节点,二是制作一个上位机节点,负责与STM32进行串口通信。第一种方式需要专门的硬件,所以我选择第二种方式。ROS与STM32通信需要使用到rosserial库,它提供了一种在嵌入式系统中使用ROS的方法,可以在STM32上运行ROS节点。
rosserial是一个ROS(机器人操作系统)的软件包,它可以让ROS与微控制器(如STM32)之间通过串口通信。通过使用rosserial,将STM32与ROS系统连接起来,实现双向通信,从而实现机器人的控制和数据传输。使用rosserial库需要在STM32上运行ROS节点,这个节点可以通过串口与ROS系统进行通信。在ROS系统中,我们可以使用rostopic、rosmsg、rosservice等工具来与STM32进行通信
高层决策模块:根据传感器数据进行决策,实现小车的智能行驶,如避障、路径规划等。
远程控制模块:实现小车与远程设备之间的通信,从而实现远程控制小车的运动和功能。

四、课题过程
建立机器人模型




























URDF集成Gazebo,添加激光雷达插件





0 0 0 0 0 0
true
5.5



360
1
-3
3



0.10
30.0
0.01


gaussian
0.0
0.01



/scan
laser




2.png

导航实现
存在五点关键技术
1.全局地图 SLAM(simultaneous localization and mapping),也称为CML (Concurrent Mapping and Localization), 即时定位与地图构建,或并发建图与定位。SLAM问题可以描述为: 机器人在未知环境中从一个未知位置开始移动,在移动过程中根据位置估计和地图进行自身定位,同时在自身定位的基础上建造增量式地图,以绘制出外部环境的完全地图







































2.png

2.自身定位 导航伊始和导航过程中,机器人都需要确定当前自身的位置,如果在室外,那么 GPS 是一个不错的选择,而如果室内、隧道、地下或一些特殊的屏蔽 GPS 信号的区域,由于 GPS 信号弱化甚至完全不可用,那么就必须另辟蹊径了,比如前面的 SLAM 就可以实现自身定位,除此之外,ROS 中还提供了一个用于定位的功能包: amcl(adaptiveMonteCarloLocalization)自适应的蒙特卡洛定位,是用于2D移动机器人的概率定位系统。它实现了自适应(或KLD采样)蒙特卡洛定位方法,该方法使用粒子过滤器根据已知地图跟踪机器人的姿态。
3.路径规划
• 全局路径规划(gloable_planner) 根据给定的目标点和全局地图实现总体的路径规划,使用 Dijkstra 或 A※算法进行全局路径规划,计算最优路线,作为全局路线
• 本地时时规划(local_planner) 在实际导航过程中,机器人可能无法按照给定的全局最优路线运行,比如:机器人在运行中,可能会随时出现一定的障碍物... 本地规划的作用就是使用一定算法(Dynamic Window Approaches) 来实现障碍物的规避,并选取当前最优路径以尽量符合全局最优路径
4.运动控制 导航功能包集假定它可以通过话题"cmd_vel"发布ometry_msgs/Twist类型的消息,这个消息基于机器人的基座坐标系,它传递的是运动命令。这意味着必须有一个节点订阅"cmd_vel"话题, 将该话题上的速度命令转换为电机命令并发送。
5.环境感知 采用激光雷达感知周围环境信息,编码器感知电机的转速信息,进而可以获取速度信息并生成里程计信息.在导航功能包集中,环境感知也很重要,为其他模块提供了支持,例如SLAM,amcl,move_base都依赖于环境感知.

• 多机编队算法 编队控制算法是指控制多个机器人组成特定的某种队形来执行任务的算法,协作是指多个机器人之间利用某种约束关系合作来完成一项任务,以多机器人编队问题为例,协作就是指多个机器人共同组成期望的队形,其本质为各机器人的位置之间满足某种数学关系。编队方法主要分为集中式队控制与分布式编队控制两种,集中式编队控制方法中主要有虚拟结构法、图论法和模型预测控制分布式编队方法主要有跟随领航者法、 基于行为法和虚拟结构法。
• 避障算法 先利用编队算法求出 Slave 跟随者的线速度与角速度,然后根据避障需求,对其进行增减变化,从而达到避障要求。当 Slave 跟随者与障碍物距离越近,障碍物对 Slave 跟随者斥力越大,线速度与角速度增减量变化的越大。当障碍物越靠近 Slave 跟随者的前方时,障碍物对Slave 跟随者斥力越大(正前方斥力最大,正侧方斥力最小),线速度与角速度增减量变化的越大。通过改进人工势场法,优化改进了人工势场法对于障碍物在机器人正前方,机器人会停止不动的缺点,从而更好了达到避障的目的。
• ROS 多机通信设置 多机通信是完成多机器人编队的关键步骤,对于多个机器人之间成员的相对位姿未知的情况下,机器人之间需要通过通信分享彼此的信息,方便建立联系。ROS 分布式架构和网络通信很强大,它不仅仅在进程间通信方便,就连不同设备间通信也很方便,通过网络通信,所有的节点都可以运行在任意一台电脑上。在主机端完成处理数据等主要工作,从机们负责接收各种传感器采集的环境数据,这里的主机就是 ROS 中要运行 Master 节点的管理器,目前的多机通信框架是通过一个节点管理器和参数管理器来处理多个机器人之间的通信交流。
o 将 ROS 主控处于同一个网络 由主机的主控发射 wifi 提供网络。在主控中运行 Master 节点的管理器。由其中一台车作为主机发出 wifi,其他车或者虚拟机作为从机连接到这个 wifi。也可以是由第三方路由器提供网络作为信息中转,所有车辆连接同一路由器。该路由器不联网也可以使用。选择其中一辆车作为主机,在主机中运行 Master节点的管理器。
o 设置主从机的环境变量 ROS 主控都处于同一个网络之后,设置多机通信的环境变量。环境变量的设置在主目录下的.bashrc 文件,运行 gedit ~/.bashrc 命令打开,这里要注意多机通信中主机和从机的.bashrc 文件都需要设置,需要更改的是文件中末尾的两行 ip 地址,分别是 ROS_MASTER_URI 和ROS_HOSTNAME,ROS 主机的 ROS_MASTER_URI 和 ROS_HOSTNAME 都是它本地的 ip地址;而 ROS 从机.bashrc 文件中 ROS_MASTER_URI 需要改为主机的 ip 地址,ROS_HOSTNAME 是本地的 ip 地址。设置方式如下.
export ROS_MASTER_URI=http://192.168.1.150:11311
export ROS_HOSTNAME=192.168.1.151

五、结果及分析
在Gazebo运行的仿真环境中执行导航launch文件,在rviz中通过2D Nav Goal设置目标点,机器人开始自主移动并建图了,并且实现了相互间的通信。
在试验中发现的问题,以及解决方法

  1. 执行程序前一定要先完成时间同步的操作。
  2. 在控制多机编队的主车时,角速度不宜过快。建议线速度 0.2m/s,角速度 0.3rad/s 以下。主车在做转弯动作时,距离主车越远的车需要的线速度越大,因为功能包中对线速度和角速度的限制,从车达不到需要的速度时,编队队形变乱。其次,过大的线速度容易损坏小车。
  3. 在从车数量为多个时,因 ROS 主机的板载 wifi 性能有限,带宽不足容易引起多机通信高延迟和掉线的问题,使用路由器可以很好地解决这个问题。

3.png

相关文章
|
2月前
|
Java Linux 编译器
Alibaba Cloud Linux 解锁云算力-软硬协同构建云上最佳操作系统体验
为什么需要做软硬件协同?在后摩尔时代,整个算力的提升逐渐放缓,那怎么提升计算机性能?
|
10月前
|
Anolis
欢迎申报 | 龙蜥开源操作系统参加教育部产学合作协同育人项目
欢迎各位老师申报“联系开源操作系统 Anolis OS”项目。
|
12月前
|
敏捷开发 测试技术 Linux
带你读《2022龙蜥社区全景白皮书》——5.2.2 面向芯片研发和验证的操作系统SiliconFastOS
带你读《2022龙蜥社区全景白皮书》——5.2.2 面向芯片研发和验证的操作系统SiliconFastOS
132 0
燕山大学操作系统课设:多道程序缓冲区协同操作
燕山大学操作系统课设:多道程序缓冲区协同操作
191 0
燕山大学操作系统课设:多道程序缓冲区协同操作
|
机器学习/深度学习 人工智能 算法
全球首款人机协同操作系统亮相乌镇,云从科技入选「世界互联网领先科技成果」
全球首款!云从人机协同操作系统惊艳亮相世界互联网大会 AI 三浪潮是时代使然,人机协同是技术必然 落地真实场景,CWOS让城市更智慧 打造人机协同开放平台,云从用AI助力产业升级
379 0
全球首款人机协同操作系统亮相乌镇,云从科技入选「世界互联网领先科技成果」
|
21天前
|
监控 Unix Linux
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
32 0
|
22天前
|
Linux 编译器 开发者
Linux设备树解析:桥接硬件与操作系统的关键架构
在探索Linux的庞大和复杂世界时🌌,我们经常会遇到许多关键概念和工具🛠️,它们使得Linux成为了一个强大和灵活的操作系统💪。其中,"设备树"(Device Tree)是一个不可或缺的部分🌲,尤其是在嵌入式系统🖥️和多平台硬件支持方面🔌。让我们深入了解Linux设备树是什么,它的起源,以及为什么Linux需要它🌳。
Linux设备树解析:桥接硬件与操作系统的关键架构
|
2月前
|
Linux 数据安全/隐私保护 虚拟化
Linux技术基础(1)——操作系统的安装
本文是龙蜥操作系统(Anolis OS) 8.4 的安装指南,用户可以从[龙蜥社区下载页面](https://openanolis.cn/download)获取ISO镜像。安装方法包括物理机的光驱和USB闪存方式,以及虚拟机中的VMware Workstation Pro设置。安装过程涉及选择语言、配置安装目标、选择软件集合和内核,设置Root密码及创建新用户。安装完成后,可通过文本模式或图形化界面验证系统版本,如Anolis OS 8.4,标志着安装成功。
|
2月前
|
存储 缓存 算法
Linux--系统结构与操作系统
Linux--系统结构与操作系统

热门文章

最新文章