基于 ROS 平台的移动机器人的设计与运动仿真

合集下载

《2024年基于ROS的小场景移动机器人设计与实现》范文

《2024年基于ROS的小场景移动机器人设计与实现》范文

《基于ROS的小场景移动机器人设计与实现》篇一一、引言近年来,随着科技的不断发展,机器人技术已经广泛应用于各个领域。

其中,移动机器人作为机器人技术的重要组成部分,其应用场景也日益丰富。

本文旨在介绍一种基于ROS(Robot Operating System)的小场景移动机器人的设计与实现。

该机器人具有定位准确、运动灵活、操作便捷等优点,可广泛应用于室内环境下的物流配送、清洁维护、安全巡检等场景。

二、系统概述本小场景移动机器人系统主要由机械结构、控制系统、传感器系统和通信系统四部分组成。

其中,机械结构采用差速驱动的轮式结构,具有较高的运动灵活性和稳定性;控制系统以ROS为开发平台,采用C++编程语言进行开发;传感器系统包括激光雷达、超声波传感器、摄像头等,用于实现机器人的环境感知和定位功能;通信系统则采用WiFi或蓝牙等技术,实现与上位机的数据传输和指令传输。

三、机械结构设计机械结构是移动机器人的基础,直接影响到机器人的运动性能和稳定性。

本设计采用差速驱动的轮式结构,由两个电机分别控制左右轮的转速,通过调整左右轮的转速差来实现机器人的前进、后退、转向等动作。

此外,还配备了可调节高度的万向轮,以适应不同高度的地面环境。

四、控制系统设计控制系统是移动机器人的大脑,负责实现机器人的各种功能。

本设计采用ROS作为开发平台,通过C++编程语言进行开发。

在ROS中,我们建立了机器人的模型,并为其定义了相应的节点和话题。

通过发布和订阅话题,实现了上位机对机器人的远程控制。

此外,还通过ROS提供的各种算法库,实现了机器人的路径规划、避障等功能。

五、传感器系统设计传感器系统是移动机器人实现环境感知和定位的关键。

本设计采用了激光雷达、超声波传感器和摄像头等多种传感器。

激光雷达用于获取机器人周围的环境信息,实现机器人的避障和路径规划;超声波传感器用于检测机器人与障碍物之间的距离,为避障提供依据;摄像头则用于获取机器人所处环境的图像信息,为上位机提供更加丰富的环境感知数据。

《基于ROS的机器人移动平台的设计与实现》范文

《基于ROS的机器人移动平台的设计与实现》范文

《基于ROS的机器人移动平台的设计与实现》篇一一、引言随着科技的不断发展,机器人技术已经广泛应用于各个领域。

其中,基于ROS(Robot Operating System)的机器人移动平台设计是实现机器人自主化、智能化的重要手段。

本文将介绍基于ROS的机器人移动平台的设计与实现,包括系统架构、硬件设计、软件设计、实验结果及结论等方面。

二、系统架构基于ROS的机器人移动平台采用模块化设计,主要包括运动控制模块、传感器模块、通信模块等。

运动控制模块负责机器人的运动控制,传感器模块包括距离传感器、激光雷达等,用于感知周围环境,通信模块负责机器人与上位机之间的通信。

整个系统采用分层设计,上层为应用层,负责任务规划、决策等;下层为运动控制层,负责机器人的运动控制。

三、硬件设计硬件设计是机器人移动平台实现自主运动的关键。

本系统采用的硬件主要包括电机、轮子、编码器、距离传感器、激光雷达等。

电机和轮子组成机器人的运动执行机构,编码器用于测量轮子的转速和距离,距离传感器和激光雷达用于感知周围环境。

此外,还需要设计电源模块,为机器人提供稳定的电源。

四、软件设计软件设计是实现机器人移动平台自主运动的核心。

本系统采用ROS作为开发平台,利用其强大的功能模块,实现机器人的运动控制、环境感知、任务规划等。

具体来说,软件设计包括以下几个方面:1. 运动控制:采用ROS的PID控制器实现机器人的运动控制,通过设置目标速度和实际速度的差值,计算控制量,实现对机器人的精确控制。

2. 环境感知:利用距离传感器和激光雷达等传感器,实现对周围环境的感知。

通过ROS的消息传递机制,将传感器数据传输到上位机,进行数据处理和分析。

3. 任务规划:根据任务需求,制定合理的路径规划和决策策略。

利用ROS的路径规划算法库,实现机器人的路径规划和决策。

五、实验结果为了验证基于ROS的机器人移动平台的设计与实现效果,我们进行了多组实验。

实验结果表明,本系统具有良好的自主运动能力,能够根据环境变化进行实时调整,实现精确的运动控制。

基于ROS的自主移动机器人控制系统设计

基于ROS的自主移动机器人控制系统设计

基于ROS的自主移动机器人控制系统设计自主移动机器人是近年来兴起的一种新型机器人,它能够在无人监管的情况下完成一定的任务。

集成控制系统是自主移动机器人的重要组成部分,它可以实现机器人的定位、导航、避障等基本功能。

本文将介绍一个基于ROS(Robot Operating System)的自主移动机器人控制系统设计。

1. ROS简介ROS是一个开源机器人操作系统,它为机器人开发者提供了一套标准化的工具和库,使得机器人软件开发变得更加简单和高效。

ROS是以C++和Python为主要语言开发的,它提供了许多机器人领域常用的功能模块,包括运动规划、感知、控制等。

2. 控制系统的硬件架构自主移动机器人控制系统的硬件架构主要包括机器人本体、传感器、计算机等部分。

机器人本体主要由底盘、电机、轮子等组成,传感器则包括激光雷达、视觉传感器、惯性导航系统等。

计算机可以是嵌入式电脑或者笔记本电脑等。

3. 控制系统的软件设计在ROS中,机器人的控制系统被称为“ROS节点”。

我们需要为机器人的各个模块(底盘、激光雷达、摄像头等)分别创建ROS节点,并在节点之间建立通信机制。

例如,我们可以为底盘设计一个控制节点,为激光雷达设计一个数据处理节点,为摄像头设计一个图像处理节点等。

4. 控制系统的软件框架控制系统的软件框架是ROS节点的整体设计方案,它主要包括节点的定义、通信机制设计、运动规划、障碍物避障等。

在本文中,我们以一个四轮差速机器人为例,介绍自主移动机器人控制系统的软件框架。

(1) 定义节点我们需要为机器人的各个功能模块定义ROS节点,例如底盘控制节点、激光雷达节点、摄像头节点等。

在定义节点时,需要指定节点的名称、输入输出消息类型等。

(2) 通信机制设计在各个节点之间建立通信机制,可以使用ROS的消息机制实现。

节点之间可以发布(Publish)和订阅(Subscribe)消息,实现数据的传输与共享。

(3) 运动规划运动规划是机器人控制系统的重要组成部分,它可以实现自主导航和路径规划。

《基于ROS的智能工业机器人系统的设计与实现》

《基于ROS的智能工业机器人系统的设计与实现》

《基于ROS的智能工业机器人系统的设计与实现》一、引言随着科技的进步和工业自动化的快速发展,智能工业机器人系统在制造业中扮演着越来越重要的角色。

而机器人操作系统(ROS)作为一种开源的、灵活的机器人开发平台,为智能工业机器人系统的设计与实现提供了强大的支持。

本文将详细介绍基于ROS的智能工业机器人系统的设计与实现过程。

二、系统设计1. 需求分析在系统设计阶段,首先进行需求分析。

明确智能工业机器人系统的任务目标,包括物品搬运、加工、检测等。

同时,还需考虑系统的实时性、稳定性、灵活性以及扩展性等要求。

2. 系统架构设计基于需求分析,设计智能工业机器人系统的整体架构。

系统采用分层设计,包括感知层、决策层、执行层。

感知层负责获取环境信息,决策层进行数据处理和决策规划,执行层负责机器人的动作执行。

此外,系统还采用ROS作为开发平台,利用其强大的社区支持和丰富的开发资源。

3. 硬件设计根据系统需求和架构设计,选择合适的硬件设备,包括机器人本体、传感器、执行器等。

同时,考虑硬件的兼容性、稳定性以及成本等因素。

4. 软件设计在软件设计方面,利用ROS平台进行开发。

首先,设计机器人系统的通信机制,确保各部分之间的信息传递畅通。

其次,设计机器人系统的算法和模型,包括感知算法、决策算法、执行算法等。

最后,进行系统集成和调试,确保系统的稳定性和可靠性。

三、系统实现1. 感知层实现感知层主要通过传感器获取环境信息,包括视觉传感器、激光雷达等。

利用ROS提供的传感器驱动程序,实现对传感器的控制和数据的获取。

同时,利用图像处理、物体识别等技术,对获取的数据进行处理和分析。

2. 决策层实现决策层主要负责数据处理和决策规划。

利用ROS提供的各种算法库和工具,实现对数据的处理和分析。

同时,结合机器学习、深度学习等技术,实现决策规划功能。

在决策过程中,还需考虑机器人的运动学模型、动力学模型等因素。

3. 执行层实现执行层主要负责机器人的动作执行。

《2024年基于ROS的机器人移动平台的设计与实现》范文

《2024年基于ROS的机器人移动平台的设计与实现》范文

《基于ROS的机器人移动平台的设计与实现》篇一一、引言随着科技的不断进步,机器人技术已经成为现代工业、服务业以及家庭生活的重要支撑。

机器人移动平台作为机器人技术的重要组成部分,其设计与实现对于提高机器人的自主性、灵活性和效率具有重要价值。

本文将详细介绍基于ROS(Robot Operating System)的机器人移动平台的设计与实现过程。

二、设计概述基于ROS的机器人移动平台设计主要包含硬件设计、软件设计和系统集成三个部分。

硬件设计包括电机、轮子、传感器等设备的选择与配置;软件设计主要涉及ROS系统的搭建、算法的实现以及控制策略的设定;系统集成则是将硬件与软件进行整合,实现机器人的整体功能。

三、硬件设计1. 电机与轮子:根据机器人的应用场景和负载要求,选择合适的电机与轮子。

电机应具备高转矩、低噪音、低能耗等特点,轮子则需具备较好的抓地力和耐磨性。

2. 传感器:传感器是机器人移动平台的重要组成部分,包括里程计、编码器、陀螺仪、摄像头等。

这些传感器能够提供机器人的位置、速度、姿态等信息,为机器人的自主导航和路径规划提供支持。

四、软件设计1. ROS系统搭建:ROS是一种为机器人提供软件框架和工具的开源系统,能够方便地实现机器人软件的模块化、可扩展性和可重用性。

在机器人移动平台的软件设计中,首先需要搭建ROS 系统,包括安装ROS包、配置环境等。

2. 算法实现:算法是实现机器人移动平台功能的关键,包括运动控制算法、路径规划算法、导航算法等。

这些算法需要基于ROS系统进行实现,并与其他模块进行通信和协同。

3. 控制策略设定:控制策略是机器人移动平台的“大脑”,负责根据传感器信息、环境信息和任务需求,制定机器人的运动策略。

控制策略应具备实时性、稳定性和智能性等特点。

五、系统集成系统集成是将硬件与软件进行整合的过程,包括硬件设备的连接、软件模块的配置和调试等。

在机器人移动平台的系统集成中,需要确保各个硬件设备能够正常工作,各个软件模块能够协同工作,以实现机器人的整体功能。

《基于ROS的机器人移动平台的设计与实现》范文

《基于ROS的机器人移动平台的设计与实现》范文

《基于ROS的机器人移动平台的设计与实现》篇一一、引言随着科技的不断发展,机器人技术已经逐渐渗透到各个领域。

在机器人技术中,移动平台是重要的组成部分。

基于ROS (Robot Operating System)的机器人移动平台的设计与实现,可以实现机器人移动的高效、灵活和稳定。

本文将详细介绍基于ROS的机器人移动平台的设计与实现过程。

二、设计背景与目标本设计的目标是基于ROS平台,设计并实现一个功能全面、稳定可靠的机器人移动平台。

该平台能够实现对环境的自主探索、导航、避障等功能,提高机器人在复杂环境中的适应性和自主性。

同时,通过ROS平台的开源性和可扩展性,使得该移动平台具有广泛的适用性和可定制性。

三、系统架构设计1. 硬件架构设计机器人移动平台的硬件架构主要包括底盘、电机、轮子、传感器等部分。

底盘采用轻量化设计,以适应各种复杂环境。

电机和轮子负责机器人的运动,传感器则用于获取环境信息。

此外,还包括电源、控制器等部分,为机器人提供稳定的电力供应和控制系统。

2. 软件架构设计软件架构基于ROS平台进行设计,包括机器人操作系统、通信模块、控制模块、导航模块等部分。

其中,机器人操作系统负责整个系统的运行和管理;通信模块负责机器人与上位机之间的数据传输;控制模块负责接收上位机的指令,控制机器人的运动;导航模块则负责机器人的路径规划和避障功能。

四、功能实现1. 运动控制实现运动控制是机器人移动平台的核心功能之一。

通过电机控制器和ROS中的相关节点,实现机器人的前进、后退、左转、右转等基本运动。

同时,通过ROS的参数调节功能,可以实现机器人的速度和加速度的调整,以满足不同环境下的需求。

2. 导航与避障实现导航与避障是机器人移动平台的重要功能。

通过激光雷达、摄像头等传感器,获取机器人周围的环境信息。

结合ROS中的导航算法,实现机器人的路径规划和避障功能。

在遇到障碍物时,机器人能够自动调整运动轨迹,避免与障碍物发生碰撞。

基于ROS的室内自主移动机器人系统设计与实现

基于ROS的室内自主移动机器人系统设计与实现

基于ROS的室内自主移动机器人系统设计与实现基于ROS的室内自主移动机器人系统设计与实现随着人工智能和机器人技术的不断发展,室内自主移动机器人逐渐成为人们关注的焦点。

它可以广泛应用于室内环境中,如酒店、医院、仓库等,帮助人们完成各种日常任务。

而为了实现机器人的自主移动和感知环境的能力,在设计和实现室内自主移动机器人系统时,使用ROS(机器人操作系统)是一种常见的选择。

ROS是一个灵活、通用且开放源代码的机器人操作系统,它提供了一系列库和工具,以帮助开发者快速构建机器人应用程序。

以ROS为基础,我们可以实现机器人的感知、决策和控制,使其能够在室内环境中自主移动。

在设计和实现基于ROS的室内自主移动机器人系统时,首先需要考虑机器人的定位和导航能力。

为了实现机器人的定位功能,可以使用激光雷达等传感器进行环境地图的构建和定位信息的更新。

同时,利用ROS提供的导航功能包,可以基于这些定位信息实现机器人的路径规划和导航功能,使机器人能够快速、准确地移动到指定的位置。

其次,在室内环境中,机器人需要具备感知能力,以便能够识别和避开障碍物。

通过使用ROS中的图像处理功能包,可以实现机器人对环境中物体的识别和跟踪。

结合深度学习算法,机器人还可以学习和识别更复杂的场景,提高其感知环境的能力。

此外,为了使机器人能够进行有效的交互,我们可以使用ROS提供的语音处理功能包。

可以利用语音识别和语音合成技术,实现机器人对人类语音指令的理解和响应,从而提升人机交互的体验。

另外,为了确保机器人的安全,我们可以通过ROS提供的运动控制和碰撞检测功能,实现机器人在移动过程中对障碍物的检测和避让。

同时,利用传感器数据和ROS的控制功能,我们可以对机器人的速度和轨迹进行实时调节,以确保其在复杂的室内环境中安全移动。

此外,基于ROS的室内自主移动机器人系统还可以扩展其他功能,如环境监测、智能巡检等。

通过与外部设备的连接,机器人可以收集环境参数、检测异常情况,并及时向操作员报警,以提高室内安全性和工作效率。

基于ROS平台的移动机器人的设计与运动仿真

基于ROS平台的移动机器人的设计与运动仿真

基于ROS平台的移动机器人的设计与运动仿真一、引言移动机器人是指能够在自由空间中进行导航和执行任务的机器人。

在工业生产、服务业、军事等领域中,移动机器人具有广泛的应用前景。

为了保证移动机器人的高效运动与精确控制,设计与仿真是非常重要的一步。

本文将介绍基于ROS平台的移动机器人的设计与运动仿真。

二、ROS(Robot Operating System)平台ROS是一个开源的机器人操作系统,提供了一系列工具和库,用于构建机器人应用的软件开发平台。

ROS提供了一种分布式软件架构,便于多个节点之间的通信和协作,对于机器人的控制、导航、感知和规划等方面都提供了相应的功能包。

三、移动机器人的设计1.机械结构设计:移动机器人的机械结构设计是实现机器人运动和执行任务的基础。

设计时需要考虑机器人的稳定性、载重能力、摩擦力等因素,选择适合的传动机构和关节结构。

2.传感器选择与布局:移动机器人需要通过各种传感器获取环境信息,包括但不限于激光雷达、摄像头、惯性测量单元等。

选择合适的传感器类型和数量,并合理布局在机器人上,可以提高机器人的感知能力和避障能力。

3.控制系统设计:移动机器人的控制系统设计包括硬件和软件两个方面。

硬件方面主要是选择合适的控制器和执行器,并设计相关电路和接口。

软件方面主要是根据机器人的运动需求编写控制算法,实现底层控制和导航功能。

四、移动机器人的运动仿真1.建立仿真模型:根据实际的机械结构和传感器布局,在ROS平台上建立移动机器人的仿真模型。

使用ROS提供的机器人建模工具,可以快速构建机器人的模型,并添加适当的传感器。

2.运动控制算法仿真:根据机器人的控制系统设计,编写运动控制算法,并在仿真环境中进行验证和测试。

通过与仿真模型进行交互,可以观察机器人的运动轨迹、姿态变化等,并对控制算法进行优化。

3.环境感知与避障仿真:通过在仿真环境中添加障碍物和环境信息,对机器人的环境感知和避障能力进行仿真测试。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于ROS 平台的移动机器人的设计与运动仿真摘要:ROS 究竟是如何工作的呢?ROS 中每一套算法是独立的一个包,包与包之间的数据交换主要采用TCP/IP 协议(对用户隐藏,用户需要发布或订阅主题以提供或取得数据),采用这种形式是由于ROS 的算法包是由全世界不同的个人,学校或实验室贡献的,这样做可以降低耦合性,如果一个node 崩溃不会影响到其他。

基于ROS 这个平台,有助于提高开发设计的效率及降低成本。

本论文主要阐述了基于ROS 平台移动机器人设计的基本原理和方法,并对移动机器人进行了运动仿真,得到其运动轨迹和控制方法,为后续项目的进一步研究打下了一定的基础。

0引言ROS 被称为机器人操作系统,其实ROS 充当的是通信中间件的角色,即在已有操作系统的基础上搭建了一整套针对机器人系统的实现框架。

ROS 还提供一组实用工具和软件库,用于维护、构建、编写和执行可用于多个计算平台的软件代码。

值得一提的是,ROS 的设计者考虑到各开发者使用的开发语言不同,因此ROS 的开发语言独立,支持C++,Python 等多种开发语言。

因此,除了官方提供的功能包之外,ROS 还聚合了全世界开发者实现的大量开源功能包,如思岚科技(SLAMTEC)就发布了针对其自主研发的激光雷达RPLIDAR 的ROS 功能包rplidar_ros。

这些开源功能包与ROS 一起构成了强大的开源生态环境。

ROS 的系统结构设计也颇有特色,ROS 运行时是由多个松耦合的进程组成,每个进程ROS 称之为节点(Node),所有节点可以运行在一个处理器上,也可以分布式运行在多个处理器上。

在实际使用时,这种松耦合的结构设计可以让开发者根据机器人所需功能灵活添加各个功能模块。

1理论分析1.1控制电机转动电机的控制我们分为两部分,一部分为电机转动方向的控制,另一个为电机转速的控制。

电机转动的方向我们用两个MCU 引脚来控制,假如PIN_A=1,PIN_B=0 时,电机正转;PIN_A=0,PIN_B=1 时,电机反转;PIN_A=0,PIN_B=0 时,电机停止。

电机速度的控制则需要一个PWM 输出引脚,我们通过控制输出不同的PWM 值来控制电机转动的速度。

1.2PID 控制如果我们想控制小车以一米每秒的速度做直线运动,但由于地面的阻力的影响,会造成左右轮速度与我们想控制的速度不同,所以不会沿直线运动,这时我们就需要加入PID 控制,PID 控制的思想就是我实时的把轮子真正的速度采集回来和控制的速度对比,差则补,多则减。

这样基本就可以实现理想控制。

针对该小车的PID 算法如附录A 所示。

1.3小车转弯控制图1 小车转弯控制计算分析一般我们要是想控制小车以多少的速度前进或者后退,我们只需要PID 控制两个轮子的速度一致就可以基本做到。

但如果要想控制小车以多少的角速度转弯,我们需要做一定的计算,如图1 所示。

1.4参数测量与计算编码器用于计算轮子的移动距离。

有两个问题需要解决:(1)高精度编码器太敏感,稍微抖动,会产生大量的不准确的值;(2)计数器的溢出。

可以根据实际小车的尺寸算出所需数据。

小车的各项参数如下:前后轮轴距2K=168 mm;左右轮距离2L=266 mm;车轮直径r=130 mm;电动机减速比1:30。

假设小车转向的角速度ω 为5 rad/s,转向半径R 为100 mm。

由上面的公式便可得出各个轮子的转速:n1=n3=18.3 m/s;n2=n4=116.1 m/s。

1.5ROS 平台与底盘通信协议[5](1)ROS 底盘串口ROS 平台与小车底盘的通信一般是通过串口或者CAN 总线。

我这里采用的是串口,以下为我自定义的通信数据格式。

1)底盘串口部分串口接收:小车左右轮速度,单位:mm/s(所有数据都为float 型,float 型占4 字节),10 字节:[右轮速度4 字节][左轮速度4 字节][结束符"\r\n"2 字节]。

串口发送:里程计x, y 坐标、线速度、角速度和方向角,单位依次为:mm, mm, mm/s, rad/s, rad(所有数据都为float 型,float 型占4 字节),21 字节:[x 坐标4 字节][y 坐标4 字节][方向角4 字节][线速度4 字节][角速度4 字节][结束符"\n"1 字节]。

2)ROS 平台串口节点部分写入串口:左右轮速度,单位为mm/s,10 字节,[右轮速度4字节][左轮速度4字节][结束符"\r\n"2字节]。

读取串口:小车x、y 坐标,方向角,线速度,角速度,单位依次为:mm,mm,rad,mm/s,rad/s,21 字节:[X坐标4字节][Y坐标4字节][方向角4字节][线速度4字节][角速度4字节][结束符"\n"1字节]。

2运动规划仿真2.1属性配置用moveit_assistant_setup 对机器人进行属性配置,如图 2 所示。

图 2 Moveit 属性设置2.2关节运动仿真通过moveit 成功用Rviz 进行了机器人关节运动仿真、整体运动仿真,如图3-图6 所示。

图3 urdf 模型关键运动仿真图4 Rviz 运动规划图5 Rviz 呈现小车图6 Rviz 呈现运动轨迹2.3运动仿真通过Rviz 对机器人模块进行运动仿真(下图为Linux 命令代码操作),如图8 所示。

图8 命令直接仿真机器人运动编写.launch 文件(c++编写)存放在package 包内的launch 文件(file)中,在Linux 命令框中用roslaunch 代码读取.launch 文件(文件中有机器人运动规划代码),如图9 所示。

图9 通过launch 文件编写代码对机器人进行复杂运动仿真用apt-get 在ROS 官网上下载摇杆包,通过摇杆仿真控制机器人运动,如图10 所示。

图10 通过摇杆控制规划运动路线2.4控制模拟右边命令框Arbotix Controller 是模拟摇杆控制器,系统通过采集摇杆节点输入数据想机器人节点发送topic 消息,并用rosrun 运行rqt_graph 弹出如下界面,对节点间的topic 话题进行可视化分析,如图11 所示。

图11 可视化节点消息图分析用marker 进行第三方控制,控制图如下,如图12、图13 所示。

图12 第三方控制为图中红色部分(在rqt_graph 上的呈现)图13 Rviz 下用控制完成圆路径以上是前期准备中的一部分,分别为环境搭建与机器人属性设置、运动规划模拟、与Arduino 开发板实际对接应用、可视化界面呈现与分析、节点话题可视化分析。

3结果分析以上仿真逐步实现从路径控制到小车的摇杆控制。

通过模拟分析得到了机器人运动现象,及相应的控制方法,为后续硬件的搭建与功能实现提供了参考。

由上述仿真可知,在ROS 平台相应仿真软件的帮助下,机器人的运动控制大幅度简单化,根据面向服务的思想,ROS 将硬件控制方式抽象成了话题订阅,实现了底层硬件和规划路径功能块的Service,本项目要做的是在两个模块中间协调通讯。

所以此项目将会把机器人设计成为两个板块,上位机树莓派通过ROS 的通讯协议接收下位机Arduino 接收的摄像头等传感器数据,并进行SLAM[4] 与基于PID 算法的路径规划的运算预处理,再将预处理数据结果通过ROS 通信协议返还给下位机Arduino 进行数据结果解析并对包括舵机转速、摄像头朝向等外部控制参数进行直接操作,最终在运动控制进行直接体现。

设计如图14 所示。

图14 移动机器人系统设计4总结针对当前研究室内环境,并同时实现定位与地图构建( SLAM)[3]功能的移动机器人成本高等问题,提出了一种低成本的开源移动机器人控制系统方案。

以控制芯片Arduino[1] 为基础,将开源机器人操作系统(ROS)移植到开源嵌入式系统当中,设计了基于ROS 的分布式上位机控制软件和实时操作系统的下位机程序,完成了移动机器人控制系统的搭建,实现了移动机器人的分布式控制。

移动机器人所使用软硬件均开源,成本低、性能高、可扩展性好。

研究结果表明,该控制系统具有较好的稳定性和实时性。

对该类机器人的开发与实际应用提供了一个新的思路与方法。

附录APID 算法——diff_controller.h 源码typedef struct {double TargetTicksPerFrame; // target speed in ticks per frame long Encoder; // encoder countlong PrevEnc; // last encoder countint PrevInput; // last inputint ITerm; //integrated termlong output; // last motor setting}SetPointInfo;SetPointInfo leftPID, rightPID;int Kp = 20;int Kd = 12;int Ki = 0;int Ko = 50;unsigned char moving = 0; // is the base in motion?void resetPID(){leftPID.TargetTicksPerFrame = 0.0;leftPID.Encoder = readEncoder(LEFT);leftPID.PrevEnc = leftPID.Encoder;leftPID.output = 0;leftPID.PrevInput = 0;leftPID.ITerm = 0;rightPID.TargetTicksPerFrame = 0.0;rightPID.Encoder = readEncoder(RIGHT);rightPID.PrevEnc = rightPID.Encoder;rightPID.output = 0;rightPID.PrevInput = 0;rightPID.ITerm = 0;}void doPID(SetPointInfo * p){ long Perror;long output;int input;input = p->Encoder - p->PrevEnc;Perror = p->TargetTicksPerFrame - input;output = (Kp * Perror - Kd * (input - p->PrevInput) + p->ITerm) / Ko; p->PrevEnc = p->Encoder;output += p->output;if (output >= MAX_PWM)output = MAX_PWM;else if (output <= -MAX_PWM)output = -MAX_PWM;elsep->ITerm += Ki * Perror;p->output = output;p->PrevInput = input;}void updatePID() {leftPID.Encoder = readEncoder(LEFT);rightPID.Encoder = readEncoder(RIGHT);if (!moving){if (leftPID.PrevInput != 0 || rightPID.PrevInput != 0) resetPID();return;}doPID(&rightPID);doPID(&leftPID);setMotorSpeeds(leftPID.output, rightPID.output);}long readPidIn(int i){ long pidin=0;if (i == LEFT){pidin = leftPID.PrevInput;}else {pidin = rightPID.PrevInput;}return pidin;}long readPidOut(int i){ long pidout=0;if (i == LEFT){pidout = leftPID.output;}else {pidout = rightPID.output;}return pidout;}附录BROS 的C++库——RoscppROS 系统接口相机驱动(1)camera_driversStreaming Camera NodesThis API is for cameras that produce a continuous stream of images(原文)获取与处理Kinetic 等其他图像获取设备的数据流Polled Camera NodesThis API is for cameras that produce an image only when polled. There may be multiple clients, each with their own response_namespace. These topics are only published in response to the request_image service. The polled_camera package provides support for implementing this API.(原文)对每一个相机进行轮询等操作(2)common_msgs(消息传递API)负责对整个系统内部不同部分相互传递消息(通信)的API(3)laser_drivers激光测距系统API(4)driver_common其他驱动程序和常用的驱动程序工具类(5)filters为系统内的数据过滤,官方提供的过滤器接口以及实现(6)laser_pipeline将激光传感器数据转为三维数据(7)image_commonROS 系统中对于图像处理的组件(8)image_pipelineROS 中的图片处理Pipeline,用于处理图像信息(如将相机获取到的数据进行处理并输出成OpenCV 可以处理的数据)(9)ision_opencvROS 与OpenCV 的接口,提供实时图像的OpenCV 编程(10)tfROS 中Transform Configuration(变换配置)相关的接口和组件(11)tf_conversionstf 数据类型的转换接口和组件(12)actionlib为ROS 系统中的Action Server 和Action Client 两个模块提供接口和工具。

相关文档
最新文档