实例一

Link Here:基于ROS和Orocos的机器人控制系统

通信协议接口:接收控制端输入的控制指令,选择控制指令相应的机器人运动规划的响应函数
算法模块:由响应函数,计算控制指令数据
通信管理模块:将控制指令数据输出至控制部件

第一接口:总控模块与算法模块之间通信连接
第二接口:算法模块与通信管理模块进行连接
第三接口:接收通信管理模块传入的反馈信息

基于ROS,利用Orocos的实时输入/输出接口,实现总控模块,算法模块和通信管理模块之间的通信

作为实施例
使用 ROS 的 procreate-catkin-pkg 方法创建 ROS 的 Package
并在 Package 中继承 OROCOS 的 RTT::Taskcontext 类
利用 OROCOS 的 RTT::Input 与 RTT::Output 方法定义实时输入/输出接口

硬件结构模型:

总控模块接入控制端的人机交互界面的控制指令

Linux主机可以是X86架构的PC机,或者ARM芯片嵌入式架构的开发板。Linux主机中可以安装Xenomai或者其他实时内核补丁,安装ROS,Orocos,rFSM等软件

机器人控制系统搭建的软件架构图:

总控模块:

创建ROS的package,记为Ec_control_system,

然后在Package中,继承Orocos的RTT::TaskContext类,记为Ec_control_system_component

Ec_control_system_component类的构造函数中,执行以下操作:

  • 利用Orocos的RTT::Input和RTT::Output方法,对模块的输入\输出接口进行定义
  • 利用Orocos的Operational Caller方法设置函数调用接口,用于对算法模块的相应响应函数进行调用
  • 调用Orocos的Properties方法定义总控模块的属性,将总控模块定义为一个机械臂关节个数的属性

Ec_control_system_component的StartHook()成员函数,建立与人机交互界面的通信连接

Ec_control_system_component的CleanUpHook()成员函数,关闭与人机交互界面的通信连接

算法模块:

创建ROS的package,记为Ec_control_loop,

继承Orocos的RTT::TaskContext类,记为Ec_control_loop_component

  • 利用RTT::Input与RTT::Output,对输入\输出接口进行定义,输入状态机的数据,输出状态机的事件
  • 利用Orocos的Operational Caller方法设置函数调用接口,设置控制指令响应函数
  • 调用Orocos的Properties方法定义算法模块的属性,算法模块定义一个机械臂关节个数的属性

在Ec_control_loop_component的StarHook()成员函数中,检查是否有电机数据并上传至总控

在Ec_control_loop_component的UpdateHook()成员函数中,按照指定频率读取状态机状态

对于Ec_control_loop_component类,定义了运动的函数调用接口

通信管理模块

通过Linux主机minicom中的ttyACM0与ARM开发板通信,可以在ARM开发板上运行一个CANOpen主站协议。使用Orocos的RTT::Input与RTT::Output方法与机器人算法模块和总控模块进行通信

创建ROS的package,继承Orocos的RTT::TaskContext类,创建一个Orocos的实时模块,记为Ec_component

ROS通过rtt_ros_integration和Orocos连接,实现实时通信

创建ROS的package
在package中通过继承Orocos的RTT::TaskContext类,创建一个Orocos的实时模块
在RTT::TaskContext类的构造函数中,执行如下操作:

  • 利用Orocos的RTT::Input与RTT::Output方法,对输入,输出接口进行定义
  • 利用Orocos的Operational Caller方法设置函数调用接口,设置控制指令响应函数
  • 调用Orocos的Properties方法定义算法模块的属性

StartHook成员函数,初始化并建立连接
UpdateHook成员函数,按固定频率读取模块的状态(回调函数)
CleanUpHook成员函数,断开连接

控制器状态机的状态变化示意图:

设备状态机的状态变化示意图:

ROS与Orocos相关推荐

  1. ros安装orocos造成工作空间编译不通过

    大概是想看一下机械臂怎么在ros上搞,无意中发现orocos,并安装. 不过它好像不是一个包,造成catkin_ws编译不通过,比赛程序运行不了. 从网上找到相同问题,不过不会操作里面给出的解决方案. ...

  2. dnf机械机器人补丁_干货 | 详解工业机器人控制系统架构

    机械臂和移动机器人两种工业机器人的特点你知道吗?下面我们对比一下二者的控制系统方案. 以上分类是根据应用对象,此外,市面上更多的是通用型运动控制器,即控制非标设备的. 1 控制器底层方案 1.1 机械 ...

  3. ubuntu18.04 编译rtt-lwr

    https://rtt-lwr.readthedocs.io/en/latest/install/install-18.04-melodic.html 一路通过. cound't find AF_IN ...

  4. ros构建机器人运动学模型_机器人开源控制软件 OROCOS

    0. OROCOS 简介 OROCOS,全称 Open Robot Control Software,即机器人开源控制软件:如张新宇老师在ROS史话36篇 | 20. ROS之KDL中所说:" ...

  5. 嵌入式的我们为什么要学ROS

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:羽林君 前言 本来是要写一篇STM32移植ROS ...

  6. android ros 节点编写_嵌入式的我们为什么要学ROS

    前言 本来是要写一篇STM32移植ROS的一个小lib库,ROS一般都是需要跑在Linux上的,STM32使用就是当成一个ROS通讯的小节点,但是写文章时间不够,所以就简单做一篇ROS的介绍文章,分享 ...

  7. 机器人程序设计——之如何正确入门ROS | 硬创公开课(附视频/PPT)【转】

    转自:http://blog.exbot.net/archives/2966 导语:本期公开课面向想入手ROS却又不知从何下手的小伙伴,为大家梳理好学习思路. ROS和Android一样是开源的,功能 ...

  8. ROS保姆级0基础入门教程⭐ |第一章 ROS的概述与环境搭建(4万字教程,建议收藏)

    目录 1 ROS简介 1.1 ROS概念 1.2 ROS设计目标 1.3 ROS发展历程 2 ROS安装 2.1安装ubuntu 2.2 安装 ROS 2.3 测试 ROS 3 ROS快速体验 3.1 ...

  9. ROS 教程2 机器人雷达建图 蒙特卡洛定位 导航 路径规划 仿真

    ros 机器人雷达建图 蒙特卡洛定位 导航 路径规划 仿真 move_base gmapping acml 博文github 一.安装 turtlebot 移动机器人底座 进行导航 1.安装系统依赖 ...

  10. ROS入门跟着我就够了(一)ROS概述与环境搭建

    写在最前面的话: 这是第一次在CSDN写博客,也算是正式踏入这个圈子 准备两三天一更,把学习经历完整记录下来 希望最后回看过来能收获很多 查了很多资料,入门ROS比较好的免费资源是古月居的讲授以及赵虚 ...

最新文章

  1. 如何在.NET中创建服务型组件
  2. 电脑录屏工具_屏幕录制工具有哪些?这些录屏软件须知
  3. access如何保存小数点后_跟宇哥学习Access数据库是怎样一种体验?(1)
  4. .Net平台开发的技术规范与实践精华总结 (转)
  5. 在linux下搭建jira+svn[原创]
  6. 想买基金,在哪个银行开户好呢?
  7. wpf tabcontrol嵌套自动跳转上层_Python Selenium包应对嵌套网页的方法和简单 js 脚本运行的实现...
  8. 自动化测试基础篇--Selenium等待时间
  9. c语言求45678所有非平凡因子,近世代数基础习题课答案到第二章9题
  10. LCD1602和12864显示器
  11. 斐波那契数列(Java递归)
  12. 机器视觉入门 Visual Studio 2015 配置 Opencv3.2
  13. mbedtls | 10 - 数字证书及 X.509 证书标准
  14. HR:“最喜欢阿里出来的程序员了,技术又好又耐艹!” 我:???
  15. 可落地的DDD(6)-工程结构
  16. uniapp拍照上传功能
  17. 市面上常见的手机分辨率
  18. 我们手指触碰屏幕都做了什么?
  19. 开源100天,OneFlow送上“百天大礼包”:深度学习框架如何进行性能优化?
  20. 解决 SharePoint 2013 管理中心登录问题。

热门文章

  1. centos 安装 Vagrant
  2. 帧中继环境下Ping的实现
  3. SpringBoot +自定义dao框架 自定义注解管理多数据源与事务
  4. JavaScript之爆肝汇总【万字长文❤值得收藏】
  5. Linux 程序运行时报错:找不到库文件[cannot open shared object file: No such file or directory ```](转载)
  6. 快速启动器工具 Maye(转载)
  7. oracle tochar fm,oracle的to_char中的fm-Oracle
  8. mongodb查询不等于某个字段_Oracle单表查询多字段,不使用*
  9. SVN快速上手使用(适用于新入职同事)
  10. 爬虫实例4 爬取网络小说