上机6 编写launch文件启动节点
本次实验以以下题目为样例:
编写launch文件启动节点通过launch文件向节点传入一个foat参数节点接受该参数,并通过std:.cout将参数输出修改launch文件的output参数,将节点的std::cout输出信息打印在终端
第一步 创建功能包:
mkdir -p ROS/shangji6/src
cd ROS/shangji6/src
catkin_init_workspace
catkin_create_pkg text roscpp std_msgs
cd text
mkdir launch
cd launch
vi mynode.launch
其中mynode.launch文件内容为
<launch>
<node pkg="text" type="float_param_node" name="float_param_node" output="screen">
<param name="float_param" value="2.5" /> <!-- 设置float_param的值为1.24 -->
</node>
</launch>
第二步 进入工作空间编译
cd ~/ROS/shangji6
catkin_make
第三步 编写.cpp节点
cd ~/ROS/shangji41/src/text/src
vi float_param_node.cpp
float_param_node.cpp如下:
#include <ros/ros.h>
#include <std_msgs/Float32.h>
int main(int argc, char **argv)
{
ros::init(argc, argv, "float_param_node");
ros::NodeHandle nh;
ros::NodeHandle pnh("~");
// 获取名为float_param的参数
float float_param;
if (!pnh.param<float>("float_param", float_param,0.1))
{
ROS_ERROR("Failed to get float_param parameter.");
return -1;
}
// 打印参数
ROS_INFO("Received float_param: %f", float_param);
return 0;
}
第四步 CMakeLists.txt配置.cpp文件:
在CMakeLists.txt中添加以下内容
add_executable(float_param_node
src/float_param_node.cpp
)
target_link_libraries(float_param_node
${catkin_LIBRARIES}
)
第五步 launch文件启动节点
在工作空间下运行如下指令编译并运行 launch文件:
cd ~/ROS/shangji6
catkin_make
source devel/setup.bash
roslaunch text mynode.launch
可以观察到如下信息