ROS中已经定义了较多的标准类型的消息,你可以用在这些标准类型的消息上再自定义自己的消息类型.这个在复杂数据传输很有用,例如节点和服务器进行交互时,就可能用到传输多个参数到服务器,并返回相应的结果.为了保证例子的完整,将详述每一步. 基本思路和创建talker和listener的例子类似,步骤如下: 建立工作空间workspace(类似于vs下的解决方案,用来管理很多的项目): 建立包package(类似于vs下的项目): 创建msg和srv文件: 编写服务节点和客户节点代码: 利用rosmak…
Actionlib是ROS非常重要的库,像执行各种运动的动作,例如控制手臂去抓取一个杯子,这个过程可能复杂而漫长,执行过程中还可能强制中断或反馈信息,这时Actionlib就能大展伸手了. 1.原理 1.1功能 在任何一个比较大的基于ROS的系统,都会有这样的情况,向某个节点发送请求执行某一个任务,并返回相应的执行结果,这种通常用ROS的服务(services)完成.然而,有一些情况服务执行的时间很长,在执行中想要获得任务处理的进度,或可能取消执行任务,Actionlib就能实现这样的功能,它是…
1.Actionlib原理 英文版:DetailedDescription 翻译版:actionlib的身世之谜 2.Actionlib官方教程 Actionlib是ros的重要部件,对于复杂动作的执行问题,例如机械臂捉取物品和move_base实现等,使用actionlib是非常有效的.参考官方的Actionlib教程:actionlib/Tutorials ,我将例子代码做了整理,请参考以下的下载例子. 2.下载例子 代码:actionlib_tutorials.zip…
学习新事物,方法高于技术本身,如果没有把握"BIG PICTURE"的话很难理解进去.通过以下几点进行理解ROS: ROS实际上不是操作系统,他只是一个通信的框架,一个代码管理的架构.任务的时序规划和CPU资源分配工作都是靠LINUX来实现,所以,ROS脱离不了LINUX,ROS依附在LINUX上. 机器人的核心平台是:多传感器和处理器之间的通信,处理器和执行器之间的通信,这些通信必须保持一个统一的时钟,试想如果从传感器传回来的数据时间上不同步,那就谈不上数据融合了. ROS主要解决了…
ROS入门难,进去之后会是很简单,这是很多人的经验.但是今天安装ROS就吃了闭门羹,安装成功后,回顾发现,关键是操作系统Ubantu14.04没有安装好,一些系统包没有及时更新导致的.这里总结下ROS Jade安装的经验,留他日己用,也希望能帮助别人.安装的基本思路就是,首先安装Ubantu14.04操作,然后再安装ROS系统. 1.安装Ubantu14.04系统 ROS系统运行于Linux系统上,所以我们必须首先安装Ubantu系统.正确安装Ubantu系统是ROS安装成功的关键一步.否则安装…
1.ros::spin()和spinOnce含义 如果在节点中如果订阅了话题,那么就必须要调用ros::sping()或者ros::spinOnce()函数去处理话题绑定的回调函数,否则该节点将不会调用节点所订阅的所有回调函数来处理接收到的数据.换句话说如果一个节点里面没有订阅话题只有发布话题,那么是可以不需要调用这两个函数的.但是为了方便以后节点添加了订阅消息话题,建议还是加上这两个函数之一.下面是关于这两个函数的讨论: What is the actual meaning of ros::s…
机器人的复杂行为的控制结构CA(Contrl Architecture)通常使用有限状态机来实现,例如ROS提供的smach.行为树是另外一种实现机器人控制的方法,ROS下代表的开源库有pi_trees和ROS-Behavior-Tree. 参考资料 [1]. ROS-Behavior-Tree [2].pi_trees…
在一些应用中会需要获取master的uri地址,发布的话题,订阅的话题,发布的服务,节点的信息等等.这些功能我们通常可一通过rosnode list, rosnode info, rostopic list, rostopic info, rosservice list和 rosservice info 等命令查询,而这些功能是怎么做到的呢? 这就需要用到Master_API进行查询,ROS官方使用了python来实现(在ros_comm包中),这里我们使用c++来实现这些查询的功能. 1.实现…
目录 Overview Example Providing a Plugin Registering/Exporting a Plugin The Plugin Description File Registering Plugin with ROS Package System Querying ROS Package System For Available Plugins Using a Plugin Changes from Pre-Groovy pluginlib Simplified…
Dynamic Window Approach(DWA)是重要的局部轨迹规划算法,ROS中使用了DWA算法获得了很好的局部路径规划的效果.具体的教程可参考官方的导航调试资料Navigation Tuning Guide.ROS的DWA(dwa_local_planner)应用到新机器人调试时,有一些技巧需要注意的,这里做一些总结. 1.设置坐标系和话题 需要订阅的话题: 里程计话题:/odom 需要设置的坐标系:包含/map,/odom,/base_footprint 2.参数调试 a.加速度的…