GithubHelp home page GithubHelp logo

navigation_layers's People

Contributors

alexreimann avatar bit-pirate avatar cdondrup avatar chaiso-krit avatar corot avatar dlaz avatar dlu avatar doisyg avatar jmcjacob avatar mattderry avatar nxdefiant avatar patrick-lascombe avatar trainman419 avatar xinwf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

navigation_layers's Issues

Range Sensor Layer: Symbol lookup error

I'm having an issue since I've switched to using Melodic. I was able to get range sensors to participate in navigation using the plugin with Kinetic, but since moving to Melodic on a new install, it seems I have to strip all the '/' from the beginning of all the sonar topic or move_base will freak out about tf2 not liking the slashes. So I changed the frame ID of my sonar to:

frame_id: "sonar0"

This stopped the tf2 error message, but instead it crashes move_base with a error from the librange_sensor_layer.so (I had to copy the message by hand as I can't figure out how to copy from tmux to clipboard, so I hope I got it right):

/opt/ros/melodic/lib/move_base/move_base: symbol lookup error: /opt/ros/melodic/lib//librange_sensor_layer.so: undefined symbol: ZN3tf212getTimestampIN13geometry_msgs13PointSamped_ISaIVEEEEERKN3ros4TimeERKT

I googled this and it seems someone had same issue and it went away by building from source... I installed using

apt-get install ros-melodic-range-sensor-layer

Is there an issue with the release or is it something wrong with my move_base installation missing something that the plugin needs?

Why is RangeSensorLayer not an ObstacleLayer?

After looking further into the code I started wondering why the RangeSensorLayer is not an (does not inherit from) ObstacleLayer. IMO there is a lot of interesting functionality already implemented in the obstacle layer, e.g. clearing and marking.

Is there a specfic reason for this design choice?

Range_sensor_layer: Type conversion from int to unsigned int will cause loop error

@DLu In range_sensor_layer.cpp line 323 and 325, variable bx0, bx1, by0, by1 is force converted to unsigned int type from int. When those variable are negative, it will cause infinite loop.

  // Limit Bounds to Grid
  bx0 = std::max(0, bx0);
  by0 = std::max(0, by0);
  bx1 = std::min(static_cast<int>(size_x_), bx1);
  by1 = std::min(static_cast<int>(size_y_), by1);

  for (unsigned int x = bx0; x <= (unsigned int)bx1; x++)
  {
    for (unsigned int y = by0; y <= (unsigned int)by1; y++)
    {
      bool update_xy_cell = true;

This situation will occur when range sensor layer was used in local costmap, and robot pose abruptly changed a lot. It will make ox and oy out of local costmap bounds, and worldToMapNobounds (line 281) may generate negative values.

  // Bounds includes the origin
  worldToMapNoBounds(ox, oy, Ox, Oy);
  bx1 = bx0 = Ox;
  by1 = by0 = Oy;
  touch(ox, oy, &min_x_, &min_y_, &max_x_, &max_y_);

  // Update Map with Target Point
  unsigned int aa, ab;
  if (worldToMap(tx, ty, aa, ab))
  {
    setCost(aa, ab, 233);
    touch(tx, ty, &min_x_, &min_y_, &max_x_, &max_y_);
  }

  double mx, my;

  // Update left side of sonar cone
  mx = ox + cos(theta - max_angle_) * d * 1.2;
  my = oy + sin(theta - max_angle_) * d * 1.2;
  worldToMapNoBounds(mx, my, Ax, Ay);
  bx0 = std::min(bx0, Ax);
  bx1 = std::max(bx1, Ax);
  by0 = std::min(by0, Ay);
  by1 = std::max(by1, Ay);
  touch(mx, my, &min_x_, &min_y_, &max_x_, &max_y_);

Please correct me if I'm wrong.

How to add navigation_layer to the existing navigation stack

There is any README for user to integrate navigation_layer into navigation stack in ROS.
In my understanding, we have to add these files separately into costmap_2d directory such as cfg , include and src directory structure one by one.

And in src/costmap_2d_ros.cpp:
void Costmap2DROS::resetOldParameters(ros::NodeHandle& nh) in this function. We add
your naviagtion_layer plugin into map, it will work out , right ?

For social layer to detect person , what kind of phyiscal sensor to do that? If there is a moving things around robot, suppose that social layer also can work out to avoid them , right ?

Costmap process dies using Range Sensor Layer

Hello,

I'm trying to get the Range Sensor Layer to run under Kinetic. When I start the costmap node, it tells me that it subscribed to the topic, but after that, the process just dies without any error output. I also can't see any of the sensor readings in the costmap visualization in rviz.
The configuration file looks like this:

plugins:
  - {name: ultrasonic_layer, type: "range_sensor_layer::RangeSensorLayer"}

ultrasonic_layer:
  topics: ["/<my_robot>/ultrasonic"]

publish_frequency: 1.0
robot_radius: 0.4
rolling_window: true

The output in the console:

[ INFO] [1542906425.104982858]: Using plugin "ultrasonic_layer"
[ INFO] [1542906425.140869614]: costmap/ultrasonic_layer: ALL as input_sensor_type given
[ INFO] [1542906425.198440501]: RangeSensorLayer: subscribed to topic /<my_robot>/ultrasonic
[costmap_2d-1] process has died [pid 7822, exit code -11, cmd /opt/ros/kinetic/lib/costmap_2d/costmap_2d_node __name:=costmap_2d __log:=/home/<user>/.ros/log/872c6ffa-ee63-11e8-8527-b827ebebf3ed/costmap_2d-1.log].

I receive messages under the given topic name which look like this:

header: 
  seq: 9157
  stamp: 
    secs: 1542906495
    nsecs: 397895017
  frame_id: "sonar_1_link"
radiation_type: 0
field_of_view: 0.261799395084
min_range: 0.019999999553
max_range: 4.5
range: 1.15199995041

There is a path from the frame sonar_1_link to map in the tf tree and the sensor data also gets visualized correctly in rviz.

Question: There are no obstacles on rviz (Costmap)

Hi, I am testing range_sensor layer package with ultrasonic sensor.

I can see topic of ultrasonic

header:
seq: 11317
stamp:
secs: 1537346490
nsecs: 819666986
frame_id: "/base_ultrasonic_front"
radiation_type: 0
field_of_view: 0.261799007654
min_range: 0.019999999553
max_range: 0.829999983311
range: 0.839999973774

But, I cannot see any obstacles on rviz.

Here is rviz image and costmap_common_param, local_costmap_param and global_costmap_param

image

-------------------Costmap_common_param----------------

#obstacle_range: 3.0 #3.0
#raytrace_range: 3.5 #3.5

#footprint:  [[-0.24,-0.18], [-0.26,-0.16], [-0.26,0.16], [-0.24,0.18], [0.17,0.18], [0.19,0.16], [0.19,-0.16], [0.17,-0.18]] 
footprint:   [[-0.26,-0.18], [-0.26,0.18], [0.19,0.18], [0.19,-0.18]] 
#robot_radius: 0.3



map_type: costmap #voxel #costmap
#observation_sources: scan
#scan: {sensor_frame: base_scan, data_type: LaserScan, topic: scan, marking: true, clearing: true}

obstacle_layer:
  observation_sources: scan
  obstacle_range: 3.0
  raytrace_range: 3.5
  scan: {sensor_frame: base_scan, data_type: LaserScan, topic: scan, marking: true, clearing: true}

sonar_layer:
  topics: ["/ultrasinic/front", "/ultrasinic/left", "/ultrasinic/right"]
  clear_threshold:    0.25
  mark_threshold:     0.46
  no_readings_timeout: 2.0
  clear_on_max_reading: true 


inflation_layer:
  inflation_radius: 0.65 #0.4 1.35
  cost_scaling_factor: 5.0 #0.5 #3.0 

---------------Local_costmap_param-----------------------------

plugins:
  - {name: obstacle_layer, type: 'costmap_2d::ObstacleLayer'}
  - {name: sonar_layer,   type: "range_sensor_layer::RangeSensorLayer"}
  - {name: inflation_layer, type: "costmap_2d::InflationLayer"}


local_costmap:
  global_frame: /odom
  robot_base_frame: /base_footprint

  update_frequency: 10.0 #5.0 #10.0
  publish_frequency: 10.0 #2.0 #10.0
  transform_tolerance: 0.5  

  static_map: false #false  
  rolling_window: true
  width: 5
  height: 5
  resolution: 0.05

----------------Global_costmap_param----------------------------------------

plugins:
  - {name: static_layer, type: "costmap_2d::StaticLayer"}
  - {name: obstacle_layer, type: 'costmap_2d::ObstacleLayer'}
  - {name: sonar_layer,   type: "range_sensor_layer::RangeSensorLayer"}
  - {name: inflation_layer, type: "costmap_2d::InflationLayer"}

global_costmap:
  global_frame: /map
  robot_base_frame: /base_footprint

  update_frequency: 10.0 #1.0 #10.0
  publish_frequency: 10.0 #0.5 #10.0
  transform_tolerance: 0.5

  static_map: true

Inverted velocity in social navigation layer

We (@jmcjacob and I) came across a weird issue with the calculation of the Gaussian representing the human in the social navigation layer. The velocity of the human was inverted which is why the Gaussian was extended behind the human instead of in front when moving towards the robot. We narrowed it down to what we think might be the issue. The calculation of the velocity should be the other way around:

tpt.velocity.x = opt.point.x - tpt.position.x;
tpt.velocity.y = opt.point.y - tpt.position.y;
tpt.velocity.z = opt.point.z - tpt.position.z;

Because by adding the velocity to the position and then subtracting the velocity from the position instead of subtracting the position from the velocity (as described above), the velocity is inverted.

Maybe there is an oversight on our side but currently the social layer will always be extended behind the human. If this indeed a bug, we can open a PR fixing it as we have it working on our robot. If it is not, then I would be grateful for a hint where we might be wrong.

Question about sensor model in range_sensor_layer

Hi guys, is there any reference about sonar model implemented in the range_sensor_layer?
The implementation is a little bit different from what I've read in 'A comparison of three uncertainty calculi for building
sonar-based occupancy grids' by Miguel Ribo.

range_sensor_layer not work in Rviz

My environment : Ubuntu 16.04 kinetic
Load range_sensor plugin into costmap_2d:
range_sensor_layer /home/ros/catkin_ws/src/navigation_layers/range_sensor_layer/costmap_plugins.xml
social_navigation_layers /home/ros/catkin_ws/src/navigation_layers/social_navigation_layers/costmap_plugins.xml
costmap_2d /opt/ros/kinetic/share/costmap_2d/costmap_plugins.xml

in local_costmap_param.yaml , add as below:
plugins:
- {name: obstacle_layer, type: "costmap_2d::ObstacleLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
- {name: sonar, type: "range_sensor_layer::RangeSensorLayer"}

The result is:
screenshot from 2017-09-14 14-23-45

We can see sonar topic in RVIZ . However, Why the UltraSonar cannot find any obstacle in the range layer in RVIZ? Range senor layer seems not work.

latest commit gives compilation errors

"Change to unsigned int" commit causes these error when running catkin_make:

/home/ubuntu/catkin_ws/src/navigation_layers/range_sensor_layer/src/range_sensor_layer.cpp: In member function ‘virtual void range_sensor_layer::RangeSensorLayer::onInitialize()’:
/home/ubuntu/catkin_ws/src/navigation_layers/range_sensor_layer/src/range_sensor_layer.cpp:74:30: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
   for (unsigned int i = 0; i < topic_names.size(); i++)
                            ~~^~~~~~~~~~~~~~~~~~~~

range_sensor_layer don’t use clear_threshold to clear master grid

I use ROS kinetic in order to be able to drive my differential drive robot and I also use range_sensor_layer package (Branch Indigo V0.4.0) in order to be able to use SRF sensors. Recently I noticed that range_sensor_layer, in function RangeSensorLayer::updateCosts() in lines 434-437, updates master grid cells for clearing, only if old_cost is NO_INFORMATION (if current=FREE_SPACE=0 then old_cost can never be smaller than current, because old_cost is an unsighned char and cannot be negative)

void RangeSensorLayer::updateCosts(costmap_2d::Costmap2D& master_grid, int min_i, int min_j, int max_i, int max_j)
{
  if (!enabled_)
    return;

  unsigned char* master_array = master_grid.getCharMap();
  unsigned int span = master_grid.getSizeInCellsX();
  unsigned char clear = to_cost(clear_threshold_), mark = to_cost(mark_threshold_);

  for (int j = min_j; j < max_j; j++)
  {
    unsigned int it = j * span + min_i;
    for (int i = min_i; i < max_i; i++)
    {
      unsigned char prob = costmap_[it];
      unsigned char current;
      if(prob==costmap_2d::NO_INFORMATION){
        it++;
        continue;
      }
      else if(prob>mark)
        current = costmap_2d::LETHAL_OBSTACLE;
      else if(prob<clear)
        current = costmap_2d::FREE_SPACE;
      else{
        it++;
        continue;
      }

      unsigned char old_cost = master_array[it];

      if (old_cost == NO_INFORMATION || old_cost < current)
        master_array[it] = current;
      it++;
    }
  }

  buffered_readings_ = 0;
  current_ = true;
}

But what happened if master grid old_cost is not NO_INFORMATION(255) and current=FREE_SPACE (0)?? Is that not possible?? Because if it’s possible, we ignore completely this case and that may cause errors. In this case maybe a possible solution is something like this (but it is not tested):

void RangeSensorLayer::updateCosts(costmap_2d::Costmap2D& master_grid, int min_i, int min_j, int max_i, int max_j)
{
  if (!enabled_)
    return;

  unsigned char* master_array = master_grid.getCharMap();
  unsigned int span = master_grid.getSizeInCellsX();
  unsigned char clear = to_cost(clear_threshold_), mark = to_cost(mark_threshold_);

  for (int j = min_j; j < max_j; j++)
  {
    unsigned int it = j * span + min_i;
    for (int i = min_i; i < max_i; i++)
    {
      unsigned char prob = costmap_[it];
	  unsigned char old_cost = master_array[it];
      unsigned char current;
      if(prob==costmap_2d::NO_INFORMATION){
        it++;
        continue;
      }
      else if(prob>mark){
        current = costmap_2d::LETHAL_OBSTACLE;
	if (old_cost == NO_INFORMATION || old_cost < current){
		master_array[it] = current;
	}
	it++;
      }
      else if(prob<clear){
        current = costmap_2d::FREE_SPACE;
	if (old_cost > current){
		master_array[it] = current;
	}
	it++;
      }
      else{
        it++;
        continue;
      }
    }
  }

  buffered_readings_ = 0;
  current_ = true;
}

In addition, I want to highlight another two points of range_sensor_layer source code.
First, in function RangeSensorLayer::processVariableRangeMsg() in line 231, it is critical programming to compare if two float values are equal.

  if (range_message.range == range_message.max_range && clear_on_max_reading_)
    clear_sensor_cone = true;

A better way to do that (considering float A and float B) is:

if ( fabs( A - B ) < limit_value )

where limit_value indicates the desired decimal position, in which we want if-statement to compare A and B equality .

And second, I want to ask if it is possible to define a parameter, in order to be able to configure how long we want to wait for transform in line 245 (now is used a fix value of 0.1(100msec))

  if(!tf_->waitForTransform(global_frame_, in.header.frame_id, in.header.stamp, ros::Duration(0.1)) )
  {
    ROS_ERROR_THROTTLE(1.0, "Range sensor layer can't transform from %s to %s at %f",
        global_frame_.c_str(), in.header.frame_id.c_str(),
        in.header.stamp.toSec());
    return;
  }

Thanks in advance

Social Navigation Crush by throwing an exception 'pluginlib::LibraryLoadException

I was running a simulation on turtlebot3, and i am trying to add the social_navigation_package to it in order to perform a dynamic obstacle avoidance, the following is the crush massage:
(i am using ros kinetic)

![1481975834](https://user-images.githubusercontent.com/62336156/79593637-5abbbe00-810e-11ea-9021-880de7bef557.jpg)

[ INFO] [1587140683.364604069, 1579.870000000]: Using plugin "social_layer"
terminate called after throwing an instance of 'pluginlib::LibraryLoadException'
what(): According to the loaded plugin descriptions the class costmap_2d::social_navigation_layers::ProxemicLayer with base class type costmap_2d::Layer does not exist. Declared types are costmap_2d::InflationLayer costmap_2d::ObstacleLayer costmap_2d::StaticLayer costmap_2d::VoxelLayer frontier_exploration::BoundedExploreLayer range_sensor_layer::RangeSensorLayer social_navigation_layers::PassingLayer social_navigation_layers::ProxemicLayer
[move_base-4] process has died [pid 24191, exit code -6, cmd /opt/ros/kinetic/lib/move_base/move_base cmd_vel:=/cmd_vel odom:=odom __name:=move_base __log:=/home/frank/.ros/log/e91015ee-80c7-11ea-914f-080027d624a9/move_base-4.log].
log file: /home/frank/.ros/log/e91015ee-80c7-11ea-914f-080027d624a9/move_base-4*.log

Can you please share your insights on this.
Thank you so much in advance.
Regards,
Frank

Marking and clearing for range sensor layer

I'm using the range sensor layer together with the voxel layer. After hacking around a bit, I wonder how to implement this.

As far as I understand the currently implementing logic follows the CostmapLayer::updateWithMax behaviour. However, this does not allow to clear obstacles added by another layer.

An implementation similar to CostmapLayer::updateWithOverwrite allows the clearing, but does not play nicely with the clear costmap recovery behaviour.

Any suggestions how to implement marking and clearing for the range sensor layer?

Before I further attempt new implementations, I'll wait for #13 to be answered.

New Melodic release?

Hi @DLu.

would you have time to draft a new release for Melodic (and/or the other supported ROS versions)?

A few of the changes since 0.5.0 require us to build this from source. Would be great if we could avoid that.

When sensors are close to each other, as in a ring, clearance of one sensor can clean obstacles on others

I noticed that this happen because we update a rectangular region containing the sensor's origin and left and right sides of sonar cone. So the corners near the origin easily overlap with the area covered by neighbor sensors in a ring. If a neighbor is sensing an obstacle near the origin, and our sensor is clearing a big area, the close obstacle can be removed. This gets solved updating only the mentioned triangle.

I did a simple implementation of this change... If you think it makes sense, I'll clean and make a PR

RangeSensorLayerConfig.h: No such file or directory

Hi,
I add range_sensor_layer to my navigation stack, but I received errors as below when catkin_make

In file included from /home/prd-robotics/Learning/catkin_ws/src/navigation/costmap_2d/plugins/range_sensor_layer.cpp:2:0:
/home/prd-robotics/Learning/catkin_ws/src/navigation/costmap_2d/include/costmap_2d/range_sensor_layer.h:8:55: fatal error: range_sensor_layer/RangeSensorLayerConfig.h: No such file or directory

Please advise

Do not see effect of people in proxemic layer

Hello,

I am testing the social_navigation_layers::ProxemicLayer using ROS Indigo and Ubuntu 14.04 and the basic problem I am seeing is that there appears to be no change in the costmap when I enable/disable the social layer in rqt_reconfigure when a person is present (confirmed on the /people message topic). I had expected the cost to increase around the detected person when I enabled the social layer in rqt_reconfigure. My goal is to ensure that robot makes a wider allowance for people than for inanimate objects.

I am using the default parameters for my social layer as shown below:


social_layer:
   enabled:               true
   cutoff:                10.0    #  double, default: 10.0 - Smallest value to publish on costmap adjustments
   amplitude:             77.0    #  double, default: 77.0 - Amplitude of adjustments at peak
   covariance:            0.25    #  double, default: 0.25 - Covariance of adjustments
   factor:                5.0     #  double, default: 5.0 -  Factor with which to scale the velocity
   keep_time:             0.75    #  double, default: 0.75

And I am running the Navigation stack without a map (local costmap only). My costmap layering looks like this:

   plugins:
     - {name: obstacle_layer,          type: "costmap_2d::ObstacleLayer"}
     - {name: social_layer,            type: "social_navigation_layers::ProxemicLayer"}
     - {name: inflation_layer,         type: "costmap_2d::InflationLayer"}

I am detecting people using the YOLO deep learning network and I republish the detections on the /people topic using the people_msgs/People.msg message type.

Could not load library range_sensor_layer.so

When trying to launch move_base with the range_sensor plugin I keep getting the error message:

terminate called after throwing an instance of 'pluginlib::LibraryLoadException'
  what():  Failed to load library /home/lslabon/shotbot/catkin_ws/devel/lib//librange_sensor_layer.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = /home/lslabon/shotbot/catkin_ws/devel/lib//librange_sensor_layer.so: undefined symbol: _ZN10costmap_2d12CostmapLayer9clearAreaEiiii)

I got another error when trying to launch move_base with range_sensor plugin and in other threads it said installing navigation from source will solve the issue.. But after trying this I get the above error.
I already tried deleting and reinstalling navigation_layers but I keep getting this error.

I hope somebody can help me.. I found a thread where someone had exactly the same issue but it was posted under a wrong repository, therefore it was closed...

Undefined symbol at run-time (getTimestamp)

This line

tf_->transform(pt, opt, global_frame);

at run-time throws

move_base: symbol lookup error: /home/pkolomiets/eyeguide-main/app/ros/devel/lib//libsocial_layers.so: undefined symbol: ZN3tf212getTimestampIN13geometry_msgs13PointStamped_ISaIvEEEEERKN3ros4TimeERKT

This is cured by including tf2_geometry_msgs in social_layer.cpp

#include <tf2_geometry_msgs/tf2_geometry_msgs.h>

P.S. Also, why people message's timestamp isn't used for transform? The latest timestamp is used instead.

tf_->transform(in, out, global_frame_);

when I use this code in ubuntu16.04, I found it has an error when being compiled.

error: ‘class tf::TransformListener’ has no member named ‘transform’
       tf_->transform(pt, opt, global_frame);

There seems no version of ROS Kinetic, and when I try ROS indigo, there is no error.
Is indigo suitable for Ubuntu 16.04?

range sensor layer: Undocumented max_angle parameter

In the range sensor layer there is a dynamic reconfigure parameter "max_angle" which is undocumented in the wiki. It doesn't seem to do anything useful as it is overwritten by "range_message.field_of_view/2" in RangeSensorLayer::updateCostmap().

I think this needs clarification.

Local costmap_ update done on callback

Hey,
the updating of the costmap of the RangeSensorLayer is done in the callback function (incomingRange). The ObstacleLayer and VoxelLayer both update in the updateBounds function using the observation buffer.

What was the reasoning for not implementing it the same way?

@DLu

catkin_make problem

when I catkin_make the package, there are a lot of error like this:
/home/robot/catkin_ws/src/navigation_layers/social_navigation_layers/src/social_layer.cpp:61:12: error: ‘class tf::TransformListener’ has no member named ‘transform’

Ubuntu 16.04 + ROS kinetic

Can you give me some advice about it?

r.range and r.maxrange

What is the difference between range and max_range. I want to improve the accuracy of the sensor so that I want to limit the range of the sensor.Is there any other solutions to solve the problems of low-level stability

Change default branch

... to hydro (later indigo).

For "newcomers" like me it was confusing at first, since I assumed master shows the most recent development status.

How to install these plugins?

How and where do I install these plugins, in order to effectively use them inside my local_costmap.yaml?

Currently I've git cloned the Github project and placed it in the /home folder. Then I'm trying to use them for my local costmap, as can be seen on the following picture:
Screenshot from 2020-04-06 11-58-30

When launching my navigation stack, then I get the following error. Do you have an idea of how to correct this issue?
Screenshot from 2020-04-06 11-19-28

Not feeling any changes with the proxemic layer

Hello,
I've been working on a configuration for the proxemic layer but I can't get any difference between dodging any obstacle and one person. Apparently everything is correct, I can visualize how the cost around the person increases correctly, and how the circle around him varies according to various parameters (in rviz). I have tested with the parameters discussed in this issue: #34 . I am using the teb_local_planner although I have also tried the dwa_local_planner. Any idea what I can be doing wrong? What would be most extreme configuration in order to try to notice any difference in the avoidance?
Thanks!

Andrés

Obstacles forming just a dot on costmap

Hi, I'm using sonar with the range_sensor_layer kinetic version.
There's something odd that obstacle form just a dot on the costmap, which is supposed to be an arc.
1539239532950636

Range sensor layer only giving me a dot as obstacle

Ive been trying to use range sensor layer for the past 3 days using ultrasound data that is published as sensor_msgs/range by my arduino uno and my FOV is stated as 0.9 but my range sensor layer in costmap is only marking a single dot as the obstacle

IMG_20210105_135450

Sonar Layer crashing by throwing an exception 'pluginlib::LibraryLoadException

I am trying to add to add teraranger Evo_mini to my robot and integrating it into ros navigation stack. I have followed all the steps specified. However I am getting an error

terminate called after throwing an instance of 'pluginlib::LibraryLoadException'  what():  Failed to load library /opt/ros melodic/lib//librange_sensor_layer.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = /opt/ros/melodic/lib//librange_sensor_layer.so: undefined symbol: _ZN10costmap_2d12CostmapLayer9clearAreaEiiii) 

Here is the yml file I have:

plugins:  
  - {name: sonar_layer,   type: "range_sensor_layer::RangeSensorLayer"}

sonar_layer:
  topics: ["teraranger_evo_mini/range"]
  clear_threshold: 1.0
  mark_threshold: 8.0
  clear_on_max_reading: true

The respective rosparams for the sonar_layer are:

/move_base/global_costmap/sonar_layer/clear_on_max_reading
/move_base/global_costmap/sonar_layer/clear_threshold
/move_base/global_costmap/sonar_layer/mark_threshold
/move_base/global_costmap/sonar_layer/no_readings_timeout
/move_base/global_costmap/sonar_layer/topics
/move_base/local_costmap/sonar_layer/clear_on_max_reading
/move_base/local_costmap/sonar_layer/clear_threshold
/move_base/local_costmap/sonar_layer/mark_threshold
/move_base/local_costmap/sonar_layer/no_readings_timeout
/move_base/local_costmap/sonar_layer/topics

Can you please share your insights on this.
Thank you so much in advance.
Regards,
Tahir

Available for ROS kinetic?

Hello,
in the wiki.ros.org documentation of the package appears to have kinetic support, but in github there is no such a brand. I tried installing the melodic one but when building the ws i have some errors:
/home/andres/catkin_ws/src/social_navigation_layers/src/social_layer.cpp: In member function ‘virtual void social_navigation_layers::SocialLayer::updateBounds(double, double, double, double*, double*, double*, double*)’: /home/andres/catkin_ws/src/social_navigation_layers/src/social_layer.cpp:51:12: error: ‘class tf::TransformListener’ has no member named ‘transform’ tf_->transform(pt, opt, global_frame); ^ /home/andres/catkin_ws/src/social_navigation_layers/src/social_layer.cpp:59:12: error: ‘class tf::TransformListener’ has no member named ‘transform’ tf_->transform(pt, opt, global_frame); ^ social_navigation_layers/CMakeFiles/social_layers.dir/build.make:62: fallo en las instrucciones para el objetivo 'social_navigation_layers/CMakeFiles/social_layers.dir/src/social_layer.cpp.o' make[2]: *** [social_navigation_layers/CMakeFiles/social_layers.dir/src/social_layer.cpp.o] Error 1 make[2]: *** Se espera a que terminen otras tareas.... /home/andres/catkin_ws/src/social_navigation_layers/src/passing_layer.cpp: In member function ‘virtual void social_navigation_layers::PassingLayer::updateBounds(double, double, double, double*, double*, double*, double*)’: /home/andres/catkin_ws/src/social_navigation_layers/src/passing_layer.cpp:39:14: error: ‘class tf::TransformListener’ has no member named ‘transform’ tf_->transform(pt, opt, global_frame); ^ /home/andres/catkin_ws/src/social_navigation_layers/src/passing_layer.cpp:47:14: error: ‘class tf::TransformListener’ has no member named ‘transform’ tf_->transform(pt, opt, global_frame); ^ social_navigation_layers/CMakeFiles/social_layers.dir/build.make:110: fallo en las instrucciones para el objetivo 'social_navigation_layers/CMakeFiles/social_layers.dir/src/passing_layer.cpp.o' make[2]: *** [social_navigation_layers/CMakeFiles/social_layers.dir/src/passing_layer.cpp.o] Error 1 CMakeFiles/Makefile2:6150: fallo en las instrucciones para el objetivo 'social_navigation_layers/CMakeFiles/social_layers.dir/all' make[1]: *** [social_navigation_layers/CMakeFiles/social_layers.dir/all] Error 2 Makefile:138: fallo en las instrucciones para el objetivo 'all' make: *** [all] Error 2 Invoking "make -j4 -l4" failed
Regards,
Andrés

[range_sensor_layer] symbol lookup error in Melodic

Hello,
First of all, thanks a lot for releasing to Melodic, I just got the binary from the last sync.
Using a Kinetic working configuration, move_base crash when using a range_sensor_layer (and launch successfully when not):

/opt/ros/melodic/lib/move_base/move_base: symbol lookup error: /opt/ros/melodic/lib//librange_sensor_layer.so: undefined symbol: ZN3tf212getTimestampIN13geometry_msgs13PointStamped_ISaIvEEEEERKN3ros4TimeERKT
[move_base-5] process has died [pid 11782, exit code 127, cmd /opt/ros/melodic/lib/move_base/move_base /cmd_vel:=/navigation_stack/cmd_vel __name:=move_base __log:=/home/keylo/.ros/log/9b3bf342-bfda-11e8-b44c-a0c5898dc1ce/move_base-5.log].
log file: /home/keylo/.ros/log/9b3bf342-bfda-11e8-b44c-a0c5898dc1ce/move_base-5*.log

Any idea where it is coming from? Maybe a dependency ? I installed ros-melodic-tf* and ros-melodic-geometry* to be sure

Range messages buffer should have a maximum size

In my case, costmap update rate cannot cope with all the incoming readings, so buffer starts growing out of control. and so too old messages are processed after a while.

What I have done is to create a buffer per incoming topic and limit its size with a "range_msgs_buffer_size" parameter. I can PR the code, if you think it's a good idea.

Btw, I can make it a bit faster using C++11 unsorted_map instead of map. Any problem with adding C++11 requirement to range_sensor_layer?

move base crushed when load social_navigation_layers plugin

Hi,

I tried to used social_navigation_layers in move_base, but I find when I run move_base with social navigation plugin, the move_base always crush and don't know how. The error is following:

[ INFO] [1623608573.537931461, 1623586730.042040061]: odom received!
Warning: Invalid argument "/map" passed to canTransform argument source_frame in tf2 frame_ids cannot start with a '/' like: 
         at line 134 in /tmp/binarydeb/ros-melodic-tf2-0.6.5/src/buffer_core.cpp
terminate called after throwing an instance of 'tf2::InvalidArgumentException'
  what():  Invalid argument "/map" passed to lookupTransform argument source_frame in tf2 frame_ids cannot start with a '/' like: 
[move_base-1] process has died [pid 3338, exit code -6, cmd /home/jxk/nav_ws/devel/lib/move_base/move_base __name:=move_base __log:=/home/jxk/.ros/log/2ad50b08-cc65-11eb-9bf0-0800279946ab/move_base-1.log].
log file: /home/jxk/.ros/log/2ad50b08-cc65-11eb-9bf0-0800279946ab/move_base-1*.log

And there is my config file:

global_costmap_params.yaml

global_costmap:
  global_frame: map
  robot_base_frame: base_link
  update_frequency: 5.0
  static_map: true

  plugins:
    - {name: static_layer,            type: "costmap_2d::StaticLayer"}
    - {name: obstacle_layer,          type: "costmap_2d::VoxelLayer"}
    - {name: inflation_layer,         type: "costmap_2d::InflationLayer"}
    - {name: social_layer,            type: "social_navigation_layers::PassingLayer"}

local_costmap_params.yaml

local_costmap:
  global_frame: map
  robot_base_frame: base_link
  update_frequency: 5.0
  publish_frequency: 2.0
  static_map: false
  rolling_window: true
  width: 6.0
  height: 6.0
  resolution: 0.05
  
  plugins:
   - {name: static_layer,        type: "costmap_2d::StaticLayer"}
   - {name: inflation_layer,         type: "costmap_2d::InflationLayer"}
   - {name: social_layer,            type: "social_navigation_layers::PassingLayer"}

When I comment the plugin config in local costmap param and global costmap param. Move base will return to normal. Could you tell me how it happen. Thank you.

ROS2

Hi,
Is there any plans to migrate to ROS2?
Thanks.

Social navigation layers doesn't appear on rviz

I use the plugin proxemiclayer, but I can't get any obstacles on rviz.

 plugins:
      - {name: static_map,       type: "costmap_2d::StaticLayer"}
      - {name: obstacles,        type: "costmap_2d::VoxelLayer"}  
      - {name: inflation_layer,  type: "costmap_2d::InflationLayer"}
      - {name: proxemiclayer,    type: "social_navigation_layers::ProxemicLayer"}
      - {name: passinglayer,     type: "social_navigation_layers::PassingLayer"}

I published a people message like following:

header: 
  seq: 13225
  stamp: 
    secs: 1560248121
    nsecs: 441350435
  frame_id: "people"
people: 
    name: "liwei"
    position: 
      x: 1.0
      y: 1.0
      z: 0.0
    velocity: 
      x: 0.2
      y: 0.4
      z: 0.0
    reliability: 0.7
    tagnames: []
    tags: []

But there is no person information on rviz.
And I'm sure plugin passinglayer is used by global costmap
111
fff

Can this layer replace the default ObstacleLayer?

Hi

Can I check whether this layer can replace the default Obstacle Layer? I know that the obstacle layer is used with the LaserScan or PointCloud msgs. However, I am trying to do navigation without the lidar and using sonars instead. Is this achievable?

Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.