码迷,mamicode.com
首页 > 其他好文 > 详细

nodelet的应用

时间:2017-06-19 19:42:07      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:zhang   hang   esc   details   virtual   pen   list   hive   编译   

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的应用

标签:zhang   hang   esc   details   virtual   pen   list   hive   编译   

原文地址:http://www.cnblogs.com/gary-guo/p/7049941.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!