Coder Social home page Coder Social logo

ros-perception / pointcloud_to_laserscan Goto Github PK

View Code? Open in Web Editor NEW
386.0 386.0 266.0 39 KB

Converts a 3D Point Cloud into a 2D laser scan.

Home Page: http://wiki.ros.org/pointcloud_to_laserscan

License: BSD 3-Clause "New" or "Revised" License

CMake 7.73% C++ 72.21% C 9.08% Python 10.98%

pointcloud_to_laserscan's People

Contributors

charlielito avatar clalancette avatar hidmic avatar mikaelarguedas avatar paulbovbel avatar reinzor avatar robograffitti avatar wep21 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

pointcloud_to_laserscan's Issues

ImportError: No module named launch

Hello, I ran ./file_name.py to run a python file on ros2 supported open source . But I am getting the following error: I followed the installation instructions in the Ros2 basic documentation and just run the file.

I'm running on Ubuntu 18.04 eloquent-devel and I added #!/usr/bin/env python to the first line of python.

to_laserscan_launch.py
Traceback (most recent call last):
  File "./sample_pointcloud_to_laserscan_launch.py", line 3, in <module>
    from launch import LaunchDescription
ImportError: No module named launch

The code below is the python code I want to run.

#!/usr/bin/python

from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node


def generate_launch_description():
    return LaunchDescription([
        DeclareLaunchArgument(
            name='scanner', default_value='scanner',
            description='Namespace for sample topics'
        ),
        Node(
            package='pointcloud_to_laserscan', executable='dummy_pointcloud_publisher',
            remappings=[('cloud', [LaunchConfiguration(variable_name='scanner'), '/cloud'])],
            parameters=[{'cloud_frame_id': 'cloud', 'cloud_extent': 2.0, 'cloud_size': 500}],
            name='cloud_publisher'
        ),
        Node(
            package='tf2_ros',
            executable='static_transform_publisher',
            name='static_transform_publisher',
            arguments=['0', '0', '0', '0', '0', '0', '1', 'map', 'cloud']
        ),
        Node(
            package='pointcloud_to_laserscan', executable='pointcloud_to_laserscan_node',
            remappings=[('cloud_in', [LaunchConfiguration(variable_name='scanner'), '/cloud']),
                        ('scan', [LaunchConfiguration(variable_name='scanner'), '/scan'])],
            parameters=[{
                'target_frame': 'cloud',
                'transform_tolerance': 0.01,
                'min_height': 0.0,
                'max_height': 1.0,
                'angle_min': -1.5708,  # -M_PI/2
                'angle_max': 1.5708,  # M_PI/2
                'angle_increment': 0.0087,  # M_PI/360.0
                'scan_time': 0.3333,
                'range_min': 0.45,
                'range_max': 4.0,
                'use_inf': True,
                'inf_epsilon': 1.0
            }],
            name='pointcloud_to_laserscan'
        )
    ])

Actually, I posted it on the ros wiki, but I didn't get a reply.

Misleading documentation on the "scan_time" parameter

Hi,

First of all, thanks a lot for this great package!

There is one point I find quite misleading in the documentation : the explanation of the "scan_time" parameter.

On the wiki :

~scan_time (double, default: 1.0/30.0)

The scan rate in seconds. 

And on the readme on git :

scan_time (double, default: 1.0/30.0) - The scan rate in seconds. Used to populate the output laser scan.

The first definitions leads to think that this parameter enables to down-sample the frequency of the output messages.

The second definition is quite unclear, weather it is the down-sampling the output messages or just for filling the messages.

After asking on Ros Answers it seems that the scan_time is only put into the corresponding field of the output messages, and not used for any computations.

If the conclusions are correct, I would suggest changing the message to a clearer one, for example :

scan_time (double, default: 1.0/30.0) - The scan rate in seconds. Only used to populate the scan_time field of the output laser scan message.

Thanks a lot in advance

Best regards

Felix

Off-by-one error in constructing/populating LaserScan message ?

It seems that either you should also skip angles that equal the value of angle_max here:

Or make the number of range readings one item larger here:

Otherwise you'll have an out-of-bounds array element access when one day there is an angle of the value angle_max.

Note that I have posted a question here about how many values the sensor_msgs::LaserScan should actually contain, because I'm not sure if angle_max really is supposed to be excluded from the range of values.

Getting a curved point cloud and no laserscan for flat wall

Hi,
I am getting a curved point cloud for some reason for some scenes even though there are no curved objects. I used the exact same parameters as shown in the pointcloud_to_laserscan_node.cpp. I am using a RealSense camera. Also, when pointed to a wall, it does not show any laserscan. The wall might be at a distance of a meter.
Kindly help me...

Thank you..

Regards,
Karan Manghi

Error pluginlib::InvalidXMLException

When running a the following command: roslaunch pointcloud_to_laserscan sample_node.launch

I get this error:

process[pointcloud_to_laserscan-16]: started with pid [28156]
terminate called after throwing an instance of 'pluginlib::InvalidXMLException'
what(): XML Document has no Root Element. This likely means the XML is malformed or missing.

I am running ROS Lunar. Could anybody assist me?

Unable to subscribe to pointcloud

Hello!

I am using ROS Kinetic and facing a weird issue here. Unable to subscribe to my pointcloud using your package. It works fine with simulation, but not with bag or real lidar.
I have tried every possible combination of trick I could think of, including changing the cpp file to subscribe to topic directly, sampling pointcloud, remapping and God knows what. Still unable to subscribe to my Velodyne. Can anyone suggest what might be the problem. I will appreciate any help in this regard.

Param frame_id does not work as expected

Hi,
I am working on sensor fusion which I take readings from lidar and 3D cameras, combine them and then publish them as one scan topic. I thought this package may be a good fit for this usage. However, when I want the laserscan to be generated on the specific frame (the sensor frame), it does not work unless I change the frame to base link. May I know how should I deal with this matter ?

Changing the default camera name result in no laserscan published

Hi, when I launch the sample_node.launch with camera arg as "xtion", it all populates at the right places but I have no laserscan published, am I missing something ?
Otherwise with the default "camera" name everything works fine, I can see my laserscan in Rviz.
Thanks!

is 'angle_increment' vertical or horizontal resolution??

hi,
i noticed there is a 'angle_increment' parameter. is 'angle_increment' for input data or output data? And if this for input data(which mean set this parameter by checking lidar's hardware manual), vertical resolution or horizontal resolution this refer to?

many thanks

pointcloud to laserscan is all .inf

i write a a code publish sensor data (pointcloud) to /cloud_in

i can view the points in rviz2, seems no problem

then run:
ros2 run pointcloud_to_laserscan pointcloud_to_laserscan_node --ros-args -p angle_min:=-1.0471975511965976 -p angle_max:=1.0471975511965976

a /scan topic is created, but all data is - .inf

how to resolve the problem?

my ros2 version is foxy

Thank you very much!

Can't use ros2 topic echo

The scan works in RVIZ2, but using ros2 topic echo /scan raises the following error:

$ ros2 topic echo /scan
Unable to convert call argument '0' of type 'object' to Python object

Foxy release

Is it possible to make a foxy release of pointcloud_to_laserscan?

Galactic and rolling release

Is it possible to make a galactic and rolling release for pointcloud_to_laserscan?
Just the normal foxy package works fine on galactic for us, but it is easier to not have it included in a workspace.

Package failed with error "C2065: 'M_PI': undeclared identifier"

I was trying to build this package and was getting "Package failed" with no error message.
I'm using ROS2 Foxy on Windows 10 with Visual Studio 2019.

By using this command while building:
colcon build --packages-select pointcloud_to_laserscan --event-handlers console_cohesion+

I was able to find this error :
"error C2065: 'M_PI': undeclared identifier [C:\nav2_ws\build\pointcloud_to_laserscan\pointcloud_to_laserscan.vcxproj]"

I was able to build it by adding this line to "pointcloud_to_laserscan/pointcloud_to_laserscan_node.cpp" :
#define M_PI 3.14159265358979323846

I hope this helps. I'm not sure if that was the right approach as I'm quite new to ROS!

Regards,
Xavier Trudeau

Failed to load nodelet

I tried pointcloud_to_laserscan node and it works. When I try to use the nodelet instead, it fails.

I get this error:
Failed to load nodelet [/front_pointclout_to_laser] of type [pointcloud_to_laserscan/point_cloud_to_laserscan_nodelet] even after refreshing the cache: According to the loaded plugin descriptions the class pointcloud_to_laserscan/point_cloud_to_laserscan_nodelet with base class type nodelet::Nodelet does not exist. Declared types are camshift/camshift contour_moments/contour_moments convex_hull/convex_hull depth_image_proc/convert_metric depth_image_proc/crop_foremost depth_image_proc/disparity depth_image_proc/point_cloud_xyz depth_image_proc/point_cloud_xyz_radial depth_image_proc/point_cloud_xyzi depth_image_proc/point_cloud_xyzi_radial depth_image_proc/point_cloud_xyzrgb depth_image_proc/register depthimage_to_laserscan/DepthImageToLaserScanNodelet edge_detection/edge_detection face_detection/face_detection fback_flow/fback_flow find_contours/find_contours freenect_camera/driver general_contours/general_contours goodfeature_track/goodfeature_track hough_circles/hough_circles hough_lines/hough_lines image_proc/crop_decimate image_proc/crop_nonZero image_proc/debayer image_proc/rectify image_rotate/image_rotate image_view/disparity image_view/image kobuki_auto_docking/AutoDockingNodelet kobuki_bumper2pc/Bumper2PcNodelet kobuki_node/KobukiNodelet kobuki_random_walker/RandomWalkerControllerNodelet kobuki_safety_controller/SafetyControllerNodelet laser_scan_matcher/LaserScanMatcherNodelet lk_flow/lk_flow nodelet_tutorial_math/Plus octomap_server/OctomapServerNodelet openni2_camera/OpenNI2DriverNodelet pcl/BAGReader pcl/BoundaryEstimation pcl/ConvexHull2D pcl/CropBox pcl/EuclideanClusterExtraction pcl/ExtractIndices pcl/ExtractPolygonalPrismData pcl/FPFHEstimation pcl/FPFHEstimationOMP pcl/MomentInvariantsEstimation pcl/MovingLeastSquares pcl/NodeletDEMUX pcl/NodeletMUX pcl/NormalEstimation pcl/NormalEstimationOMP pcl/NormalEstimationTBB pcl/PCDReader pcl/PCDWriter pcl/PFHEstimation pcl/PassThrough pcl/PointCloudConcatenateDataSynchronizer pcl/PointCloudConcatenateFieldsSynchronizer pcl/PrincipalCurvaturesEstimation pcl/ProjectInliers pcl/RadiusOutlierRemoval pcl/SACSegmentation pcl/SACSegmentationFromNormals pcl/SHOTEstimation pcl/SHOTEstimationOMP pcl/SegmentDifferences pcl/StatisticalOutlierRemoval pcl/VFHEstimation pcl/VoxelGrid people_detect/people_detect phase_corr/phase_corr pico_flexx_driver/pico_flexx_nodelet pointcloud_to_laserscan/pointcloud_to_laserscan_nodelet segment_objects/segment_objects simple_compressed_example/simple_compressed_example simple_example/simple_example simple_flow/simple_flow stdr_robot/Robot stereo_image_proc/disparity stereo_image_proc/point_cloud2 toru_cmd_vel_mux/CmdVelMuxNodelet turtlebot_follower/TurtlebotFollower watershed_segmentation/watershed_segmentation yocs_cmd_vel_mux/CmdVelMuxNodelet yocs_velocity_smoother/VelocitySmootherNodelet

I have a launch file like this:

<launch>
  <arg name="nodelet_manager" default="nodelet_manager" />
  <arg name="nodelet_name" default="pointcloud_to_laserscan" />

    <!-- pointcloud to laserscan nodelet -->
    <node pkg="nodelet" type="nodelet" name="$(arg nodelet_name)"
        args="load pointcloud_to_laserscan/point_cloud_to_laserscan_nodelet $(arg nodelet_manager)"
        respawn="true" output="screen">
        <rosparam>
            transform_tolerance: 0.01
            min_height: 0.0
            max_height: 1.0

            angle_min: -1.5708 # -M_PI/2
            angle_max: 1.5708 # M_PI/2
            angle_increment: 0.087 # M_PI/360.0
            scan_time: 0.3333
            range_min: 0.45
            range_max: 4.0
            use_inf: true

            # Concurrency level, affects number of pointclouds queued for processing and number of threads used
            #0 : Detect number of cores
            #1 : Single threaded
            #2->inf : Parallelism level
            concurrency_level: 1
        </rosparam>
    </node>
</launch>

Included by another launch file:

<launch>
  <arg name="nodelet_manager" value="nodelet_manager" />
  <arg name="start_manager" default="true"/>
  <!-- Nodelet manager. -->
  <node pkg="nodelet" type="nodelet" name="$(arg nodelet_manager)" args="manager"
      if="$(arg start_manager)" output="screen"/>
  <!-- front pointcloud to laserscan -->
  <include file="$(find pico_flexx_driver)/launch/includes/pointcloud_to_laserscan_nodelet.launch">
      <arg name="nodelet_manager" value="$(arg nodelet_manager)" />
      <arg name="nodelet_name" value="front_pointclout_to_laser" />
  </include>
</launch>

why does it crash?
I am using ros indigo on Ubuntu 14.04 and installed pointcloud_to_laserscan from the deb package.

将点云转换为/camera/scan后和激光雷达/scan进行融合,用于gmapping出现问题

描述

您好,我利用这个软件包将相机的点云数据成功转换成了/camera/scan,并且可以利用该话题进行gmapping建图,但是当我将/camera/scan和激光雷达原始的/scan两个数据进行融合,企图将悬空物体建出地图却失败了,请问你有可能知道是什么原因吗?

想要建出的图

选区_009

实际融合之后建出的图

选区_007

点云情况

选区_003

可以看到,悬空物体的后面激光雷达数据已经被切割,但是为何还是建不出想要的边,地图上显示的还是没有。谢谢

tf2_ros/create_timer_ros.h报错

how should i do?
/home/wuxin/slam-algorithm/pointcloud_to_laserscan/src/laserscan_to_pointcloud_node.cpp:67:10: fatal error: tf2_ros/create_timer_ros.h: No such file or directory
#include "tf2_ros/create_timer_ros.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
CMakeFiles/laserscan_to_pointcloud.dir/build.make:62: recipe for target 'CMakeFiles/laserscan_to_pointcloud.dir/src/laserscan_to_pointcloud_node.cpp.o' failed
make[2]: *** [CMakeFiles/laserscan_to_pointcloud.dir/src/laserscan_to_pointcloud_node.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/laserscan_to_pointcloud.dir/all' failed
make[1]: *** [CMakeFiles/laserscan_to_pointcloud.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

pointcloud_to_laserscan nodelet not available in Ubuntu 16.04

Running >rosrun nodelet declared_nodelets
Does not show pointcloud_to_laserscan in either ROS-kinetic or ROS-lunar.
System was installed on Ubuntu-16.04 using command

sudo apt-get install ros-kinetic-desktop-full (or ros-lunar-desktop-full)
If nodelets aren't available, does this require an installation of catkin and a ros launch file
such as: https://answers.ros.org/question/37312/problem-running-pointcloud_to_laserscan-launch-file/ ?

Node didn't recognize subscriber

Hey there,
I would like to use your node to transform a pointcloud to a laserscan. I'm working on Ubuntu 20.04 with the ros2 foxy branch.

I attached a minimal launch file and a node to subscribe and simply publish the subscribed topic as it was. It doesn't work.
If I subscribe the topic in cmd, the message "Got a subscriber to laserscan, starting pointcloud subscriber" shows up, if I stop the echo output in cmd, the message "No subscribers to laserscan, shutting down pointcloud subscriber" shows up.
With and without the subscriber it seems that your node doesn't start working, because my subscriber to /scan (simply echo the topic in cmd) doesn't get published messages.
minimal_launch.py.txt
pub_sub_node.cpp.txt

/scan has no input data

i can compile this package successfully, i use 'rosrun pointcloud_to_laserscan pointcloud_to_laserscan_node' to launch the node successfully because there is a node called /pointcloud_to_laserscan_node and a topic called /scan. And i also rosbag a velodyne bag, there is data coming out from my topic /velodyne_points, but /scan cannot get inputs from /velodyne_points!!! by the way, i have already changed the topic name in code from /cloud_in to /velodyne_points.

Check for range_max is missing

After the minimum range is checked here, the point is dropped when the value is smaller than range_min_.

Another check should be performed to also skip readings beyond the maximum range (threshold determined by the parameter range_max).

Example:

[...]
else if  (range > range_max_) {
    NODELET_DEBUG("rejected for range %f above maximum value %f. Point: (%f, %f, %f)", range, range_max_, *iter_x, *iter_y, *iter_z);
    continue;
}
[...]

Unfortunately I can't make a PR right now. Maybe I will get to that later.

ROS2 and ROS error

Hi, when i download your programm and try to catkin_make it, I get the following error:
This workspace contains non-catkin packages in it, and catkin cannot build a non-homogeneous workspace without isolation. Try the 'catkin_make_isolated' command instead.
I thought that maybe your program is in ROS2, but my environment is ROS. Do you have the versions in ROS?
thanks:)

Problems running ros2 run pointcloud_to_laserscan in ROS2 Foxy

Hey you all!

I'm trying to get laserscan readings from a 3D point cloud from a lidar in ignitio gazebo fortress. I can see the pointcloud just fine in rviz after i bridged it but haven't managed to use the pointcloud_to_laserscan package. If i try to run ros2 run pointcloud_to_laserscan pointcloud_to_laserscan_node --ros-args --remap cloud_in:="/model/prius_hybrid/laserscan/points", nothing happens, no node or topic created.

I also tried with the launch file provided, sample_pointcloud_to_laserscan_launch.py and tweaked a little with the params. With that the node is created and the topics /cloud and /scan as well, il post the launch file, my /scan topic echo and my /cloud topic echo, as well a img of my rviz and ignition and my ign topic list and ros2 topic list:

Screenshot from 2022-05-25 19-17-59

My sample_pointcloud_to_laserscan.launch.py

`
from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node

def generate_launch_description():
return LaunchDescription([
DeclareLaunchArgument(
name='scanner', default_value='model/prius_hybrid/laserscan',
description='Namespace for sample topics'
),
Node(
package='pointcloud_to_laserscan', executable='dummy_pointcloud_publisher',
remappings=[('cloud', [LaunchConfiguration(variable_name='scanner'), '/cloud'])],
parameters=[{'cloud_frame_id': 'cloud', 'cloud_extent': 2.0, 'cloud_size': 500}],
name='cloud_publisher'
),
Node(
package='tf2_ros',
executable='static_transform_publisher',
name='static_transform_publisher',
arguments=['0', '0', '0', '0', '0', '0', '1', 'map', 'cloud']
),
Node(
package='pointcloud_to_laserscan', executable='pointcloud_to_laserscan_node',
remappings=[('cloud_in', [LaunchConfiguration(variable_name='scanner'), '/points']),
('scan', [LaunchConfiguration(variable_name='scanner'), '/scan'])],
parameters=[{
'target_frame': 'prius_hybrid/base_link/lidar',
'transform_tolerance': 0.01,
'min_height': 0.0,
'max_height': 1.0,
'angle_min': -3.14, # -M_PI/2
'angle_max': 3.14, # M_PI/2
'angle_increment': 0.0087, # M_PI/360.0
'scan_time': 0.3333,
'range_min': 0.45,
'range_max': 10.0,
'use_inf': True,
'inf_epsilon': 1.0
}],
name='pointcloud_to_laserscan'
)
])
`

My /scan topic echo:

`
header:
stamp:
sec: 1451
nanosec: 400000000
frame_id: prius_hybrid/base_link/lidar
angle_min: -3.140000104904175
angle_max: 3.140000104904175
angle_increment: 0.008700000122189522
time_increment: 0.0
scan_time: 0.33329999446868896
range_min: 0.44999998807907104
range_max: 10.0
ranges:

  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • .inf
  • '...'
    intensities: []

`
My echo on /cloud topic:

`
header:
stamp:
sec: 1653517593
nanosec: 138440161
frame_id: cloud
height: 1
width: 500
fields:

  • name: x
    offset: 0
    datatype: 7
    count: 1
  • name: y
    offset: 4
    datatype: 7
    count: 1
  • name: z
    offset: 8
    datatype: 7
    count: 1
    is_bigendian: false
    point_step: 12
    row_step: 6000
    data:
  • 176
  • 240
  • 199
  • 61
  • 80
  • 37
  • 62
  • 62
  • 152
  • 90
  • 220
  • 62
  • 154
  • 67
  • 48
  • 63
  • 152
  • 117
  • 82
  • 62
  • 166
  • 68
  • 55
  • 63
  • 112
  • 215
  • 183
  • 61
  • 250
  • 202
  • 49
  • 63
  • 224
  • 90
  • 28
  • 190
  • 248
  • 14
  • 125
  • 62
  • 68
  • 101
  • 149
  • 62
  • 72
  • 201
  • 108
  • 190
  • 144
  • 164
  • 255
  • 189
  • 22
  • 83
  • 207
  • 190
  • 120
  • 150
  • 72
  • 63
  • 132
  • 246
  • 98
  • 191
  • 52
  • 101
  • 109
  • 63
  • 202
  • 204
  • 232
  • 190
  • 56
  • 182
  • 110
  • 190
  • 160
  • 247
  • 54
  • 189
  • 252
  • 92
  • 21
  • 63
  • 148
  • 212
  • 31
  • 63
  • 0
  • 181
  • 108
  • 61
  • 240
  • 6
  • 36
  • 189
  • 240
  • 90
  • 11
  • 62
  • 164
  • 147
  • 91
  • 190
  • 206
  • 231
  • 89
  • 63
  • 132
  • 18
  • 44
  • 63
  • 42
  • 161
  • 91
  • 191
  • 158
  • 129
  • 166
  • 190
  • 202
  • 99
  • 83
  • 191
  • 96
  • 186
  • 151
  • 62
  • '...'
    is_dense: false

`

My ros2 topic list:

/clock
/joint_states
/model/prius_hybrid/laserscan/cloud
/model/prius_hybrid/laserscan/points
/model/prius_hybrid/laserscan/scan
/parameter_events
/robot_description
/rosout
/scanner/scan
/tf
/tf_static

My ign topic list:

/clock
/gazebo/resource_paths
/gui/camera/pose
/model/prius_hybrid/imu
/model/prius_hybrid/laserscan
/model/prius_hybrid/laserscan/points
/model/prius_hybrid/odometry
/stats
/world/empty/clock
/world/empty/dynamic_pose/info
/world/empty/model/prius_hybrid/joint_state
/world/empty/pose/info
/world/empty/scene/deletion
/world/empty/scene/info
/world/empty/state
/world/empty/stats

I've already tried to change the max and min height, the target frames, scan time, range max and diferent namespaces. All help will be welcomed, thank you all!

Laserscan output not correct.

Hi I have been tring to use this package for some time now but no success. Maybe I am just configuring wrong.
So I have a gazebo simulation running with a kinetic camera plugin that is generating a sensor_msgs/PointCloud2.

Here is a configuration part that I am using

        <sensor name="front_camera" type="depth">
          <update_rate>50</update_rate>
          <camera>
            <horizontal_fov>1.518436</horizontal_fov>
            <image>
              <format>L8</format>
                <width>424</width>
                <height>240</height>
            </image>
            <clip>
              <near>0.35</near>
              <far>15</far>
            </clip>
          </camera>
          <plugin filename="libgazebo_ros_depth_camera.so" name="camera_controller">
            <cameraName>camera_front</cameraName>
            <alwaysOn>true</alwaysOn>
            <updateRate>20</updateRate>
            <pointCloudCutoff>0.2</pointCloudCutoff>
            <pointCloudCutoffMax>20</pointCloudCutoffMax>
            <imageTopicName>rgb/image_raw</imageTopicName>
            <cameraInfoTopicName>rgb/camera_info</cameraInfoTopicName>
            <depthImageTopicName>depth/image_raw</depthImageTopicName>
            <depthImageCameraInfoTopicName>depth/camera_info</depthImageCameraInfoTopicName>
            <pointCloudTopicName>depth/points</pointCloudTopicName>
            <frameName>front_camera_link</frameName>
            <distortion_k1>0.0</distortion_k1>
            <distortion_k2>0.0</distortion_k2>
            <distortion_k3>0.0</distortion_k3>
            <distortion_t1>0.0</distortion_t1>
            <distortion_t2>0.0</distortion_t2>

And this is what I changed in the launch file from

    <arg name="camera" default="camera_front" />
    <!-- run pointcloud_to_laserscan node -->
    <node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan">
        <remap from="cloud_in" to="/camera_front/depth/points"/>
        <remap from="scan" to="/camera_front/scan"/>
        <rosparam>
            target_frame: front_camera_link                 # Leave disabled to output scan in pointcloud frame
            transform_tolerance: 0.01
            min_height: 0.0
            max_height: 3
            
            angle_min: -0.7592                  # -M_PI/2
            angle_max: 0.7592                   # M_PI/2
            angle_increment: 0.003581217        # M_PI/360.0
            scan_time: 0.3333
            range_min: 0.45
            range_max: 4.0
            use_inf: true
            inf_epsilon: 1.0

But the laserscan output is like this:
Screenshot from 2020-10-16 13-12-50

Please notice that I have two frames for the camera since Gazebo(Z forward) uses a different convention than ROS(x forward).

Any idea What I might be doing wrong ? Or Why this is not working?
Any help would be much appreciated.

pointcloud_to_laserscan in ROS1 and Python

Hi,
for a project I am working on I would need to convert a PointCloud2 message to LaserScan message. I am developing my code in ROS1 (melodic) and Python and I would like to make this procedure fully working inside my Python code. I would ask if there exist a version of this package working in ROS1 and maybe if it already exists or it will be provided a version of this package for Python too.
Thanks in advance for the answer.
Best Regards.

Release request

It looks the recent update on this repository is not yet released. (e.g. #28 )

@paulbovbel
Could you please release on kinetic and later distros if there is no problem?

Can't transform pointcloud from frame.

Hi i am trying to transfrom PointCloud2 message from a lidar sensor to laserscan for using in hector_slam but when i launch the launch file and try to make rostopic echo for check it gives errors like these:

Can't transform pointcloud from frame velodyne to camera_link at time 1588865937.438738688, reason: 0

rostopic list shows that /sensor/lidar subscribed by pointcloud_to_laserscan

but rostopic echo gives nothings

and here is my launch file:
`

<!-- run pointcloud_to_laserscan node -->
<node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan">

    <remap from="cloud_in" to="sensor/lidar"/>
    <remap from="scan" to="sensor/lidarL"/>
    <rosparam>
        target_frame: camera_link # Leave disabled to output scan in pointcloud frame
        transform_tolerance: 0.01
        min_height: 0.0
        max_height: 3.0

        angle_min: -1.5708 # -M_PI/2
        angle_max: 1.5708 # M_PI/2
        angle_increment: 0.0087 # M_PI/360.0
        scan_time: 0.3333
        range_min: 0.45
        range_max: 9.0
        use_inf: true
        inf_epsilon: 1.0

        # Concurrency level, affects number of pointclouds queued for processing and number of threads used
        # 0 : Detect number of cores
        # 1 : Single threaded
        # 2->inf : Parallelism level
        concurrency_level: 1
    </rosparam>

</node>

`

Noetic release

Would you mind releasing this package also for the newest distribution ROS Noetic? :)

Scan output still contains inf even when use_inf is false

Data on the scan topic still contains inf data points even when use_inf is false. To remedy this, range_max must be set to something, and use_inf must be false. In other words, the default value of range_max does not seem to affect the infinite range (defined as range_max + 1 if use_inf is false). Instead, range_max must explicitly be given a value in order for the infinite range to be range_max + 1.

Support for melodic?

Hi,

Is there any package going to be released for melodic in the near future?

Document node subscription behaviour

Hi all!

I tried running the pointcloud to laserscan node, by launching the node and remapping cloud_in to my pointcloud topic. I then checked the rqt node graph to see if everything looks nice and connected. But it doesn't! I did some digging and realized that the you must subscribe to the laserscan output before the node will subscribe to the pointcloud input. This was confusing for me. Can we document this behaviour somewhere? I suppose the wiki page is a good location. I tried editing it myself, but I'm having issues with my ros.org login. Another, maybe better way is to have the node print something like "waiting for someone to subscribe to " when starting if nobody subscribes right away, then it will be very clear to the user what he needs to do.

cloud_in topic not available on doing rostopic list

I launched the following launch file to run pointcloud_to_laserscan_node but could not find the cloud_in topic which is used to input pointcloud data into the node

<!-- run pointcloud_to_laserscan node -->
<node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan">
    <rosparam>
        target_frame: camera_link # Leave disabled to output scan in pointcloud frame
        transform_tolerance: 0.01
        min_height: 0.0
        max_height: 1.0

        angle_min: -1.5708 # -M_PI/2
        angle_max: 1.5708 # M_PI/2
        angle_increment: 0.0087 # M_PI/360.0
        scan_time: 0.3333
        range_min: 0.45
        range_max: 4.0
        use_inf: true
        inf_epsilon: 1.0

        # Concurrency level, affects number of pointclouds queued for processing and number of threads used
        # 0 : Detect number of cores
        # 1 : Single threaded
        # 2->inf : Parallelism level
        concurrency_level: 1
    </rosparam>

</node>

On doing a rostopic list with this launch file running, the following topics were listed.
/clock /rosout /rosout_agg /scan /tf /tf_static

How can input point cloud to the node?

laserscan_to_pointcloud package

Not sure whether I am at the right address here but wouldn't it be nice to also add a laserscan_to_pointcloud package? I could do the initial package, but I do not have any rights in the perception group.

high cpu usage

tf2_->transform(*cloud_msg, *cloud, target_frame_, ros::Duration(tolerance_));
high cpu usage -_-

Scan stops publishing after a few seconds

I am having an issue where the node seems to stop publishing the scan a few seconds after it starts. The scan is published properly for the first few seconds and I can see it in rviz, but after maybe 5 seconds it stops. I am using ROS2 Galactic with the foxy branch of this repo.

Here is the node in the launch file:

Node(
            package='pointcloud_to_laserscan', executable='pointcloud_to_laserscan_node',
            remappings=[('cloud_in', '/camera/depth/points'),
                        ('scan', '/scan')],
            parameters=[{
                'min_height': 0.0,
                'max_height': 1.0,
                'angle_min': -1.5708,  # -M_PI/2
                'angle_max': 1.5708,  # M_PI/2
                'angle_increment': 0.0087,  # M_PI/360.0
                'scan_time': 0.3333,
                'range_min': 0.3,
                'range_max': 10.0,
                'use_inf': True,
                'inf_epsilon': 1.0
            }],
            name='pointcloud_to_laserscan'
        )

which version is your ros2

when i was cmaking, errors occurred.
Could not find a package configuration file provided by "message_filters" with any of the following names:
message_filtersConfig.cmake
message_filters-config.cmake

then i think is my version of ros2, my ros2 version is bouncy, can you tell me which version is your ros2

cloud_in cannot subscribe the cloud from any topic using the sample_node.launch

I download the code and compile it by my self but when I use the .launch file author provided I can not subscribe any topic,I can echo the /camera/depth/points and can output cloud data but when I use launch there isn't any link to node pointcloud_to_laserscan.So I want to ask how to use the code,just simplely launch sample_node.launch?If not,please tell me how.
I only change the remap :remap from="/cloud_in" to="/camera/depth/points"/,and I use the origin code still cannot work.

Resolution problems

Hi,
I am using the library (pointcloud_to laserscan) and I successfully made it work and communicate with the other nodes.My problem is that I have very few points and my laser data in rviz. The depthimage_to_laserscan library is doing the same thing, but the "resolution" of the output is a lot better(they are just a lot of points in the laser line). I want to ask if they are any arguments or parameters that can change the resolution of the output laser scan from the library. Any kind of help or idea will be very helpful.
depthimage_to_laserscan
poincloud_to_laserscan

Output laserscan cannot be subscribed to properly

Hello!

Thank you for making this package. However, I am having issues with subscribing to the output laser scans.
When I launch sample_pointcloud_to_laserscan_launch.py and subscribe to it in RViz, it shows Showing [0] points from [0] messages and the node indicates that it is not processing any input due to a lack of subscribers.
However, ros2 topic echo counts as a valid subscriber and when I wrote a sample node to subscribe to it, it does not work as well.

Do you know why this happens?

Regards,
Zeon

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.