(1)catkin创建ros package
catkin_creat_pkg test_ros std_msgs roscpp rospy
catkin_make
source ~/devel/setup.bash
(2)编写pubulisher节点talker1.cpp并publisher话题chatter消息String
#include "ros/ros.h"
#include "std_msgs/String.h"
#include <sstream>
int main(int argc, char **argv)
{
ros::init(argc,argv, "talker1");
ros::NodeHandle n;
ros::Publisher chatter_pub=n.advertise<std_msgs::String>("chatter",1000);
ros::Rate loop_rate(10);
int count = 0;
while(ros::ok())
{
std_msgs::String msg;
std::stringstream ss;
ss << "Hello world!" << count;
msg.data=ss.str();
ROS_INFO("%s", msg.data.c_str());
chatter_pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
++count;
}
return 0;
}
(3) listener1.cpp用户subscriber话题chatter消息
#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, "listener1");
ros::NodeHandle n;
ros::Subscriber sub=n.subscribe("chatter", 1000, chattercallback);
ros::spin();
return 0;
}(4)修改CMakeList.txt文件
## Declare a C++ executable
add_executable(talker1 src/talker1.cpp)
add_executable(listener1 src/listener1.cpp)
## Specify libraries to link a library or executable target against
target_link_libraries(talker1
${catkin_LIBRARIES}
)
target_link_libraries(listener1
${catkin_LIBRARIES}
)
(5)运行节点