ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

hardy's profile - activity

2018-02-02 13:41:41 -0500 received badge  Student (source)
2018-01-19 08:18:06 -0500 received badge  Guru (source)
2018-01-19 08:18:06 -0500 received badge  Great Answer (source)
2017-09-04 09:14:44 -0500 received badge  Famous Question (source)
2017-03-23 01:38:13 -0500 received badge  Enlightened (source)
2017-03-23 01:38:13 -0500 received badge  Good Answer (source)
2017-03-22 22:49:19 -0500 received badge  Nice Answer (source)
2017-03-22 14:09:58 -0500 received badge  Teacher (source)
2017-03-22 13:08:18 -0500 answered a question obstacles are not cleared completely in costmap

I was having the same issue with my Robot. Currently, the CostMap2D uses Bresenham2D algorithm for clearing the obstacles. As per your video, the blob gets left out in almost the same location and that I think is due to the round off error of Bresenham2D algorithm. It marks a particular cell as obstacle but the next time when the sensor reading changes instantaneously, it no longer traces it through the same path and hence, the blob seem remains in the costmap .

So, for solving this problem , I amended the function below in costmap_2d.h in the navigation package of ros. I have added 2 lines of code to the Bresenham2D algorithm. This basically clears the cell to the left and right of the grid through which the Line segment constructed by the algorithm passes. This results in loosing some resolution of the map but the solution works pretty well in real life application and I have had no problems after this hacky fix which is not too bad.

template<class ActionType>
    inline void bresenham2D(ActionType at, unsigned int abs_da, unsigned int abs_db, int error_b, int offset_a,
                            int offset_b, unsigned int offset, unsigned int max_length)
    {
      unsigned int end = std::min(max_length, abs_da);
      for (unsigned int i = 0; i < end; ++i)
      {
        at(offset);
        at(offset+1); // **ADDED THIS LINE**
        at(offset-1); // **ADDED THIS LINE**
        offset += offset_a;
        error_b += abs_db;
        if ((unsigned int)error_b >= abs_da)
        {
          offset += offset_b;
          error_b -= abs_da;
        }
      }
      at(offset);
    }
2017-03-21 13:41:01 -0500 commented question obstacles are not cleared completely in costmap

I also have the same problem with my robot. The costmap leaves blobs only when stationary . If clears well when the robot is turning/moving forward .

2017-03-06 10:46:40 -0500 received badge  Supporter (source)
2016-12-28 18:01:55 -0500 received badge  Famous Question (source)
2016-12-07 02:06:08 -0500 received badge  Famous Question (source)
2016-11-22 14:31:16 -0500 answered a question fake LaserScan on Arduino 2560 gives error Unable to sync with device possible link problem or link software version mismatch such as hydro rosserial_python with groovy Arduino

"publisher timer" needs to be of type long that is why it stops after a few cycles as the variable publisher_timer gets out of bound.

long publisher_timer

2016-10-15 18:30:26 -0500 received badge  Popular Question (source)
2016-10-15 18:30:26 -0500 received badge  Notable Question (source)
2016-10-15 18:30:26 -0500 received badge  Famous Question (source)
2016-09-21 11:02:54 -0500 received badge  Notable Question (source)
2016-08-17 11:28:16 -0500 received badge  Popular Question (source)
2016-07-25 11:18:53 -0500 asked a question ROS package to communicate with Arduino over Ethernet

Hi Everyone .

I am currently using ROS Serial libraries for communicating between the Arduino and my PC(using Ubuntu 14.04). I plan to shift from Serial communication to Ethernet based communication so that my data transfer between the Arduino and the PC is more reliable. I am using a Ethernet Shield on the arduino. Please find the link below for the ethernet shield.

https://www.amazon.com/Ethernet-Shiel...

I can communicate with the PC and send normal strings of data. So, the basic communication between the arduino and PC via Ethernet is established.

However, I am using ROS and have multiple publisher/subscribers in my arduino code that are receiving and sending data over ROS ( sensor_msgs etc.). So, is there any package/library similar to Rosserial_arduino and Rosserial that i can use and have similar subscriber publisher which I currently have using serial communication.

Please let me know if the questions isn't clear or specific . I can explain in more detail.

I would really appreciate your help.

2016-07-22 11:11:47 -0500 received badge  Enthusiast
2016-07-19 14:29:44 -0500 asked a question how to integrate Velodyne-16 with costmap_2d for costmap clearing

Hi Everyone , I am working on integrating the 16 channel velodyne puck for obtacle avoidance with ros navigation stack. I am having issues with costmap clearance. Please find below the globalcostmap.yaml file that i am using to integrate the velodyne .

global_costmap: #Set the global and robot frames for the costmap global_frame: /map robot_base_frame: base_link

#Set the update and publish frequency of the costmap update_frequency: 5.0 publish_frequency: 5.0

#We'll use a map served by the map_server to initialize this costmap static_map: true rolling_window: false

use_dijkstra: false

inflation_radius: 0.55

plugins: - {name: static_layer, type: "costmap_2d::StaticLayer"} - {name: obstacle_layer2, type: "costmap_2d::ObstacleLayer"} - {name: inflation_layer, type: "costmap_2d::InflationLayer"}

#Configuration for the sensors that the costmap will use to update a map obstacle_layer2: observation_sources: VLP_sensor VLP_sensor: {data_type: PointCloud2, sensor_frame: /velodyne, topic: /velodyne_points_filtered, expected_update_rate: 0.4, observation_persistence: 0.0, marking: true, clearing: true, max_obstacle_height: 1.3, min_obstacle_height: 0.04}

So, I am having a specific issue of costmap clearing. Since, the velodyne has a 30 degree vertical field of view. As my robot moves close to the object, small objects which are initially in the field of view of the velodyne move out of the field of view. Hence, the costmap_2d is cleared and the robot goes over the object which is not desired.

So, if somebody can help me figure out how to avoid such a scenario and integrate this velodyne as a 3D lidar in a 2D map for obstacle avoidance.

2016-06-28 23:55:45 -0500 received badge  Notable Question (source)
2016-06-23 10:33:25 -0500 commented question clearing costmap when sensor gives max range reading

Thanks for the reply . I think it helped me understand how the laser_projector works. It solves me my problem with LIDAR

2016-06-23 01:36:49 -0500 received badge  Popular Question (source)
2016-06-22 16:24:42 -0500 asked a question clearing costmap when sensor gives max range reading

Hi everyone, I am using Hokoyo Lidar of 5 m for obstacle avoidance and updating the local costmap and global costmap within 2.5 m.

So, Problem I am facing is that the costmap is not cleared when the obstacle at a distance less than 2.5 m moves away. The laserscan at that moment gives 5m (which is the max range reading) as the reading but still the robot doesn't clear the obstacle which was at 2m (less than 2.5m ) distance .

The laser scan parameters for global/local map update are as follows

global_costmap_params.yaml

 obstacle_layer1:
    observation_sources: laser_scan_sensor
    laser_scan_sensor: {data_type: LaserScan, sensor_frame: /laser, topic: /scan, expected_update_rate: 0.4,
      observation_persistence: 0.0, marking: true, clearing: true, max_obstacle_height: 2.0, min_obstacle_height: 0.0, inf_is_valid: true}

costmap_common_params.yaml

#Obstacle marking parameters
obstacle_range: 2.5
max_obstacle_height: 2.0
raytrace_range: 3.0

So, I want to know how to clear the old obstacles when the sensor gives max_range. If somebody can help me with this .

Thank You

2016-06-22 14:08:19 -0500 received badge  Notable Question (source)
2016-06-15 09:13:58 -0500 received badge  Popular Question (source)
2016-06-03 10:33:23 -0500 asked a question Reset xsens Mti-3(development kit) IMU

Hi Everyone

I am using the IMU Mti-3 (development kit) version in ROS. I am using the filter VRU which provides me with unreferenced Yaw. I am using the IMU data in AMCL planner for mobile robots.

At the beginning when the robot is turned on, I would like to do the following things

Reset the Gyroscope and Accelerometer to zero in order to calibrate as I know that my robot is stationary Reset the Heading for the Yaw reading to zero ( i don't know what that value would be in Quaternion form)