本文暂定为记录,目前写了一个订阅话题的节点
–2015.10.13
一、首先建一个包
我的工作空间catkin_ws事先建好了,路径是/home/siat/catkin_ws
然后运行以下命令在src文件夹下建立test包
$ cd ~/catkin_ws/src
$ catkin_create_pkg test roscpp
注意在包的名字后加上一些基本的依赖,比如roscpp和rospy这样就可以直接调用C++和python节点了,这将会在CMakeLists.txt中出现
find_package(catkin REQUIRED COMPONENTS roscpp)
注意如果没有加依赖,而是直接运行
$ catkin_create_pkg test
来创建包的,在CMakeLists.txt中是这样的
find_package(catkin REQUIRED)
在后面编译C++节点的时候将会提示“对各种ros类下的函数未定义的引用”
二、编写节点文件
ROS里每个节点都是一个执行文件,如果用C++来写的话就是.cpp文件编译生成的可执行文件,而Python就是.py文件。
在~/catkin_ws/src/test/src下新建一个test1.cpp文件作为测试节点,如下
/*test1.cpp
*创建时间:2015.10.13
* 作者:张京林
*/
#include "ros/ros.h"
#include "std_msgs/String.h"
#include <sstream>
void chatterCallback(const std_msgs::String::ConstPtr& msg)
{
ROS_INFO("I heard odom:[%s]",msg->data.c_str());
std::cout<<" chatterCallback run"<<std::endl;
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "test1");
ros::NodeHandle n;
ros::Subscriber sub = n.subscribe("talker",1000,chatterCallback);
std::cout<<" for test1"<<std::endl;
ros::spin();
return 0;
}
三、编写CMakeLists.txt文件
这里仅仅在自动生成的CMakeLists.txt文件后面加了以