1 编写
先建立一个catkin空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
为发布节点单独建立一个包
cd ~/catkin_ws/src
catkin_create_pkg publisher geometry_msgs std_msgs roscpp rospy
在包的src/文件夹下面编写一个publisher.cpp文件,用来向cmd_vel发布话题
#include "ros/ros.h"
#include "std_msgs/String.h"
#include "geometry_msgs/Twist.h"
int main(int argc, char **argv)
{
ros::init(argc, argv, "publisher");
ros::NodeHandle n;
ros::Publisher pub = n.advertise("/cmd_vel", 1000);
ros::Rate loop_rate(10);
geometry_msgs::Twist msg;
while (ros::ok())
{
msg.linear.x = 0.5;
msg.linear.y = 0;
msg.linear.z = 0;
msg.angular.x = 0;
msg.angular.y = 0;
msg.angular.z = 0.5;
pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
}
return 0;
}
修改~/catkin_ws/src/publisher/CMakeList文件
在末尾添加两句
add_executable(publisher src/publisher.cpp)
target_link_libraries(publisher ${catkin_LIBRARIES})
要指定必须构建的可执行目标,我们必须使用add_executable()
其中 publisher为将要构建的可执行文件 后面的路径为存放用于构建可执行文件的代码文件
使用target_link_libraries()函数来指定可执行目标链接的库。
2 编译
完成以上之后 回到工作空间
cd ~/catkin_ws
catkin_make
3 执行
新终端 roscore
新终端如下
source ~/catkin_ws/devel/setup.bash
rosrun publisher(包名) publisher(生成的可执行文件名)