ObstacleAvoidingPlatformUnitHelper.h
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * ArmarX is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * ArmarX is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * @package RobotAPI::ArmarXObjects::ObstacleAvoidingPlatformUnit
17  * @author Christian R. G. Dreher <c.dreher@kit.edu>
18  * @date 2020
19  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20  * GNU General Public License
21  */
22 
23 
24 #pragma once
25 
26 
27 // Eigen
28 #include <Eigen/Core>
29 
30 // Simox
31 #include <VirtualRobot/VirtualRobot.h>
32 
33 // RobotAPI
35 
36 namespace armarx
37 {
38 
40  {
41 
42  public:
43  struct Config
44  {
45  float pos_reached_threshold = 10; // [mm]
46  float ori_reached_threshold = 0.1; // [rad]
47  float pos_near_threshold = 50; // [mm]
48  float ori_near_threshold = 0.2; // [rad]
49  };
50 
51  struct Target
52  {
53  Eigen::Vector2f pos;
54  float ori;
55  };
56 
57  public:
58  ObstacleAvoidingPlatformUnitHelper(armarx::PlatformUnitInterfacePrx platform_unit,
60 
61  ObstacleAvoidingPlatformUnitHelper(armarx::PlatformUnitInterfacePrx platform_unit,
63  const Config& cfg);
64 
66 
67  void setTarget(const Eigen::Vector2f& target_pos, float target_ori);
68 
69  void setTarget(const Target& target);
70 
71  Target getCurrentTarget() const;
72 
73  void update();
74 
75  void setWaypoints(const std::vector<Target>& waypoints);
76 
77  void addWaypoint(const Eigen::Vector2f& waypoint_pos, float waypoint_ori);
78 
79  void addWaypoint(const Target& waypoint);
80 
81  bool isLastWaypoint() const;
82 
83  bool isCurrentTargetNear() const;
84 
85  bool isCurrentTargetReached() const;
86 
87  bool isFinalTargetNear() const;
88 
89  bool isFinalTargetReached() const;
90 
91  void setMaxVelocities(float max_vel, float max_angular_vel);
92 
93  float getPositionError() const;
94 
95  float getOrientationError() const;
96 
97  private:
98  armarx::PlatformUnitInterfacePrx m_platform_unit;
99 
100  VirtualRobot::RobotPtr m_robot;
101 
102  std::vector<Target> m_waypoints;
103  unsigned int m_current_waypoint_index = 0;
104  bool m_waypoint_changed = false;
105 
106  Config m_cfg;
107  };
108 
109 } // namespace armarx
armarx::ObstacleAvoidingPlatformUnitHelper::Config::pos_reached_threshold
float pos_reached_threshold
Definition: ObstacleAvoidingPlatformUnitHelper.h:45
boost::target
Vertex target(const detail::edge_base< Directed, Vertex > &e, const PCG &)
Definition: point_cloud_graph.h:668
ObstacleAvoidingPlatformUnit.h
armarx::ObstacleAvoidingPlatformUnitHelper::setTarget
void setTarget(const Eigen::Vector2f &target_pos, float target_ori)
Definition: ObstacleAvoidingPlatformUnitHelper.cpp:54
armarx::ObstacleAvoidingPlatformUnitHelper::isCurrentTargetReached
bool isCurrentTargetReached() const
Definition: ObstacleAvoidingPlatformUnitHelper.cpp:140
armarx::ObstacleAvoidingPlatformUnitHelper::setWaypoints
void setWaypoints(const std::vector< Target > &waypoints)
Definition: ObstacleAvoidingPlatformUnitHelper.cpp:113
armarx::ObstacleAvoidingPlatformUnitHelper::isLastWaypoint
bool isLastWaypoint() const
Definition: ObstacleAvoidingPlatformUnitHelper.cpp:127
armarx::ObstacleAvoidingPlatformUnitHelper::Config
Definition: ObstacleAvoidingPlatformUnitHelper.h:43
armarx::ObstacleAvoidingPlatformUnitHelper::Target::ori
float ori
Definition: ObstacleAvoidingPlatformUnitHelper.h:54
armarx::ObstacleAvoidingPlatformUnitHelper::getOrientationError
float getOrientationError() const
Definition: ObstacleAvoidingPlatformUnitHelper.cpp:172
armarx::ObstacleAvoidingPlatformUnitHelper::Target
Definition: ObstacleAvoidingPlatformUnitHelper.h:51
armarx::ObstacleAvoidingPlatformUnitHelper::isCurrentTargetNear
bool isCurrentTargetNear() const
Definition: ObstacleAvoidingPlatformUnitHelper.cpp:133
armarx::ObstacleAvoidingPlatformUnitHelper::Config::ori_near_threshold
float ori_near_threshold
Definition: ObstacleAvoidingPlatformUnitHelper.h:48
armarx::ObstacleAvoidingPlatformUnitHelper::~ObstacleAvoidingPlatformUnitHelper
virtual ~ObstacleAvoidingPlatformUnitHelper()
Definition: ObstacleAvoidingPlatformUnitHelper.cpp:48
armarx::ObstacleAvoidingPlatformUnitHelper::Config::ori_reached_threshold
float ori_reached_threshold
Definition: ObstacleAvoidingPlatformUnitHelper.h:46
armarx::ObstacleAvoidingPlatformUnitHelper
Definition: ObstacleAvoidingPlatformUnitHelper.h:39
armarx::ObstacleAvoidingPlatformUnitHelper::ObstacleAvoidingPlatformUnitHelper
ObstacleAvoidingPlatformUnitHelper(armarx::PlatformUnitInterfacePrx platform_unit, VirtualRobot::RobotPtr robot)
Definition: ObstacleAvoidingPlatformUnitHelper.cpp:31
armarx::ObstacleAvoidingPlatformUnitHelper::isFinalTargetReached
bool isFinalTargetReached() const
Definition: ObstacleAvoidingPlatformUnitHelper.cpp:153
armarx::ObstacleAvoidingPlatformUnitHelper::isFinalTargetNear
bool isFinalTargetNear() const
Definition: ObstacleAvoidingPlatformUnitHelper.cpp:147
armarx::ObstacleAvoidingPlatformUnitHelper::getPositionError
float getPositionError() const
Definition: ObstacleAvoidingPlatformUnitHelper.cpp:165
armarx::ObstacleAvoidingPlatformUnitHelper::addWaypoint
void addWaypoint(const Eigen::Vector2f &waypoint_pos, float waypoint_ori)
Definition: ObstacleAvoidingPlatformUnitHelper.cpp:106
armarx::ObstacleAvoidingPlatformUnitHelper::Config::pos_near_threshold
float pos_near_threshold
Definition: ObstacleAvoidingPlatformUnitHelper.h:47
armarx::ObstacleAvoidingPlatformUnitHelper::Target::pos
Eigen::Vector2f pos
Definition: ObstacleAvoidingPlatformUnitHelper.h:53
armarx::ObstacleAvoidingPlatformUnitHelper::update
void update()
Definition: ObstacleAvoidingPlatformUnitHelper.cpp:76
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
armarx::ObstacleAvoidingPlatformUnitHelper::getCurrentTarget
Target getCurrentTarget() const
Definition: ObstacleAvoidingPlatformUnitHelper.cpp:70
VirtualRobot::RobotPtr
std::shared_ptr< class Robot > RobotPtr
Definition: Bus.h:19
armarx::ObstacleAvoidingPlatformUnitHelper::setMaxVelocities
void setMaxVelocities(float max_vel, float max_angular_vel)
Definition: ObstacleAvoidingPlatformUnitHelper.cpp:159