Ubuntu16.04LTS 下ros(kinetic)的arduino应用(三)

来源:互联网 发布:男生冬季服装搭配知乎 编辑:程序博客网 时间:2024/05/22 05:30

Ubuntu 16.04下arduino示例ros_lib例程Blink
介绍:

  • 该文主要讲述如何通过rosserial创建subscribers(订阅者),点亮Arduino开发板上的LED
  • 使用例程为应用(一)中Arduino IDE 文件->示例->ros_lib->Blink

示例中的代码如下:

/*  * rosserial Subscriber Example * Blinks an LED on callback */#include <ros.h>        //包含了标准ROS类的声明#include <std_msgs/Empty.h>     //包含消息头文件ros::NodeHandle  nh; /*(节点句柄)对象是你的程序用于和ROS系统交互的主要机制。创建此对象会将你的程序注册为ROS节点管理器的节点。最简单的方法就是在整个程序中只创建一个NodeHandle对象*/void messageCb( const std_msgs::Empty& toggle_msg) /*定义回调函数messageCb,且形式参数为常量消息引用值,消息类型是std_msgs::Empty,消息名称是toggle_msg*/{  digitalWrite(13, HIGH-digitalRead(13));   // blink the led}ros::Subscriber<std_msgs::Empty> sub("toggle_led", &messageCb );/*实例化一个订阅,且含有两个参数,主题名toggle_led与回调函数,且主题类型为std_msgs::Empty*/void setup()    //Arduino的Setup函数,用于初始化ROS节点处理,并宣告所有的发布或订阅{   pinMode(13, OUTPUT);  nh.initNode();  nh.subscribe(sub);}void loop() //在Arduino的loop函数,定义发布的内容,并调用nh.spinOnce(),这样所有的ROS回调函数就会被处理。{    nh.spinOnce();  delay(1);}

代码下载:

  • 将arduino开发板通过串口与电脑连接,点击Arduino IDE 文件->下载

运行代码:
1.打开终端,输入如下:

$ roscore

2.打开另一个终端,输入如下:

$ rosrun rosserial_python serial_node.py /dev/ttyACM0

$ rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0

3.3.打开另一个终端,输入如下代码,发布主题toggle_led,点亮Arduino板上的LED灯

$ rostopic pub toggle_led std_msgs/Empty --once

rostopic pub -r 1 /toggle_led std_msgs/Empty 
  • PS:其中rostopic pub为ros的发布命令。
  • rostopic pub -r rate-in-hz topic-name message-type message-content
    其中-r rate-in-hz 可以用 -1代替表示发送一次

上述内容为本人参考下方链接并结合自身操作所遇问题,对前者进行了相关补充,由于编者水平有限,如有错误,还请指出。

参考链接:> http://www.ncnynl.com/archives/201610/920.html

原创粉丝点击