ROS基础

rosparam和ROS参数服务
param_string1: hello //→param_string1=“hello”
param_set:
 param_set_string2: world //→param_set/param_set_string2=“world”

Parameter Server
Dictionaries representation of the parameter tree:

camera:
 left: { name: leftcamera, exposure: 1 }
 right: { name: rightcamera, exposure: 1.1 }

YAML简介及其与XML的不同之处
—YAML是以数据为设计语言的重点的,而不是像XML以标记为重点。
—YAML的数据组织主要依靠的是空白、缩进、分行等结构。
—纵观程序语言的发展,从C到C++、Java,再到动态脚本语言Perl、Python、PHP,直到如今相当之流行的Ruby,人们越来越摈弃那些规则复杂、语法深奥的语言,取而代之的则是灵活简单,易读易写,越来越趋近于人类阅读书写习惯的程序语言。在数据的序列化上,这种趋势其实是一样的。

ROS基础–ROS plugin应用篇
ROS中的插件实质上就是库文件,可以是动态库也可以是共享库。其优势是可以根据需要加载与注销,节省资源;而且可以单独修改编译,封装性较好。ROS提供了一套ROS plugin实现的流程框架,并提供pluginlib包用于加载、使用ROS plugin。在本质上,一个ROS plugin就是一个子类,子类和父类被编译为一个库,对外提供服务。ROS通过插件描述文件找到库和插件类,然后利用pluginlib包加载插件,使用之。

ROS Pluginlib基础篇
ROS Pluginlib是ROS提供的一个功能包,用于制作和加载ROS plugin。plugin本质上是一些类定义,类定义通过Pluginlib封装之后,编译为动态库(.so)。然后可以通过Pluginlib提供的接口,实现运行时加载plugin。本篇通过实例,介绍ROS plugin的制作,以及如何使用plugin。

Nodelet
nodelet避免了多node通过ROSTCP通信带来的延时问题,对于提高ROS性能有着重要意义。常用于大数据吞吐量场景,特别是在视觉、高频和高带宽程序中。
—可实现在同一个进程内同时运行多种算法
—nodelet之间传输数据无需拷贝(在一个nodelet管理器下,使用boost共享指针)
—可作为插件动态载入
—和节点相似性高

ROS Nodelet介绍
ROS Nodelet是为提高ROS通信效率而实现的,常用于数据量比较大的场景,例如激光雷达和图像数据等。ROS不同节点之间通过话题通信时,是通过网络实现的,且需要经过序列化与反序列化,延时比较高。ROS Nodelet将不同节点封装在一个进程中,进而以共享数据的方式进行通信,提高通信效率。ROS Nodelet是基于ROS Plugin技术实现的,掌握了ROS Plugin技术之后,很容易掌握ROS Nodelet。其实现机制是将节点封装为plugins,然后再加载到同一个进程中,实现零拷贝通信。

nodelet简介
1)各个nodelet虽然在同一个进程内,但由于拥有自己的命名空间,所以看似是一个个独立的node存在;
2)通过pluginlib实现nodelet插件的动态加载;
3)任何nodelet之间的通信使用零拷贝的roscpp publish完成,实质上是使用了boost shared_ptr。

ros_control
我们要用ROS功能包来控制真实的机器人或者仿真机器人,需要中间的控制环节,比如控制器接口、传动装置接口、硬件接口等,而ros-control就是ROS 开发者提供的机器人控制中间件。
ros_control架构
 Controller Manager:管理不同控制器的通用接口
 Controller:读取硬件资源接口中的状态,发布控制指令。它不直接接触硬件,而是从硬件抽象层请求资源。
 RobotHW:机器人硬件抽象层,管理硬件资源,处理硬件冲突。它直接和硬件资源交互,通过write和read方法完成硬件操作。
 Hardware Resource:提供硬件资源的接口

ROS传感器之IMU简介
ROS传感器之GPS实践

catkin_make_isolated for non-standard catkin packages
catkin_make vs catkin_make_isolated
—catkin_make treats the entire workspace as a single cmake project, and builds it with a single invocation of cmake. Since catkin_make treats the entire workspace as a single package, it’s faster for incremental builds that only change code, but slower when you need to regenerate the build files, and more sensitive to dependency issues between packages.
—catkin_make_isolated treats each package as a separate cmake project, and builds and installs each separately, in dependency order. This is why it’s able to build plain cmake packages.

使用rqt_console
rqt_console属于ROS日志框架(logging framework)的一部分,用来显示节点的输出信息。

Leaf topics in rqt_graph
A leaf topic is a topic which has no subscribers. Elements without children are called “leaf nodes” or “end-nodes”.
Q. When I launch rqt_graph, previous nodes are showed.
A. The problem may be happening if you close rqt_graph, but do not close roscore, and then restart rqt_graph. To start fresh you can restart roscore when you restart rqt_graph. Or use the rosnode kill command to kill the nodes you don’t want running. What I actually do is use rqt instead of rqt_graph, that way you can see the node graph and process monitor at the same time and it is easy to kill nodes you don’t want.

dynamic_reconfigure
ROS探索总结-40.dynamic reconfigure ros之dynamic_reconfigure

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值