66
77**/
88
9- #include < iostream>
10- #include < string>
11- #include < vector>
12-
13- #include < ros/ros.h>
14- #include < ros/console.h>
15- #include < std_msgs/String.h>
16- #include < std_msgs/Float32.h>
17- #include < nav_msgs/Odometry.h>
18- #include < geometry_msgs/Pose.h>
19- #include < geometry_msgs/PoseStamped.h>
20- #include < geometry_msgs/TransformStamped.h>
21-
22- #include < tf2/convert.h>
23- #include < tf2/LinearMath/Matrix3x3.h>
24- #include < tf2/LinearMath/Transform.h>
25- #include < tf2/LinearMath/Quaternion.h>
26- #include < tf2_ros/transform_listener.h>
27- #include < tf2_ros/transform_broadcaster.h>
28- #include < tf2_geometry_msgs/tf2_geometry_msgs.h>
29-
30- namespace me5413_project
31- {
9+ #include " me5413_world/goal_publisher.hpp"
3210
33- class GoalPublisherNode
11+ namespace me5413_world
3412{
35- public:
36- GoalPublisherNode ();
37- virtual ~GoalPublisherNode () {};
38-
39- private:
40- void timerCallback (const ros::TimerEvent&);
41- void robotOdomCallback (const nav_msgs::Odometry::ConstPtr& odom);
42- void goalNameCallback (const std_msgs::String::ConstPtr& name);
43- void goalPoseCallback (const geometry_msgs::PoseStamped::ConstPtr& goal_pose);
44-
45- tf2::Transform convertPoseToTransform (const geometry_msgs::Pose& pose);
46- geometry_msgs::PoseStamped getGoalPoseFromConfig (const std::string& name);
47- std::pair<double , double > calculatePoseError (const geometry_msgs::Pose& pose_robot, const geometry_msgs::Pose& pose_goal);
48-
49- // ROS declaration
50- ros::NodeHandle nh_;
51- ros::Timer timer_;
52- ros::Subscriber sub_robot_odom_;
53- ros::Subscriber sub_goal_name_;
54- ros::Subscriber sub_goal_pose_;
55- ros::Publisher pub_goal_;
56- ros::Publisher pub_absolute_position_error_;
57- ros::Publisher pub_absolute_heading_error_;
58- ros::Publisher pub_relative_position_error_;
59- ros::Publisher pub_relative_heading_error_;
60- tf2_ros::Buffer tf2_buffer_;
61- tf2_ros::TransformListener tf2_listener_;
62- tf2_ros::TransformBroadcaster tf2_bcaster_;
63- // Robot pose
64- std::string world_frame_;
65- std::string map_frame_;
66- std::string robot_frame_;
67- geometry_msgs::Pose pose_world_robot_;
68- geometry_msgs::Pose pose_world_goal_;
69- geometry_msgs::Pose pose_map_robot_;
70- geometry_msgs::Pose pose_map_goal_;
71- std_msgs::Float32 absolute_position_error_;
72- std_msgs::Float32 absolute_heading_error_;
73- std_msgs::Float32 relative_position_error_;
74- std_msgs::Float32 relative_heading_error_;
75- };
7613
7714GoalPublisherNode::GoalPublisherNode () : tf2_listener_(tf2_buffer_)
7815{
@@ -81,10 +18,10 @@ GoalPublisherNode::GoalPublisherNode() : tf2_listener_(tf2_buffer_)
8118 this ->sub_goal_name_ = nh_.subscribe (" /rviz_panel/goal_name" , 1 , &GoalPublisherNode::goalNameCallback, this );
8219 this ->sub_goal_pose_ = nh_.subscribe (" /move_base_simple/goal" , 1 , &GoalPublisherNode::goalPoseCallback, this );
8320 this ->pub_goal_ = nh_.advertise <geometry_msgs::PoseStamped>(" /move_base_simple/goal" , 1 );
84- this ->pub_absolute_position_error_ = nh_.advertise <std_msgs::Float32>(" /me5413_project /absolute/position_error" , 1 );
85- this ->pub_absolute_heading_error_ = nh_.advertise <std_msgs::Float32>(" /me5413_project /absolute/heading_error" , 1 );
86- this ->pub_relative_position_error_ = nh_.advertise <std_msgs::Float32>(" /me5413_project /relative/position_error" , 1 );
87- this ->pub_relative_heading_error_ = nh_.advertise <std_msgs::Float32>(" /me5413_project /relative/heading_error" , 1 );
21+ this ->pub_absolute_position_error_ = nh_.advertise <std_msgs::Float32>(" /me5413_world /absolute/position_error" , 1 );
22+ this ->pub_absolute_heading_error_ = nh_.advertise <std_msgs::Float32>(" /me5413_world /absolute/heading_error" , 1 );
23+ this ->pub_relative_position_error_ = nh_.advertise <std_msgs::Float32>(" /me5413_world /relative/position_error" , 1 );
24+ this ->pub_relative_heading_error_ = nh_.advertise <std_msgs::Float32>(" /me5413_world /relative/heading_error" , 1 );
8825
8926 // Initialization
9027 this ->robot_frame_ = " base_link" ;
@@ -199,10 +136,10 @@ geometry_msgs::PoseStamped GoalPublisherNode::getGoalPoseFromConfig(const std::s
199136 */
200137
201138 double x, y, yaw;
202- nh_.getParam (" /me5413_project " + name + " /x" , x);
203- nh_.getParam (" /me5413_project " + name + " /y" , y);
204- nh_.getParam (" /me5413_project " + name + " /yaw" , yaw);
205- nh_.getParam (" /me5413_project /frame_id" , this ->world_frame_ );
139+ nh_.getParam (" /me5413_world " + name + " /x" , x);
140+ nh_.getParam (" /me5413_world " + name + " /y" , y);
141+ nh_.getParam (" /me5413_world " + name + " /yaw" , yaw);
142+ nh_.getParam (" /me5413_world /frame_id" , this ->world_frame_ );
206143
207144 tf2::Quaternion q;
208145 q.setRPY (0 , 0 , yaw);
@@ -240,12 +177,12 @@ std::pair<double, double> GoalPublisherNode::calculatePoseError(const geometry_m
240177 return std::pair<double , double >(position_error, heading_error);
241178}
242179
243- } // namespace lgsvl_utils
180+ } // namespace me5413_world
244181
245182int main (int argc, char ** argv)
246183{
247184 ros::init (argc, argv, " goal_publisher_node" );
248- me5413_project ::GoalPublisherNode goal_publisher_node;
185+ me5413_world ::GoalPublisherNode goal_publisher_node;
249186 ros::spin (); // spin the ros node.
250187 return 0 ;
251188}
0 commit comments