diff --git a/imu_complementary_filter/CMakeLists.txt b/imu_complementary_filter/CMakeLists.txt index e5091e9a..9fd0bb6e 100644 --- a/imu_complementary_filter/CMakeLists.txt +++ b/imu_complementary_filter/CMakeLists.txt @@ -7,6 +7,8 @@ find_package(catkin REQUIRED COMPONENTS cmake_modules geometry_msgs message_filters + nodelet + pluginlib roscpp sensor_msgs std_msgs @@ -19,6 +21,8 @@ catkin_package( CATKIN_DEPENDS geometry_msgs message_filters + nodelet + pluginlib roscpp sensor_msgs std_msgs @@ -40,13 +44,16 @@ add_library(complementary_filter ) target_link_libraries(complementary_filter ${catkin_LIBRARIES} ${Boost_LIBRARIES}) +# create complementary_filter_nodelet library +add_library (complementary_filter_nodelet src/complementary_filter_nodelet.cpp) +target_link_libraries(complementary_filter_nodelet complementary_filter ${catkin_LIBRARIES}) # create complementary_filter_node executable add_executable(complementary_filter_node src/complementary_filter_node.cpp) target_link_libraries(complementary_filter_node complementary_filter ${catkin_LIBRARIES}) -install(TARGETS complementary_filter +install(TARGETS complementary_filter complementary_filter_nodelet ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} @@ -64,3 +71,7 @@ install(DIRECTORY include/${PROJECT_NAME}/ FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE ) + +install(FILES complementary_filter_nodelet.xml + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +) diff --git a/imu_complementary_filter/complementary_filter_nodelet.xml b/imu_complementary_filter/complementary_filter_nodelet.xml new file mode 100644 index 00000000..b6020d02 --- /dev/null +++ b/imu_complementary_filter/complementary_filter_nodelet.xml @@ -0,0 +1,9 @@ + + + + + Complementary Filter nodelet publisher. + + + diff --git a/imu_complementary_filter/include/imu_complementary_filter/complementary_filter_nodelet.h b/imu_complementary_filter/include/imu_complementary_filter/complementary_filter_nodelet.h new file mode 100644 index 00000000..840e6411 --- /dev/null +++ b/imu_complementary_filter/include/imu_complementary_filter/complementary_filter_nodelet.h @@ -0,0 +1,17 @@ +#ifndef IMU_TOOLS_COMPLEMENTARY_FILTER_NODELET_H +#define IMU_TOOLS_COMPLEMENTARY_FILTER_NODELET_H + +#include + +#include "imu_complementary_filter/complementary_filter_ros.h" + +class ComplementaryFilterNodelet : public nodelet::Nodelet +{ + public: + virtual void onInit(); + + private: + boost::shared_ptr filter_; +}; + +#endif // IMU_TOOLS_COMPLEMENTARY_FILTER_NODELET_H diff --git a/imu_complementary_filter/package.xml b/imu_complementary_filter/package.xml index c860c434..96b3a75b 100644 --- a/imu_complementary_filter/package.xml +++ b/imu_complementary_filter/package.xml @@ -14,6 +14,8 @@ cmake_modules geometry_msgs message_filters + nodelet + pluginlib roscpp sensor_msgs std_msgs @@ -21,8 +23,14 @@ geometry_msgs message_filters nodelet + pluginlib roscpp sensor_msgs std_msgs tf + + + + + diff --git a/imu_complementary_filter/src/complementary_filter_nodelet.cpp b/imu_complementary_filter/src/complementary_filter_nodelet.cpp new file mode 100644 index 00000000..be7292bf --- /dev/null +++ b/imu_complementary_filter/src/complementary_filter_nodelet.cpp @@ -0,0 +1,14 @@ +#include "imu_complementary_filter/complementary_filter_nodelet.h" +#include + +void ComplementaryFilterNodelet::onInit() +{ + NODELET_INFO("Initializing Complementary Filter Nodelet"); + + ros::NodeHandle nh = getMTNodeHandle(); + ros::NodeHandle nh_private = getMTPrivateNodeHandle(); + + filter_.reset(new imu_tools::ComplementaryFilterROS(nh, nh_private)); +} + +PLUGINLIB_EXPORT_CLASS(ComplementaryFilterNodelet, nodelet::Nodelet)