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

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
+ MCL.world (application/octet-stream)
+ map.yaml (application/octet-stream)
+ cave.pgm (image/x-portable-graymap)
Delete this message
Reply to this message
Author: Suraj Swami
Date:  
To: ros-users
Subject: Re: [ros-users] AMCL, Map Server, Stage World file
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
>
> 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 <>
> Subject: Re: [ros-users] AMCL, Map Server, Stage World file
> To: 
> Message-ID:
>        <>
> 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" <> 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 <>
> > 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
> > >
> > > https://code.ros.org/mailman/listinfo/ros-users
> > >
> > >
> >
> >
> >
> _______________________________________________
> ros-users mailing list
>
> 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
>
> ------------------------------
>
>