Patrick, I tried for awhile to get the commanded velocity from the base_local_planner to fall outside of the maximum limits using your configuration files in stage and failed. I can't get the commanded x velocity to go above 0.2 m/s and the rotational velocity never goes above 0.15 rad/sec, both of which are within the specified limits. What version of navigation are you using? I've been testing on 1.2.2, which is the latest Cturtle release. Perhaps its a problem with a previous version? With that said, your velocity and acceleration limits are different enough from the defaults that it required tuning some parameters to get things to run smoothly. With the parameters you provided, the robot wouldn't go much of anywhere. I made a few modifications, which I'll include below to get things working in a reasonable manner. First, I upped the sim_time parameter to 2.0 seconds from the default of 1.0 second. I did this because you have a very low maximum linear velocity and trajectories are scored from their endpoints, so simulating them a bit further helps to differentiate between paths. Also, since you have a really low maximum for your angular velocity, I felt like it might be helpful for the robot to attempt to follow the global plan more closely. To this end, I upped the path_distance_bias weight and dropped the goal_distance_bias weight. I only spent about 2 minutes tuning the parameters, so I'm sure that you'd be able to get even better behavior by playing around some more (upping the sim_time even more, or the trade off between following the path and moving towards the goal... see: http://www.ros.org/wiki/base_local_planner for parameter descriptions), but this at least exhibits reasonable results for me in simulation. My changes can be found below: TrajectoryPlannerROS: max_vel_x: 0.2 min_vel_x: 0.05 max_rotational_vel: 0.15 min_in_place_rotational_vel: 0.1 acc_lim_th: 2.0 acc_lim_x: 1.0 acc_lim_y: 1.0 yaw_goal_tolerance: 0.2 xy_goal_tolerance: 0.2 controller_frequency: 5.0 holonomic_robot: false path_distance_bias: 0.8 goal_distance_bias: 0.4 sim_time: 2.0 Hope this helps and that all is well, Eitan On Mon, Sep 27, 2010 at 7:44 AM, Patrick Goebel wrote: > Hello, > > For the past month I have been going through the ROS tutorials and > trying everything out on my robot (http://www.pirobot.org) which uses a > Serializer PID controller for the drive wheels and seems to work well > outside of ROS for moving the robot particular distances at specified > speeds. > > I am now trying to get the navigation stack up and running and I think I > am 95% of the way there. The one glitch seems to be similar to what was > reported by Christian Verbeek on this thread. Namely, the > base_local_planner appears to be issuing velocity commands that exceed > the maximums I have set. For example, I have max_vel_x set to 0.2, yet > I am seeing numbers as high as 0.84 on /cmd_vel while simply trying to > move 1 meter forward. Similarly, I have max_rotational_vel set to 0.15, > but I have seen greater values there too. This is not a rare occurrence > but happens on almost every nav goal I set in rviz or publish from the > command line. Hopefully I am just making a beginner's mistake but I > have played around with the parameters for two days now and I can't make > the problem go away. > > Here are some of my config files: > > base_local_planner_params.yaml: > TrajectoryPlannerROS: > max_vel_x: 0.2 > min_vel_x: 0.05 > max_rotational_vel: 0.15 > min_in_place_rotational_vel: 0.1 > acc_lim_th: 2.0 > acc_lim_x: 1.0 > acc_lim_y: 1.0 > yaw_goal_tolerance: 0.2 > xy_goal_tolerance: 0.2 > controller_frequency: 5.0 > holonomic_robot: false > > cost_common_params.yaml: > obstacle_range: 2.5 > raytrace_range: 3.0 > footprint: [[-0.13, 0.16], [0.13, 0.16], [0.13, -0.16], [-0.13, -0.16]] > #robot_radius: ir_of_robot > inflation_radius: 0.55 > transform_tolerance: 1.0 > observation_sources: base_scan > base_scan: {sensor_frame: base_link, data_type: LaserScan, topic: > base_scan, marking: true, clearing: true > > global_costmap_params.yaml: > global_costmap: > global_frame: map > robot_base_frame: base_link > update_frequency: 5.0 > static_map: true > rolling_window: false > > local_costmap_params.yaml: > local_costmap: > global_frame: odom > robot_base_frame: base_link > update_frequency: 5.0 > publish_frequency: 0 > static_map: false > rolling_window: true > width: 3.0 > height: 3.0 > resolution: 0.10 > > My map is simply a white square 500x500 pix at 0.10 resolution. > > My move_base.launch file looks like this: > > > > > > > > > > name="fake_localization" output="screen" /> > > > name="odom_map_broadcaster" args="0 0 0 0 0 0 /odom /map 100" /> > > output="screen"> > > command="load" ns="global_costmap" /> > command="load" ns="local_costmap" /> > command="load" /> > command="load" /> > command="load" /> > > > > I won't have a laser scanner until next month, so I am faking it with > the following node: > > import roslib; roslib.load_manifest('pi_robot') > import rospy > from sensor_msgs.msg import LaserScan > from tf.broadcaster import TransformBroadcaster > > rospy.init_node("base_scan") > scanPub = rospy.Publisher('base_scan', LaserScan) > scanBroadcaster = TransformBroadcaster() > > scan_rate = 10 > rate = rospy.Rate(scan_rate) > > rospy.loginfo("Started base scan at " + str(scan_rate) + " Hz") > > while not rospy.is_shutdown(): > > ranges = list() > > for i in range(30): > ranges.append(3) > > scan = LaserScan() > scan.header.stamp = rospy.Time.now() > scan.header.frame_id = "base_link" > scan.angle_min = -1.57 > scan.angle_max = 1.57 > scan.angle_increment = 0.108275862 > scan.scan_time = scan_rate > scan.range_min = 0.5 > scan.range_max = 6.0 > scan.ranges = ranges > scanPub.publish(scan) > > rate.sleep() > > > Thanks for your time! > > Patrick Goebel > > _______________________________________________ > ros-users mailing list > ros-users@code.ros.org > https://code.ros.org/mailman/listinfo/ros-users >