Hi all,
I have a mobile robot with a Hokuyo Lidar, wheel encoders, IMU and couple of Sonar sensors. I have started working on the Complete coverage path planning and I am wondering if there is any package in ROS which can be used for this? I have searched and was not able to find anything. If there is no such package, what is the best way to proceed about it? I know this is a very general question but I am just looking for some pointers or references which might be helpful to start working on Complete coverage path planning?
Thanks in advance.
Naman Kumar
↧
Complete coverage path planning ros
↧
Is there is trajectory planner for quadrotor / holonomic robot in ROS?
Hi All,
I wan to control a quadrotor with move_base package, this quadrotor is stable controlled by it's on-board processer, so I just need to move it.
But the problem is this quadrotor can not accept velocity_yaw command, or if I send rotation command it will become very unstable.
So, I want to know is there a path planner for only translation without rotation?
Thanks..
↧
↧
Navigation and rotation_recovery AMCL
Hi all,
I am currently fine tuning the parameters of my turtlebot navigation. Currently, my turtlebot seems to think it is stuck although there is a big enough gap to move through it, this is especially so when turning corners. When it reaches a collision cost factor of -1.00, the robot just stops and gets stuck. Any idea how to solve this problem? Is it possible to tweak the rotation_recovery parameters? My costmap parameters for the inflation layer are already set to the bare minimum so that it can move through narrow corridors. (I'm using only a 2D RPLidar Sensor)
Thanks!
↧
No Laserscan received for many seconds for navigation ?
Hi Guys,
I m trying to set up the 2D Navigation Stack. Everything works fine beside of the integration of the laser_scanner.
I set up all the transformations as well as publishing all the needed data as map, odom and laser_scan for autonomous navigation. Nevertheless amcl is always saying this:
> [ WARN] [1488657566.744750961]: No laser scan received (and thus no pose updates have been published) for 1488657566.744665 seconds. Verify that data is being published on the /scan topic.
I have been working with ROS now over 2 years and i dont understand this mistake. My tf_tree (map->odom->base_link->laser_scanner) doesnt show any errors as well as all published topics show the status ok in rviz. If I m using the fake_amcl node everything works fine.
Does anyone know what I can do ?
The advice that i found here, to set the sim_time to true causes that amcl isnt loading the map.
Thanks for help :)
↧
Use GPS with robot_localization and navsat_transform_node
Hi to all,
my configuration includes Novatel RTK GPS, Razor IMU and Husky with wheel encoders.
I would like to implement a GPS waypoint navigation in ROS by using [robot_localization](http://wiki.ros.org/robot_localization) and [navsat_transform_node](http://docs.ros.org/kinetic/api/robot_localization/html/integrating_gps.html) as discussed in this [previous](http://answers.ros.org/question/251347/gps-waypoint-navigation-with-robot_localization-and-navsat_transform_node/) topic.
My Razor IMU with [ROS driver](http://wiki.ros.org/razor_imu_9dof) report non-zero values when facing EAST, so I added the offset to make the IMU work accordingly with `navsat_transform_node`.
My imu topic is: `/imu`
My GPS topic is: `/fix`
I tried to modify my `control.launch` file in order to add the `navsat_transform_node`, but I don't know if it is correct.
I do not know if I correctly handled the two `robot_localization` nodes in the `control.launch` file.
Can you please give me any suggestions, please?
My `control.launch` file:
My `test.yaml` file:
odom_frame: odom
base_link_frame: base_link
world_frame: odom
two_d_mode: false
frequency: 50
odom0: husky_velocity_controller/odom
odom0_config: [true, true, false,
false, false, true,
true, false, false,
false, false, true,
false, false, false]
odom0_differential: false
odom0_queue_size: 10
imu0: imu
imu0_config: [false, false, false,
true, true, true,
false, false, false,
true, true, true,
true, true, true]
imu0_differential: false
imu0_queue_size: 10
imu0_remove_gravitational_acceleration: true
odom1: odometry/gps
odom1_config: [true, true, true,
false, false, false,
false, false, false,
false, false, false,
false, false, false]
odom1_differential: false
↧
↧
When using navigation, map and global map couldn't delete obstacles
Hello,
I'm new in ROS, and I'm trying to use navigation with turtlebot.
My ROS and Ubuntu version as following:
Ubuntu: 14.04
ROS: indigo
**Question 1:**
I run my launch file (`$ roslaunch turtlebot_gazebo turtlebot_navigation.launch`),
and use "2D Nav Goal" of rviz to navigate,
when I removed the wall of obstacle, I found the **map** and **global map** couldn't delete obstacles.
[gazebo comparison](http://imgur.com/a/Vw3Id)
[rviz comparison](http://imgur.com/a/1DQq9)
How could I delete the obstacle on rviz ?
I had modified the parameters of the following file, but it's no use.
**costmap_common_params.yaml**
obstacle_range: 5.5
raytrace_range: 10.0
**global_costmap_params.yaml**
global_frame: /odom
update_frequency: 20.0
publish_frequency: 20.0
static_map: false
**local_costmap_params.yaml**
update_frequency: 20.0
publish_frequency: 20.0
**Question 2:**
From the rviz map, gmapping seems not handled well in the loop closure,
is there any parameters need to change ?
[rviz result](http://imgur.com/a/1DQq9)
My launch file and move_base configuration as following:
**turtlebot_navigation.launch**:
**costmap_common_params.yaml**
max_obstacle_height: 0.60 # assume something like an arm is mounted on top of the robot
# Obstacle Cost Shaping (http://wiki.ros.org/costmap_2d/hydro/inflation)
robot_radius: 0.20 # distance a circular robot should be clear of the obstacle (kobuki: 0.18)
# footprint: [[x0, y0], [x1, y1], ... [xn, yn]] # if the robot is not circular
map_type: voxel
obstacle_layer:
enabled: true
max_obstacle_height: 0.6
origin_z: 0.0
z_resolution: 0.2
z_voxels: 2
unknown_threshold: 15
mark_threshold: 0
combination_method: 1
track_unknown_space: true
obstacle_range: 5.5
raytrace_range: 10.0
origin_z: 0.0
z_resolution: 0.2
z_voxels: 2
publish_voxel_map: false
observation_sources: scan bump
scan:
data_type: LaserScan
topic: scan
marking: true
clearing: true
min_obstacle_height: 0.25
max_obstacle_height: 0.35
bump:
data_type: PointCloud2
topic: mobile_base/sensors/bumper_pointcloud
[hide preview]
marking: true
clearing: false
min_obstacle_height: 0.0
max_obstacle_height: 0.15
# for debugging only, let's you see the entire voxel grid
#cost_scaling_factor and inflation_radius were now moved to the inflation_layer ns
inflation_layer:
enabled: true
cost_scaling_factor: 5.0
inflation_radius: 0.5
static_layer:
enabled: true
**global_costmap_params.yaml**
global_costmap:
global_frame: /odom
robot_base_frame: /base_footprint
update_frequency: 20.0
publish_frequency: 20.0
static_map: false
transform_tolerance: 0.5
plugins:
- {name: static_layer, type: "costmap_2d::StaticLayer"}
- {name: obstacle_layer, type: "costmap_2d::VoxelLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
**local_costmap_params.yaml**
local_costmap:
global_frame: odom
robot_base_frame: /base_footprint
update_frequency: 20.0
publish_frequency: 20.0
static_map: false
rolling_window: true
width: 4.0
height: 4.0
resolution: 0.05
transform_tolerance: 0.5
plugins:
- {name: obstacle_layer, type: "costmap_2d::VoxelLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
Thank you for your help.
↧
Kobuki Not Moving on Navigation - move_base issue
Hi All,
My set up is Kobuki with s/w on Raspberry Pi with RPLIDAR A2 and that feeding back to a laptop. I'm trying to get the amcl_demo to work:
roslaunch turtlebot_navigation amcl_demo.launch map_file:=/home/mark/KitchenMap.map.yaml --screen
The amcl seems to start without issue and reports:
[ INFO] [1489096786.597987673]: Got new plan
Eventually giving up with:
[ WARN] [1489096805.398058019]: Rotate recovery behavior started.
Which is when I would expect at lease *something* to happen. But the robot just stays still.
On the Pi side I see messages like:
[ WARN] [1489097005.894847319]: Velocity Smoother : using robot velocity feedback end commands instead of last command: 0.0349276, 0, -0.3, [navigation_velocity_smoother]
So something is not quite night. The only thing roswtf reports is:
Found 1 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)
Which I don't think is much of an issue.
My rosgraph looks like this:

[rosgraph.png](/upfiles/14890985687706006.png)
Any ideas what I've got missing or why this is happening?
Many Thanks
Mark
↧
High CPU usage for AMCL and move_base under namespace
I am trying to run the ROS navigation stack on a turtlebot, with everything under a namespace (in this case, the namespace is `robot_0`). The netbook that everything is running on has a dual-core Intel Atom processor with 2GB of RAM, and is running ROS Indigo on Ubuntu 14.04. Everything is fine when I run the sample navigation launch files that do not use namespaces (i.e. `minimal.launch` from turtlebot_bringup and `amcl_demo.launch` from turtlebot_navigation). In this configuration, move_base uses approximately 22% of one core, and amcl uses under 10% of one core. Amcl then publishes the transform from the `/map` frame to the `/odom` frame at 30Hz, as expected.
However, when I switch to my custom configuration file that has everything running under a namespace, the cpu usage for amcl and for move_base each jump to approximately 80%, pushing the total usage for each core to 100%. Amcl is only able to publish the transform at around 5Hz, and the most recent transform available from `/map` to `/robot_0/odom` (the equivalent of `/odom` under the namespace) is over 2 seconds old. I tried the commonly suggested solutions of turning down costmap publishing frequency, and that didn't help (I also don't think it should be necessary because everything runs fine using the default parameters). The configuration I have causes the following warnings from the costmap:
[ WARN] [1466518518.525473823]: Costmap2DROS transform timeout. Current time: 1466518518.5254, global_pose stamp: 1466518518.0204, tolerance: 0.5000
[ WARN] [1466518518.525571024]: Could not get robot pose, cancelling pose reconfiguration
This warning is published at approximately 2Hz. If I increase the `transform_tolerance` on the costmaps to 3.5s (as you can see I did in the configurations I included below), then the warnings become much less frequent, but don't always disappear completely.
However, even if I increase the transform tolerance, I still occasionally get the following warnings:
[ WARN] [1466518719.455966268]: MessageFilter [target=map ]: Dropped 100.00% of messages so far. Please turn the [ros.costmap_2d.message_notifier] rosconsole logger to DEBUG for more information.
[ WARN] [1466518719.713827484]: MessageFilter [target=robot_0/odom ]: Dropped 100.00% of messages so far. Please turn the [ros.costmap_2d.message_notifier] rosconsole logger to DEBUG for more information.
The percentage of messages dropped varies from around 90% to 100%.
And I get errors like the following sporadically whether or not I increase the `transform_tolerance`:
[ERROR] [1466518772.987647336]: Extrapolation Error looking up robot pose: Lookup would require extrapolation into the past. Requested time 1466518762.913725848 but the earliest data is at time 1466518762.988183070, when looking up transform from frame [robot_0/base_footprint] to frame [map]
I have assumed that all of these problems are caused by amcl not publishing the transform as quickly as it should because of some performance issue, but I have not come across any differences between my launch configuration and the default that would increase the cpu load.
All of the configuration files are located in the `testing` branch of the git repository [here](https://github.com/amiller27/multiple_turtlebots_real_world/tree/testing). The tf trees are also there, with good_frames being the tf tree when running the default provided configuration, and bad_frames being the tf tree under the namespace. I have included below all of my launch files and parameter files that I think might be relevant; the main launch file is `robot_under_namespace.launch`. If another file might be helpful, I can add it. Unfortunately I can't just attach them because I don't have enough reputation, so I've pasted their contents here.
robot_under_namespace.launch:
single_robot_wild.launch:
amcl.launch:
move_base.launch:
costmap_common_params.yaml:
max_obstacle_height: 0.60 # assume something like an arm is mounted on top of the robot
# Obstacle Cost Shaping (http://wiki.ros.org/costmap_2d/hydro/inflation)
robot_radius: 0.20 # distance a circular robot should be clear of the obstacle (kobuki: 0.18)
# footprint: [[x0, y0], [x1, y1], ... [xn, yn]] # if the robot is not circular
map_type: voxel
obstacle_layer:
enabled: true
max_obstacle_height: 0.6
origin_z: 0.0
z_resolution: 0.2
z_voxels: 2
unknown_threshold: 15
mark_threshold: 0
combination_method: 1
track_unknown_space: true #true needed for disabling global path planning through unknown space
obstacle_range: 2.5
raytrace_range: 3.0
origin_z: 0.0
z_resolution: 0.2
z_voxels: 2
publish_voxel_map: false
observation_sources: scan bump
scan:
data_type: LaserScan
topic: scan
marking: true
clearing: true
min_obstacle_height: 0.25
max_obstacle_height: 0.35
bump:
data_type: PointCloud2
topic: mobile_base/sensors/bumper_pointcloud
marking: true
clearing: false
min_obstacle_height: 0.0
max_obstacle_height: 0.15
# for debugging only, let's you see the entire voxel grid
#cost_scaling_factor and inflation_radius were now moved to the inflation_layer ns
inflation_layer:
enabled: true
cost_scaling_factor: 5.0 # exponential rate at which the obstacle cost drops off (default: 10)
inflation_radius: 0.5 # max. distance from an obstacle at which costs are incurred for planning paths.
static_layer:
enabled: true
global_costmap_params.yaml:
global_costmap:
global_frame: /map
robot_base_frame: base_footprint
update_frequency: 1.0
publish_frequency: 0.5
static_map: true
transform_tolerance: 3.5
plugins:
- {name: static_layer, type: "costmap_2d::StaticLayer"}
- {name: obstacle_layer, type: "costmap_2d::VoxelLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
local_costmap_params.yaml:
local_costmap:
global_frame: odom
robot_base_frame: base_footprint
update_frequency: 5.0
publish_frequency: 2.0
static_map: false
rolling_window: true
width: 4.0
height: 4.0
resolution: 0.05
transform_tolerance: 3.5
plugins:
- {name: obstacle_layer, type: "costmap_2d::VoxelLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
move_base_params.yaml:
# Move base node parameters. For full documentation of the parameters in this file, please see
#
# http://www.ros.org/wiki/move_base
#
shutdown_costmaps: false
controller_frequency: 5.0
controller_patience: 3.0
planner_frequency: 1.0
planner_patience: 5.0
oscillation_timeout: 10.0
oscillation_distance: 0.2
# local planner - default is trajectory rollout
base_local_planner: "dwa_local_planner/DWAPlannerROS"
base_global_planner: "navfn/NavfnROS" #alternatives: global_planner/GlobalPlanner, carrot_planner/CarrotPlanner
#We plan to integrate recovery behaviors for turtlebot but currently those belong to gopher and still have to be adapted.
## recovery behaviors; we avoid spinning, but we need a fall-back replanning
#recovery_behavior_enabled: true
#recovery_behaviors:
#- name: 'super_conservative_reset1'
#type: 'clear_costmap_recovery/ClearCostmapRecovery'
#- name: 'conservative_reset1'
#type: 'clear_costmap_recovery/ClearCostmapRecovery'
#- name: 'aggressive_reset1'
#type: 'clear_costmap_recovery/ClearCostmapRecovery'
#- name: 'clearing_rotation1'
#type: 'rotate_recovery/RotateRecovery'
#- name: 'super_conservative_reset2'
#type: 'clear_costmap_recovery/ClearCostmapRecovery'
#- name: 'conservative_reset2'
#type: 'clear_costmap_recovery/ClearCostmapRecovery'
#- name: 'aggressive_reset2'
#type: 'clear_costmap_recovery/ClearCostmapRecovery'
#- name: 'clearing_rotation2'
#type: 'rotate_recovery/RotateRecovery'
#super_conservative_reset1:
#reset_distance: 3.0
#conservative_reset1:
#reset_distance: 1.5
#aggressive_reset1:
#reset_distance: 0.0
#super_conservative_reset2:
#reset_distance: 3.0
#conservative_reset2:
#reset_distance: 1.5
#aggressive_reset2:
#reset_distance: 0.0
↧
obstacle add from voxel_layer cannot clear
I am trying to test the obstacle avoid in my robot, I am using a laserscan and a pointcloud2 sensors to get the information of the obstacles, they add the obstacles right in the 2d visualization, the obstacle added from laser can clear automatically, but the obstacle add from the 3D depth sensor can't clear automatically. Anyone encounter this problem? Any suggests?
here is navigation configure(move_base) :
local_costmap_params.yaml
local_costmap:
global_frame: /odom
robot_base_frame: /base_link
update_frequency: 3
publish_frequency: 3
static_map: false
rolling_window: true
width: 6.0
height: 6.0
resolution: 0.025
transform_tolerance: 1.0
map_type: costmap
#static_layer:
#enabled: false
plugins:
- {name: obstacle_layer, type:
"costmap_2d::ObstacleLayer"}
- {name: voxel_layer, type: "costmap_2d::VoxelLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
global_costmap_params.yaml
global_costmap:
global_frame: /map
robot_base_frame: /base_link
update_frequency: 3
publish_frequency: 0.2
static_map: true
rolling_window: false
resolution: 0.025
transform_tolerance: 1.0
map_type: costmap
static_layer:
enabled: false
costmap_common_params.yaml
inflation_layer:
cost_scaling_factor: 0.5
inflation_radius: 0.35 #0.45
robot_radius: 0.35
obstacle_layer:
obstacle_range: 2.5
raytrace_range: 3.0
max_obstacle_height: 1.6 #1.3
min_obstacle_height: 0.03
observation_sources: scan
scan: {data_type: LaserScan, topic: /scan, marking: true, clearing: true, expected_update_rate: 0, inf_is_valid: true}
voxel_layer:
enabled: true
origin_z: 0.0
z_resolution: 0.05
z_voxels: 10
unknown_threshold: 0
#mark_threshold: 2
publish_voxel_map: true
combination_method: 1
observation_sources: output_points # from the 3D depth sensor
output_points:
data_type: PointCloud2
topic: /output_points
marking: true
clearing: true
obstacle_range: 1.90
raytrace_range: 2.00
min_obstacle_height: 0.00
max_obstacle_height: 3.00
mark_threshold: 3
observation_persistence: 2.0
↧
↧
Localization problem: costmap, move_base, robot_localization, gps, hector_mapping
So I have been trying to run robot_localization together with move_base and hector_mapping. However, I have ran into several problems which I am not sure what is the source for them. First of all, when I launch my robot_localization dual ekf_localization with two instances + navsat_transform instance i convert my GPS to UTM and have 3 different odometries: odom_ekf from first ekf instance, odom_gps which is published by navsat_transform and odom_navsat which is also published by navsat but used by second ekf instance. The move_base package subscribe to odom_ekf topic. Hector_mapping is publishing odom based on scan_matching data so it is kind of visual odometry. When I launch robot_localization, move_base and hector_mapping, I receive some weird readings on global and local costmap. It seems that global costmap is sliding around with odometry frames,instead of base_link, published by robot_localization instances and also shows obstacles where the odometry frame is located at that point (see the image http://i.imgur.com/mM0QOve.png). I know it is somehow caused with relation to robot_localization because if doing move_base + hector_mapping it does not show that behavior. Below i post my launch files and yaml files for costmap. Also i receive this warning, I have tried to change costmap size and other suggestions but neither fixed the issue:
[ WARN] [1489754764.299968883]: The origin for the sensor at (0.69, -0.11) is out of map bounds. So, the costmap cannot raytrace for it.
**robot_localization launch file**
[false, false, false,
false, false, false,
true, true, false,
false, false, false,
false, false, false] [false, false, false,
true, true, false,
false, false, false,
false, false, true,
false, false, false] [false, false, false,
false, false, false,
true, true, false,
false, false, false,
false, false, false] [true, true, false,
false, false, false,
false, false, false,
false, false, false,
false, false, false] [false, false, false,
true, true, false,
false, false, false,
false, false, true,
false, false, false]
**move_base launch file**
**global_costmap_params.yaml**
global_costmap:
map_type: costmap
global_frame: /map
robot_base_frame: /base_link
update_frequency: 4.0
publish_frequency: 2.0
static_map: false
rolling_window: true
width: 30.0
height: 20.0
resolution: 0.025
inflation_radius: 0.5
**local_costmap_params.yaml**
local_costmap:
map_type: costmap
global_frame: /map
robot_base_frame: /base_link
update_frequency: 5.0
publish_frequency: 2.0
static_map: false
rolling_window: true
width: 2.0
height: 2.0
resolution: 0.015
inflation_radius: 0.35
**hector_mapping.launch**
↧
Setting arbitrary move_base goal rotation
Hey guys.
Just wanted to know if there was a way to set an arbitrary rotational component of a `move_base_msgs::MoveBaseGoal`? I know you can set planner parameters to have a large rotational tolerance, but this still seems to cause the robot to try and plan towards the specified rotation. Our robot has a 360 degree pivot above its base so the base rotation in the world will often not matter when setting target positions.
Cheers.
↧
rviz is not publishing goal to the topic /move_base_simple/goal
I am setting up ros navigation stack on a robot that is not compatible with navigation stack out of the box. I am not using a static map for the navigation instead i have set the rolling_window parameters true for both global and local cost maps.
(I am not allowed to attach images so i will try my best to describe my situation in words.)
My rviz Screen shows the following objects
- local and global costmaps
- robot footprint.
- "2D Nav Goal" tool is pointing to /move_base_simple/goal.
`$ rostopic info /move_base_simple/goal`
Publishers:
* /rviz_1478194899883990323 (http://172.20.41.90:44168/)
Subscribers:
* /move_base (http://172.20.41.90:46055/)
`$ rostopic info /cmd_vel`
Publishers:
* /move_base (http://172.20.41.90:46055/)
Subscribers:
* /beam/beam (http://172.20.41.123:43113/)
* When I set a goal in rviz using "2D Nav Goal" tool, the terminal window of rviz shows the following information.
INFO [1478195397.235377567]: Setting goal: Frame:base_link, Position(0.558, -0.039, 0.000), Orientation(0.000, 0.000, 0.000, 1.000) = Angle: 0.000
In another terminal window i have following command running
"rostopic echo /move_base_simple/goal"
In another terminal window i have following command running
"rostopic echo /cmd_vel"
My problem is that when I set a goal in rviz screen i do not see anything published to /move_base_simple/goal or /cmd_vel topics.
↧
Rostest and move_base actionlib
Hi
I have a package which relies on the move_base action server interface.
Is it possible to mock the move_base server in rostest/gtest, so i can perform unittests?
I have tried creating a simple action server in the test, as
class MoveBaseAction
{
protected:
ros::NodeHandle nh_;
typedef actionlib::SimpleActionServer MoveBaseActionServer;
MoveBaseActionServer * as_; // NodeHandle instance must be created before this line. Otherwise strange error occurs.
std::string action_name_;
// create messages that are used to published feedback/result
move_base_msgs::MoveBaseFeedback feedback_;
move_base_msgs::MoveBaseResult result_;
public:
MoveBaseAction(std::string name) :
action_name_(name)
{
ROS_ERROR("Starting server...");
//as_ = new actionlib::SimpleActionServer(nh_, name, boost::bind(&MoveBaseAction::executeCB, this, _1), false),
as_ = new MoveBaseActionServer(ros::NodeHandle(), "move_base", boost::bind(&MoveBaseAction::executeCB, this, _1), false);
as_->registerGoalCallback(boost::bind(&MoveBaseAction::goalCB, this));
as_->start();
}
~MoveBaseAction(void)
{
}
void goalCB(){
}
void executeCB(const move_base_msgs::MoveBaseGoalConstPtr &goal)
{
// helper variables
ros::Rate r(1);
bool success = true;
// push_back the seeds for the fibonacci sequence
move_base_msgs::MoveBaseFeedback feedback_;
double N = 100;
double dx = goal->target_pose.pose.position.x/N;
double dy = goal->target_pose.pose.position.y/N;
fprintf(stderr,"goal is (%f,%f)", goal->target_pose.pose.position.x,goal->target_pose.pose.position.y);
// start executing the action
for(int i = 1; i <= N; i++) {
// check that preempt has not been requested by the client
if (as_->isPreemptRequested() || !ros::ok()) {
printf("%s: Preempted", action_name_.c_str());
// set the action state to preempted
as_->setPreempted();
success = false;
break;
}
feedback_.base_position.pose.position.x = dx*i;
feedback_.base_position.pose.position.y = dy*i;
fprintf(stderr,"Progress is (%f,%f)", feedback_.base_position.pose.position.x, feedback_.base_position.pose.position.y);
// publish the feedback
as_->publishFeedback(feedback_);
// this sleep is not necessary, the sequence is computed at 1 Hz for demonstration purposes
r.sleep();
}
if(success) {
fprintf(stderr,"%s: Succeeded", action_name_.c_str());
// set the action state to succeeded
as_->setSucceeded(result_);
}
}
};
And then use the class in the test as
typedef actionlib::SimpleActionClient MoveBaseClient;
MoveBaseAction as("move_base");
MoveBaseClient ac_("move_base", true);
//wait for the action server to come up
while(!ac_.waitForServer(ros::Duration(1.0)) && ros::ok()){
ros::spinOnce();
ROS_ERROR("Waiting for the move_base action server");
}
But it hangs in the waitForServer loop.
I think it have something to do with the fact i am not spinning ros, but i cannot figure out a proper way to do it.
I would like to able to test my own class, which works as an action client to move_base.
Regards
Christian
↧
↧
no tf tree for husky simulation in ROS kinect
Greetings,
I am trying to simulate Husky from the source file available at [official git pages](https://github.com/husky/husky). I am following instructions as mentioned in page http://clearpathrobotics.com/guides/husky/HuskyAMCL.html .
I am able to launch Gazebo withe environment + husky, Rviz . I am getting error on launch of amcl_demo (error by move_base node) :> Timed out waiting for transfrom from> base_link to map to become available> before running costmap. Can transform > returned after 0.1 timeout was 0.1
view_frames reports that there is no tf data, which is strange for me. Rviz reports non-existant /map frame, and obviously no transform exist between base_link and map.
I am aware that current official release is for Indigo only for Husky robot.
Any guidance on how I can repair this errror. I believe that there should have a tf tree but noting exists. any idea how this can be handled.
Rgds
↧
Sending goals to navigation stack using code
Hi,
I think this question is not really related to rtabmap, but I'm hoping that you could point me to the right direction.
I am able to send goals to navigation stack following tutorials on this site http://wiki.ros.org/navigation/Tutorials/SendingSimpleGoals. My question is, how can I verify that the location of the goal pose itself is free of obstacles(a valid goal pose)? I'm trying to code up something that will generate valid goal poses by itself.
Thanks,
CJ
↧
GPS waypoint navigation with Jackal
I have a the UGV "Jackal" from Clearpath Robotics. My Task is to let the robot follow a predetermined path (given in UTM -Coordinates). The robot has already GPS, IMU and odometry implemented. The `robot_localization` package is also already installed and preconfigured.
To let the robot navigate autonomously, I would like to use the `move_base` package. Therefore the goals (`move_base/goal` or `move_base_simple/goal`) have to be "in the robots world frame, or a frame that can be transormed to the world frame" (see Answer for this [question](http://answers.ros.org/question/251347/gps-waypoint-navigation-with-robot_localization-and-navsat_transform_node/)).
The `robot_localization` package should provide a transform from **world_frame->utm**. But when I start the robot outside, I cant't see this transformation in the `tf` node. Because of that I can't send goals to the `move_base` node with `frame_id` **utm** I think.
My Questions are now:
1. Where can I check that the `navsat_transform_node` provides the **world_frame -> utm** transformation?
2. How should I configure the `move_base` node that he will accepts goals in the utm-frame? (I know this is a very open question, but I am very glad for every tip.)
Thank you for your help and support.
↧
Problem with move_base and plugin
Hi,
I'm trying to set up my navigation stack as described in the [navigation tutorial (3)](http://wiki.ros.org/navigation/Tutorials/RobotSetup). I'm just using laserscanning data (topic: /scan) as input data. When launching move_base.launch I get the following error message:
[ INFO] [1492703004.522593034]: Using plugin "static_layer" [ INFO] [1492703004.934024440]: Requesting the map... [ INFO] [1492703008.961617911]: Resizing costmap to 4000 X 4000 at 0.050000 m/pix [ INFO] [1492703009.729487121]: Received a 4000 X 4000 map at 0.050000 m/pix [ INFO] [1492703009.773186553]: Using plugin "obstacle_layer" [ INFO] [1492703009.846848125]: Subscribed to Topics: laser_scan_sensor [ INFO] [1492703010.106286438]: Using plugin "inflation_layer" [ INFO] [1492703011.212133919]: Using plugin "obstacle_layer" terminate called after throwing an instance of 'pluginlib::LibraryLoadException' what(): Could not find library corresponding to plugin costmap_2d::ObstacleLayer. Make sure the plugin description XML file has the correct name of the library and that the library actually exists. [move_base-3] process has died [pid 21563, exit code -6, cmd /opt/ros/kinetic/share/move_base/move_base __name:=move_base __log:=/home/ubuntu/.ros/log/5d670626-25d8-11e7-9af6-b827ebab1210/move_base-3.log]. log file: /home/ubuntu/.ros/log/5d670626-25d8-11e7-9af6-b827ebab1210/move_base-3*.log What am I doing wrong? Where is my mistake... I searched the forum for quiet a long time now, but still havn't found a working answer.
Thanks in advance. ---------- ## base_local_planner_params.yaml ## TrajectoryPlannerROS: max_vel_x: 0.19 min_vel_x: 0.095 max_vel_theta: 0.256 min_in_place_vel_theta: 0.192 acc_lim_theta: 3.2 acc_lim_x: 2.5 acc_lim_y: 2.5 holonomic_robot: true ---------- ## costmap_common_params.yaml ## obstacle_range: 2.5 raytrace_range: 3.0 footprint: [[5, 5], [5, 15],[0, 10]] inflation_radius: 0.55 observation_sources: laser_scan_sensor laser_scan_sensor: {sensor_frame: laser, data_type: LaserScan, topic: scan, marking: true, clearing: true} ---------- ## global_costmap_params.yaml ## global_costmap: global_frame: /odom robot_base_frame: base update_frequency: 2.0 static_map: true ---------- ## local_costmap_params.yaml ## local_costmap: global_frame: odom robot_base_frame: base update_frequency: 5.0 publish_frequency: 2.0 static_map: false rolling_window: true width: 6.0 height: 6.0 resolution: 0.05
I'm trying to set up my navigation stack as described in the [navigation tutorial (3)](http://wiki.ros.org/navigation/Tutorials/RobotSetup). I'm just using laserscanning data (topic: /scan) as input data. When launching move_base.launch I get the following error message:
[ INFO] [1492703004.522593034]: Using plugin "static_layer" [ INFO] [1492703004.934024440]: Requesting the map... [ INFO] [1492703008.961617911]: Resizing costmap to 4000 X 4000 at 0.050000 m/pix [ INFO] [1492703009.729487121]: Received a 4000 X 4000 map at 0.050000 m/pix [ INFO] [1492703009.773186553]: Using plugin "obstacle_layer" [ INFO] [1492703009.846848125]: Subscribed to Topics: laser_scan_sensor [ INFO] [1492703010.106286438]: Using plugin "inflation_layer" [ INFO] [1492703011.212133919]: Using plugin "obstacle_layer" terminate called after throwing an instance of 'pluginlib::LibraryLoadException' what(): Could not find library corresponding to plugin costmap_2d::ObstacleLayer. Make sure the plugin description XML file has the correct name of the library and that the library actually exists. [move_base-3] process has died [pid 21563, exit code -6, cmd /opt/ros/kinetic/share/move_base/move_base __name:=move_base __log:=/home/ubuntu/.ros/log/5d670626-25d8-11e7-9af6-b827ebab1210/move_base-3.log]. log file: /home/ubuntu/.ros/log/5d670626-25d8-11e7-9af6-b827ebab1210/move_base-3*.log What am I doing wrong? Where is my mistake... I searched the forum for quiet a long time now, but still havn't found a working answer.
Thanks in advance. ---------- ## base_local_planner_params.yaml ## TrajectoryPlannerROS: max_vel_x: 0.19 min_vel_x: 0.095 max_vel_theta: 0.256 min_in_place_vel_theta: 0.192 acc_lim_theta: 3.2 acc_lim_x: 2.5 acc_lim_y: 2.5 holonomic_robot: true ---------- ## costmap_common_params.yaml ## obstacle_range: 2.5 raytrace_range: 3.0 footprint: [[5, 5], [5, 15],[0, 10]] inflation_radius: 0.55 observation_sources: laser_scan_sensor laser_scan_sensor: {sensor_frame: laser, data_type: LaserScan, topic: scan, marking: true, clearing: true} ---------- ## global_costmap_params.yaml ## global_costmap: global_frame: /odom robot_base_frame: base update_frequency: 2.0 static_map: true ---------- ## local_costmap_params.yaml ## local_costmap: global_frame: odom robot_base_frame: base update_frequency: 5.0 publish_frequency: 2.0 static_map: false rolling_window: true width: 6.0 height: 6.0 resolution: 0.05
↧
↧
How to get robot Trajectory from move_base
Hello,
I am new to ROS, and I am currently working on an android app to guide people in an indoor environment. I am using a picture of the environment and I would like to show on it the robot trajectory as shown on rviz. Is it possible?
I tried to use a subscriber to the topic /move_base/TrajectoryPlannerROS/global_plan but it seems like the same set of Path messages (x, y, z...) is published periodically whatever the goal is (I noticed that using rostopic echo), while on rviz the trajectory changes. Am I doing it wrong?
Thank you in advance for your help
↧
Insert permanent obstacles in static map
Hi,
I have a static map of the robots environment but there are obstacles distributed in this environment. These obstacles have ar-tags and it is known, that these obstacles are not moving.
Up to now I already wrote a node, which subscribes to /map and publishes /modified_map. In the published occupancy map, the permanent obstacles are inserted.
The problem now is, that the global costmap is not updated when a new modified_map is published. Is it possible, that the global costmap is updated with the new map?
Thank you in advance.
Jakob
↧
Problem when setting 2D Nav Goal
Hi,
I'm running `ROS Kinetic` in Ubuntu 16.04.2 LTS on a Raspberry Pi 3.
My navigation stack is up and running and my robot is able to localize itself in a given map. I'm also able to drive around via a joystick (`/input_joy/cmd_vel`-topic).
The next step is to [drive around in rviz](http://wiki.ros.org/navigation/Tutorials/SendingSimpleGoals). I am able to set 2D Pose Estimates there, but whenever I'm trying to set a 2D Nav Goal, nothing is happening, except from the arrow and the path being visually displayed in rviz.
Unfortunately, when echoing the `/cmd_vel`-topic, which is being published by `move_base`, it always displays the following: linear: x: 0.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: -1.0 As well I get the following error thrown until I kill `move_base`: Control loop missed its desired rate of 5.0000Hz... the loop actually took 0.4580 seconds Since I don't get that error, before setting a 2D Nav Goal, I assume that there is either something wrong in one of my costmaps or move_base settings...
I appreciate all your help. Thanks in advance.
Nico ---------- ## base_local_planner_params.yaml ## TrajectoryPlannerROS: max_vel_x: 0.19 min_vel_x: 0.095 max_vel_theta: 0.256 min_in_place_vel_theta: 0.192 acc_lim_theta: 3.2 acc_lim_x: 2.5 acc_lim_y: 2.5 holonomic_robot: true meter_scoring: true ---------- ## costmap_common_params.yaml ## plugins: - {name: static_map, type: "costmap_2d::StaticLayer"} - {name: obstacles, type: "costmap_2d::VoxelLayer"} - {name: inflation_layer, type: "costmap_2d::InflationLayer"} obstacle_range: 2.5 raytrace_range: 3.0 footprint: [[0.05, 0.05], [0.05, -0.05],[0, -0.10]] #robot_radius: 0.20 inflation_radius: 0.55 obstacles: observation_sources: laser_scan_sensor laser_scan_sensor: {sensor_frame: laser, data_type: LaserScan, topic: scan, marking: true, clearing: true} ---------- ## global_costmap_params.yaml ## global_costmap: global_frame: /map robot_base_frame: base update_frequency: 0.8 static_map: false width: 5 height: 2 ---------- ## local_costmap_params.yaml ## local_costmap: global_frame: odom robot_base_frame: base update_frequency: 1.0 publish_frequency: 2.0 static_map: false rolling_window: true width: 3.0 height: 3.0 resolution: 0.05 controller_frequency: 5.0 ---------- ## move_base.launch ##
I'm running `ROS Kinetic` in Ubuntu 16.04.2 LTS on a Raspberry Pi 3.
My navigation stack is up and running and my robot is able to localize itself in a given map. I'm also able to drive around via a joystick (`/input_joy/cmd_vel`-topic).
The next step is to [drive around in rviz](http://wiki.ros.org/navigation/Tutorials/SendingSimpleGoals). I am able to set 2D Pose Estimates there, but whenever I'm trying to set a 2D Nav Goal, nothing is happening, except from the arrow and the path being visually displayed in rviz.
Unfortunately, when echoing the `/cmd_vel`-topic, which is being published by `move_base`, it always displays the following: linear: x: 0.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: -1.0 As well I get the following error thrown until I kill `move_base`: Control loop missed its desired rate of 5.0000Hz... the loop actually took 0.4580 seconds Since I don't get that error, before setting a 2D Nav Goal, I assume that there is either something wrong in one of my costmaps or move_base settings...
I appreciate all your help. Thanks in advance.
Nico ---------- ## base_local_planner_params.yaml ## TrajectoryPlannerROS: max_vel_x: 0.19 min_vel_x: 0.095 max_vel_theta: 0.256 min_in_place_vel_theta: 0.192 acc_lim_theta: 3.2 acc_lim_x: 2.5 acc_lim_y: 2.5 holonomic_robot: true meter_scoring: true ---------- ## costmap_common_params.yaml ## plugins: - {name: static_map, type: "costmap_2d::StaticLayer"} - {name: obstacles, type: "costmap_2d::VoxelLayer"} - {name: inflation_layer, type: "costmap_2d::InflationLayer"} obstacle_range: 2.5 raytrace_range: 3.0 footprint: [[0.05, 0.05], [0.05, -0.05],[0, -0.10]] #robot_radius: 0.20 inflation_radius: 0.55 obstacles: observation_sources: laser_scan_sensor laser_scan_sensor: {sensor_frame: laser, data_type: LaserScan, topic: scan, marking: true, clearing: true} ---------- ## global_costmap_params.yaml ## global_costmap: global_frame: /map robot_base_frame: base update_frequency: 0.8 static_map: false width: 5 height: 2 ---------- ## local_costmap_params.yaml ## local_costmap: global_frame: odom robot_base_frame: base update_frequency: 1.0 publish_frequency: 2.0 static_map: false rolling_window: true width: 3.0 height: 3.0 resolution: 0.05 controller_frequency: 5.0 ---------- ## move_base.launch ##
↧