cob_collision_velocity_filter.h
Go to the documentation of this file.
1 /*
2  * Copyright 2017 Fraunhofer Institute for Manufacturing Engineering and Automation (IPA)
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 
18 #ifndef COB_COLLISION_VELOCITY_FILTER_H
19 #define COB_COLLISION_VELOCITY_FILTER_H
20 
21 //##################
22 //#### includes ####
23 
24 // standard includes
25 //--
26 
27 // ROS includes
28 #include <ros/ros.h>
29 #include <XmlRpc.h>
30 
31 #include <pthread.h>
32 
33 // ROS message includes
34 #include <geometry_msgs/Twist.h>
35 #include <geometry_msgs/PolygonStamped.h>
36 #include <geometry_msgs/Polygon.h>
37 #include <nav_msgs/OccupancyGrid.h>
38 
39 #include <boost/tokenizer.hpp>
40 #include <boost/foreach.hpp>
41 #include <boost/algorithm/string.hpp>
42 
43 // ROS service includes
44 #include "cob_footprint_observer/GetFootprint.h"
45 
46 // dynamic reconfigure includes
47 #include <dynamic_reconfigure/server.h>
48 #include <cob_collision_velocity_filter/CollisionVelocityFilterConfig.h>
49 
50 // BUT velocity limited marker
52 
53 // Costmap for obstacle detection
55 
62 {
63 public:
64 
69 
74 
80  void joystickVelocityCB(const geometry_msgs::Twist::ConstPtr &twist);
81 
86  void readObstacles();
87 
91  void getFootprint(const ros::TimerEvent&);
92 
98  void dynamicReconfigureCB(const cob_collision_velocity_filter::CollisionVelocityFilterConfig &config,
99  const uint32_t level);
100 
102  //public
104 
105  //private
107 
110 
114 
117 
119  dynamic_reconfigure::Server<cob_collision_velocity_filter::CollisionVelocityFilterConfig> dyn_server_;
120  dynamic_reconfigure::Server<cob_collision_velocity_filter::CollisionVelocityFilterConfig>::CallbackType dynCB_;
121 
122 private:
123  /* core functions */
124 
126  //costmap_2d::Costmap2D costmap;
131  void performControllerStep();
132 
137  void obstacleHandler();
138 
139  /* helper functions */
140 
144  double sign(double x);
145 
151  double getDistance2d(geometry_msgs::Point a, geometry_msgs::Point b);
152 
159  bool obstacleValid(double x_obstacle, double y_obstacle);
160 
164  void stopMovement();
165 
166  pthread_mutex_t m_mutex;
167 
168  //obstacle_treshold
170 
171  //frames
173 
174  //velocity
175  geometry_msgs::Vector3 robot_twist_linear_, robot_twist_angular_;
178 
179  //obstacle avoidance
180  std::vector<geometry_msgs::Point> robot_footprint_;
184  nav_msgs::OccupancyGrid last_costmap_received_, relevant_obstacles_;
187 
188  // variables for slow down behavior
189  double last_time_;
190  double kp_, kv_;
192  double virt_mass_;
193 
194  // BUT velocity limited marker
196 
197 };
198 //CollisionVelocityFilter
199 
200 #endif
201 
CollisionVelocityFilter::dynCB_
dynamic_reconfigure::Server< cob_collision_velocity_filter::CollisionVelocityFilterConfig >::CallbackType dynCB_
Definition: cob_collision_velocity_filter.h:120
CollisionVelocityFilter::use_circumscribed_threshold_
double use_circumscribed_threshold_
Definition: cob_collision_velocity_filter.h:185
CollisionVelocityFilter::obstacleValid
bool obstacleValid(double x_obstacle, double y_obstacle)
checks if obstacle lies already within footprint -> this is ignored due to sensor readings of the hul...
Definition: cob_collision_velocity_filter.cpp:587
CollisionVelocityFilter::getDistance2d
double getDistance2d(geometry_msgs::Point a, geometry_msgs::Point b)
computes distance between two points
Definition: cob_collision_velocity_filter.cpp:574
CollisionVelocityFilter::vy_last_
double vy_last_
Definition: cob_collision_velocity_filter.h:191
ros::Publisher
CollisionVelocityFilter::vtheta_last_
double vtheta_last_
Definition: cob_collision_velocity_filter.h:191
CollisionVelocityFilter::sign
double sign(double x)
returns the sign of x
Definition: cob_collision_velocity_filter.cpp:579
CollisionVelocityFilter::ay_max_
double ay_max_
Definition: cob_collision_velocity_filter.h:177
CollisionVelocityFilter::footprint_right_initial_
double footprint_right_initial_
Definition: cob_collision_velocity_filter.h:182
CollisionVelocityFilter::robot_twist_angular_
geometry_msgs::Vector3 robot_twist_angular_
Definition: cob_collision_velocity_filter.h:175
ros.h
CollisionVelocityFilter::vx_last_
double vx_last_
Definition: cob_collision_velocity_filter.h:191
CollisionVelocityFilter::velocity_limited_marker_
cob_collision_velocity_filter::VelocityLimitedMarker velocity_limited_marker_
Definition: cob_collision_velocity_filter.h:195
CollisionVelocityFilter::topic_pub_command_
ros::Publisher topic_pub_command_
declaration of publisher
Definition: cob_collision_velocity_filter.h:112
CollisionVelocityFilter::robot_footprint_
std::vector< geometry_msgs::Point > robot_footprint_
Definition: cob_collision_velocity_filter.h:180
costmap_2d_ros.h
CollisionVelocityFilter::footprint_left_
double footprint_left_
Definition: cob_collision_velocity_filter.h:181
CollisionVelocityFilter::closest_obstacle_dist_
double closest_obstacle_dist_
Definition: cob_collision_velocity_filter.h:186
CollisionVelocityFilter::ax_max_
double ax_max_
Definition: cob_collision_velocity_filter.h:177
CollisionVelocityFilter::joystick_velocity_sub_
ros::Subscriber joystick_velocity_sub_
declaration of subscriber
Definition: cob_collision_velocity_filter.h:116
CollisionVelocityFilter::kv_
double kv_
Definition: cob_collision_velocity_filter.h:190
velocity_limited_marker.h
CollisionVelocityFilter::anti_collision_costmap_
costmap_2d::Costmap2DROS * anti_collision_costmap_
Definition: cob_collision_velocity_filter.h:125
CollisionVelocityFilter::stop_threshold_
double stop_threshold_
Definition: cob_collision_velocity_filter.h:185
CollisionVelocityFilter::kp_
double kp_
Definition: cob_collision_velocity_filter.h:190
CollisionVelocityFilter::virt_mass_
double virt_mass_
Definition: cob_collision_velocity_filter.h:192
CollisionVelocityFilter::dyn_server_
dynamic_reconfigure::Server< cob_collision_velocity_filter::CollisionVelocityFilterConfig > dyn_server_
dynamic reconfigure
Definition: cob_collision_velocity_filter.h:119
CollisionVelocityFilter::footprint_front_
double footprint_front_
Definition: cob_collision_velocity_filter.h:181
XmlRpc.h
CollisionVelocityFilter::last_costmap_received_
nav_msgs::OccupancyGrid last_costmap_received_
Definition: cob_collision_velocity_filter.h:184
CollisionVelocityFilter::vtheta_max_
double vtheta_max_
Definition: cob_collision_velocity_filter.h:176
cob_collision_velocity_filter::VelocityLimitedMarker
Definition: velocity_limited_marker.h:35
CollisionVelocityFilter::costmap_obstacle_treshold_
int costmap_obstacle_treshold_
Definition: cob_collision_velocity_filter.h:169
CollisionVelocityFilter::stopMovement
void stopMovement()
stops movement of the robot
Definition: cob_collision_velocity_filter.cpp:599
ros::TimerEvent
CollisionVelocityFilter::closest_obstacle_angle_
double closest_obstacle_angle_
Definition: cob_collision_velocity_filter.h:186
CollisionVelocityFilter::footprint_rear_initial_
double footprint_rear_initial_
Definition: cob_collision_velocity_filter.h:182
CollisionVelocityFilter::robot_twist_linear_
geometry_msgs::Vector3 robot_twist_linear_
Definition: cob_collision_velocity_filter.h:175
CollisionVelocityFilter::obstacle_damping_dist_
double obstacle_damping_dist_
Definition: cob_collision_velocity_filter.h:185
CollisionVelocityFilter::footprint_front_initial_
double footprint_front_initial_
Definition: cob_collision_velocity_filter.h:182
CollisionVelocityFilter
checks for obstacles in driving direction and stops the robot
Definition: cob_collision_velocity_filter.h:61
CollisionVelocityFilter::last_time_
double last_time_
Definition: cob_collision_velocity_filter.h:189
CollisionVelocityFilter::obstacles_sub_
ros::Subscriber obstacles_sub_
Definition: cob_collision_velocity_filter.h:116
CollisionVelocityFilter::nh_
ros::NodeHandle nh_
create a handle for this node, initialize node
Definition: cob_collision_velocity_filter.h:103
CollisionVelocityFilter::pnh_
ros::NodeHandle pnh_
Definition: cob_collision_velocity_filter.h:106
CollisionVelocityFilter::footprint_left_initial_
double footprint_left_initial_
Definition: cob_collision_velocity_filter.h:182
CollisionVelocityFilter::m_mutex
pthread_mutex_t m_mutex
Definition: cob_collision_velocity_filter.h:166
CollisionVelocityFilter::footprint_right_
double footprint_right_
Definition: cob_collision_velocity_filter.h:181
CollisionVelocityFilter::global_frame_
std::string global_frame_
Definition: cob_collision_velocity_filter.h:172
CollisionVelocityFilter::robot_frame_
std::string robot_frame_
Definition: cob_collision_velocity_filter.h:172
CollisionVelocityFilter::footprint_rear_
double footprint_rear_
Definition: cob_collision_velocity_filter.h:181
CollisionVelocityFilter::performControllerStep
void performControllerStep()
checks distance to obstacles in driving direction and slows down/stops robot and publishes command ve...
Definition: cob_collision_velocity_filter.cpp:234
CollisionVelocityFilter::costmap_received_
bool costmap_received_
Definition: cob_collision_velocity_filter.h:183
CollisionVelocityFilter::obstacleHandler
void obstacleHandler()
checks for obstacles in driving direction of the robot (rotation included) and publishes relevant obs...
Definition: cob_collision_velocity_filter.cpp:356
CollisionVelocityFilter::get_footprint_timer_
ros::Timer get_footprint_timer_
Timer for periodically calling GetFootprint Service.
Definition: cob_collision_velocity_filter.h:109
CollisionVelocityFilter::v_max_
double v_max_
Definition: cob_collision_velocity_filter.h:176
CollisionVelocityFilter::atheta_max_
double atheta_max_
Definition: cob_collision_velocity_filter.h:177
CollisionVelocityFilter::relevant_obstacles_
nav_msgs::OccupancyGrid relevant_obstacles_
Definition: cob_collision_velocity_filter.h:184
CollisionVelocityFilter::topic_pub_relevant_obstacles_
ros::Publisher topic_pub_relevant_obstacles_
Definition: cob_collision_velocity_filter.h:113
ros::Timer
CollisionVelocityFilter::influence_radius_
double influence_radius_
Definition: cob_collision_velocity_filter.h:185
costmap_2d::Costmap2DROS
ros::NodeHandle
ros::Subscriber


cob_collision_velocity_filter
Author(s): Matthias Gruhler, Michal Spanel
autogenerated on Mon May 1 2023 02:44:23