在前面的一节中,我们已经使用arduino创建了一个publisher节点,接下来将会用arduino来创建一个subscriber,接收电脑传去的信息并做出相应的反应。

1启动Arduino

将arduino开发板连接到电脑的usb口,在arduino IDE中进行设置。

选择Tools->Board,选择你所使用的arduino开发板的类型,所使用的arduino开发板是arduino pro min。

设置好开发板之后,继续选择Tools->Serial Port->/dev/ttyUSB0。

2编译程序

选择File->Examples->ros_lib->Blink,就可以打开一个示例程序,代码如下:

/*
* rosserial Subscriber Example
* Blinks an LED on callback
*/ #include <ros.h>
#include <std_msgs/Empty.h>

//创建了一个节点句柄,这允许我们的程序能够创建发布者和订阅者,节点句柄同样和串口通信有关系。
ros::NodeHandle nh;

// 创建回调函数,必须使用一个消息的常引用作为一个参数。
// 消息类型是 std_msgs::Empty 消息的名字是toggle_msg
// 回调函数中,我们可以引用 toggle_msg,因为他是空的,所以就没必要了。接受到一次,让LED闪烁一次。
void messageCb( const std_msgs::Empty& toggle_msg){
digitalWrite(13, HIGH-digitalRead(13)); // blink the led
}

//创建一个订阅者subscriber , 订阅消息 toggle_led,消息类型是 std_msgs::Empty,回调函数是messageCb()
ros::Subscriber<std_msgs::Empty> sub("toggle_led", &messageCb ); //初始化ros的节点句柄,告知所有将要订阅的话题,订阅你想收听的任何话题。
void setup()
{
pinMode(13, OUTPUT);
nh.initNode();
nh.subscribe(sub);
}

//调用了ros::spinOnce(),在这个函数中,所有ROS通信的回调函数都被处理。
//在loop函数中,我们不需要去做任何其它的处理。因为这个函数ros::spinOnce()将会传递消息给subscriber的回调函数。 void loop()
{
nh.spinOnce();
delay(1);
}

烧录程序

在arduino IDE中点击upload按钮,运行程序。

运行ROS

新建窗口

roscore

接着运行rosserial客户端应用,它把你的arduino消息转发到ROS系统的其它部分:

rosrun rosserial_python serial_node.py /dev/ttyUSB0

最后你可以输入一下命令来查看你的arduino板子上的LED灯的变化情况:

rostopic pub toggle_led std_msgs/Empty --once

上述命令运行一次后LED灯亮了,再运行一下次又灭了,如此反复的运行,会发生相应的变化。

 

Ros使用Arduino 3用rosserial创建一个subscriber的更多相关文章

  1. Ros使用Arduino 2 使用rosserial创建一个publisher

    1 启动arduino 将arduino开发板连接到电脑的usb口,在arduino IDE中进行设置. 选择Tools->Board,选择你所使用的arduino开发板的类型,所使用的ardu ...

  2. ROS学习记录(三)————创建一个简单的发布节点和订阅节点

    暑假在家有些懈怠,不,非常懈怠- -||!良心已经发痛了,想快些补回原来的进度,但忽然发现,中断了一段时间再重新去学习,有的地方连最基本的符号都忘记了 ,这次特意弄个最最基础的,恢复一下,以前的进度. ...

  3. 创建一个ROS包

    先前笔者不知道catkin到底是个什么东东,后来终于在官方网站上找到了答案,原来catkin是ROS的一个官方的编译构建系统,是原本的ROS的编译构建系统rosbuild的后继者.catkin的来源有 ...

  4. 创建一个ROS工作空间(ROS Workspace)

    详细参照 http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment1.mkdir -p ~/catkin_ws/ ...

  5. ROS笔记1 安装及创建一个ROS Package

    安装 跟着官方的安装指引来就行了.安装前要先确定自己的ros版本和ubuntu版本.这二者是一一对应的. http://wiki.ros.org/ROS/Installation 主要是package ...

  6. ROS的初步学习--创建一个工作空间和一个程序包

    快速开始 创建工作区(workspace) 工作区可以作为一个独立的项目进行编译,存放ROS程序的源文件.编译文件和执行文件.建立工作区的方法如下: mkdir -p ~/catkin_ws/src ...

  7. Ros使用Arduino 1安装Arduino IDE

    安装Arsuino IDE sudo apt-get install arduino 设置库文件路径 在使用ROS的库文件时,必须在代码的开头包括: #include <ros.h> 接下 ...

  8. ROS学习笔记(六)——创建、编译包

    $ cd ~/catkin_ws #如果新开一个终端,就需要先吧ROS的工作空间配置好 $ source devel/setup.bash #工作空间的环境配置 #正式开始创建包 $ catkin_c ...

  9. ROS Learning-015 learning_tf(编程) 编写一个监听器程序 (Python版)

    ROS Indigo learning_tf-02 编写一个 监听器 程序 (Python版) 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 1 ...

随机推荐

  1. SQL 行转列示例

    --油表 select (select SUM(XiaoHaoLiang)as'油表消耗总值' FROM dbo.NengHaoYouBiao WHERE CaiJiRiQi between '201 ...

  2. 关于height,line-height导致的样式混乱的问题

    设置固定border,padding,line-height,但是发现在ie下input标签竟然line-height不起作用,导致实际的高度无法控制 解决方法:添加固定高度height.

  3. WPF 使用 Direct2D1 画图入门

    本文来告诉大家如何在 WPF 使用 D2D 画图. 本文是一个系列 WPF 使用 Direct2D1 画图入门 WPF 使用 Direct2D1 画图 绘制基本图形 WPF 使用 SharpDX WP ...

  4. IQuerable与IEnumable的区别

    核心区别: IQueryable该接口会把查询表达式先缓存到表达式树Expression 中,只有当真正用到数据的时候(例如 遍历 ),才会由IQueryProvider解析表达式树,生成sql语句执 ...

  5. 【github&&git】3、git图像化界面GUI的使用

    GIT学习笔记 一.        基础内容 1.git是一个版本控制软件,与svn类似,特点是分布式管理,不需要中间总的服务器,可以增加很多分支. 2.windows下的git叫msysgit,下载 ...

  6. Sample Means(耶鲁大学教材)

    Sample Means The sample mean from a group of observations is an estimate of the population mean. Giv ...

  7. Ashampoo Driver Updater - 阿香婆驱动安装

    Ashampoo Driver Updater 让系统更完美 – 永远有最新的驱动,出错或旧的驱动是每个电脑系统的恶梦.时不时,驱动会丢失或不可避免的过时.Ashampoo Driver Update ...

  8. Navicat安装及简单使用

    一.安装 下载完之后,直接解压出来就能用,看一下解压之后的目录: 双击打开下面这个文件(可以把它添加一个桌面快捷方式,或者添加到任务栏): 然后会提示你输入注册码: 回到navicat的解压出来的文件 ...

  9. JS性能优化 之 文档片段 createDocumentFragment

    我们用原生JS进行开发时,经常会用到两种更新DOM节点的方法:innerHTML 和 appendChild() .其中 innerHTML 会完全替换掉原先的节点内容,如果我们是想向元素追加子节点的 ...

  10. Expo大作战(三十四)--expo sdk api之LinearGradient(线性渐变),KeepAwake(保持屏幕不休眠),IntentLauncherAndroid,Gyroscope,

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...