ROS发布&订阅字符串

来源:互联网 发布:猎趣钓鱼网站源码 编辑:程序博客网 时间:2024/06/14 20:26

Ros版本   :Kinetic

Linux版本:Ubuntu16.04

Step1:创建工作分区   

mkdir -p workSpace/srccd ~/workSpace/srccatkin_init_workspace
Step2:创建工程包

(1)进入工作空间

cd ~/workSpace/src
(2)使用 catkin_create_pkg 命令创建,格式为:catkin_create_pkg+包名+std_msgs rospy roscpp(std_msgs rospy roscpp为包依赖)

catkin_create_pkg first std_msgs rospy roscpp
(3)编译工程包

cd ~/workSpacecatkin_make
Step3:书写发布节点

(1)切换到刚才创建的first工程包

cd ~/workSpace/src/first
(2)进入到src文件中

cd ./src
(3)创建publish.cpp文件

touch publish.cpp
(4)打开publish.cpp文件并书写下面代码

#include "ros/ros.h"#include "std_msgs/String.h"#include <sstream>int main(int argc,char **argv){ros::init(argc,argv,"publish");ros::NodeHandle ch;ros::Publisher chatterPublish = ch.advertise<std_msgs::String>("chatter",1000);ros::Rate loop_rate(25);int count = 0;while(ros::ok()){std_msgs::String msg;std::stringstream stringStr;stringStr << count;msg.data = stringStr.str();ROS_INFO("%s",msg.data.c_str());chatterPublish.publish(msg);ros::spinOnce();loop_rate.sleep();++count;}return 0;}
Step4:书写接收节点
(1)创建subscribe.cpp文件

touch subscribe.cpp
(2)打开subscribe.cpp文件并书写下面代码

#include "ros/ros.h"#include "std_msgs/String.h"void chatterCallback(const std_msgs::String::ConstPtr& msg){ROS_INFO("I heard : [%s]",msg->data.c_str());}int main(int argc,char **argv){ros::init(argc,argv,"subscribe");ros::NodeHandle ch;ros::Subscriber chatterSubscribe = ch.subscribe("chatter",1000,chatterCallback);ros::spin();return 0;}
Step5:编辑CMakeLists.txt文件

(1)切换到first工程包下

cd ..

(2)打开first工程包下CMakeLists.txt文件

gedit CMakeLists.txt
(3)在CMakeLists.txt文件后添加如下语句

include_directories(include ${catkin_INCLUDE_DIRS})add_executable(publish src/publish.cpp)target_link_libraries(publish ${catkin_LIBRARIES})add_executable(subscribe src/subscribe.cpp)target_link_libraries(subscribe ${catkin_LIBRARIES})

Step5:程序测试

(1)切换到workSpace 文件下

cd ~/workSpace
(2)编译工程包

catkin_make
(3)在运行ROS前,需要先打开核心程序

roscore
(4) 进行程序注册

cd ~/workSpacesource ./devel/setup.bash

(5)运行publish节点

source ./devel/setup.bashrosrun first publish
(6)publish效果如下
[ INFO] [1503411559.389559783]: 728[ INFO] [1503411559.429590639]: 729[ INFO] [1503411559.469584022]: 730[ INFO] [1503411559.509559116]: 731[ INFO] [1503411559.549610605]: 732[ INFO] [1503411559.589573180]: 733[ INFO] [1503411559.629562030]: 734[ INFO] [1503411559.669586479]: 735[ INFO] [1503411559.709607218]: 736[ INFO] [1503411559.749559386]: 737[ INFO] [1503411559.789595977]: 738[ INFO] [1503411559.829607695]: 739[ INFO] [1503411559.869589854]: 740[ INFO] [1503411559.909561388]: 741
(7)运行subscribe节点
source ./devel/setup.bashrosrun first subscribe
(8)subscribe效果如下

[ INFO] [1503411559.389923540]: I heard : [728][ INFO] [1503411559.430051186]: I heard : [729][ INFO] [1503411559.470006422]: I heard : [730][ INFO] [1503411559.510059517]: I heard : [731][ INFO] [1503411559.550007881]: I heard : [732][ INFO] [1503411559.590005653]: I heard : [733][ INFO] [1503411559.630056561]: I heard : [734][ INFO] [1503411559.670017638]: I heard : [735][ INFO] [1503411559.710036361]: I heard : [736][ INFO] [1503411559.750000053]: I heard : [737][ INFO] [1503411559.789929008]: I heard : [738][ INFO] [1503411559.830030398]: I heard : [739][ INFO] [1503411559.869964462]: I heard : [740][ INFO] [1503411559.909935796]: I heard : [741]

注:由于时间原因,很多内容未详细展开,如有问题,请在下方留言微笑

注:由于时间原因,里面很多内容未能展开,如有大家有什么疑问,请在下方留言









原创粉丝点击