Our coordination framework for multi-robot exploration needs to know the current robot’s pose (position and orientation) within the explored map frame.

There are two ways to achieve it:

1 – Using costmap function.

 bool costmap_2d::Costmap2DROS::getRobotPose(tf::Stamped& global_pose) const

2 – Using tf listener.

 geometry_msgs::PoseStamped pose_stamped;

 pose_stamped.header.stamp = ros::Time::now();
 pose_stamped.header.frame_id = tf_prefix + "/" + map_frame;

 pose_stamped.pose.position.x = transform.getOrigin().getX();
 pose_stamped.pose.position.y = transform.getOrigin().getY();
 pose_stamped.pose.position.z = transform.getOrigin().getZ();

 pose_stamped.pose.orientation.x = transform.getRotation().getX();
 pose_stamped.pose.orientation.y = transform.getRotation().getY();
 pose_stamped.pose.orientation.z = transform.getRotation().getZ();
 pose_stamped.pose.orientation.w = transform.getRotation().getW();

 pose_publisher.publish(pose_stamped);

A complete implementation of the second method can be found http://wiki.ros.org/pose_publisher.

Both methods need a transform from “map” to “odom” (gmapping can do this).

Our coordination framework will be released after the corresponding paper has been published.

Leave a reply

required

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>