[ros-users] AMCL, Map Server, Stage World file

Suraj Swami suraj.g.swami at gmail.com
Fri Jun 25 21:33:21 UTC 2010


Hi Brain,

I am still not able to get AMCL working efficiently. Though I was able to
solve some of the issues.


- In the previous world file. The Pose was set to [ 0 0 0 ]
floorplan
> > (
> > ??name "willow"
> > ??bitmap "cave.pgm"
> > ??size3 [54.0 58.7 0.5]
> > ??pose [0 0 0]
> > )

Hence my map would was in 2,3,4th quadrant also. But the player map.h macro
wants the points to  be only in the 1st quadrant. And I guess hence the AMCL
driver also requires the MAP to be in the first quadrant starting from [0 0
0]. This did help.

- Next consideration was the resolution parameter in the map.yaml file. I
set it to 22.4/ 500 rather than (22.4 * 22.4) / ( 500 * 500 ).In the second
case the amcl would not work for me.


I have used the AMCL driver in Player. It gives very accurate calculated
location for the same map and smaller resolution for Laser Scanner. So I
guess there is still something wrong that I am doing. The files are as
follows.


MCL.World file:

define block model
(
  size3 [0.5 0.5 0.5]
  gui_nose 0
)

define topurg laser
(
  range_min 0.0
  range_max 15.0
  fov 240
  samples 1024
  # generic model properties
  color "black"
  size [ 0.05 0.05 0.1 ]
)

define erratic position
(
  #size3 [0.415 0.392 0.25]
  size3 [0.35 0.35 0.25]
  origin3 [-0.05 0 0 0]
  gui_nose 1
  drive "diff"
  topurg(pose [0.050 0.000 0.000])
)

define floorplan model
(
  # sombre, sensible, artistic
  color "gray30"

  # most maps will need a bounding box
  boundary 0

  gui_nose 0
  gui_grid 0
  gui_movemask 0
  gui_outline 0
  gripper_return 0
  fiducial_return 0
  laser_return 1
)

# set the resolution of the underlying raytrace model in meters
resolution 0.02

interval_sim 1  # simulation timestep in milliseconds
interval_real 1  # real-time interval between simulation updates in
milliseconds

window
(
  size [ 675.0 745.0 ]
  center [678.990 293.960]
  rotate [ 0.000 0 ]
  scale 28.806
)

# load an environment bitmap
floorplan
(
  name "willow"
  bitmap "cave.pgm"
  size3 [22.36067 22.36067 0.5]
  #pose [0 0 0]
  pose [11.2 11.2 0]

)



# throw in a robot
erratic( pose [0 0 0.000] name "era" color "blue")
block( pose [-13.924 25.020 0.000] color "red")


#######################################################################################################

map.yaml file :

image: cave.pgm
resolution: 0.0448
origin: [0.0, 0.0, 0.0]
occupied_thresh: 0.40
free_thresh: 0.05
negate: 0

###########################################################


node file :


#include <ros/ros.h>
#include <std_msgs/String.h>
#include <sstream>
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include "geometry_msgs/Twist.h"
#include <sensor_msgs/LaserScan.h>
#include "nav_msgs/GetMap.h"
#include "geometry_msgs/PoseWithCovarianceStamped.h"
#include "geometry_msgs/PoseArray.h"

#include <map>

#include <boost/bind.hpp>
#include <boost/thread/mutex.hpp>

#include "map/map.h" // To Include all Map Functions.
#include "map/map.c"
#include "map/map_range.c"
//#include "map/map_store.c"
#include "map/map_draw.c"



int main(int argc, char** argv)
{
  geometry_msgs::Twist cmd;
  geometry_msgs::Twist Pose_Array[100];



  char ch;
  int i;
  float rand,x;
  double range;
  ros::init(argc, argv, "talker");
  ros::NodeHandle n;

  map_t* map = map_alloc();


   ros::Rate loop_rate(5);

   cmd.linear.x = 0.5;
   cmd.linear.y = 0;
   cmd.angular.z = 0;

  ros::Publisher vel_pub_;
  vel_pub_ = n.advertise<geometry_msgs::Twist>("cmd_vel", 1);


   while (ros::ok())
  {
    vel_pub_.publish(cmd);

  }


}


I have attached the image file.



Thank you for the help.







Regards,
Suraj Swami

_______________________________________________

> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: /discuss/ros-users/attachments/20100623/ebd7971a/attachment-0001.htm
>
> ------------------------------
>
> Message: 11
> Date: Wed, 23 Jun 2010 19:45:37 -0700
> From: Brian Gerkey <gerkey at willowgarage.com>
> Subject: Re: [ros-users] AMCL, Map Server, Stage World file
> To: ros-users at code.ros.org
> Message-ID:
>        <AANLkTikZ7w8AaZtic8Lvpga8eqHn-qmnrRVw8BdzSaPq at mail.gmail.com>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Send me your world and launch files and I'll try to reproduce the problem.
>
>    brian.
>
> On Jun 21, 2010 2:45 PM, "Suraj Swami" <suraj.g.swami at gmail.com> wrote:
>
> Hi Brain,
>
> I am still not able to get amcl working. I changed the resolution in stage
> world file and in the map.yamp file .
>
>
> # load an environment bitmap
> floorplan
> (
>  name "willow"
>  bitmap "cave.pgm"
>  size3 [22.36067 22.36067 0.5]  # Its at 500 * 500 pixel image.
>  pose [0 0 0]
> )
>
> image: cave.pgm
> resolution: 0.002
> origin: [0.0, 0.0, 0.0]
> occupied_thresh: 0.65
> free_thresh: 0.196
> negate: 0
>
> I do not get right location. Do I need to take care of anything else.
>
> Thanks for the help.
>
> -Suraj.
>
>
> > hi Suraj,
> >
> > You probably have the resolution set incorrectly, but understandably
> > so, in map.yaml.  In the stage .world file, 'resolution' determines
> > the resolution of the underlying grid that's used for simulation.  The
> > resolution of a bitmap that you load (for example, to be used as a
> > background map), is determined by the combination of the bitmap's size
> > in pixels, and the size that you specify for the bitmap.
> >
> > In this case, you're using cave.pgm, which I assume was created from
> > Stage's cave.png, which is 500x500 pixels.  Given the size you're
> > setting, 54.0x58.7, the map resolution is about 0.11 m/pixel.  That's
> > the value you want to put in map.yaml.
> >
> > Now, why would a square bitmap be given a different size in X and Y?
> > Depending on the version of Stage you're using, the map boundaries
> > might be determined by the farthest-out black pixels, as opposed to
> > the actual image boundaries.  The slightly different values you're
> > using might be an attempt to account for the non-square scaling that
> > can result.  There's a ticket for that:
> > https://code.ros.org/trac/ros-pkg/ticket/4133 .
> >
> >        brian.
> >
> > On Thu, Jun 10, 2010 at 11:42 PM, Suraj Swami <suraj.g.swami at gmail.com>
> > wrote:
> > > Hi,
> > > I am trying to get understand how to use the AMCL package. I am using
> > > simulator stage. And have written a ?small node to make the robot move
> in
> > > the map. But I am not getting right amcl_pose values.
> > > I am not sure if my map_server and stage are well synchronized to have
> > the
> > > map data, resolution and origin.
> > > FILE: map.yaml
> > > image: cave.pgm
> > > resolution: 0.02
> > > origin: [0.0, 0.0, 0.0]
> > > occupied_thresh: 0.65
> > > free_thresh: 0.196
> > > negate: 0
> > >
> > > FILE: MCL.world
> > > define block model
> > > (
> > > ??size3 [0.5 0.5 0.5]
> > > ??gui_nose 0
> > > )
> > > define topurg laser
> > > (
> > > ??range_min 0.0
> > > ??range_max 30.0
> > > ??fov 360
> > > ??samples 720
> > > ??# generic model properties
> > > ??color "black"
> > > ??size [ 0.05 0.05 0.1 ]
> > > )
> > > define erratic position
> > > (
> > > ??#size3 [0.415 0.392 0.25]
> > > ??size3 [0.35 0.35 0.25]
> > > ??origin3 [-0.05 0 0 0]
> > > ??gui_nose 1
> > > ??drive "diff"
> > > ??topurg(pose [0.050 0.000 0.000])
> > > )
> > > define floorplan model
> > > (
> > > ??# sombre, sensible, artistic
> > > ??color "gray30"
> > > ??# most maps will need a bounding box
> > > ??boundary 0
> > > ??gui_nose 0
> > > ??gui_grid 0
> > > ??gui_movemask 0
> > > ??gui_outline 0
> > > ??gripper_return 0
> > > ??fiducial_return 0
> > > ??laser_return 1
> > > )
> > > # set the resolution of the underlying raytrace model in meters
> > > resolution 0.02
> > > interval_sim 1 ?# simulation timestep in milliseconds
> > > interval_real 1 ?# real-time interval between simulation updates in
> > > milliseconds
> > > window
> > > (
> > > ??size [ 675.0 745.0 ]
> > > ??center [678.990 293.960]
> > > ??rotate [ 0.000 0 ]
> > > ??scale 28.806
> > > )
> > > # load an environment bitmap
> > > floorplan
> > > (
> > > ??name "willow"
> > > ??bitmap "cave.pgm"
> > > ??size3 [54.0 58.7 0.5]
> > > ??pose [0 0 0]
> > > )
> > >
> > >
> > > # throw in a robot
> > > erratic( pose [0 0 0.000] name "era" color "blue")
> > > block( pose [-13.924 25.020 0.000] color "red")
> > >
> > >
> > > Is there a problem to synchronize the two files or is there any other
> > > parameters that I need to take care of ?
> > > Thank you.
> > > Regards,
> > > Suraj Swami
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > ros-users mailing list
> > > ros-users at code.ros.org
> > > https://code.ros.org/mailman/listinfo/ros-users
> > >
> > >
> >
> >
> >
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: /discuss/ros-users/attachments/20100623/5d853db0/attachment-0001.htm
>
> ------------------------------
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20100625/3997274b/attachment-0003.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: MCL.world
Type: application/octet-stream
Size: 1219 bytes
Desc: not available
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20100625/3997274b/attachment-0010.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: map.yaml
Type: application/octet-stream
Size: 110 bytes
Desc: not available
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20100625/3997274b/attachment-0011.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cave.pgm
Type: image/x-portable-graymap
Size: 250054 bytes
Desc: not available
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20100625/3997274b/attachment-0005.pgm>


More information about the ros-users mailing list