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)