启动文件(launch)
下面的命令可以启动单个节点(首先需要roscore
运行节点管理器)
rosrun package_name executable_file_name
但是如果是比较大型的项目需要启动许多节点,使用rosrun命令显然效率太低,幸好ros提供了同时启动节点管理器(master)和多个节点的途径。
创建测试实例
创建工作空间
mkdir -p ~/test/src //工作区目录
cd ~/test/src
catkin_init_workspace //初始化工作区
cd ../
catkin_make
创建功能包( 在~/test/src文件夹下)
source ~/test/devel/setup.bash
catkin_create_pkg launch_test roscpp
cd launch_test
mkdir src
创建节点(存放在launch_test/src下)
launch_test_adv_node.cpp
#include <ros/ros.h>
#include <std_msgs/String.h>
#include <string>
int main(int argc, char** argv){
ros::init(argc,argv,"launch_test_adv_node");
ros::NodeHandle nh;
ros::Publisher launch_test_pub = nh.advertise<std_msgs::String>("launch_test",1000);
std_msgs::String test;
std::string o = "ros_launch_test: hello world, recieve count: ";
int count = 1;
ros::Rate rate(1);
while(ros::ok){
test.data = o + std::to_string(count++);
launch_test_pub.publish(test);
rate.sleep();
}
return 0;
}
launch_test_sub_node.cpp
#include <ros/ros.h>
#include <std_msgs/String.h>
void launch_sub_testCall(const std_msgs::String msg){
ROS_INFO_STREAM(msg.data)