Robotics StackExchange | Archived questions

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]] footprint
padding: 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

Comments

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