Hi, everyone. I'm trying to use move_base package.
However, my robot is not used differential wheels.
Its steering and acceleration are actuated by servo motor and DC motor.
move_base sent the cmd_vel.linear.x and cmd_vel.angular.z separately.
But, my robot need to move and rotate together, like the car.
It can't move like the planner's trajectory.
I'm wondering how to set the planner.yaml to move as I wish.
Appreciated for any suggestion or discussion, thanks.
controller_frequency: 3.0 # freq of update trace planning
recovery_behavior_enabled: true
clearing_rotation_allowed: false
TrajectoryPlannerROS:
max_vel_x: 0.5 # miles / seconds
min_vel_x: 0.1
max_vel_y: 0.0 # zero for a differential drive robot
min_vel_y: 0.0
max_vel_theta: 1.0
min_vel_theta: 0.4
# min_in_place_vel_theta 0.4
escape_vel: -0.1 # backward speed
acc_lim_x: 1.5 # miles / senconds ^ 2
acc_lim_y: 0.0 # zero for a differential drive robot
acc_lim_theta: 0.5
holonomic_robot: false
yaw_goal_tolerance: 0.2 # about 6 degrees
xy_goal_tolerance: 0.2 # 5 cm # cannot smaller than map's revolution
latch_xy_goal_tolerance: false
pdist_scale: 0.4
gdist_scale: 0.8
meter_scoring: true
heading_lookahead: 0.325
heading_scoring: false
heading_scoring_timestep: 0.8
occdist_scale: 0.05
oscillation_reset_dist: 0.05
publish_cost_grid_pc: false
prune_plan: true
sim_time: 1.0
sim_granularity: 0.05
angular_sim_granularity: 0.1
vx_samples: 8
vy_samples: 0 # zero for a differential drive robot
vtheta_samples: 20
dwa: true
simple_attractor: false
↧
[Move_base] problem of setting planner
↧
move_base alternative
Dear all,
I was wondering if it exists an alternative(s) to the [move_base](http://wiki.ros.org/move_base) ?
I have searched but I did not find anything.
Thanks,
↧
↧
How can i control my Real-car drive type robot.
I have successfully run my robot with http://wiki.ros.org/jackal_navigation move_base package. But there is one problem the my car does not have differential drive capabilities . I tried to change planner to teb planner but i couldn't manage to run it.
I use mit-race car configuration.
Rplidar a2
i have odom data.
↧
Virtual Tracks for Navigation
I'm working on a differential drive mobile base and have navigated successfully with `move_base` and `teb_local_planner` and the `global_planner`.
The next navigation behaviour I would like to achieve is using **tracks** for navigation. I would like to define different waypoints and have pre-defined relationships between the edges (e.g. unidirectional or bidirectional), something like this image below:

The mobile base should navigate to the point closest to it on the track and plan a path to the goal using as much of these "preferred" tracks as possible, while being able to avoid obstacles in the path.
**Q1.** Are there any packages that are already doing this?
I tried out [waypoint_global_planner](https://github.com/gkouros/waypoint-global-planner) and it works great. You can manually define waypoints and have it linearly interpolate a path for you, albeit without collision avoidance.
But what I'm looking for is something that can be set-up and then used by just defining the tracks and giving the goal point, instead of defining waypoints for every run.
An option is to use custom costmap layers to "prefer" a certain track but i don't know if there exists a mechanism which forces the global planner to stick to the preferred path and only use the "non-preferred " path for obstacle avoidance.When an obstacle occurs in the "preferred" path i want the mobile base to navigate for a short period through the "non-preferred" path in order to avoid it, following which it should return to its original path. How do I go about achieving this?
Any help will be appreciated! Please let me know if anymore details are required.
↧
Robot drifts away from goal and laserscan skews on random interval
I have to apologize for the vague and/or convoluted title. We don't know where the issue is ourselves.
The robot I'm working on makes use of ROS Kinetic, the standard navigation stack with `amcl`, `teb_local_planner`, `laser_scan_matcher` and `move_base`. It is a front-wheeled differential drive with two caster wheels on the back with a rectangular body/footprint, built on the chassis of an electric wheelchair.
The issue we're facing is happening on a random interval: Whenever we set a goal in rviz, the robot does move towards his goal. After a random amount of time or after a certain distance has been traveled, two errors could occur:
The robot loses track of his position by "teleporting" on the map within rviz, commonly setting himself approx. 1 meter to the right. The laser scan output could also become skewed, throwing off its odometry. Each of these erratic behaviours is visible within rviz and the console output can mention the errors `Map Update/Control loop missed its desired rate <...>`
As a result, the robot would keep on its last set velocity (`cmd_vel` output) and rviz would no longer be able to set and display a new goal, rendering the robot unresponsive. We're able to clear `cmd_vel` by using manual control (`teleop_twist_joy`) and stopping the robot that way. Upon hitting the `reset` button on the bottom-right in rviz, we progressively lose the local and global costmap per press, accompanied by the warning "No map provided". Rebooting the ROS environment will restore everything until the "drift" occurs again.
We can consistently recreate this behaviour by having the robot drive various distances, believing it appears more often when traversing small distances of approximately 2-3 meters, on longer distances i.e 5-20 meters the errors occure less often, but the laserscan becoming askew is still prevalent.
We're hoping to get video footage of the erroneous behaviour in order to demonstrate what's happening both physically and in rviz.
Below are the common configuration files requested:
- navigation.launch
- base_local_planner_params.yaml
controller_frequency: 2.0
recovery_behavior_enabled: false
clearing_rotation_allowed: false
recovery_behaviors: [{name: conservative_reset, type: clear_costmap_recovery/ClearCostmapRecovery}, {name: aggressive_reset, type: clear_costmap_recovery/ClearCostmapRecovery}]
TebLocalPlannerROS:
odom_topic: odom
map_frame: /odom
# Trajectory
teb_autosize: True
dt_ref: 0.3
dt_hysteresis: 0.1
global_plan_overwrite_orientation: True
max_global_plan_lookahead_dist: 2.0
feasibility_check_no_poses: 4
# Robot
max_vel_x: 0.7
min_vel_x: 0.3
max_vel_x_backwards: 0.5
max_vel_theta: 0.7
acc_lim_x: 0.7
acc_lim_theta: 0.7
min_turning_radius: 0.4
footprint_model: # types: "point", "circular", "two_circles", "line", "polygon"
type: "line"
line_start: [0.0, 0.0]
line_end: [-0.6, 0.0]
radius: 0.2
# GoalTolerance
xy_goal_tolerance: 0.2
yaw_goal_tolerance: 0.1
free_goal_vel: False
# Obstacles
min_obstacle_dist: 0.3
include_costmap_obstacles: True
costmap_obstacles_behind_robot_dist: 1.0
obstacle_poses_affected: 30
costmap_converter_plugin: "costmap_converter::CostmapToPolygonsDBSMCCH"
costmap_converter_spin_thread: True
costmap_converter_rate: 5
# Optimization
no_inner_iterations: 4
no_outer_iterations: 3
optimization_activate: True
optimization_verbose: False
penalty_epsilon: 0.1
weight_max_vel_x: 2
weight_max_vel_theta: 1
weight_acc_lim_x: 0.5
weight_acc_lim_theta: 6.0
weight_kinematics_nh: 1000
weight_kinematics_forward_drive: 1
weight_kinematics_turning_radius: 1
weight_optimaltime: 1
weight_obstacle: 50
# Homotopy Class Planner
enable_homotopy_class_planning: True
enable_multithreading: True
simple_exploration: True
max_number_classes: 2
roadmap_graph_no_samples: 15
roadmap_graph_area_width: 5
h_signature_prescaler: 0.5
h_signature_threshold: 0.1
obstacle_keypoint_offset: 0.1
obstacle_heading_threshold: 0.45
visualize_hc_graph: False
- costmap_common_params.yaml
plugins:
- {name: static_layer, type: 'costmap_2d::StaticLayer'}
- {name: obstacle_layer, type: 'costmap_2d::ObstacleLayer'}
- {name: inflation_layer, type: 'costmap_2d::InflationLayer'}
- {name: sonar, type: "range_sensor_layer::RangeSensorLayer"}
footprint: [[0.25,-0.31],[0.25,0.31],[-0.69,0.31],[-0.69,-0.31]]
footprint_padding: 0.03
inflation_layer:
inflation_radius: 0.4
cost_scaling_factor: 2.58
sonar:
topics: ['/sonar_data']
obstacle_layer:
combination_method: 1
enabled: true
footprint_clearing_enabled: true
max_obstacle_height: 0.6
observation_sources: scan
obstacle_range: 2.0
raytrace_range: 2.0
scan: {clearing: true, data_type: LaserScan, expected_update_rate: 0, marking: true,
topic: /scan_filtered}
- global_costmap_params.yaml
global_costmap:
global_frame: map
robot_base_frame: /base_link
update_frequency: 5.0
publish_frequency: 1.0
static_map: true
rolling_window: false
resolution: 0.05
transform_tolerance: 1.0
map_type: costmap
- local_costmap_params.yaml
local_costmap:
global_frame: odom
robot_base_frame: base_link
update_frequency: 5.0
publish_frequency: 1.0
static_map: true
rolling_window: true
width: 5.0
height: 5.0
resolution: 0.05
transform_tolerance: 1.0
map_type: costmap
inflation_layer:
inflation_radius: 0.2
cost_scaling_factor: 10
↧
↧
understanding tf with move_base
Hi! I'm writing a node, that should allow my turtlebot3_waffle to move to ar_tag, sending tf between base_link and ar_Tag as a goal to move_base.
But, after launching this node I have this:
[ WARN] [1553587624.636453683, 2739.978000000]: Clearing costmap to unstuck robot (3.000000m).
[ WARN] [1553587637.825312516, 2745.080000000]: Rotate recovery behavior started.
[ WARN] [1553587662.356952081, 2756.631000000]: Clearing costmap to unstuck robot (1.840000m).
[ WARN] [1553587673.253428778, 2761.732000000]: Rotate recovery behavior started.
[ERROR] [1553587684.935379862, 2766.931000000]: Aborting because a valid plan could not be found. Even after executing all recovery behaviors
this is my code:
#!/usr/bin/env python
import rospy
import math
import tf2_ros
import geometry_msgs.msg
import actionlib
from move_base_msgs.msg import MoveBaseAction, MoveBaseGoal
def move_base(bar_x, bar_y):
client = actionlib.SimpleActionClient('move_base', MoveBaseAction)
client.wait_for_server()
goal = MoveBaseGoal()
goal.target_pose.header.frame_id = "base_link"
goal.target_pose.header.stamp = rospy.Time.now()
goal.target_pose.pose.position.x = bar_x
goal.target_pose.pose.position.y = bar_y
goal.target_pose.pose.position.z = 0
goal.target_pose.pose.orientation.w = 1
client.send_goal(goal)
wait = client.wait_for_result()
if not wait:
rospy.logerr("Action server not available!")
rospy.signal_shutdown("Action server not available!")
else:
return client.get_result()
if __name__ == '__main__':
try:
rospy.init_node('ar_tag_navigation')
tfBuffer = tf2_ros.Buffer()
listener = tf2_ros.TransformListener(tfBuffer)
rate = rospy.Rate(10.0)
while not rospy.is_shutdown():
try:
trans = tfBuffer.lookup_transform('base_link', 'ar_marker_0', rospy.Time())
except (tf2_ros.LookupException, tf2_ros.ConnectivityException, tf2_ros.ExtrapolationException):
rate.sleep()
continue
BAr_X = trans.transform.translation.x
BAr_Y = trans.transform.translation.y
result = move_base(BAr_X, BAr_Y)
if result:
rospy.loginfo("Goal execution done!")
except rospy.ROSInterruptException:
rospy.loginfo("Navigation test finished.")
I realy don't know what is wrong. I saw tf tree and it's ok
↧
Local costmap not visible
Hi there,
I used navigation stack wit move base on my lidar. It could generate path to the goal, and display global costmap, However, the local costmap is empty with zeros, while the lidar has data generated (non-zeros).
I searched around and people suggesting that the min. obstacle height and max. obstacle height of the laser scan is the problem, I tried it out, but it still doesn't work, could anyone kindly advise what I could change?
base_local_planner_params.yaml:
TrajectoryPlannerROS:
max_vel_x: 0.45
min_vel_x: 0.1
max_vel_theta: 1.0
min_in_place_vel_theta: 0.4
acc_lim_theta: 3.2
acc_lim_x: 2.5
acc_lim_y: 2.5
holonomic_robot: false
costmap_common_params.yaml:
obstacle_range: 2.5
raytrace_range: 3.0
footprint: [[-0.305, -0.18], [-0.305, 0.18], [0.305, 0.18], [0.305, -0.18]]
#robot_radius: ir_of_robot
inflation_radius: 0.55
observation_sources: laser_scan_sensor #point_cloud_sensor
laser_scan_sensor: {sensor_frame: frame_name, data_type: LaserScan, topic: topic_name, marking: true, clearing: true}
#point_cloud_sensor: {sensor_frame: frame_name, data_type: PointCloud, topic: topic_name, marking: true, clearing: true}
global_costmap_params.yaml:
global_costmap:
footprint: [[-0.305, -0.18], [-0.305, 0.18], [0.305, 0.18], [0.305, -0.18]]
footprint_padding: 0.01
transform_tolerance: 1.0
update_frequency: 5.0
publish_frequency: 5.0
global_frame: map
robot_base_frame: base_footprint
resolution: 0.05
rolling_window: false
track_unknown_space: true
plugins:
- {name: static, type: "costmap_2d::StaticLayer"}
- {name: sensor, type: "costmap_2d::ObstacleLayer"}
- {name: inflation, type: "costmap_2d::InflationLayer"}
static:
map_topic: /map
subscribe_to_updates: true
sensor:
observation_sources: laser_scan_sensor
laser_scan_sensor: {sensor_frame: laser, data_type: LaserScan, topic: scan, marking: true, clearing: true}
inflation:
inflation_radius: 2.5
cost_scaling_factor: 6.0
local_costmap_params.yaml:
local_costmap:
footprint: [[-0.305, -0.18], [-0.305, 0.18], [0.305, 0.18], [0.305, -0.18]]
footprint_padding: 0.01
transform_tolerance: 1.0
update_frequency: 10.0
publish_frequency: 10.0
global_frame: /odom
robot_base_frame: /base_footprint
resolution: 0.05
static_map: false
rolling_window: true
width: 2.0
height: 2.0
resolution: 0.1
plugins:
- {name: sensor, type: "costmap_2d::ObstacleLayer"}
- {name: inflation, type: "costmap_2d::InflationLayer"}
sensor:
observation_sources: laser_scan_sensor
laser_scan_sensor: {sensor_frame: laser, data_type: LaserScan, topic: scan, marking: true, clearing: true, max_obstacle_height: 2.0, min_obstacle_height: 0.0, inf_is_valid: true}
inflation:
inflation_radius: 2.5
cost_scaling_factor: 8.0
↧
costmap2dros transform timeout
i'm implementing move_base on my own robot description .i used hector slam for mapping and localize the robot amcl correctly. but when i imlement move_base the simulation start to show error the robot doesn't move to a goal .i have search similar question on internet but couldn't find any solution.
[ WARN] [1554394342.080578158, 1481.705000000]: Costmap2DROS transform timeout. Current time: 1481.7050, global_pose stamp: 0.0000, tolerance: 0.3000
i am using skid steering plugin for odometry i can't post my tf because i don't point ,and am using ros kinetic on ubuntu 16.04
base_local_planner_params.yaml
TrajectoryPlannerROS:
max_vel_x: 0.5
min_vel_x: 0.1
max_vel_theta: 0.5
min_in_place_vel_theta: 0.1
escape_vel: -0.02
acc_lim_theta: 0.5
acc_lim_x: 0.5
acc_lim_y: 0.5
sim_time: 4
meter_scoring: true
holonomic_robot: false
EBandPlannerROS:
# Common Parameters
xy_goal_tolerance: 0.15
yaw_goal_tolerance: 0.13
rot_stopped_vel: 0.05
trans_stopped_vel: 0.05
# Visualization Parameters
marker_lifetime: 20.0
# Trajectory Controller Parameters
max_vel_lin: 0.75
max_vel_th: 1.0
min_vel_th: 0.5
min_in_place_vel_th: 2.0
k_prop: 1.0
k_damp: 3.5
Ctrl_Rate: 50
max_translational_acceleration: 2.5
max_rotational_acceleration: 1.5
differential_drive: true
max_acceleration: 2.5
local_costmap_params.yaml
local_costmap:
global_frame: /odom
robot_base_frame: base_link
update_frequency: 10.0
publish_frequency: 10.0
width: 20.0
height: 20.0
resolution: 0.05
static_map: false
rolling_window: true
costmap_common_params.yaml
map_type: costmap
obstacle_range: 5
raytrace_range: 6
footprint: [ [-0.6, -0.85], [-0.6, 0.85], [0.6, 0.85], [0.6, -0.85] ]
transform_tolerance: 0.3
robot_radius: 0.8
inflation_radius: 0.35
observation_sources: laser_scan_sensor
laser_scan_sensor: {sensor_frame: Empty_lidar, data_type: LaserScan, topic: /scan, marking: true, clearing: true}
global_costmap_params.yaml
global_costmap:
global_frame: /map
robot_base_frame: base_link
update_frequency: 5.0
publish_frequency: 5.0
resolution: 0.05
static_map: true
rolling_window: false
move_base launch
am beginner please help me with this
↧
Is the move_base node application-specific?
The ROS Wiki page says specifically that > The move_base package provides an> implementation of an action (see the> actionlib package) that, given a goal> in the world, will attempt to reach it> with a mobile base.
1) So, does it necessarily need local_planner and global_planner?
2) Can I configure it to use as a waypoint follower with velocity smoothening.
3) Is it map specific?
4) Given list of coordinates that the robot has to strictly follow. Can it follow with a smooth velocity profile witout the use of any depth sensor(no local-costmap, local-planner)?
↧
↧
move_base local costmap stops working after a while
Hello,
I recently started using the move_base package for our navigation stack. Everything seems to be working well, and I'm still consistently tuning the parameters. However, I noticed that, after a few paths are completed, the local costmap stops updating. I have to shutdown the node and restart to get it to function again. It will be properly working to avoid dynamic obstacles, then all of the sudden it will stop reporting them on the costmap, causing it to run into them. Is there anyone else that has experienced this issue?
I can post my parameters if need-be, but I can tell this is happening regardless of the configuration. Here's an image of what I'm seeing (the scan points are circled in yellow, they should have been sensed as an obstacle and should be inflated just like the surrounding static map):

I'm using the ROS Kinetic version of the move_base package (from the official repo).
Thanks for any advice.
↧
Is it possible to use the [turtlebot3_navigation move_base.launch] with the robot_upstart library to startup an application when the turtlebot3 turn on?
Hello Everybody
I am using a waffle pi turtlebot3 with Ubuntu mate 16.04 OS and ROS kinetic version. So, the idea is, when a I turn on the turtlebot3, my application should to startup too. So, I installed the robot_upstart from clearpath to try to performe it at this way. At the beginnig, I did my application run with a daemon, and when I turn on the turtlebot3 with only the [turtlebot3_bringup turtlebot3_robot.launch], this one works. Then I add in my application the [turtlrbot3_navigation amcl.launch] and also the map, and these work too. However, when I tried to add the [turtlebot3_bringup turtlebot3_model.launch] and [turtlebot3_navigation move_base.launch], these ones always kill all the nodes. Furthermore, when I run only the [turtlebot3_navigation move_base.launch] with the deamon, and the others nodes I run it in the linux shell, the move_base.launch didn't work.
↧
move_base vs geometry_msgs/PoseStamped md5 error, Electric, deb-install
I've just been trying to run (for the first time, so maybe I just set something wrong) `move_base` together with `gmapping` on ROS Electric (on Ubuntu 10.04). As soon as `move_base` goes up, an error appears:
[ERROR] [1323959697.184014051]: Client [/move_base] wants topic /move_base/goal
to have datatype/md5sum [move_base_msgs/MoveBaseActionGoal/660d6895a1b9a16dce51fbdd9a64a56b],
but our version has [geometry_msgs/PoseStamped/d3812c3cbc69362b77dc0b19b345f8f5].
Dropping connection.
I've installed all ROS packages via apt-get. There has been some update today, so maybe some of the packages weren't rebuilt properly. Has anyone else noticed this problem?
↧
Is move_base possible without map, global_plan, local_plan
Given goal point coordinates, is it possible for the robot to move to goal without map, global_plan. By just using /odom data?
↧
↧
Client [/mir_auto_bagger] wants topic /move_base/goal to have datatype/md5sum
When I try to do a gmapping with my mobile robot an error pop-up:> [ERROR] [1554797108.240628800]: Client> [/mir_auto_bagger] wants topic> /move_base/goal to have> datatype/md5sum> [*/8ac6f5411618f50134619b87e4244699],> but our version has> [move_base_msgs/MoveBaseActionGoal/660d6895a1b9a16dce51fbdd9a64a56b].> Dropping connection.>> [move_base_node-2] process has died> [pid 6194, exit code -6, cmd> /opt/ros/kinetic/lib/move_base/move_base> cmd_vel:=mobile_base/commands/velocity> __name:=move_base_node __log:=/home/chbloca/.ros/log/ed0463be-5a97-11e9-93e4-94c6911e7b24/move_base_node-2.log].> log file:> /home/chbloca/.ros/log/ed0463be-5a97-11e9-93e4-94c6911e7b24/move_base_node-2*.log
What library should I modify in order to make the PC messages to be compatible with the mobile robot?
PD: I cannot access to the mobile robot PC
↧
teb_local_planner Multithreading
Hi,
I am currently developing an Ackermann drive robot and I am using teb_local_planner as my local planner. ROS runs on Jetson TX2.
When running the move_base node I get a warning on that the Map update takes from 0.2 to over 1 seconds, while my desired rate is 5Hz.
While running I am monitoring my CPU usage, and I am noticing only ONE of my six cores are really working. One is constantly at 100%, 2-5 is hovering around 50% and the last one is at 0%.
Is there a way to spread the processing more evenly, thus decreasing my loop time?
****
For information: I have tested different local costmap resolutions and sizes, however I was not able to get the desired resolution nor size to run fast enough. Have a 3x3 and 0.2 as current params, which runs fast enougth, but I want a lower resolution.
***
Thanks in advance!
↧
Error /move_base->/move_base (/move_base/global_costmap/footprint) /move_base->/move_base (/move_base/local_costmap/footprint)
WARNING The following node subscriptions are unconnected:
* /twist_to_motors:
* /cmd_vel
* /move_base:
* /mobile_base/sensors/bumper_pointcloud
* /move_base/cancel
* /rviz:
* /mobile_base/sensors/bumper_pointcloud
* /map_updates
WARNING These nodes have died:
* robot_state_publisher-1
Found 2 error(s).
ERROR The following nodes should be connected but aren't:
* /move_base->/move_base (/move_base/global_costmap/footprint)
* /move_base->/move_base (/move_base/local_costmap/footprint)
ERROR Different number of openni2 sensors found.
* 0 openni2 sensors found (expected: 1).
↧
move_base strange behaviour when using earth referenced heading
Hey guys,
I am performing gps waypoint navigation using `move_base` for the navigation side of things. My localization setup uses `robot_localization` i run two instances of this in order to fuse the gps, so first instance has wheel odom + IMU and second instance has wheel odom + IMU + GPS.
My IMU does not provide an earth referenced heading so i have a gnss heading receiver setup and i pipe the heading into a Pose message of the following format:

I have two pose messages setup, one for the odom frame and one for the map frame **both** are the exact same but with different `frame_id`. I fuse the earth reference heading into both `robot_localization` nodes in the following way:
ekf_se_odom:
frequency: 20
two_d_mode: true
sensor_timeout: 0.15
transform_time_offset: 0.0
transform_timeout: 0.0
print_diagnostics: true
debug: false
map_frame: map
odom_frame: odom
base_link_frame: base_link
world_frame: odom
odom0: /warthog_velocity_controller/odom
odom0_config: [false, false, false,
false, false, false,
true, true, false,
false, false, true,
false, false, false]
odom0_queue_size: 10
odom0_nodelay: true
odom0_differential: false
odom0_relative: false
# GNSS HEADING POSE MESSAGE (ODOM)
pose0: /gps/odometry_odom
pose0_config: [false, false, false,
false, false, true,
false, false, false,
false, false, false,
false, false, false]
pose0_queue_size: 10
pose0_nodelay: true
pose0_differential: false
pose0_relative: false
imu0: /mcu_imu/data
imu0_config: [false, false, false,
false, false, false,
false, false, false,
false, false, true,
true, true, false]
imu0_differential: false
imu0_nodelay: false
imu0_relative: false
imu0_queue_size: 10
use_control: false
ekf_se_map:
frequency: 20
sensor_timeout: 0.15
two_d_mode: true
transform_time_offset: 0.0
transform_timeout: 0.0
print_diagnostics: true
debug: false
debug_out_file: "/home/alec/debug_ekf.txt"
map_frame: map
odom_frame: odom
base_link_frame: base_link
world_frame: map
odom0: /warthog_velocity_controller/odom
odom0_config: [false, false, false,
false, false, false,
true, true, false,
false, false, true,
false, false, false]
odom0_queue_size: 10
odom0_nodelay: true
odom0_differential: false
odom0_relative: false
# GNSS HEADING POSE MESSAGE (MAP)
pose0: /gps/odometry_map
pose0_config: [false, false, false,
false, false, true,
false, false, false,
false, false, false,
false, false, false]
pose0_queue_size: 10
pose0_nodelay: true
pose0_differential: false
pose0_relative: false
odom2: /bunkbot_localization/odometry/gps
odom2_config: [true, true, false,
false, false, false,
false, false, false,
false, false, false,
false, false, false]
odom2_queue_size: 10
odom2_nodelay: true
odom2_differential: false
odom2_relative: false
imu0: /mcu_imu/data
imu0_config: [false, false, false,
false, false, false,
false, false, false,
false, false, true,
true, true, false]
imu0_differential: false
imu0_nodelay: true
imu0_relative: false
imu0_queue_size: 10
use_control: false
**The Problem** Whenever i fuse in the earth referenced heading, record some GPS waypoints and attempt to navigate i get a very strange behaviour! see below:

**BUT:** When i **do not** fuse the earth reference heading. the navigation works fine????? see below:

Does anyone know why this would be happening? I remap the `move_base` odom topic to my ekf filtered output:
And i have checked this topic's output with both fused gnss heading and without and they seem to be fine?
↧
↧
Amcl Particle Cloud info
What is the reason behind publishing particle cloud. Is it just to show the user, the degree of accuracy of localisation.
Because Amcl also publishes PoseWithCovarianceStamped, and that is what move_base uses. Is it correct?
↧
Costmap2D "forget" obstacles after some time
Hi, I am trying to implement a PointCloud2 based obstacle avoidance layer for use with move_base. I have taken the camera's point cloud, down sampled it using a VoxelGrid, and then filtered it using a PassThrough filter. I then use the resulting point cloud in a `costmap_2d::ObstacleLayer`. This works fine (for the most part), but after it has detected an obstacle, and has moved past it, I would like that obstacle to reset after some time, is this possible?
I know a rolling window will forget it after a certain distance, but I have some constraints on how the overall costmaps are created. I have a robot that has a fairly well defined startup sequence and want to add this costmap "on-the-fly". I have managed to do this by fetching all the move_base costmap parameters when I want to turn depth-based obstacle avoidance on, update them with my new layers, and then restart the move_base node which has `respawn=true`. This then regenerates all the costmaps with my new layers in. Once I am done I reset the params to their original state and restart move_base once more, and all is back to normal. I looked for a way to update this at runtime, and could not find a way, so if this is wrong or there is another way please let me know.
I have tried countless combinations of raytrace and obstacle range values, I have played with the observation_persistence parameter to no avail, I have tried adding footprint_clearing_enabled and track_unknown_space. I have also tried `inf_is_valid: true` but no use. Any help in this regard would be greatly appreciated!
I can also upload the rest of the costmap layers if that will help with the debugging process.
`obstacle_avoidance.launch`
...
filter_field_name: z
filter_limit_min: 0.0
filter_limit_max: 12.0
filter_limit_negative: False
leaf_size: 0.02
filter_field_name: z
filter_limit_min: 0.3
filter_limit_max: 1.5
filter_limit_negative: False
input_frame: base_link
`global_costmap.yaml`
costmap:
plugins:
- {name: obstacle_avoidance_layer, type: "costmap_2d::ObstacleLayer"}
obstacle_avoidance_layer:
enabled: true
observation_sources: obstacle_avoidance
combination_method: 1
obstacle_avoidance:
sensor_frame: base_link
data_type: PointCloud2
topic: obstacle_cloud
expected_update_rate: 0.0 # TODO: set this once figured out the rate
observation_persistence: 0
# inf_is_valid: true
raytrace_range: 1000.0
obstacle_range: 2.0
marking: true
clearing: true
min_obstacle_height: 0.3
max_obstacle_height: 1.5
https://imgur.com/GNwK0cs
↧
Printing time values along with pose
I’m an absolute newbie and I got hold of someone’s simple program to navigate a robot by setting a goal position and including random obstacles. The python script uses ROS move_base and navigation packages, subscribes to nav_msgs and prints out pose and twist outputs to the terminal/a text file. Everything works fine but I’m not able to figure out the time values for each pose/twist output. How can I get the script to output time; or is it an output frequency parameter set in any of the yaml files. I tried searching and I could not figure out.
↧