From c2443489738351aede4a25a7c6199a14f3f58532 Mon Sep 17 00:00:00 2001 From: Autumn60 Date: Sun, 11 Aug 2024 13:32:08 +0900 Subject: [PATCH 1/2] create pkg directory Signed-off-by: Autumn60 --- .../booars_utils/CMakeLists.txt | 19 ++++++++++++++++++ .../booars_utils/package.xml | 20 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 aichallenge/workspace/src/aichallenge_submit/booars_utils/CMakeLists.txt create mode 100644 aichallenge/workspace/src/aichallenge_submit/booars_utils/package.xml diff --git a/aichallenge/workspace/src/aichallenge_submit/booars_utils/CMakeLists.txt b/aichallenge/workspace/src/aichallenge_submit/booars_utils/CMakeLists.txt new file mode 100644 index 00000000..693dcc12 --- /dev/null +++ b/aichallenge/workspace/src/aichallenge_submit/booars_utils/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.5) +project(booars_utils) + +if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 17) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(CMAKE_CXX_EXTENSIONS OFF) +endif() + +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic) +endif() + +find_package(ament_cmake_auto REQUIRED) +ament_auto_find_build_dependencies() + +include_directories(include) + +ament_auto_package() diff --git a/aichallenge/workspace/src/aichallenge_submit/booars_utils/package.xml b/aichallenge/workspace/src/aichallenge_submit/booars_utils/package.xml new file mode 100644 index 00000000..5bb22bbe --- /dev/null +++ b/aichallenge/workspace/src/aichallenge_submit/booars_utils/package.xml @@ -0,0 +1,20 @@ + + + + booars_utils + 0.1.0 + The booars_utils package + Akiro Harada + + Apache 2 + + ament_cmake_auto + + rclcpp + + ament_lint_auto + + + ament_cmake + + From 0f914b618779a03f8d414f995449e709c2e435aa Mon Sep 17 00:00:00 2001 From: Autumn60 Date: Sun, 11 Aug 2024 13:32:28 +0900 Subject: [PATCH 2/2] create function_timer.hpp Signed-off-by: Autumn60 --- .../booars_utils/ros/function_timer.hpp | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 aichallenge/workspace/src/aichallenge_submit/booars_utils/include/booars_utils/ros/function_timer.hpp diff --git a/aichallenge/workspace/src/aichallenge_submit/booars_utils/include/booars_utils/ros/function_timer.hpp b/aichallenge/workspace/src/aichallenge_submit/booars_utils/include/booars_utils/ros/function_timer.hpp new file mode 100644 index 00000000..56935e23 --- /dev/null +++ b/aichallenge/workspace/src/aichallenge_submit/booars_utils/include/booars_utils/ros/function_timer.hpp @@ -0,0 +1,52 @@ +// Copyright 2024 Booars +// +// 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 BOOARS_UTILS__ROS__FUNCTION_TIMER_HPP_ +#define BOOARS_UTILS__ROS__FUNCTION_TIMER_HPP_ + +#include +#include +#include + +namespace booars_utils::ros { + +class FunctionTimer { + private: + rclcpp::TimerBase::SharedPtr timer_; + + public: + using SharedPtr = std::shared_ptr; + + static SharedPtr create_function_timer(rclcpp::Node* node, + const double update_rate_hz, + std::function callback) { + return std::make_shared(node, update_rate_hz, callback); + } + + explicit FunctionTimer(rclcpp::Node* node, const double update_rate_hz, + std::function callback) { + const double dt = 1.0 / update_rate_hz; + + auto period = std::chrono::duration_cast( + std::chrono::duration(dt)); + timer_ = std::make_shared>( + node->get_clock(), period, std::move(callback), + node->get_node_base_interface()->get_context()); + node->get_node_timers_interface()->add_timer(timer_, nullptr); + } +}; + +} // namespace booars_utils::ros + +#endif // BOOARS_UTILS__ROS__FUNCTION_TIMER_HPP_