35
35
#include < interactive_markers/interactive_marker_server.h>
36
36
#include < interactive_markers/tools.h>
37
37
38
- #include < LinearMath/btVector3.h>
39
- #include < LinearMath/btAabbUtil2.h>
38
+ #include < tf/LinearMath/Vector3.h>
39
+
40
+ bool testPointAgainstAabb2 (const tf::Vector3 &aabbMin1, const tf::Vector3 &aabbMax1,
41
+ const tf::Vector3 &point)
42
+ {
43
+ bool overlap = true ;
44
+ overlap = (aabbMin1.getX () > point.getX () || aabbMax1.getX () < point.getX ()) ? false : overlap;
45
+ overlap = (aabbMin1.getZ () > point.getZ () || aabbMax1.getZ () < point.getZ ()) ? false : overlap;
46
+ overlap = (aabbMin1.getY () > point.getY () || aabbMax1.getY () < point.getY ()) ? false : overlap;
47
+ return overlap;
48
+ }
40
49
41
50
namespace vm = visualization_msgs;
42
51
43
52
class PointCouldSelector
44
53
{
45
54
public:
46
55
PointCouldSelector ( boost::shared_ptr<interactive_markers::InteractiveMarkerServer> server,
47
- std::vector<btVector3 >& points ) :
56
+ std::vector<tf::Vector3 >& points ) :
48
57
server_ ( server ),
49
58
min_sel_ ( -1 , -1 , -1 ),
50
59
max_sel_ ( 1 , 1 , 1 ),
@@ -82,7 +91,7 @@ class PointCouldSelector
82
91
}
83
92
84
93
vm::Marker makeBox ( vm::InteractiveMarker &msg,
85
- btVector3 min_bound, btVector3 max_bound )
94
+ tf::Vector3 min_bound, tf::Vector3 max_bound )
86
95
{
87
96
vm::Marker marker;
88
97
@@ -114,7 +123,7 @@ class PointCouldSelector
114
123
server_->insert ( msg );
115
124
}
116
125
117
- void updatePointCloud ( std::string name, std_msgs::ColorRGBA color, std::vector<btVector3 > &points )
126
+ void updatePointCloud ( std::string name, std_msgs::ColorRGBA color, std::vector<tf::Vector3 > &points )
118
127
{
119
128
// create an interactive marker for our server
120
129
vm::InteractiveMarker int_marker;
@@ -152,14 +161,14 @@ class PointCouldSelector
152
161
153
162
void updatePointClouds ()
154
163
{
155
- std::vector<btVector3 > points_in, points_out;
164
+ std::vector<tf::Vector3 > points_in, points_out;
156
165
points_in.reserve ( points_.size () );
157
166
points_out.reserve ( points_.size () );
158
167
159
168
// determine which points are selected (i.e. inside the selection box)
160
169
for ( unsigned i=0 ; i<points_.size (); i++ )
161
170
{
162
- if ( TestPointAgainstAabb2 ( min_sel_, max_sel_, points_[i] ) )
171
+ if ( testPointAgainstAabb2 ( min_sel_, max_sel_, points_[i] ) )
163
172
{
164
173
points_in.push_back ( points_[i] );
165
174
}
@@ -280,8 +289,8 @@ class PointCouldSelector
280
289
private:
281
290
boost::shared_ptr<interactive_markers::InteractiveMarkerServer> server_;
282
291
283
- btVector3 min_sel_, max_sel_;
284
- std::vector<btVector3 > points_;
292
+ tf::Vector3 min_sel_, max_sel_;
293
+ std::vector<tf::Vector3 > points_;
285
294
286
295
vm::InteractiveMarker sel_points_marker_;
287
296
vm::InteractiveMarker unsel_points_marker_;
@@ -297,7 +306,7 @@ double rand( double min, double max )
297
306
}
298
307
299
308
300
- void makePoints ( std::vector<btVector3 >& points_out, int num_points )
309
+ void makePoints ( std::vector<tf::Vector3 >& points_out, int num_points )
301
310
{
302
311
double radius = 3 ;
303
312
double scale = 0.2 ;
@@ -319,7 +328,7 @@ int main(int argc, char** argv)
319
328
boost::shared_ptr<interactive_markers::InteractiveMarkerServer> server (
320
329
new interactive_markers::InteractiveMarkerServer (" selection" ) );
321
330
322
- std::vector<btVector3 > points;
331
+ std::vector<tf::Vector3 > points;
323
332
makePoints ( points, 10000 );
324
333
325
334
PointCouldSelector selector ( server, points );
0 commit comments