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 + +