1? 編寫
先建立一個(gè)catkin空間
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
為發(fā)布節(jié)點(diǎn)單獨(dú)建立一個(gè)包
cd ~/catkin_ws/src
catkin_create_pkg publisher geometry_msgs std_msgs roscpp rospy
在包的src/文件夾下面編寫一個(gè)publisher.cpp文件,用來向cmd_vel發(fā)布話題
#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})
要指定必須構(gòu)建的可執(zhí)行目標(biāo)银舱,我們必須使用add_executable()
其中 publisher為將要構(gòu)建的可執(zhí)行文件? 后面的路徑為存放用于構(gòu)建可執(zhí)行文件的代碼文件
使用target_link_libraries()函數(shù)來指定可執(zhí)行目標(biāo)鏈接的庫。
2 編譯
完成以上之后 回到工作空間
cd ~/catkin_ws
catkin_make
3 執(zhí)行
新終端 roscore
新終端如下
source ~/catkin_ws/devel/setup.bash
rosrun? publisher(包名) publisher(生成的可執(zhí)行文件名)