Global planner not smooth behaviour
i'm using the navigation guide: http://kaiyuzheng.me/documents/navguide.pdf But i'm not able to have a smooth global trajectory, seems like that every time try to use the straighter path feasible. Any suggestions ? here are all my parameters:
move base param controllerfrequency: 3.0 controllerpatience: 15.0 plannerpatience: 6.0 plannerfrequency: 2.0 conservativeresetdist: 3.0 recoverybehaviorenabled: false clearingrotationallowed: false shutdowncostmaps: false oscillationtimeout: 0.0 oscillation_distance: 0.5
common param
map_type: costmap
transform_tolerance: 0.5
inflaction_layer:
#cost function parameters enable: true inflationradius: 5.0 costscaling_factor: 2.0
obstacleslayer: enable: true #Obstacle param obstaclerange: 5.0 raytrace_range: 6.0
observationsources: laserscansensor laserscansensor: {sensorframe: basescanlink, data_type: LaserScan, topic: /scan, marking: true, clearing: true}
globalcostmap: #static map maptopic: map_fixed
globalframe: /map robotbaseframe: rearcentrallink updatefrequency: 1.0 publishfrequency: 2.0 #robot footprint footprint: [[-0.6,-0.8],[2.25,-0.8],[2.25,0.8],[-0.6,0.8]] footprintpadding: 0.02 inflationradius: 5.0 width: 50.0 height: 50.0 staticmap: true rolling_window: false
inflationlayer: enable: true inflationradius: 15.0 costscalingfactor: 8.0
obstacles_layer: enable: true
baseglobalplanner: global_planner/GlobalPlanner
GlobalPlanner: allowunknown: true defaultolerance: 0.5 plannerfrequency: 6.0 plannerpatience : 5.0 usedijkstra: false usegridpath: true usequadratic: true visualizepotential: true publishpotential: true orientationmode: 2 orientationwindowsize: 1 lethalcost: 250 neutralcost: 10 costfactor: 0.6
plugins: - {name: obstacleslayer, type: "costmap2d::ObstacleLayer" } - {name: inflationlayer, type: "costmap2d::InflationLayer" }
local_costmap:
globalframe: map robotbaseframe: rearcentrallink updatefrequency: 5.0 publishfrequency: 10.0 staticmap: false rolling_window: true width: 10.0 height: 10.0 resolution: 0.05
plugins: - {name: obstacleslayer, type: "costmap2d::ObstacleLayer" } - {name: inflationlayer, type: "costmap2d::InflationLayer" }
inflationradius: 0.2
footprint: [[-0.6,-0.8],[2.25,-0.8],[2.25,0.8],[-0.6,0.8]]
footprintpadding: 0.0
inflactionlayer: enable: true inflationradius: 5.0 costscalingfactor: 0.1
baselocalplanner: teblocalplanner/TebLocalPlannerROS
TebLocalPlannerROS: odomtopic: /odometry/filtered mapframe: /map robotbaseframe: rearcentrallink
controllerfrequency: 100.0 controllerpatience : 15.0 plannerfrequency: 70.0 plannerpatience : 5.0 # Trajectory
tebautosize: True
dtref: 0.7
dthysteresis: 0.1
globalplanoverwriteorientation: true
maxglobalplanlookaheaddist: 10
feasibilitychecknoposes: 3
publishfeedback: true
minsamples: 6
exactarc_length: true
# Robot
maxvelx: 1 maxvelxbackwards: 0.2 maxvely: 0.0 maxveltheta: 0.5 acclimx: 0.25 acclimy: 0.0 acclimtheta: 0.2 minturningradius: 3.3 wheelbase: 1.74 cmdangleinsteadrotvel: true # set true in ackermann mode footprint_model: type: "polygon" vertices: [ [-0.4, -0.2], [2.05, -0.2], [2.05, 0.15], [-0.4, 0.15] ] # for car like robot the pose [0,0] is located at the rear-axele ( axis of rotation )
# GoalTolerance
xygoaltolerance: 0.5 yawgoaltolerance: 0.3 freegoalvel: False meter_scoring: true
# Obstacles
minobstacledist: 1.1 includecostmapobstacles: True includedynamicobstacles: True costmapobstaclesbehindrobotdist: 6.0 obstacleposesaffected: 60 costmapconverterplugin: "costmapconverter::CostmapToPolygonsDBSMCCH" #costmapconverterplugin: "costmapconverter::CostmapToLinesDBSRANSAC" #costmapconverterplugin: "costmapconverter::CostmapToLinesDBSMCCH" #costmapconverterplugin: "costmapconverter::CostmapToPolygonsDBSConcaveHull" #costmapconverterplugin: "" # deactivate plugin costmapconverterspinthread: True costmapconverterrate: 10 costmapconverter/CostmapToPolygonsDBSMCCH: clustermaxdistance: 2.0 clusterminpts: 5 clustermaxpts: 10000 convexhullminptseparation: 0.2
inflationdist: 0.4 legacyobstacleassociation: false obstacleassociationforceinclusion_factor: 1.5
# Optimization
noinneriterations: 10 noouteriterations: 8 optimizationactivate: True optimizationverbose: False penaltyepsilon: 0.12 weightmaxvelx: 15 weightmaxvely: 1 weightmaxveltheta: 1 weightacclimx: 1 weightacclimy: 1 weightacclimtheta: 1 weightkinematicsnh: 1000 weightkinematicsforwarddrive: 500 weightkinematicsturningradius: 6 weightoptimaltime: 1 weightobstacle: 100 weightdynamicobstacle: 100 # not in use yet selectionalternativetimecost: false allowinitwithbackwardsmotion: false
# Homotopy Class Planner simtime: 8.0 enablehomotopyclassplanning: false enablemultithreading: True selectioncosthysteresis: 1.0 selectionobstcostscale: 100.0 selectionpreferinitialplan: 0.97 selectionviapointcostscale: 1.0 simpleexploration: False maxnumberclasses: 4 roadmapgraphnosamples: 15 roadmapgraphareawidth: 5 hsignatureprescaler: 1.0 hsignaturethreshold: 0.1 obstaclekeypointoffset: 0.1 obstacleheadingthreshold: 2.0 visualizehc_graph: False
Asked by Andrea93.am on 2019-01-07 16:34:42 UTC
Answers
The goal of the global planner is to find the shortest path between your current position and the goal, It does so by using a graph search algorithm (A*, Dijsktra,etc) in a 2D grid that has no notion of robot kinematics.
The element that could give you a "smooth motion" would be the local planner, in your case the TEB local planner which configuration is not detailed in the guide you are refering to. My advice is to go over the parameter description in the teb local planner wiki page and tune it in a way that is free to ignore to a higher degree the path sent by the global planner.
Asked by juanlu on 2019-01-09 05:51:43 UTC
Comments
another problem that i noticed is that: the global costmap is not able to see new obstacle, do you know why? now i add the obstacle layer to the global cost map parameter but nothing change.
Asked by Andrea93.am on 2019-01-09 10:43:32 UTC
Comments