SMACC2
Loading...
Searching...
No Matches
cp_trajectory_history.hpp
Go to the documentation of this file.
1// Copyright 2021 RobosoftAI Inc.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15/*****************************************************************************************************************
16 *
17 * Authors: Pablo Inigo Blasco, Brett Aldrich
18 *
19 *****************************************************************************************************************/
20
21#pragma once
22
23#include <smacc2/component.hpp>
24
25#include <moveit_msgs/msg/move_it_error_codes.hpp>
26#include <moveit_msgs/msg/robot_trajectory.hpp>
27
28namespace cl_moveit2z
29{
31{
32 moveit_msgs::msg::RobotTrajectory trajectory;
33 moveit_msgs::msg::MoveItErrorCodes result;
34 std::string name;
35};
36
38{
39public:
40 inline bool getLastTrajectory(int backIndex, moveit_msgs::msg::RobotTrajectory & trajectory)
41 {
42 if (trajectoryHistory_.size() == 0)
43 {
44 RCLCPP_WARN_STREAM(
45 getLogger(), "[" << getName() << "] requested index: " << backIndex
46 << ", history size: " << trajectoryHistory_.size());
47 return false;
48 }
49
50 if (backIndex < 0)
51 {
52 backIndex = 0;
53 }
54 else if ((size_t)backIndex >= this->trajectoryHistory_.size())
55 {
56 RCLCPP_WARN_STREAM(
57 getLogger(), "[" << getName() << "] requested index: " << backIndex
58 << ", history size: " << trajectoryHistory_.size());
59 return false;
60 }
61
62 trajectory =
63 this->trajectoryHistory_[this->trajectoryHistory_.size() - 1 - backIndex].trajectory;
64 return true;
65 }
66
67 inline bool getLastTrajectory(moveit_msgs::msg::RobotTrajectory & trajectory)
68 {
69 return getLastTrajectory(-1, trajectory);
70 }
71
72 inline void pushTrajectory(
73 std::string name, const moveit_msgs::msg::RobotTrajectory & trajectory,
74 moveit_msgs::msg::MoveItErrorCodes result)
75 {
76 RCLCPP_INFO_STREAM(
77 getLogger(), "[" << getName() << "] adding a new trajectory to the history ( "
78 << trajectory.joint_trajectory.points.size() << " poses)");
79
81 this->trajectoryHistory_.push_back(entry);
82
83 auto & last = this->trajectoryHistory_.back();
84 last.trajectory = trajectory;
85 last.result = result;
86 last.name = name;
87 }
88
89private:
90 std::vector<TrajectoryHistoryEntry> trajectoryHistory_;
91};
92} // namespace cl_moveit2z
bool getLastTrajectory(moveit_msgs::msg::RobotTrajectory &trajectory)
std::vector< TrajectoryHistoryEntry > trajectoryHistory_
void pushTrajectory(std::string name, const moveit_msgs::msg::RobotTrajectory &trajectory, moveit_msgs::msg::MoveItErrorCodes result)
bool getLastTrajectory(int backIndex, moveit_msgs::msg::RobotTrajectory &trajectory)
virtual std::string getName() const
rclcpp::Logger getLogger() const
moveit_msgs::msg::RobotTrajectory trajectory
moveit_msgs::msg::MoveItErrorCodes result