0
$\begingroup$

Rosanswers logo

I am attempting to use the navigation stack in Jade on Ubuntu 14.04. While robot is driving towards goal, the cost map and point cloud disappear permanently and navigation stops. I need to close the launch to restart. The error only occurs when the robot is running(it is following path).

I am finding an error in the master log I think is the cause. See below. The error does not seem to correlate to the line immediately above where the errors starts. I mean that the INFO being published when the error occurs is different each time. The other log files have errors relating to the robot no longer being localized.

Can you help me trace the cause of this error? Restarting PC didn't help. Rebuilding entire project didn't help. Running rosclean purge (deleting log files) seemed to help in that in the duration of navigation prior to crash changed from very quick (1 to 3 seconds) after starting towards goal to running OK for many (10 or more) seconds. It will occasionally make it to the goal successfully, just across the room.

[rosmaster.master][INFO] 2016-06-15 23:24:46,304: publisherUpdate[/particlecloud] -> http://linux-Latitude-D630:37147/
[rosmaster.master][INFO] 2016-06-15 23:24:46,309: -PUB [/rosout] /map_server http://linux-Latitude-D630:44019/
[rosmaster.master][INFO] 2016-06-15 23:24:46,311: -PUB [/map_metadata] /map_server http://linux-Latitude-D630:44019/
[rosmaster.master][INFO] 2016-06-15 23:24:46,312: -PUB [/map] /map_server http://linux-Latitude-D630:44019/
[rosmaster.master][INFO] 2016-06-15 23:24:46,314: -SERVICE [/map_server/get_loggers] /map_server rosrpc://linux-Latitude-D630:55425
[rosmaster.master][INFO] 2016-06-15 23:24:46,315: -SERVICE [/map_server/set_logger_level] /map_server rosrpc://linux-Latitude-D630:55425
[rosmaster.threadpool][ERROR] 2016-06-15 23:24:46,319: Traceback (most recent call last):
  File "/opt/ros/jade/lib/python2.7/dist-packages/rosmaster/threadpool.py", line 218, in run
    result = cmd(*args)
  File "/opt/ros/jade/lib/python2.7/dist-packages/rosmaster/master_api.py", line 208, in publisher_update_task
    xmlrpcapi(api).publisherUpdate('/master', topic, pub_uris)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1233, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1587, in __request
    verbose=self.__verbose
  File "/usr/lib/python2.7/xmlrpclib.py", line 1273, in request
    return self.single_request(host, handler, request_body, verbose)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1306, in single_request
    return self.parse_response(response)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1482, in parse_response
    return u.close()
  File "/usr/lib/python2.7/xmlrpclib.py", line 794, in close
    raise Fault(**self._stack[0])
Fault: <Fault -1: 'publisherUpdate: unknown method name'>

Here are the files I am using to configure.

<launch>
<node pkg="amcl" type="amcl" name="amcl" output="screen">
  <!-- Publish scans from best pose at a max of 10 Hz -->
  <param name="odom_model_type" value="diff"/>
  <param name="odom_alpha5" value="0.1"/>

  <!-- param name="transform_tolerance" value="0.2" / -->
  <param name="transform_tolerance" value="0.5" />

  <!-- param name="gui_publish_rate" value="10.0"/ -->
  <param name="gui_publish_rate" value="3.0"/>

  <!-- param name="laser_max_beams" value="30"/ -->
  <param name="laser_max_beams" value="60"/>

  <param name="min_particles" value="500"/>
  <param name="max_particles" value="5000"/>
  <param name="kld_err" value="0.05"/>
  <param name="kld_z" value="0.99"/>
  <param name="odom_alpha1" value="0.2"/>
  <param name="odom_alpha2" value="0.2"/>
  <!-- translation std dev, m -->
  <param name="odom_alpha3" value="0.8"/>
  <param name="odom_alpha4" value="0.2"/>
  <param name="laser_z_hit" value="0.5"/>
  <param name="laser_z_short" value="0.05"/>
  <param name="laser_z_max" value="0.05"/>
  <param name="laser_z_rand" value="0.5"/>
  <param name="laser_sigma_hit" value="0.2"/>
  <param name="laser_lambda_short" value="0.1"/>
  <param name="laser_lambda_short" value="0.1"/>
  <param name="laser_model_type" value="likelihood_field"/>
  <!--  -->
  <param name="laser_likelihood_max_dist" value="2.0"/>
  <param name="update_min_d" value="0.2"/>
  <param name="update_min_a" value="0.5"/>
  <param name="odom_frame_id" value="odom"/>
  <param name="resample_interval" value="1"/>
  
  <!-- param name="transform_tolerance" value="0.1"/ -->
  <param name="transform_tolerance" value="0.2"/>

  <param name="recovery_alpha_slow" value="0.0"/>
  <param name="recovery_alpha_fast" value="0.0"/>
</node>
</launch>

local_base_planner_params yaml file

TrajectoryPlannerROS:
  max_vel_x: 0.1
  min_vel_x: 0.005
  max_vel_theta: 0.8
  min_in_place_vel_theta: 0.05

  acc_lim_theta: 3.2
  acc_lim_x: 2.5
  acc_lim_y: 2.5

  escape_vel: -0.1

  holonomic_robot: false

  latch_xy_goal_tolerance: false
  meter_scoring: true

# pdist_scale: 0.6
  pdist_scale: 0.8

  gdist_scale: 0.8
  occdist_scale: 0.01
  
# heading_lookahead: 0.325
  heading_lookahead: 0.5

  heading_scoring: false
  heading_scoring_timestep: 0.8
  dwa: true
  publish_cost_grid_pc: true
  global_frame_id: odom
  oscillation_reset_dist: 0.05
  prune_plan: true

costmap_common_params yaml file

obstacle_range: 2.5
raytrace_range: 5.0
footprint: [[0, 0.200], [0, -0.200], [0.200, 0]]
robot_radius: 0.200
inflation_radius: 0.3
transform_tolerance: 0.7

observation_sources: laser_scan_sensor

laser_scan_sensor: {sensor_frame: laser, data_type: LaserScan, topic: /scan, marking: true, clearing: true}

Global_costmap_params yaml file

global_costmap:
  global_frame: /map
  robot_base_frame: base_link
  update_frequency: 3.0
  static_map: true

local_costmap_params yaml file

local_costmap:
  global_frame: odom
  robot_base_frame: base_link
  update_frequency: 3.0
  publish_frequency: 2.0
  static_map: false
  rolling_window: true
  width: 6.0
  height: 6.0
  resolution: 0.05

I really appreciate any help. I've been fighting this for several days.


Originally posted by billy on ROS Answers with karma: 1850 on 2016-06-16

Post score: 1

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

I figured this out. I had cause and effect mixed up. I thought the error was causing localization to fail. In reality, a localization failure was causing the error. Corrupted odom data was causing localization to fail. With odom data corruption fixed, localization is stable and this error hasn't returned.

The bad odom data was shifting the robot all the way off the map. It could be the rosmaster node isn't equipped to deal with that situation.

Closing this question.


Originally posted by billy with karma: 1850 on 2016-06-17

This answer was ACCEPTED on the original site

Post score: 0

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.