When using the [pr2_2dnav_local](http://www.ros.org/wiki/pr2_2dnav_local) and setting a goal very close to an obstacle, the robot starts rotating in place. My guess is that this is related to the dynamic window controller, which can't find a suitable set of commands, even if the planner says the goal target is in a free cell. I've read the guide [here](http://www.ros.org/wiki/navigation/Tutorials/Navigation%20Tuning%20Guide), but I didn't find anything to solve this problem.
What parameters of the dwc should I change to avoid this effect?
A broader question is, would you use the default navigation stack to get close to an object (say a table) or do I need a custom package for that?
↧
Pr2 whirling like a dervish
↧
dwa_planner vs. base_local_planner
The navigation stack contains the trajectory planner and the dwa local planner. Which one should one rather use? Which one will most effort in the future go into?
The wiki provides only very sparse information about those two, and from it it seems strange that the two planners don't share more common code. Also it seems one copied a lot from the other, so there is a lot of duplicate similar code anyway, which for me would be a reason to unify the sources, so that bugfixes and improvements to one also affect the other.
↧
↧
Dynamic Window Approach(dwa) parameter should be false ? true ?
Hi, I'm using nav stack with both of my robot and turtlebot.
I have a question about dwa parameter.
Can I set it false ?
Without DWA, the robot moves fast(it's natural) and smoothly,
and can avoid obstacles correctly.
Also, turtlebot's dwa parameter is false(default) though wiki says nav stack uses dwa algorithm.
[http://www.ros.org/wiki/base_local_planner](http://www.ros.org/wiki/base_local_planner)Don't we need to use DWA algorithm ?
If yes, what kind of algorithm is used as local planner instead of DWA?
I have a question about dwa parameter.
Can I set it false ?
Without DWA, the robot moves fast(it's natural) and smoothly,
and can avoid obstacles correctly.
Also, turtlebot's dwa parameter is false(default) though wiki says nav stack uses dwa algorithm.
[http://www.ros.org/wiki/base_local_planner](http://www.ros.org/wiki/base_local_planner)Don't we need to use DWA algorithm ?
If yes, what kind of algorithm is used as local planner instead of DWA?
↧
TrajectoryPlanner vs DWAPlanner
We have a non-holonomic robot at our lab and I've been trying to make it move safely.
With the TrajectoryPlannerROS (with use_dwa enabled) it works, but I really like the modularity of DWAPlannerROS. So I tried this planner and to my surprise, the robot crashed almost every time using the same parameters at with the TrajectoryPlannerROS.
For what I can see, DWAPlanner is a cleaner version of TrajectoryPlanner, and should basically create the same behaviours. So what could be the problem?
↧
Testing DWA Local Planner - approaches goal, stops, keeps swinging left & right
I'm trying the DWA Local Planner as an alternative for the TrajectoryPlanner. At first it moves heading to the given goal pretty fast. But *close* to the goal, that is about half a meter which still is quite a distance considering that the whole world of the robot is just a plane of 2 by 3 meters, it kind of stops and keeps like dancing in place.
Here's my parameter dump for the [local costmap](http://pastebin.com/nb0c0gre) and the [DWA Local Planner](http://pastebin.com/4PD4ArCM). There has to be something wrong...
//edit: Okay, I overlooked an error message coming out of the local planner. Here it is:
> None of the 94 first of 94 (94) points of the global plan were in the local costmap and free
What might be causing this error?
Thanks for your help!
Cheers,
Hendrik
↧
↧
How do I implement a local planner that doesn't rotate in place?
I'm new to using the navigation stack, and I have a robot with Ackermann steering. When I simulate the robot, any 2D Nav Goal set behind it will cause the robot to freeze up, publishing angular cmd_vel values which it cannot realize. I'm looking to tweak the local planner so that I can match the capabilities of my robot. The docs say that dwa_local_planner is more modular, so I plan to use it (unless there is a reason I should use the regular base_local_planner). I know this is probably really simple, but I can't find anything in the documents that goes through this process.
Thanks in advance.
↧
Base local vs DWA planner for omnidirectional platform
I have a omnidirectional mobile platform , which it has the follow measures:
length:2550 mm width:1700 mmThe cinematic measures are:
Max Linear Velocity: 1m/sec Max Linear Acceleration 0.15m/sec Max Angular Velocity (rotation): 0.8 rad/sec Max Angular Acceleration: 0.12 rad/secAs you can see, the acceleration limits are too small. I need to use a path planner to send trajectories to the robot driver. To take advantage of the benefits of omnidirectional movement, is important that the planner be capable of plan paths in all direction, backward, and lateral inclusive. I have used both planners, Base Local and DWA and with DWA the results are a disaster. I have a doubt with the planner parameters: For example: in **Base Local**, are this the correct value of parameters?
transform_tolerance: 0.3 max_vel_x: 1.0 min_vel_x: 0.1 Can i put here a negative value of the max_vel_x, so that the robot moves backward? max_rotational_vel: 0.8 min_in_place_rotational_vel: 0.1 acc_lim_th: 0.12 acc_lim_x: 0.15 acc_lim_y: 0.15 holonomic_robot: true y_vels: '-1.0, -0.1, 0.1, 1.0' xy_goal_tolerance: 0.1 yaw_goal_tolerance: 0.1 vx_samples: 3 vtheta_samples: 20 controller_frequency: 10.0 sim_time: 1.7 sim_granularity: 0.025 meter_scoring: true pdist_scale: 0.2 gdist_scale: 0.8 occdist_scale: 0.01 heading_lookahead: 0.325 heading_scoring: false heading_scoring_timestep: 0.8 dwa: false oscillation_reset_dist: 0.05The problem is that the plan generates paths like a car, no like a holonomic robot, that is to say, if i send a goal pose in the same direction but a little before that the robot is, it should moves backward simply, instead, it makes a 180 degrees rotation, then moves straight, and finally makes a 180 degrees rotation again. This is no good for me. The **DWA** parameter values are:
acc_lim_x: 0.15 acc_lim_y: 0.15 acc_lim_th: 0.12 max_vel_x: 1.0 min_vel_x: -1.0 max_vel_y: 1.0 min_vel_y: -1.0 max_trans_vel: 1.0 min_trans_vel: 0.1 max_rot_vel: 0.8 min_rot_vel: 0.1 yaw_goal_tolerance: 0.1 xy_goal_tolerance: 0.1 sim_time: 1.7 sim_granularity: 0.025 vx_samples: 8 vy_samples: 10 vtheta_samples: 20 penalize_negative_x: false # controller_frequency: 20.0 path_distance_bias: 24.0 goal_distance_bias: 32.0 occdist_scale: 0.01 forward_point_distance: 0.0 stop_time_buffer: 0.5 scaling_speed: 0.25 max_scaling_factor: 0.2 oscillation_reset_dist: 0.05 rot_stopped_vel: 0.01 trans_stopped_vel: 0.01 sim_period: 0.1 use_dwa: falseFor global plan i use the **navfn** planner. Is something wrong? Apologies because the text is so large. Thank you very much for your help ;)
↧
Could not get global path when set to dwa_local_planner
Hi all
I am using Fuerte. I am trying the dwa local planner by setting the below in move_base node
param name="base_local_planner" value="dwa_local_planner/DWAPlannerROS"
The problem is that I am not able to get a valid control after I give a goal location. The terminal prompted that no valid control could be found.
"Aborting because a valid control could not be found. Even after executing all recovery behaviors"
I checked the DWAPlanner is able to publish a global_plan (according to the wiki: The portion of the global plan that the local planner is currently attempting to follow.) but no local plan published, even though the goal I put is just only small distance ahead.
Any idea about this? Thanks guys.
↧
multi robot collision avoidance package missing
Hi all,
The link to the package multi_robot_collision_avoidance (http://wiki.ros.org/multi_robot_collision_avoidance) is no longer active. I understand that kforge.ros.org is no longer active. Is it possible to obtain a copy of this package?
Are there other existing algorithms that can be used to do multi agent planning on a costmap?
↧
↧
How do I implement my own local planner?
I want to implement my own local planner that adheres to base_local_planner for use with move_base. I need to make a planner that does not allow for rotation in place (car-like steering). I have tried going through all the documentation and reading the source on Github, but it's a bit overwhelming. Can anyone point to kind of a minimal example that would adhere to the interface, or maybe give some points on how I could modify either base_local_planner or dwa_local_planner to fit my needs?
Thanks in advance.
↧
Virtual Corridor for Robot Navigation, Updating CostMap
Hello,
I'm asking this question again, in case there were some new thoughts from the ROS community
I'm trying to add a "virtual" corridor along the waypoints generated by the global planner (waypoints are in the middle of the virtual corridor), so the robot never leaves this "virtual" corridor when it's moving between the waypoints using a local planner. For example, if during the robot's navigation within this corridor, an obstacle appears in front of the robot and covers the entire width of the corridor, the robot should stop (Although there might be free spaces outside this virtual corridor), and if the obstacle did not cover the entire corridor, the robot should replan and find an alternative path which is still within the virtual corridor.
Apparently, the default local planners (DWA, or Trajectory Rollout) in the ROS Navigation Stack do not support such a functionality.
is it possible to manually update the costmap (using the layered costmap?), so everything outside the certain distance of the global path (i.e. outside the virtual corridor) become obstacles, so that the robot never leaves the virtual corridor?
Or any other thoughts on how to implement this feature?
Thanks
↧
Changing global/local planner weights
Hi,
I'm using a turtlebot 2 to build the map of a room and a corridor. I was having some problems because there's a *glass wall* between them and the kinect doesn't detect it very well. To solve this problem I manually edited the map file by drawing black lines. You can check the map [here](http://s7.postimg.org/odasah1rf/img2.png).
However, when the robot is in the room and I set a goal in the corridor the robot fails to get there. I think the problem is that the local planner tries to make the robot go through the wall (since the kinect doesn't detect it completely), even though the global planner works fine and it establishes a correct path. You can take a look at [this image](http://s11.postimg.org/6i4qrqu4j/img1.png) to help you visualize what I'm saying. The robot keeps rotating and moving to other directions and it doesn't follow the red line.
Doing a little research I found that I can change the values of a few parameters in the **dwa_local_planner** to solve this issue. For this reason, I changed the parameters **path_distance_bias** (increasing it) and **goal_distance_bias** (decreasing it) in the **DWAPlannerConfig.h** file.
Changing these parameters solved my problem, but I've got some questions about it:
1. Is this the best approach to solve my problem?
2. How these changes will affect the robot navigation in other situations? In order to solve my problem I had to set extremely high (path_distance_bias) and low (goal_distance_bias) values. I've done a few tests and the robot moves fine, but I'm afraid that there are a few situations where these parameter changes will make the robot behave incorrectly.
Thanks!
↧
DWAPlanner::checkTrajectory always success
Hello,
I try to use the dwa_local_planner::DWAPlanner::checkTrajectory.
I have edit the dwa_planner_ros.cpp and .h in order to subsrcibe to a path and i want to check if the trajectory is right.
I use the dwa_planner initialize and update by the dwa_planner_ros.cpp
costmap_ros_->getRobotPose(current_pose_); // (costmap_ros_ is the costmap_2d::Costmap2DROS)
//we want to clear the robot footprint from the costmap we're using
costmap_ros_->clearRobotFootprint();
// make sure to update the costmap we'll use for this cycle
costmap_ros_->getCostmapCopy(costmap_);
tf::Stamped robot_vel;
odom_helper_.getRobotVel(robot_vel);
tf::Stamped drive_cmds;
drive_cmds.frame_id_ = costmap_ros_->getBaseFrameID();
dp_->updatePlanAndLocalCosts(current_pose_,req.path); // dp_ is the dwa_local_planner::DWAPlanner
planner_util_.setPlan(req.path);
dp_->findBestPath(current_pose_, robot_vel, drive_cmds, costmap_ros_->getRobotFootprint());
Eigen::Vector3f pos,vel,vel_samples;
pos[0]=current_pose_.getOrigin().getX();
pos[1]=current_pose_.getOrigin().getY();
pos[2]=current_pose_.getOrigin().getZ();
vel[0]=robot_vel.getOrigin().getX();
vel[1]=robot_vel.getOrigin().getY();
vel[2]=robot_vel.getOrigin().getZ();
vel_samples[0]=3;
vel_samples[1]=10;
vel_samples[2]=20;
if(dp_->checkTrajectory(pos,vel,vel_samples)){ROS_INFO("success");}else{ROS_INFO("fail");}
But even with a wrong plan ( i can visualize that the path go into walls) the checkTrajectory function always return true.
Someone can tell me what is my mistake, what I have forget?
thanks
↧
↧
base_local_planner does not respect velocity constraints
I have a custom robot with fairly low vel and acc constraints, especially in theta. To be more precise:
max_rotational_vel: 0.1
max_vel_theta: 0.1
max_vel_x: 0.5
min_in_place_vel_theta: 0.05
min_vel_theta: -0.1
min_vel_x: 0
**The problem**
When I give a goal to the planner, it usually manages to reach it after a while, but on several occasions just start rotating on itself at high speeds.
**My setup**
My planners are setup so that the local_costmap is always empty (no sensor used to mark it), and my global_costmap is filled in with a static map which is of decent quality (obtained with a Kinect). I've tested the AMCL localization part and it seems ok, it is a bit jumpy at times but it doesn't look correlated to when the robot decides to rotate on itself.
**Some data**
After debugging, I've noticed that the planner sends /cmd_vel messages that do not respect the constraints I've given it.
I've rebuilt the navigation stack to show more logs, and I pasted the output of a simple run here
http://pastebin.com/yAHf61f5
On the logs, you'll see sometimes the planner gives me a very high rotational speed command (lines 48 and 87 for example), and for no apparent reason (no recovery behavior triggered)
↧
Why does the DWA Local Planner need an acceleration value of >= 1.0?
Sometimes, in cluttered environments, our (differential wheeled) robot seems to accelerate too fast and navigates itself into places it cannot escape from. Just to test if a lower acceleration would do any good I tried reconfiguring it but it seems that setting the parameter `/move_base/DWAPlannerROS/acc_lim_x` lower than 1.0 causes move_base to not do anything any more. Since the parameter is a float value, I expect that the reason is not just an int cast somewhere. Does anyone know why an acceleration lower than 1.0 m/s^2 might not be supported?
**Edit:** Just to give some more info, these are the other parameters we use:
DWAPlannerROS:
acc_lim_x: 1.0
acc_lim_y: 0.0
acc_lim_th: 2.0
min_vel_y: 0.0
max_vel_y: 0.0
max_rot_vel: 1.0
min_rot_vel: 0.4
yaw_goal_tolerance: 0.1
xy_goal_tolerance: 0.3
latch_xy_goal_tolerance: true
sim_time: 1.7
path_distance_bias: 5.0 #default:32
goal_distance_bias: 9.0 #default:24
occdist_scale: 0.01 #default:0.01
oscillation_reset_dist: 0.05
prune_plan: true
holonomic_robot: false
Not listed parameters use the default values.
**Edit2:** To answere David's comment:
These are the parameters we use for the local costmap:
local_costmap:
update_frequency: 5.0
publish_frequency: 2.0
static_map: false
rolling_window: true
width: 4.0
height: 4.0
resolution: 0.05
plugins:
- {name: obstacle_layer, type: "costmap_2d::VoxelLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
So the resolution is 0.05 which is the default value if I'm not mistaken.
↧
DWA planner failed to produce path
**UPDATE:** In the end this seems to be due to a strange interaction between our robot model and environment that seems to have only manifested under OS X. Thanks for all your help though.
I am running hydro on OS X installed using Homebrew, but with the navigation stack updated to the latest version (`* hydro-devel 8824c44 fix robot_pose_ekf test`) from its GitHub (and a few other packages updated too). I am running simulated differential drive robot with a laser (a Scitos G5) in simulation (using MORSE). I have a map and the robot is well localised in it, but when I try to send it to a nav goal in RViz I repeatedly get the message
`DWA planner failed to produce path.`
... until it gives up.
A setup like this used to work for me, and a near-identical configuration of simulation and navigation is working fine for colleagues in the same team running Ubuntu 12.04. So something has changed in either my navigation configuration (which is maintained in a project that other people have been editing) or in my ROS install that has created this problem.
The simulation setup is here: https://github.com/strands-project/strands_morse
The navigation configuration is here: https://github.com/strands-project/scitos_2d_navigation/tree/hydro-devel/scitos_move_base_params
If I publish to `/cmd_vel` the robot moves fine. In RViz the local and global cost maps are clear. Looking at the code (`dwa_planner_ros.cpp`) that produces this message it looks like it is being produced because a 0 or negative cost path is being produced. The following code is the conditional which returns false and ultimately leads to the message above.
std::vector local_plan;
if(path.cost_ < 0) {
ROS_WARN("The dwa local planner failed to find a valid plan, cost functions discarded all candidates. This can mean there is an obstacle too close to the robot.");
Given that I can't see any obstacles in the cost maps, I'm not sure what is causing this.
So, please can anyone give me a hint about where else to look to try to find out what's causing this failure?
↧
how to run base_local_planner and dwa_local_planner standalone?
hi, all,
I am trying to run the navigational core move_base separately.
there are number of nodes to run before it functions properly.
among them, I cannot find any executable under base_local_planner and dwa_local_planner packages, i.e. I cannot 'rosrun xx_local_planner [executable]'.
how to run them as standalone nodes?
thanks
ray
↧
↧
dwa_planner: trajectory_cloud topic not showing up
Hello,
When we run move_base with dwa_local_planner, doing a `rostopic list` shows a topic named /move_base/DWAPlannerROS/trajectory_cloud, and another named /move_base/DWAPlannerROS/cost_cloud. However, nothing ever seems to get posted to these topics, even when there's an active nav goal in play. Should we be seeing output on these topics? We're debugging some strange behavior and would sure like to see what the planner is thinking.
Thanks,
Rick
↧
*ROS Navigation Alternative Algorithms
Hi,
I have a few questions about the current ROS Navigation stack:
1. Local Planner: Currently there are two options - base_local_planner and the dwa_local_planner. Is there any work on more planners for local path planning? I know that we can write planners that plugin as long as they follow the nav_core interface but are there any open source alternatives out there? I am guessing there must be some planners out on researchers or University github account or something of the sort. Any suggestions on how to bring them out?
2. Global Planner: Similar to the earlier question - I know that navfn uses Dijkstras algorithm. But are there any other sources of code out there that use other popular algorithms such as the A* or the D*?
3. Forward Trajectories of the Local Planners: Both the planners mentioned above forward project the trajectories by sampling the Vx and Vtheta space. Will this work well for car-like robots that are controlled by steering angle and forward velocity? What's the best suggestion on using car-like robots with ROS Navigation.
4. What's the best way to implement variations and modifications to the planner to fit in with the ROS Navigation framework. For ex: if I want to implement a predictive obstacle avoiding planner rather than the classical non-predictive one used currently.
Thank you very much.
↧
Navigation, AMCL, amcl_pose
Hello,
I'm debugging the navigation stack set up on my robot. My question is about `amcl_pose`. This topic is published by `amcl` (or `fake_localization`), and in my robot `amcl_pose` is being published to by the localization module too, but no topic is subscribed to `amcl_pose`.
As I understand, local planner should use `amcl_pose` and I'm using [DWAPlannerROS](http://wiki.ros.org/dwa_local_planner#DWAPlannerROS) in the navigation stack, and `DWAPlannerROS` is only subscribed to `odom`.
So, the question is which component is using the result of the localization module.
**UPDATE 1:** Another suspicious thing with `amcl` (or `fake_localization`) is, although it is publishing to `/particlecloud`, but I can not visualize the particles in `Rviz` using `/particlecloud` topic. Nothing appears in `Rviz`.
Thanks
↧