Ros版本 :Kinetic
Linux版本:Ubuntu16.04
Step1:创建工作分区
mkdir -p workSpace/src
cd ~/workSpace/src
catkin_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 ~/workSpace
catkin_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 ~/workSpace
source ./devel/setup.bash
(5)运行publish节点
source ./devel/setup.bash
rosrun 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.bash
rosrun 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]
注:由于时间原因,很多内容未详细展开,如有问题,请在下方留言
更多《计算机视觉与图形学》知识,可关注下方公众号:
注:由于时间原因,里面很多内容未能展开,如有大家有什么疑问,请在下方留言