Robotics StackExchange | Archived questions

Robot rotating at it's own place in autonomous navigation

Hello Everyone,

I'm using ROS Noetic and I have completed Odometry test as per the guidelines given in navigation tuning guide. My Lidar laser data is static with both translational as well as in place rotational motion. However when I'm performing navigation stack 2D pose estimate and 2D Nav Goal so my robot continuously rotates at same place rather than moving forward or backward etc. I have check rostopic echo /cmdvel and there i see angular velocity is publishing to the movebase in autonomous navigation. Kindly help me regarding this issue. Here is my .yaml files:

baselocalplanner: TrajectoryPlannerROS: # for details see: http://www.ros.org/wiki/base_local_planner odom_topic: odom

maxvelx: 0.15 minvelx: 0.10 maxrotationalvel: 0.1 # 0.8 rad/sec = 5.7 degree/sec ,0.02,0.3,0.05,0.05 mininplacerotationalvel: 0.001 acclimth: 0.02 acclimx: 0.05 acclimy: 0.05 holonomic_robot: false

# goal tolerance parameters yawgoaltolerance: 0.4 # 0.1 means 5.7 degrees 0.4 = yaw, 0.1 = xy xygoaltolerance: 0.1 latchxygoal_tolerance: false

# Forward Simulation Parameters simtime: 1 # 1 ,The amount of time to forward-simulate trajectories in seconds simgranularity: 0.025 # The step size, in meters, to take between points on a given trajectory angularsimgranularity: 0.01 # The step size, in radians, to take between angular samples on a given trajectory. 0.01 vxsamples: 40 # The number of samples to use when exploring the x velocity space 10 vthetasamples: 20 # The number of samples to use when exploring the theta velocity space 20 controller_frequency: 10 # The frequency at which this controller will be called in Hz

# Trajectory Scoring Parameters meterscoring: true # If true, distances are expressed in meters; otherwise grid cells pathdistancebias: 1.0 # The weighting for how much the controller should stay close to the path it was given goaldistancebias: 0.8 # 0.8 The weighting for how much the controller should attempt to reach its local goal, also controls speed occdistscale: 0.01 # The weighting for how much the controller should attempt to avoid obstacles # occdistscale * (maximum obstacle cost along the trajectory in obstacle cost (0-254)) headinglookahead: 0.325 # How far to look ahead in meters when scoring different in-place-rotation trajectories headingscoring: false oscillationresetdist: 0.05 # How far the robot must travel in meters before oscillation flags are reset publishcost_grid: true dwa: true

Dwalocalplanner_params.yaml

DWAPlannerROS: # for details see: https://wiki.ros.org/dwa_local_planner odom_topic: odom

Robot Configuration Parameters

maxvelx: 0.20 minvelx: 0.10

maxvely: 0.0 # 0 for non-holonomic robot maxrotvel 1.6, minrotvel 0.2, acclimtheta 3.2 minvely: 0.0 # 0 for non-holonomic robot

The velocity when robot is moving in a straight line

maxtransvel: 0.15 mintransvel: 0.10

maxrotvel: 0.0 minrotvel: 0.0

acclimx: 1.0 acclimy: 0.0 acclimtheta: 0.2

Goal Tolerance Parametes

xygoaltolerance: 0.1 yawgoaltolerance: 0.17 latchxygoal_tolerance: false

Forward Simulation Parameters

simtime: 3.0 # The amount of time to forward-simulate trajectories in seconds simgranularity: 0.025 # The step size, in meters, to take between points on a given trajectory vxsamples: 20 # The number of samples to use when exploring the x velocity space vysamples: 0 # The number of samples to use when exploring the y velocity space vthetasamples: 40 # The number of samples to use when exploring the theta velocity space controllerfrequency: 10.0 # The frequency at which this controller will be called in Hz

Trajectory Scoring Parameters

pathdistancebias: 38.0 # The weighting for how much the controller should stay close to the path it was given goaldistancebias: 20.0 # The weighting for how much the controller should attempt to reach its local goal, also controls speed occdistscale: 0.04 # The weighting for how much the controller should attempt to avoid obstacles forwardpointdistance: 0.325 # The distance from the center point of the robot to place an additional scoring point, in meters stoptimebuffer: 0.2 # The amount of time that the robot must stop before a collision in order for a trajectory to be considered valid in seconds scalingspeed: 0.25 # The absolute value of the velocity at which to start scaling the robot's footprint, in m/s maxscalingfactor: 0.2 # The maximum factor to scale the robot's footprint by

Oscillation Prevention Parameters

oscillationresetdist: 0.05 # How far the robot must travel in meters before oscillation flags are reset

Debugging

publishtrajpc : true publishcostgrid_pc: true

costmapcommonparams.yaml

footprint: [ [-0.27,-0.19], [0.13,-0.19], [0.13,0.19], [-0.27,0.19] ] transformtolerance: 0.4 maptype: costmap

obstaclelayer: enabled: true obstaclerange: 2.0 raytracerange: 5.5 inflationradius: 0.3 trackunknownspace: true combination_method: 1

observationsources: laserscansensor laserscansensor: {datatype: LaserScan, topic: scan, marking: true, clearing: true}

inflation_layer:

enabled: true costscalingfactor: 10.0 # exponential rate at which the obstacle cost drops off (default: 10) obstacle range 2.0, track unknown space = false inflation_radius: 0.3 # max. distance from an obstacle at which costs are incurred for planning paths.

staticlayer: enabled: true maptopic: "map"

My robot dimension is 800x595x195(in mm)

Also my odometry is very accurate because Laser is static in both translational and rotational motion. Also the cmd_vel and odom output matches precisely. I have also checked that robot in real time and in rviz travel 1m distance equally.

Kindly help me in resloving this issue.

Asked by Suraj Singh on 2023-05-30 01:01:54 UTC

Comments

Answers