@@ -57,6 +57,8 @@ std::vector<Eigen::Vector3d> prevTraj;
57
57
visualization_msgs::MarkerArray costMap_vis;
58
58
59
59
ros::Publisher queryPointEdt;
60
+ octomap::point3d qPt;
61
+ bool queryPtUpdated = false ;
60
62
61
63
/* *********************************************************************************************************************************************************
62
64
* -------------------------------------------------------------------Callbacks---------------------------------------------------------------------------*
@@ -103,14 +105,30 @@ void edt_cb(const geometry_msgs::PoseStamped msg)
103
105
{
104
106
octomap::point3d queryPt (msg.pose .position .x , msg.pose .position .y , msg.pose .position .z );
105
107
106
- float dist = costMap3D.costMap ->getDistance (queryPt);
107
- std::cout<<" Distance of queried point " <<queryPt<<" is :-> " <<dist<<std::endl;
108
-
108
+ std::cout<<" Here " <<std::endl;
109
+ qPt = queryPt;
110
+ queryPtUpdated = true ;
111
+ DynamicEDTOctomap costMap (5.0 , costMap3D.tree , costMap3D.start , costMap3D.end , false );
112
+
113
+ // check if the point is in the map
109
114
std_msgs::Float64 edt;
110
- edt.data = dist;
115
+ if (costMap3D.isInMap (queryPt))
116
+ {
117
+ std::cout<<costMap3D.start <<" " <<costMap3D.end <<std::endl;
118
+ std::cout<<" Inside Map" <<std::endl;
119
+ std::cout<<queryPt<<std::endl;
120
+ float dist = costMap.getDistance (queryPt);
121
+ std::cout<<" Distance of queried point " <<queryPt<<" is :-> " <<dist<<std::endl;
111
122
123
+ edt.data = dist;
124
+ }
125
+
126
+ else
127
+ {
128
+ edt.data = 1000 ;
129
+ }
112
130
queryPointEdt.publish (edt);
113
-
131
+
114
132
}
115
133
116
134
// /////////////////////////////////////////////////////////////////
@@ -166,9 +184,23 @@ void plan(ros::Publisher path, ros::Publisher map, ros::Publisher pathEDT)
166
184
DynamicEDTOctomap DistMap (5.0 , costMap3D.tree , costMap3D.start , costMap3D.end , false ); // take unknwon region as unoccupied
167
185
DistMap.update ();
168
186
187
+ octomap::point3d qp (24.23 , 0.0 ,1.25 );
188
+
189
+
169
190
// set this as the costMap in the costMap3D object
170
191
costMap3D.costMap = &DistMap;
171
192
193
+ if (queryPtUpdated)
194
+ {std::cout<<" --------------------------------------------------------------- Distance is " <<costMap3D.costMap ->getDistance (qp)<<std::endl;
195
+ std_msgs::Float64 edt;
196
+ edt.data = costMap3D.costMap ->getDistance (qPt);
197
+ queryPointEdt.publish (edt);
198
+ queryPtUpdated = false ;
199
+
200
+ }
201
+
202
+
203
+
172
204
// set planning range and pass cost map to planner
173
205
kAstar .init (costMap3D.start , costMap3D.end , currPose);
174
206
kAstar .setEnvironment (&DistMap);
@@ -183,10 +215,12 @@ void plan(ros::Publisher path, ros::Publisher map, ros::Publisher pathEDT)
183
215
{
184
216
status = kAstar .search (startPose, startVel, startAcc, goalPose, goalVel, true , false , 0.0 );
185
217
startOver = 0 ;
218
+ ros::spinOnce ();
186
219
}
187
220
else
188
221
{
189
222
status = kAstar .search (startPose, startVel, startAcc, goalPose, goalVel, false , false , 0.0 );
223
+ ros::spinOnce ();
190
224
}
191
225
192
226
std::cout<<" Planner output status is >>>>> " <<status<<std::endl;
@@ -237,7 +271,7 @@ void plan(ros::Publisher path, ros::Publisher map, ros::Publisher pathEDT)
237
271
generatedPathEDT.header .frame_id = " map" ;
238
272
generatedPathEDT.poses .push_back (pEdt);
239
273
240
- std::cout<<" Waypoint in current trajectory ..." <<pos<<std::endl;
274
+ // std::cout<<"Waypoint in current trajectory ..."<<pos<<std::endl;
241
275
242
276
if (-INF<pos (0 )<INF && -INF<pos (1 )<INF && -INF<pos (2 )<INF)
243
277
{
@@ -323,8 +357,8 @@ int main(int argc, char **argv)
323
357
ros::Publisher pathEDT = n.advertise <nav_msgs::Path>(" /fastPlanner_path_EDT" ,1 );
324
358
325
359
/* * EDT Subscriber and distance publisher **/
326
- ros::Subscriber queryPoint = n.subscribe <geometry_msgs::PoseStamped>(" /query_point_topic" , 1 , edt_cb);
327
- queryPointEdt = n.advertise <std_msgs::Float64 >(" /query_point_distance" , 1 );
360
+ ros::Subscriber queryPoint = n.subscribe <geometry_msgs::PoseStamped>(" /query_point_topic" , 1 , edt_cb);
361
+ queryPointEdt = n.advertise <std_msgs::Float64 >(" /query_point_distance" , 1 );
328
362
329
363
ros::Rate rate (20 );
330
364
@@ -333,7 +367,7 @@ int main(int argc, char **argv)
333
367
334
368
while (!goalReceived)
335
369
{
336
- std::cout<<" Waiting for goal ..." <<std::endl;
370
+ // std::cout<<"Waiting for goal ..."<<std::endl;
337
371
ros::spinOnce ();
338
372
rate.sleep ();
339
373
0 commit comments