ROS教程1--创建节点

来源:互联网 发布:网络十二主神 编辑:程序博客网 时间:2024/06/08 03:18
  1. 编写cpp文件
//example1_a.cpp#include "ros/ros.h"#include "std_msgs/String.h"#include <sstream>int main(int argc, char **argv){  ros::init(argc, argv, "example1_a");  ros::NodeHandle n;  ros::Publisher pub = n.advertise<std_msgs::String>("message", 1000);  ros::Rate loop_rate(10);  while (ros::ok())  {    std_msgs::String msg;    std::stringstream ss;    ss << " I am the example1_a node ";    msg.data = ss.str();    //ROS_INFO("%s", msg.data.c_str());    pub.publish(msg);    ros::spinOnce();    loop_rate.sleep();  }  return 0;}

//

//example1_b.cpp#include "ros/ros.h"#include "std_msgs/String.h"void messageCallback(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, "example1_b");  ros::NodeHandle n;  ros::Subscriber sub = n.subscribe("message", 1000, messageCallback);  ros::spin();  return 0;}
  1. 编译节点
rosed chapter2_tutorials CMakeLists.txt

添加如下内容至文件末尾

include_directories(    include    ${catkin_INCLUDE_DIRS})add_executable(chap2_example1_a src/example1_a.cpp)add_executable(chap2_example1_b src/example1_b.cpp)add_dependencies(chap2_example1_a chapter2_tutorials_generate_messages_cpp)add_dependencies(chap2_example1_b chapter2_tutorials_generate_messages_cpp)target_link_libraries(chap2_example1_a ${catkin_LIBRARIES})target_link_libraries(chap2_example1_b ${catkin_LIBRARIES})
  1. 运行
roscore         //在三个新终端中运行rosrun chapter2_tutorials chap2_example1_arosrun chapter2_tutorials chap2_example1_b
  1. 注意事项
    在新的命令行下可能会出现无法找到新建的包的情况,需要更新一下
    在 ~/dev/catkin_ws/src 目录下,输入命令
source devel/setup.bash

或许也需要重新编译一下,输入命令如下

catkin_make     //在 ~/dev/catkin_ws/ 目录下//或者catkin_make chapter2_tutorials
阅读全文
0 0
原创粉丝点击