ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Charles's profile - activity

2012-10-16 05:42:23 -0500 received badge  Famous Question (source)
2012-10-16 05:42:23 -0500 received badge  Notable Question (source)
2012-10-16 05:42:23 -0500 received badge  Popular Question (source)
2012-09-06 02:04:29 -0500 received badge  Famous Question (source)
2012-09-05 19:45:25 -0500 received badge  Popular Question (source)
2012-09-05 19:45:25 -0500 received badge  Famous Question (source)
2012-09-05 19:45:25 -0500 received badge  Notable Question (source)
2012-08-20 16:54:52 -0500 received badge  Famous Question (source)
2012-07-11 03:18:24 -0500 received badge  Notable Question (source)
2012-04-11 06:26:14 -0500 received badge  Notable Question (source)
2012-03-22 03:41:34 -0500 received badge  Popular Question (source)
2011-11-23 18:19:23 -0500 commented question AMCL doesn't work well with my robot
Hokuyo UTM-30LX
2011-11-23 18:16:32 -0500 commented answer AMCL doesn't work well with my robot
Thank you! I did the sanity check. It seems the odomtry is reasonable.
2011-11-23 18:15:22 -0500 answered a question AMCL doesn't work well with my robot

Brian Gerkey:

Thank you for answering my questions.

I did the sanity check as you said, I think the odometry is reasonable. I put the video here: http://youtu.be/nNgkgiUnA3M

I also did the sanity check as the Navigation Tuning Guide said. The video is here:http://youtu.be/cAbMLa1msEU

I found that the AMCL worked better with my robot when I drove my robot with a high speed than a low speed. I made two video for a comparison. The slow speed one.The high speed one.

I got two questions after I read the navigation tutorials again and again:

1.The AMCL node provide a service named "global_localization". Is it necessary to call this service before testing the AMCL node?

2.How can I determine to set the "odom_model_type" to "diff" or "omni"? And the "laser_model_type".

2011-11-19 13:26:12 -0500 asked a question AMCL doesn't work well with my robot

Hi,everyone. I'm trying to turn on navigation module on my robot,but i don't know how to judge weather the AMCL is working well on my robot. These two videos were recorded when I driving my robot around with a joystick.

http://www.youtube.com/watch?v=nKyDSSDDfsU

http://www.youtube.com/watch?v=eJ9-8BQTi1M

According to the videos, particles have been updated, it seems that amcl really worked, but the red laser line didn't match the black line in the map very well, it seems that amcl didn't work well.

this is the output of tf_monitor:

RESULTS: for all Frames

Frames:
Frame: /base_link published by /we_base_odom Average Delay: 0.000288508 Max Delay: 0.00262595
Frame: /laser_link published by /base_laser_tf Average Delay: -0.099723 Max Delay: 0
Frame: /odom published by /amcl Average Delay: -0.17089 Max Delay: 0

All Broadcasters:
Node: /amcl 20.3454 Hz, Average Delay: -0.17089 Max Delay: 0
Node: /base_laser_tf 10.1956 Hz, Average Delay: -0.099723 Max Delay: 0
Node: /we_base_odom 44.4666 Hz, Average Delay: 0.000288508 Max Delay: 0.00262595

and this is the output of view_frames:

image description

AMCL:

<launch>
    <node name="amcl" pkg="amcl" type="amcl" output="screen" >
        <remap from="scan" to="scan" />

        <!-- Overall filter parameters -->
        <param name="min_particles" value="500"/>
        <param name="max_particles" value="5000"/>
        <param name="kld_err" value="0.05"/>
        <param name="kld_z" value="0.99"/>
        <param name="update_min_d" value="0.2"/>
        <param name="update_min_a" value="0.2"/>
        <param name="resample_interval" value="1"/>
        <param name="transform_tolerance" value="0.2"/>
        <param name="recovery_alpha_slow" value="0.0"/>
        <param name="recovery_alpha_fast" value="0.0"/>
        <param name="gui_publish_rate" value="10.0"/>

        <!-- Laser model parameters -->
        <param name="laser_max_beams" value="30"/>
        <param name="laser_z_hit" value="0.5"/>
        <param name="laser_z_short" value="0.05"/>
        <param name="laser_z_max" value="0.05"/>
        <param name="laser_z_rand" value="0.5"/>
        <param name="laser_sigma_hit" value="0.2"/>
        <param name="laser_lambda_short" value="0.1"/>
        <param name="laser_model_type" value="likelihood_field"/>
        <param name="laser_likelihood_max_dist" value="2.0"/>

        <!-- Odometery model parameters -->
        <param name="odom_model_type" value="diff"/>
        <param name="odom_alpha1" value="0.2"/>
        <param name="odom_alpha2" value="0.2"/>
        <param name="odom_alpha3" value="0.8"/>
        <param name="odom_alpha4" value="0.2"/>

    <!--param name="odom_model_type" value="omni"/>
    <param name="odom_alpha1" value="0.2"/>
    <param name="odom_alpha2" value="0.2"/>
    <param name="odom_alpha3" value="0.8"/>
    <param name="odom_alpha4" value="0.2"/>
    <param name="odom_alpha5" value="0.1"/-->

        <param name="odom_frame_id" value="odom"/>
        <param name="base_frame_id" value="base_link"/>
        <param name="global_frame_id" value="map"/>

        <param name="initial_pose_x" value="1.6"/>
        <param name="initial_pose_y" value="7.5"/>
    </node>
</launch>

costmap_common:

map_type: costmap
transform_tolerance: 0.5
obstacle_range: 2.5
raytrace_range: 3.0
inflation_radius: 0.55

observation_sources: base_scan

base_scan: {sensor_frame: laser_link,
            data_type: LaserScan,
            topic: /scan,
            expected_update_rate: 0.4,
            observation_persistence: 0.0,
            marking: true,
            clearing: true,
            min_obstacle_height: -0.10,
            max_obstacle_height: 2.0}

local_costmap:

#Independent settings for the local costmap
local_costmap:
    publish_voxel_map: true
    global_frame: odom
    robot_base_frame: base_link
    update_frequency: 5.0
    publish_frequency: 2.0
    static_map: false
    rolling_window: true
    width: 10.0
    height: 10.0
    resolution: 0.025
    origin_x: 0.0
    origin_y ...
(more)
2011-09-01 19:07:29 -0500 received badge  Popular Question (source)
2011-06-17 12:27:06 -0500 marked best answer Set the initial pose with rviz

Below are some quick instructions fro clock synchronization. chrony has been found to be the best ntp client over lossy wireless.

  1. manually sync NTP

    sudo ntpdate ntp.ubuntu.com

  2. Install Chrony

    sudo apt-get install chrony

2011-06-17 10:33:12 -0500 marked best answer robot don't try to match it's real position

Have you tried joysticking the robot around with AMCL running to see if you can get reasonable results independent of navigation? Have you been careful to set an initialpose that is close to the actual position of the robot in the map? Have you verified your odometry and laser scans are reasonable?

The navigation tuning guide gives some tips on how you might check your odometry is working.

2011-05-03 14:55:20 -0500 commented question robot don't try to match it's real position
It seems that AMCL didn't work, but the /map frame to /odom frame transformation was OK.
2011-05-03 14:54:45 -0500 commented question robot don't try to match it's real position
I have set the initialpose. I can use rviz to set the initialpose and send a goal to the robot. The robot move to the goal, when i give it a goal. But the laser scan line don't try to match the walls and the corners automatically.
2011-05-03 01:48:53 -0500 asked a question robot don't try to match it's real position

The navigation stack was running quite well in navigation stage with my navigation config file. From my understanding, the robot will try to match it's real position gradually, as long as it move around. But, in my physical robot, the robot don't try to match it's real position, when i give it a goal. The tf tree is OK. What is the problem maybe?

In addition, I can use my robot to built a good map. Does that means my odometry data is sensible ?

image description

2011-04-26 13:58:27 -0500 marked best answer set a goal in the inflated obstacles area

The navigation stack will not plan a path to a goal given in an inflated obstacle because a cell marked as such guarantees that any concave robot footprint would be in collision if the center-point of that footprint were placed at that cell. Basically, if the navigation stack were to attempt to achieve such a goal, it would hit something.

If you want the navigation stack to get as close to this goal as possible, you might want to check out the "default_tolerance" parameter that can be set on navfn documented here: http://www.ros.org/wiki/navfn#Parameters. Setting that parameter should allow you to specify goals inside of inflated obstacles where the robot will try to get close.

2011-04-24 21:30:53 -0500 answered a question set a goal in the inflated obstacles area

perhaps carrot_planner can solve this problem.

2011-04-24 16:41:46 -0500 answered a question set a goal in the inflated obstacles area

In my rviz, both of the fixed frame and target frame are '/map'. Following is my common costmap configuration:


map_type: costmap
transform_tolerance: 0.2
obstacle_range: 2.5
raytrace_range: 3.0
inflation_radius: 0.55
footprint: [[0.13, 0.35],
            [0.25, 0.15],
            [0.25, -0.15],
            [0.13, -0.35],
            [-0.13, -0.35],
            [-0.25, -0.15],
            [-0.25, 0.15],
            [-0.13, 0.35]]

observation_sources: base_scan

base_scan: {data_type: LaserScan,
            topic: /base_scan,
            expected_update_rate: 0.4,
            observation_persistence: 0.0,
            marking: true,
            clearing: true,
            min_obstacle_height: 0.08,
            max_obstacle_height: 2.0}

global_costmap:

global_costmap:
    publish_voxel_map: true
    global_frame: /map
    robot_base_frame: base_link
    update_frequency: 5.0
    publish_frequency: 0.0
    static_map: true
    rolling_window: false

local_costmap:

 
local_costmap:
    publish_voxel_map: true
    global_frame: odom
    robot_base_frame: base_link
    update_frequency: 5.0
    publish_frequency: 2.0
    static_map: false
    rolling_window: true
    width: 10.0
    height: 10.0
    resolution: 0.025
    origin_x: 0.0
    origin_y: 0.0

2011-04-23 01:52:26 -0500 commented answer Error assigning a python quaternion
Thanks. I met the same problem.
2011-04-23 01:51:17 -0500 answered a question set a goal in the inflated obstacles area

Yes, I have tried it by using navigation stage. When I set a goal in the inflated obstacles, the navigation stack didn't give a plan, and the robot began to rotate. After that, the stack threw an error.

[ERROR] [1303565646.145455982, 30.900000000]: Aborting because a valid plan could
 not be found. Even after executing all recovery behaviors
2011-04-22 21:10:29 -0500 asked a question set a goal in the inflated obstacles area

From my understanding, if we set a navigation goal in inflated obstacles, the navigation stack won't give a path plan. So, how can I configure the stack to let the it give a path plan, which navigate the robot to a position near the goal?

2011-04-15 06:44:17 -0500 received badge  Student (source)
2011-04-14 20:28:48 -0500 received badge  Supporter (source)
2011-04-14 20:27:42 -0500 received badge  Editor (source)
2011-04-14 20:05:03 -0500 asked a question Set the initial pose with rviz

Hi everyone! I got a problem when I run the navigation stack with rviz. When setting the initial pose with rivz I got a warning :

[ WARN] [1302846487.971832409]: Failed to transform initial pose in time (You requested a transform that is 0.054 miliseconds in the past, 
but the most recent transform in the tf buffer is 21.216 miliseconds old.
 When trying to transform between /map and /base_link.)

[ INFO] [1302846487.971997932]: Setting pose (1302846487.971978): 1.194 6.348 -1.571

Here is the results of the run tf tf_monitor command:


RESULTS: for all Frames

Frames: Frame: /base_link published by /we_base_odom Average Delay: 0.00026288 Max Delay: 0.000908351 Frame: /laser_link published by /base_laser_tf Average Delay: -0.024749 Max Delay: 0 Frame: /odom published by /amcl Average Delay: -0.175799 Max Delay: 0

All Broadcasters: Node: /amcl 13.3557 Hz, Average Delay: -0.175799 Max Delay: 0 Node: /base_laser_tf 39.866 Hz, Average Delay: -0.024749 Max Delay: 0 Node: /we_base_odom 49.9598 Hz, Average Delay: 0.00026288 Max Delay: 0.000908351

I run the rostopic echo /initialpose command, and I got the following outputs when I set the initial pose:

header: 
  seq: 2
  stamp: 
    secs: 0
    nsecs: 0
  frame_id: /map
pose: 
  pose: 
    position: 
      x: 1.19398033619
      y: 6.34785318375
      z: 0.0
    orientation: 
      x: 0.0
      y: 0.0
      z: -0.707106781187
      w: 0.707106781187
  covariance: [0.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06853891945200942, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
  
my tf tree is like: this /map->/odom->/base_link->/laser_link.

Here is the frame.pdf:

image description

How can I fix this problem? Thank you !