diff --git a/ros2_control/package.xml b/ros2_control/package.xml
index ee20a4dbbd..f0189db691 100644
--- a/ros2_control/package.xml
+++ b/ros2_control/package.xml
@@ -14,6 +14,7 @@
controller_interface
controller_manager
hardware_interface
+ ros2_control_components
transmission_interface
joint_limits_interface
diff --git a/ros2_control_components/CMakeLists.txt b/ros2_control_components/CMakeLists.txt
new file mode 100644
index 0000000000..0e60e134e0
--- /dev/null
+++ b/ros2_control_components/CMakeLists.txt
@@ -0,0 +1,29 @@
+cmake_minimum_required(VERSION 3.5)
+project(ros2_control_components)
+
+# Default to C++14
+if(NOT CMAKE_CXX_STANDARD)
+ set(CMAKE_CXX_STANDARD 14)
+endif()
+
+# find dependencies
+find_package(ament_cmake REQUIRED)
+find_package(hardware_interface REQUIRED)
+
+install(
+ DIRECTORY include/
+ DESTINATION include
+)
+
+if(BUILD_TESTING)
+ find_package(ament_lint_auto REQUIRED)
+ ament_lint_auto_find_test_dependencies()
+endif()
+
+ament_export_include_directories(
+ include
+)
+ament_export_dependencies(
+ hardware_interface
+)
+ament_package()
diff --git a/ros2_control_components/include/ros2_control_components/base_interface.hpp b/ros2_control_components/include/ros2_control_components/base_interface.hpp
new file mode 100644
index 0000000000..0f9a3ac189
--- /dev/null
+++ b/ros2_control_components/include/ros2_control_components/base_interface.hpp
@@ -0,0 +1,54 @@
+// Copyright 2020 ROS2-Control Development Team
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef ROS2_CONTROL_COMPONENTS__BASE_INTERFACE_HPP_
+#define ROS2_CONTROL_COMPONENTS__BASE_INTERFACE_HPP_
+
+#include
+
+#include "hardware_interface/hardware_info.hpp"
+#include "hardware_interface/types/hardware_interface_status_values.hpp"
+
+namespace ros2_control_components
+{
+
+template
+class BaseInterface : public InterfaceType
+{
+public:
+ hardware_interface::return_type configure(const hardware_interface::HardwareInfo & info) override
+ {
+ info_ = info;
+ status_ = hardware_interface::status::CONFIGURED;
+ return hardware_interface::return_type::OK;
+ }
+
+ std::string get_name() const
+ {
+ return info_.name;
+ }
+
+ hardware_interface::status get_status() const final
+ {
+ return status_;
+ }
+
+protected:
+ hardware_interface::HardwareInfo info_;
+ hardware_interface::status status_;
+};
+
+} // namespace ros2_control_components
+
+#endif // ROS2_CONTROL_COMPONENTS__BASE_INTERFACE_HPP_
diff --git a/ros2_control_components/package.xml b/ros2_control_components/package.xml
new file mode 100644
index 0000000000..b54b813e44
--- /dev/null
+++ b/ros2_control_components/package.xml
@@ -0,0 +1,19 @@
+
+
+
+ ros2_control_components
+ 0.0.1
+ The package implements control components, i.e., joints and sensors, the logical building blocks of ros2_control system.
+
+ Denis Štogl
+ Apache License 2.0
+
+ hardware_interface
+
+ ament_lint_auto
+ ament_lint_common
+
+
+ ament_cmake
+
+