ROS与Orocos

实例一

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

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

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

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

作为实施例
使用 ROS 的 procreate-catkin-pkg 方法创建 ROS 的 Package
并在 Package 中继承 OROCOS 的 RTT::Taskcontext 类
利用 OROCOS 的 RTT::Input 与 RTT::Output 方法定义实时输入/输出接口
0010
硬件结构模型:
在这里插入图片描述
总控模块接入控制端的人机交互界面的控制指令

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成员函数,断开连接

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值