nodelet的应用
Posted 郭润
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodelet的应用相关的知识,希望对你有一定的参考价值。
1.创建一个包,如example_pkg
catkin_create_pkg example_pkg
2.创建MyNodeletClass.h文件
cd ~/catkin_ws/src/example_pkg/
mkdir -p include/example_pkg
touch include/example_pkg/MyNodeletClass.h
vim include/example_pkg/MyNodeletClass.h
其内容为
#include <nodelet/nodelet.h>
namespace example_pkg
{
class MyNodeletClass : public nodelet::Nodelet
{
public:
virtual void onInit();
};
}
3.创建MyNodeletClass.cpp文件
cd ~/catkin_ws/src/example_pkg/
mkdir src
touch src/MyNodeletClass.cpp
vim src/MyNodeletClass.cpp
其内容为
// this should really be in the implementation (.cpp file) #include <ros/ros.h> #include <pluginlib/class_list_macros.h> #include <example_pkg/MyNodeletClass.h> namespace example_pkg { void MyNodeletClass::onInit() { NODELET_DEBUG("Initializing nodelet..."); ROS_INFO("Nodelet is Ok for test!!"); } } // watch the capitalization carefully PLUGINLIB_DECLARE_CLASS(example_pkg, MyNodeletClass, example_pkg::MyNodeletClass, nodelet::Nodelet)
成功则输出"Nodelet is Ok for test!!"
4.创建nodelet_plugins.xml文件
cd ~/catkin_ws/src/example_pkg/ mkdir plugins touch plugins/nodelet_plugins.xml vim plugins/nodelet_plugins.xml
其内容为
<library path="lib/libexample_pkg">
<class name="example_pkg/MyNodeletClass" type="example_pkg::MyNodeletClass" base_class_type="nodelet::Nodelet">
<description>
This is my nodelet.
</description>
</class>
</library>
5.修改package.xml文件,增加:
cd ~/catkin_ws/src/example_pkg/ vim package.xml
其内容为
<buildtool_depend>catkin</buildtool_depend> <build_depend>nodelet</build_depend> <build_depend>roscpp</build_depend> <run_depend>nodelet</run_depend> <run_depend>roscpp</run_depend> <!-- The export tag contains other, unspecified, tags --> <export> <!-- Other tools can request additional information be placed here --> <nodelet plugin="${prefix}/plugins/nodelet_plugins.xml" /> </export>
6.修改CMakeLists.txt
cd ~/catkin_ws/src/example_pkg vim CMakeLists.txt
其内容为
## Specify additional locations of header files
## Your package locations should be listed before other locations
include_directories(
include
${catkin_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
## Declare a C++ library
add_library(${PROJECT_NAME} src/MyNodeletClass.cpp)
add_dependencies(${PROJECT_NAME}
${${PROJECT_NAME}_EXPORTED_TARGETS}
${catkin_EXPORTED_TARGETS}
)
target_link_libraries(${PROJECT_NAME}
${catkin_LIBRARIES}
)
6.创建mynodelet.launch文件
d ~/catkin_ws/src/example_pkg/ mkdir launch touch launch/mynodelet.launch vim launch/mynodelet.launch
其内容为
<launch>
<node pkg="nodelet" type="nodelet" name="standalone_nodelet" args="manager" output="screen"/>
<node pkg="nodelet" type="nodelet" name="MyNodeletClass" args="load example_pkg/MyNodeletClass standalone_nodelet" output="screen">
</node>
</launch>
6.编译
cd ~/catkin_ws/
catkin_make
rospack profile
7.运行
- 新终端,运行roscore
$ roscore
- 新终端,运行launch
$ rosluanch examples_pkg mynodelet.launch
参考:
http://www.ncnynl.com/archives/201702/1326.html
http://blog.csdn.net/zhangrelay/article/details/62048915
http://rosclub.cn/post-164.html
http://blog.csdn.net/yiranhaiziqi/article/details/53308657
http://www.lai18.com/content/2386868.html
http://blog.csdn.net/zyh821351004/article/details/52143309
以上是关于nodelet的应用的主要内容,如果未能解决你的问题,请参考以下文章