ROS笔记

7 篇文章 0 订阅

Ros笔记
阅读书籍为 机器人操作系统(ROS)浅析
只是阅读ROS之上的代码看前三章够了

第一章

ROS 解决的问题
分布式计算 现代机器人系统往往需要多个计算机同时运行多个进程

第二章

2.7
ROS节点之间进行通信所利用的最重要的机制就是消息传递。
在ROS中,消息有组织地存放在话题里 19。消息传递的理念是:
当一个节点想要分享信息时,它就会发布(publish)消息到对应的
一个或者多个话题;当一个节点想要接收信息时,它就会订阅
(subscribe)它所需要的一个或者多个话题。 ROS节点管理器负责确
保发布节点和订阅节点能找到对方;而且消息是直接地从发布节
点传递到订阅节点,中间并不经过节点管理器转交。

第三章

在我们写任何程序之前,第一步是创建
一个容纳我们的功能包的工作区,然后再创建功能包本身

创建工作区 我们所创建的包,应该全部放到一个叫做工作区的目录中

ros::init函数初始化ROS客户端库。 请在你程序的起始处调用一次该函数。函数最后的参是一个包含节点默认名的字符串

ros::NodeHandle(节点句柄) 对象是你的程序用于和ROS系统交互的主要机制。创建此对象会将你的程序注册为ROS节点管理器的节点。最简单的方法就是在整个程序中只创建一个NodeHandle对象

运行节点之前,不要忘了首先要启动 roscore:这个程序是一个节点,节点需
要一个节点管理器才可以正常运行

3.3 发布者程序

3.3.1

  1. 创建发布者对象
ros::Publisher pub = node_handle.advertise<message_type>(
topic_name, queue_size);

如果你想从同一个节点发布关于多个话题的消息,你需要为
每个话题创建一个独立的 ros::Publisher 对象

  1. 创建并填充消息对象
geometry_msgs::Twist msg;
msg.linear.x = double(rand())/double(RAND_MAX);
msg.angular.z = 2*double(rand())/double(RAND_MAX) - 1;
  1. 发布消息
    pub.publish(msg);

节点是否停止工作的检查
ros::ok()

3.4 订阅者程序

  1. 编写回调函数
    发布和订阅消息的一个重要的区别是订阅者节点
    无法知道消息什么时候到达。为了应对这一事实,我们必须把响
    应收到消息事件的代码放到回调函数里, ROS 每接收到一个新的
    消息将调用一次这个函数
    void function_name(const package_name::type_name &msg)

  2. 创建订阅者对象
    为了订阅一个话题,我们需要创建一个为了订阅一个话题,我们需要创建一个
    ros::Subscriber对象:

ros::Subscriber sub = node_handle.subscribe(topic_name,queue_size, pointer_to_callback_function)
  1. 给ROS控制权
    最后的复杂之处在于只有当我们明确给ROS许可时,
    它才会执行我们的回调函数
    ros::spinOnce();
    这个代码要求 ROS 去执行所有挂起的回调函数,然后将控制权限
    返回给我们。另一个方法如下所示:
    ros::spin();
    这个方法要求 ROS 等待并且执行回调函数, 直到这个节点关机。
    换句话说, ros::spin()大体等于这样一个循环:
while(ros::ok( ))
{
ros::spinOnce();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值