Ask Your Question
0

Visualizing classified objects/clusters of laserscan in rviz

asked 2014-12-06 07:47:31 -0500

I have written a program to classify my each laser scan to find nearby objects/cluster(and all required information about those clusters) and in subsequent scans (while I am stationary, and world is moving) I am matching the new clusters with the old ones. I need help in visualizing what clusters I am getting. I am trying using MarkerArray to achieve this.

I have all the geometrical features of starting and ending point of different clusters. Now, how I create pose and position features using these physical features? Will giving slope of two points(in Cartesian coordinates) of one cluster as its pose work ?

edit retag flag offensive close merge delete

Comments

if geometry of your clusters is lines,yes you can use points or linelist. just publish them is the frame which you have their values.

bvbdort gravatar imagebvbdort ( 2014-12-06 08:33:11 -0500 )edit

I don't have any geometry right now. I just have two extreme points of all the clusters in polar form (lidar as origin) and I can find everything else using this. Can you please tell me how to create a line geometry with given two points. How should I use the published points to get a line?

Akash gravatar imageAkash ( 2014-12-06 08:42:04 -0500 )edit

And, yes, for now I am assuming my cluster to be a straight line connecting the two extreme ends.

Akash gravatar imageAkash ( 2014-12-06 08:44:38 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
1

answered 2014-12-06 09:26:54 -0500

bvbdort gravatar image

updated 2014-12-06 09:35:23 -0500

Line List is to draw lines for you case. Push start and end point of each line to line list variable in order.

It will draw a line between each pair of points, so 0-1, 2-3, 4-5, ...

This puslihing rviz marker lines tutorial is helpful.


    //some code with comments

    //publisher for line list marker
    ros::Publisher marker_pub = n.advertise<visualization_msgs::Marker>("visualization_marker", 10);

   //variable for line list marker    
    visualization_msgs::Marker line_list;

   // frame in which you have cluster coordinates
    line_list.header.frame_id = "/world_frame";  

   //marker type , scale,colour
    line_list.type = visualization_msgs::Marker::LINE_LIST;

   line_list.scale.x = 0.1;

    line_list.color.r = 1.0;
    line_list.color.a = 1.0;

    // assume you have 5 lines 
    for (int  i = 0; i < 5; ++i) 
        {
          geometry_msgs::Point line_start,line_end;

         // fill start and end coordinates 
          line_start.x = sx[i];
          line_start.y = sy[i];
          line_start.z = sz[i];

          line_end.x = ex[i];
          line_end.y = ey[i];
          line_end.z = ez[i];

          // The line list needs two points for each line
          line_list.points.push_back(line_start);
          line_list.points.push_back(line_end);
        }

        // publish marker
        marker_pub.publish(line_list);
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2014-12-06 07:47:31 -0500

Seen: 662 times

Last updated: Dec 06 '14