Quantcast
Channel: ROS Answers: Open Source Q&A Forum - RSS feed
Viewing all 667 articles
Browse latest View live

[Move_base] problem of setting planner

$
0
0
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 alternative

$
0
0
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.

$
0
0
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

$
0
0
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: ![image description](/upfiles/15531700374385629.png) 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

$
0
0
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

$
0
0
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

$
0
0
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

$
0
0
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?

$
0
0
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

$
0
0
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): ![image description](/upfiles/15544779803835302.png) 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?

$
0
0
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

$
0
0
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

$
0
0
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

$
0
0
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

$
0
0
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)

$
0
0
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

$
0
0
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: ![image description](https://i.imgur.com/HlCEr42.gif) 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: ![image description](https://i.imgur.com/IKjPFeK.gif) **BUT:** When i **do not** fuse the earth reference heading. the navigation works fine????? see below: ![image description](https://i.imgur.com/Gl2zucY.gif) 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

$
0
0
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

$
0
0
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

$
0
0
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.
Viewing all 667 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>