Code Monkey home page Code Monkey logo

ira_laser_tools's Introduction

This library includes some tools for laser handling in ROS. At the moment two nodes are available:

  • laserscan_multi_merger
  • laserscan_virtualizer

Both use part of the pointcloud_to_laserscan code available in ROS.

Laserscan_merger allows to easily and dynamically (rqt_reconfigure) merge multiple, same time, single scanning plane, laser scans into a single one; this is very useful for using applications like gmapping, amcl, pamcl on vehicles with multiple single scanning plane laser scanners, as these applications require just one laser scan as input. The scanning planes need to be approximately the same. The resulting scan will appear generated from a single scanner dis-regarding actual occlusions as seen from the merged scans; for instance, consider the case of 2 scanners mounted on the 2 front corners A and B of a rectangular vehicle (we live in 2D); each scanner gives out a 270degs scan, from along the long side of the vehicle going backward to toward the other scanner. The merged scan will appear as generated from a virtual scanner positioned in C, halfway A and B, and measuring the same measures of the merges scans, irregardless of the occlusions that would apply to a real scanner positioned in C.

Laserscan_virtualizer allows to easily and dynamically (rqt_reconfifure) generate virtual laser scans from a pointcloud such as the one generated by a multiple scanning plane laser scanner, e.g., a velodyne scanner). The only requirement is the rototranslation between the virtual laser scanner and the base frame to be known to TF.

The documentation is at the moment very brief, for any question please contact us at [email protected] or [email protected]

Paper link: https://arxiv.org/abs/1411.1086

Both nodes compile under catkin in hydro/indigo and use PCL1.7

ira_laser_tools's People

Contributors

axelfurlan avatar h33p avatar i-am-neet avatar iralab avatar jackfrost67 avatar leonziegler avatar mikaelarguedas avatar mikhut avatar pietrocolombo avatar trigal 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  avatar  avatar  avatar

ira_laser_tools's Issues

Any suggestions for combining scans of different frequencies?

I'm combining two scans, one extracted from a depth camera, and the other from a 2D LIDAR. But I'm getting some jitter from the depth camera's scan contribution. I suppose it's to be expected when combining a 30Hz depth scan with a 40Hz LIDAR, but I was wondering if there was anything that could be done better. A qualitative example of the jitter artifact in RVIZ; red/LIDAR, green/depth-camera, yellow/combined. Note how combined lagges with the camera, and the LIDAR remains quite static.
anim
The example you see here is a turtlebot simulation from gazebo, with a asus pointing forward, and a gpu_lidar pointing backwards, using this small PR of ira_laser_tools: #7

Update: corss-linking to ros.anwsers post

Laser Merger doesn't compute range data (fixed value)

I have 3 laser scan topics that i want to merge. (they are actually ultrasonic sensors that i convert to 3 LaserScan topics)
The three topics are working fine, publishing the range.
But the merged topic /scan_multi only publishes a fixed value for the range. I tried editing the params in the launch file according to my us sensors. The fixed value is always bigger than the range_max value i set in the launch file.

the launch file params:

    	<param name="destination_frame" value="sonar_link"/>
	<param name="cloud_destination_topic" value="/merged_cloud"/>
	<param name="scan_destination_topic" value="/scan_multi"/>
            <param name="laserscan_topics" value ="/car/scan /car/scan_l /car/scan_r" /> <!-- LIST OF THE LASER SCAN TOPICS TO SUBSCRIBE -->

            <param name="angle_min" value="-2.0"/>
            <param name="angle_max" value="2.0"/>
            <param name="angle_increment" value="0.0058"/>
            <param name="scan_time" value="0.0333333"/>
            <param name="range_min" value="0.05"/>
            <param name="range_max" value="1.0"/>

The output:

ubuntu@ubuntu-VirtualBox:~$ rostopic echo /scan_multi
header:
seq: 231
stamp:
secs: 1595207444
nsecs: 54525514
frame_id: "base_link"
angle_min: -2.0
angle_max: 2.0
angle_increment: 0.00579999992624
time_increment: 0.0
scan_time: 0.0333333015442
range_min: 0.0500000007451
range_max: 1.0
ranges: [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, .......]
intensities: []

How can i fix this? Maybe edit the configuration file?

Node crashes

When I compile this package (on my 32-bit (intel processor) Ubuntu 12.04 computer with ROS hydro) using catkin_make it gave me these warnings(even though it generates all the files):

/home/youbot/catkin_ws/src/ira_laser_tools-master/src/laserscan_multi_merger.cpp: In member function ‘void LaserscanMerger::laserscan_topic_parser()’:
/home/youbot/catkin_ws/src/ira_laser_tools-master/src/laserscan_multi_merger.cpp:113:13: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 8 has type ‘std::vectorros::Subscriber::size_type {aka unsigned int}’ [-Wformat]
/home/youbot/catkin_ws/src/ira_laser_tools-master/src/laserscan_virtualizer.cpp: In member function ‘void LaserscanVirtualizer::virtual_laser_scan_parser()’:
/home/youbot/catkin_ws/src/ira_laser_tools-master/src/laserscan_virtualizer.cpp:109:13: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 8 has type ‘std::vectorros::Publisher::size_type {aka unsigned int}’ [-Wformat]

I believe these warnings are concerning a ROS_INFO which is just for printing ti screen which not so relevant and shouldnt be breaking the code.

When I roslaunch the laserscan_multi_merger it gives this error and process dies:

[laserscan_multi_merger-1] process has died [pid 16008, exit code -11, cmd /home/youbot/catkin_ws/devel/lib/ira_laser_tools/laserscan_multi_merger __name:=laserscan_multi_merger __log:=/home/youbot/.ros/log/6a789f88-6310-11e4-9d7c-000bab4510aa/laserscan_multi_merger-1.log]. log file: /home/youbot/.ros/log/6a789f88-6310-11e4-9d7c-000bab4510aa/laserscan_multi_merger-1*.log all processes on machine have died, roslaunch will exit shutting down processing monitor... ... shutting down processing monitor complete
done

Can you please help?

use of last version on noetic

I have a differnt behavior of your package by use of the apt get version or the source code: with the last one (building it with catkin tools) all works fine, with the installer version the same workspace didn't work anymore.

With the install version and same launch file i get this continous warning message:
TF_REPEATED_DATA ignoring data with redundant timestamp for frame odom at time 0.10000 according to authotity unknown_publisher at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.5/src/buffer_core.cpp

With the compiled version i do not.

Unable to roslaunch laserscan_multi_merger when launch file is run in a different package

Hi!

I am running the ira_laser_tools on a ROS Kinetic system. In my workspace, I have a package i.e. "test_robot", in which a launch file that starts up my ROS system would include a launch file that calls the ira_laser_tools laserscan_multi_merger (in the same directory) which has the code as follows:

<launch>
    <node pkg="ira_laser_tools" name="laserscan_multi_merger" type="laserscan_multi_merger" output="screen">
        <param name="destination_frame" value="/base_link"/>
        <param name="cloud_destination_topic" value="/merged_cloud"/>
        <param name="scan_destination_topic" value="/scan"/>
        <param name="laserscan_topics" value ="/scan1 /scan2" />
        <param name="angle_min" value="-3.14"/>
        <param name="angle_max" value="3.14"/>
        <param name="angle_increment" value="0.0043"/>
        <param name="scan_time" value="0.0333333"/>
        <param name="range_min" value="0.10"/>
        <param name="range_max" value="50.0"/>
    </node>
</launch>

In this situation, even though the laserscan_multi_merger node (in the same workspace) seems to have launched without any error thrown, this node does not seem to be working correctly as when I tried to get the output,

rostopic echo /scan

It gets stuck and nothing happens at all (my inputs /scan1 and /scan2 are working correctly).

However, when I

roslaunch ira_laser_tools laserscan_multi_merger.launch

after I roslaunch my ROS system (still including the launch file to run the ira_laser_tools node in the "test_robot" launch file), the laserscan_multi_merger node from previously gets killed, and the new laserscan_multi_merger node works fine and I am able to get /scan data.

The reason for including the launch file that calls the ira_laser_tools laserscan_multi_merger in my own launch file is so that I can run all nodes at once from just one main launch file.

Hence, the issue is that when trying to launch the laserscan_multi_merger node from another package other than from ira_laser_tools, the laserscan_multi_merger node does not seem to work correctly.

Would deeply appreciate anyone's assistance in this matter! Thank you in advance!!!

Scan limited to 50 meters and range not configurable by parameters in launch file

The range should be configurable and be able to set to higher values then just 50 meters.
Our laser scanner does reach 250 meters for example. So I would suggest a higher limit than 50 (dynamic reconfigure) ... 10km could be a limit which will definitely cover most of the cases in the near future ... well if you not up to park the USS Enterprise (from StarTrek) 😄

slam_toolbox can't build a map using multi-laser output data

  • Operating System:
    • Ubuntu 20.04
  • Installation type:
    • binaries
  • ROS Version
    • ROS1 Noetic
  • Version or commit hash:
    • 1.0.7-1focal.20221209.215147
  • Laser unit:
    • Clearpath Husky Simulator with HUSKY_UST10_ENABLED=1 and HUSKY_UST10_SECONDARY_ENABLED=1

Steps to reproduce issue

  • Enable both virtual lidars
  • Add this to launcher:
   <node pkg="ira_laser_tools" name="laserscan_multi_merger" type="laserscan_multi_merger">
    <param name="destination_frame" value="base_link"/>
    <param name="scan_destination_topic" value="/scan"/>
    <param name="laserscan_topics" value ="/front/scan /rear/scan" />
  </node>

Behavior

  • I tried to use the output /scan data for slam_toolbox but it couldn't build a map with the data

Additional information

  • It is interesting that some of the data is greater than range_max. Is this intended?
gavriel@gavriel-cto:~$ rostopic info scan
Type: sensor_msgs/LaserScan

Publishers: 
 * /laserscan_multi_merger (http://gavriel-cto:45153/)

Subscribers: 
 * /slam_gmapping (http://gavriel-cto:38545/)
 * /rviz (http://gavriel-cto:34577/)
 * /move_base (http://gavriel-cto:33081/)


gavriel@gavriel-cto:~$ rostopic echo scan
header: 
  seq: 799
  stamp: 
    secs: 30
    nsecs: 604000000
  frame_id: "top_plate_link"
angle_min: -2.359999895095825
angle_max: 2.359999895095825
angle_increment: 0.005799999926239252
time_increment: 0.0
scan_time: 0.03333333134651184
range_min: 0.44999998807907104
range_max: 25.0
ranges: [26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 0.8889434337615967, 0.8728505373001099, 0.8596974015235901, 0.8484830856323242, 0.8399553894996643, 0.8299886584281921, 0.8189652562141418, 0.8121286034584045, 0.8028361201286316, 0.788140594959259, 0.7761656045913696, 26.0, 0.7607190608978271, 0.7575971484184265, 0.7574251890182495, 0.760523796081543, 0.7642761468887329, 0.7662544846534729, 0.7680457830429077, 0.7700027823448181, 0.7723833918571472, 0.7749064564704895, 0.776307225227356, 0.7796602249145508, 0.7844770550727844, 0.7876943945884705, 0.787937343120575, 0.7914657592773438, 0.7960071563720703, 0.7977455258369446, 0.7995938062667847, 0.8057575821876526, 0.8081259727478027, 0.8110975623130798, 0.8128832578659058, 0.8160967826843262, 0.8201541900634766, 0.8233633041381836, 0.8281881809234619, 0.8312384486198425, 0.833400309085846, 0.8355249166488647, 0.8396785855293274, 0.8437479734420776, 0.8449754118919373, 0.8526577949523926, 0.8558814525604248, 0.8587668538093567, 0.863347053527832, 0.8652997016906738, 0.8738859295845032, 0.8787156939506531, 0.878123939037323, 0.883574366569519, 0.8874945044517517, 0.8959623575210571, 0.8984680771827698, 0.902416467666626, 0.9065732955932617, 0.9102147221565247, 0.9170271158218384, 0.9226657152175903, 0.9266858100891113, 0.9311148524284363, 0.9349843263626099, 0.942914605140686, 0.9472222924232483, 0.9536519646644592, 0.9577603340148926, 0.9670928120613098, 0.9724058508872986, 0.9763233661651611, 0.9825613498687744, 0.9861704707145691, 0.9959887862205505, 1.0021259784698486, 1.0079954862594604, 1.0127421617507935, 1.022729754447937, 1.0285512208938599, 1.0342217683792114, 1.0406920909881592, 1.04509437084198, 1.0573290586471558, 1.0670053958892822, 1.071596622467041, 1.0767006874084473, 1.0893694162368774, 1.096360206604004, 1.1027103662490845, 1.110400676727295, 1.1151387691497803, 1.1309458017349243, 1.1380538940429688, 1.1443703174591064, 1.1527687311172485, 1.1695666313171387, 1.174713134765625, 1.184895634651184, 1.192954659461975, 1.2019850015640259, 1.218860149383545, 1.2282124757766724, 1.2372404336929321, 1.2462608814239502, 1.2539896965026855, 1.2750262022018433, 1.2855585813522339, 1.2943938970565796, 1.3028393983840942, 1.3145619630813599, 1.3375927209854126, 1.3470854759216309, 1.3611592054367065, 1.371753454208374, 1.384572982788086, 1.4103001356124878, 1.4205924272537231, 1.4360047578811646, 1.4486364126205444, 1.4611417055130005, 1.490140676498413, 1.505947470664978, 1.5208489894866943, 1.5360971689224243, 1.5504603385925293, 1.567594051361084, 1.5842443704605103, 1.6199878454208374, 1.637354850769043, 1.6557413339614868, 1.6756746768951416, 1.6957688331604004, 1.716138482093811, 1.7363518476486206, 1.7783459424972534, 1.8029897212982178, 1.8265310525894165, 1.8503828048706055, 1.876444935798645, 1.900362491607666, 1.9273090362548828, 1.9532904624938965, 2.013645648956299, 2.0453665256500244, 2.0756068229675293, 2.108285665512085, 2.1431665420532227, 2.1777093410491943, 2.2108874320983887, 2.2519917488098145, 2.291315793991089, 2.3314297199249268, 2.3758554458618164, 2.4196720123291016, 2.513453960418701, 2.5629920959472656, 2.6178934574127197, 2.673447847366333, 2.729774236679077, 2.793353319168091, 2.8571436405181885, 2.9245121479034424, 2.996345043182373, 3.0746309757232666, 3.152695417404175, 3.2363128662109375, 3.3261053562164307, 3.420165777206421, 3.5215048789978027, 3.6311161518096924, 3.745979070663452, 3.870558500289917, 4.000850200653076, 4.146318435668945, 4.297867774963379, 4.462414264678955, 4.643709182739258, 4.845107078552246, 5.057750701904297, 5.295043468475342, 5.555423736572266, 5.845219612121582, 6.169299602508545, 6.531850814819336, 6.942105770111084, 26.0, 7.3741326332092285, 7.37183952331543, 7.365645408630371, 7.36276388168335, 7.361029624938965, 7.356813430786133, 7.35439920425415, 7.35115385055542, 7.350854873657227, 7.349593162536621, 7.348794460296631, 26.0, 7.345027446746826, 7.3458099365234375, 7.345302104949951, 7.3448004722595215, 7.3444905281066895, 7.343169212341309, 7.345750331878662, 7.3454132080078125, 7.347197532653809, 7.347904682159424, 26.0, 7.352084159851074, 7.352281093597412, 7.3572492599487305, 7.358049392700195, 7.361382007598877, 7.364761829376221, 7.368617534637451, 7.371425628662109, 7.376087188720703, 7.381535053253174, 7.385735988616943, 26.0, 7.391486167907715, 7.395849704742432, 7.401980876922607, 7.407465934753418, 7.414839267730713, 7.421496868133545, 7.4277825355529785, 7.435358047485352, 7.443558216094971, 7.451615333557129, 26.0, 7.4608154296875, 7.467899322509766, 7.476623058319092, 7.483972072601318, 7.4955339431762695, 7.507135391235352, 7.515416622161865, 7.526758193969727, 7.536526203155518, 7.548981189727783, 26.0, 7.559510707855225, 7.572847843170166, 7.5845255851745605, 7.595062255859375, 7.610170841217041, 7.623710632324219, 7.638037204742432, 7.651139259338379, 7.667383670806885, 7.681463718414307, 26.0, 7.6963348388671875, 7.71235466003418, 7.727313995361328, 7.745697498321533, 7.762416839599609, 7.777956485748291, 7.796645641326904, 7.81321907043457, 7.83225154876709, 7.853155136108398, 26.0, 7.869750499725342, 7.891319751739502, 7.911050319671631, 7.930513381958008, 7.951352119445801, 7.972161293029785, 7.994212627410889, 8.01665210723877, 8.040428161621094, 26.0, 8.06250286102295, 8.086291313171387, 8.111668586730957, 8.134875297546387, 8.159875869750977, 8.18676471710205, 8.211165428161621, 8.238286972045898, 8.26617431640625, 26.0, 8.294144630432129, 8.321702003479004, 8.352011680603027, 8.382037162780762, 8.40909481048584, 8.441547393798828, 8.473420143127441, 8.505228996276855, 8.53646183013916, 26.0, 8.568779945373535, 8.603157043457031, 8.637289047241211, 8.670641899108887, 8.707594871520996, 8.744729995727539, 8.782062530517578, 8.817867279052734, 8.857707977294922, 26.0, 8.896562576293945, 8.937758445739746, 8.977327346801758, 9.018861770629883, 9.060942649841309, 9.10495662689209, 9.146082878112793, 9.191726684570312, 26.0, 9.238192558288574, 9.284586906433105, 9.330262184143066, 9.379110336303711, 9.427470207214355, 9.477866172790527, 9.526871681213379, 9.580082893371582, 26.0, 9.545295715332031, 9.476091384887695, 9.407978057861328, 9.338632583618164, 9.271072387695312, 9.206778526306152, 9.14474105834961, 9.08140754699707, 9.019721031188965, 8.959413528442383, 8.902326583862305, 26.0, 8.842764854431152, 8.785682678222656, 8.731610298156738, 8.679024696350098, 8.622869491577148, 8.569963455200195, 8.514482498168945, 8.459683418273926, 8.405550003051758, 8.368152618408203, 8.322879791259766, 8.301786422729492, 8.253820419311523, 8.205485343933105, 8.156810760498047, 8.107983589172363, 8.0934419631958, 8.049243927001953, 8.007635116577148, 7.9666428565979, 7.92621374130249, 7.885307312011719, 7.845414638519287, 7.844087600708008, 7.801971435546875, 7.760900497436523, 7.7217698097229, 7.682403087615967, 7.64506721496582, 7.625537872314453, 7.589714050292969, 7.557106971740723, 7.52278470993042, 7.490432262420654, 7.458662986755371, 7.431118965148926, 7.424729347229004, 7.395886421203613, 7.362374782562256, 7.332522869110107, 7.3018035888671875, 7.270868301391602, 7.238681793212891, 7.21950626373291, 7.193066596984863, 7.165719509124756, 7.136837959289551, 7.126297950744629, 7.096619606018066, 7.069312572479248, 7.062407493591309, 7.033790111541748, 7.014214992523193, 6.989625930786133, 6.966914176940918, 6.942140102386475, 6.920390605926514, 6.8988471031188965, 26.0, 6.876871585845947, 6.854771137237549, 6.835156440734863, 6.812829494476318, 6.794553279876709, 6.774613380432129, 6.753663539886475, 6.736555576324463, 6.716184616088867, 6.697796821594238, 26.0, 6.681095600128174, 6.664041042327881, 6.646238327026367, 1.3421621322631836, 1.3390880823135376, 1.334984302520752, 1.331992506980896, 1.330308198928833, 1.3279088735580444, 1.3253555297851562, 1.3228093385696411, 1.3192646503448486, 1.3156324625015259, 1.3132387399673462, 1.3122658729553223, 6.468549728393555, 1.3091906309127808, 1.3061877489089966, 1.303786277770996, 1.3026549816131592, 1.2999067306518555, 1.2978415489196777, 1.3189510107040405, 1.364598274230957, 1.3858671188354492, 1.4127569198608398, 1.4640551805496216, 1.4889886379241943, 1.5158275365829468, 1.5770149230957031, 1.6061642169952393, 1.639378309249878, 1.708664059638977, 1.7450180053710938, 1.7827385663986206, 1.8624666929244995, 1.9054317474365234, 1.9967564344406128, 2.0465621948242188, 2.096992254257202, 2.208771228790283, 2.2650442123413086, 2.38444185256958, 2.4661874771118164, 2.5409367084503174, 2.704402446746826, 2.7942068576812744, 2.9901933670043945, 3.1018242835998535, 3.2169957160949707, 3.4826607704162598, 3.6295409202575684, 3.967524528503418, 4.161223888397217, 4.608726978302002, 4.870730876922607, 5.164175987243652, 5.873355388641357, 6.302819728851318, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0, 26.0]
intensities: []

Is this project only simple merge laser data not transform coordinate

Here is a question: When I use this two lasers in my test-car to nav and obstacle avoidance, I found an obstacle has become two obstacles in test-car system, then, I found this because an obstacle in two lasers is not in same area, In other words, two lasers get data is not overlap. As show in follow picture:

Screenshot 2022-02-15 16:42:06

I want to use this project code to transform and merge two lasers data to solve this question, but I found the data after merge also has this problem. Is this project only simple merge data not transform coordinate?

Two RPLIDAR's A1 orientation problem

Hi,

I am doing a little project with two rplidar's a1, but i have a problem in my design. My initial idea was to put on lidar in front of other, so they will have a different axis. Reading a lot of documentation or researching on the internet. I have not come to any conclusions. The thing is that if I put one lidar in front of another, I get collision. On the other hand, if I put one lidar and then the other with the same x and y axis, I don't have any problems.
I attach a picture of my two situations:

LIDAR

Error of double free or corruption

Hello.

I am trying to use the laserscan_multi_merger to merge 2 laserscans.
I run laserscan_multi_merger, but I have a trouble with double free or corruption.
Do you have any tips for this error?

[Install ira_laser_tools]
sudo apt-get installl ros-melodic-ira-laser-tools

[Software version]
Ubuntu18.04
ROS melodic
pcl 1.8.1

[Log]
user@Ubuntu:~/catkin_ws$ roslaunch ira_laser_tools laserscan_multi_merger.launch
... logging to /home/user/.ros/log/a6bbd3fc-aee6-11ea-b91d-d0abd5c91ed6/roslaunch-Ubuntu-5474.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://Ubuntu:39305/

SUMMARY

PARAMETERS

  • /laserscan_multi_merger/angle_increment: 0.0058
  • /laserscan_multi_merger/angle_max: 2.0
  • /laserscan_multi_merger/angle_min: -2.0
  • /laserscan_multi_merger/cloud_destination_topic: /merged_cloud
  • /laserscan_multi_merger/destination_frame: base_link
  • /laserscan_multi_merger/laserscan_topics: /scanL /scanR
  • /laserscan_multi_merger/range_max: 50.0
  • /laserscan_multi_merger/range_min: 0.3
  • /laserscan_multi_merger/scan_destination_topic: /scan_multi
  • /laserscan_multi_merger/scan_time: 0.0333333
  • /rosdistro: melodic
  • /rosversion: 1.14.5

NODES
/
laserscan_multi_merger (ira_laser_tools/laserscan_multi_merger)

ROS_MASTER_URI=http://localhost:11311

process[laserscan_multi_merger-1]: started with pid [5491]
[ INFO] [1592211707.539413081]: Subscribing to topics 2
double free or corruption (out)
[laserscan_multi_merger-1] process has died [pid 5491, exit code -6, cmd /home/user/catkin_ws/devel_isolated/ira_laser_tools/lib/ira_laser_tools/laserscan_multi_merger __name:=laserscan_multi_merger __log:=/home/user/.ros/log/a6bbd3fc-aee6-11ea-b91d-d0abd5c91ed6/laserscan_multi_merger-1.log].
log file: /home/user/.ros/log/a6bbd3fc-aee6-11ea-b91d-d0abd5c91ed6/laserscan_multi_merger-1*.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
done

Lookup would require extrapolation into the past. Requested time 1569209705.859023507 but the earliest data is at time 1569209705.978461273, when looking up transform from frame [base_laser1] to frame [base_link]

i have already subscripted scan1 scan2;but occurs this error; relatived code belows:

void LaserscanMerger::scanCallback(const sensor_msgs::LaserScan::ConstPtr& scan, std::string topic)
{
sensor_msgs::PointCloud tmpCloud1,tmpCloud2;
sensor_msgs::PointCloud2 tmpCloud3;

// Verify that TF knows how to transform from the received scan to the destination scan frame
tfListener_.waitForTransform(scan->header.frame_id.c_str(), destination_frame.c_str(), scan->header.stamp, ros::Duration(1));

projector_.transformLaserScanToPointCloud(scan->header.frame_id, *scan, tmpCloud1, tfListener_);
try
{
/****/    tfListener_.transformPointCloud(destination_frame.c_str(), tmpCloud1, tmpCloud2);
    //tfListener_.transformPointCloud(destination_frame.c_str(), ros::Time(0),tmpCloud1,"/base_link", tmpCloud2);
}
catch (tf::TransformException ex)
{
    //ROS_INFO("error transform!");
    ROS_ERROR("%s",ex.what());
    return;
}

.......

Intensity of the lasers

Hi,
I am able to get the resultant laserscan message but the intensity of the laserscans is lost. Is there some way to get the intensity?

Merger not subscribing to gazebo generated laser topics

Hello,
while trying to set up my system in Gazebo, I was noticing that the merger doesn't subscribe to the laser topics generated by 3 hokuyo lidars in Gazebo.
My config is the following:
3 lasers mounted at robot -> publishing topics: /scan_hokuyo1 /scan_hokuyo2 and /scan_ibeo1
See my output of rostopic list:

rostopic list
/scan_hokuyo1
/scan_hokuyo2
/scan_ibeo1
/scan_multi_merged


You also see the topic `/scan_multi_merged` which is published by the laser merger node as you can see here:

rosnode info /laserscan_multi_merger

Node [/laserscan_multi_merger]
Publications:

  • /laserscan_multi_merger/parameter_descriptions [dynamic_reconfigure/ConfigDescription]
  • /merged_cloud [sensor_msgs/PointCloud2]
  • /rosout [rosgraph_msgs/Log]
  • /laserscan_multi_merger/parameter_updates [dynamic_reconfigure/Config]
  • /scan_multi_merged [sensor_msgs/LaserScan]

Subscriptions:

  • /tf [tf2_msgs/TFMessage]
  • /tf_static [tf2_msgs/TFMessage]
  • /clock [rosgraph_msgs/Clock]

Services:

  • /laserscan_multi_merger/set_parameters
  • /laserscan_multi_merger/set_logger_level
  • /laserscan_multi_merger/get_loggers

contacting node http://aschultz-ThinkPad-T450s:42260/ ...
Pid: 21244
Connections:

You can see the node isn't subscribing to the topics mentioned above. I started the node with the following part of my launch file:

<node pkg="ira_laser_tools" name="laserscan_multi_merger" type="laserscan_multi_merger" output="screen">
     <param name="destination_frame" value="/ibeo_frame"/>
     <param name="cloud_destination_topic" value="/merged_cloud"/>
     <param name="scan_destination_topic" value="/scan_multi_merged"/>
     <param name="laserscan_topics" value ="/scan_hokuyo1 /scan_hokuyo2 /scan_ibeo1" /> 
</node>

If I try to echo the topic of the laser merger the following output appears and also ROS_DEBUG messages are published:

rostopic echo /scan_multi_merged 
WARNING: no messages received and simulated time is active.
Is /clock being published?

[DEBUG] [1453887963.432518126, 100.157000000]: Incoming queue full for topic "/clock". Discarding oldest message (current queue size [0])

So I don't think that the subscription to topics is done correctly.
Thanks in advance

Merge two topics

Hi, I'm using ubuntu 14.04 and ROS indigo. I'm trying to use hector_slam with two Hokuyo lasers (UST-20LX). Hector_slam only accepts one topic scan, so I'm trying to merge the two topics to one laser scan topic. When I try this I have a dead zone, although i can see the 360 degrees with pointcloud2. the lasers are in oposite corners of the robot (rectangular shape)

Is this a problem with the size of data?

attached images show the problem that I'm havving

rostopic_list
laserscan
pointcloud

Melodic release

Any plans for official melodic release? Current version compiles fine on melodic, only some minor changes would be needed to be fully compatible with PCL 1.8.

Unable to get merged cloud topic DATA

Hi,
I am trying to merge 3 (quanergy M8) lidar point cloud feed. So, I have update laserscan_topics in launch file, and then check all topic data by using rostopic echo. But when I tried to check merged cloud data it is not publishing any thing.

Listed all topics
Lidar_topic

Merger Node running:
SUMMARY

PARAMETERS

  • /laserscan_multi_merger/angle_increment: 0.0058
  • /laserscan_multi_merger/angle_max: 2.0
  • /laserscan_multi_merger/angle_min: -2.0
  • /laserscan_multi_merger/cloud_destination_topic: /merged_cloud
  • /laserscan_multi_merger/destination_frame: Lidar_merge
  • /laserscan_multi_merger/laserscan_topics: /sensor1/points /...
  • /laserscan_multi_merger/range_max: 50.0
  • /laserscan_multi_merger/range_min: 0.3
  • /laserscan_multi_merger/scan_destination_topic: /scan_multi
  • /laserscan_multi_merger/scan_time: 0.0333333
  • /rosdistro: kinetic
  • /rosversion: 1.12.14

NODES
/
laserscan_multi_merger (ira_laser_tools/laserscan_multi_merger)

ROS_MASTER_URI=http://localhost:11311

process[laserscan_multi_merger-1]: started with pid [6802]

In graph multi_merger node is not subscribing 3 lidars even though I mention in Launch file.
rosgraph

Any Suggestion why node is not subscribing data?

For FYI
rosnode info /laserscan_multi_merger

Node [/laserscan_multi_merger]
Publications:

  • /laserscan_multi_merger/parameter_descriptions [dynamic_reconfigure/ConfigDescription]
  • /laserscan_multi_merger/parameter_updates [dynamic_reconfigure/Config]
  • /merged_cloud [sensor_msgs/PointCloud2]
  • /rosout [rosgraph_msgs/Log]
  • /scan_multi [sensor_msgs/LaserScan]

Subscriptions:

  • /tf [unknown type]
  • /tf_static [unknown type]

Services:

  • /laserscan_multi_merger/get_loggers
  • /laserscan_multi_merger/set_logger_level
  • /laserscan_multi_merger/set_parameters

contacting node http://WHQPC-LAV002:36781/ ...
Pid: 12841
Connections:

  • topic: /rosout
    • to: /rosout
    • direction: outbound
    • transport: TCPROS

adjust angle_max=3.14

Hi sir:
I have a problem. After I watched your youtube video, I adjusted the parameter angle_max to a maximum of 3.14, but there is still a part of the laser data that is not coming out. Why?
If you can answer my question, it would be great.

Not being able to work with gmapping node

Hello,
I am working with summit-xl-steel robot platform which has built in two LiDARs and so I am using this the merge node to use both laser data for the navigation stack. My problem is the following:
The merge_node works well but if it is launched at the same time as the hole robot, the node doesn't subscribe to the original laser topics (As reported in this issue: #5), I tried with the answer there to solve this problem but it didn't work for me. What did work tho was to use the timed_roslaunch package, which allows to delay the start of a launch file from another launch file, so by delaying the merge node this works fine.
The problem is when I also use the gmapping node and want it to subscribe to the new /merge_lasers topic instead of the original ones.:
– If I don’t use the delay for the merge node the gmapping node doesn’t work because nothing it’s published in the new /merge_lasers topic since the node it is not subscribing to the original laser topics.
– If I do use the delay (above 3 seconds to work in my case) then the gmapping crashes because it starts before the merge_node and requests a topic which has not been created yet (/merge_lasers).
I have tried also to delay the gmapping node even more so that the topic /merge_lasers has the time to be published but even thought it does, the gmapping node doesn't work.
Any help is apreciated. Cheers,

Andrés

Release for ROS noetic

Hey everyone,

Are there plans for releasing this package to ROS noetic? After a quick search I could not find any information about this.

Thanks!

The merge is so slow

Hi
Now I'm working with it but I have a issue, when I use it the result of the merge is so slow, the time delay is three or more seconds, it's normal? I'm using Ros Melodic and Gazebo for simulate the scanners, but when in the simulation I put an object the topic of the one of the scanners show the object immediately (in rviz) but the topic of the merge show the object later than three or more seconds, it work with this times or I have to change something?

Thanks

laserscan_visualizer - configuring range not working

Hello.

I am trying to use the laserscan_visualizer to convert a pointcloud to a laserscan.
The pointcloud comes from a gazebo kinect plugin.
I can visualize the laserscan in rviz, however, the laserscan is only shown approximately 2 meters infront of the robot, even though i have set the range to 25 meters.

I have removed the TF statements, because my TF is published though robot-state-publisher.
This is my launch file:

`

<param name ="/use_sim_time" value="true"/>

  <!-- DEFINE HERE THE STATIC TRANFORMS, FROM BASE_FRAME (COMMON REFERENCE FRAME) TO THE VIRTUAL LASER FRAMES-->
    <!-- WARNING: the virtual laser frame(s) *must* match the virtual laser name(s) listed in param: output_laser_scan -->

    <node pkg="ira_laser_tools" name="laserscan_virtualizer" type="laserscan_virtualizer" output="screen">
            <param name="cloud_topic" value="/frnt_cam_lnk/depth/points"/>       <!-- INPUT POINT CLOUD -->
            <param name="base_frame" value="/laser_lnk"/>     <!-- REFERENCE FRAME WHICH LASER(s) ARE RELATED-->
            <param name="output_laser_topic" value ="/frnt_scan" />  <!-- VIRTUAL LASER OUTPUT TOPIC, LEAVE VALUE EMPTY TO PUBLISH ON THE VIRTUAL LASER NAMES (param: output_laser_scan) -->
			<param name="angle_min" value ="-3.14" />
			<param name="angle_max" value ="3.14" />
			<param name="angle_increment" value ="0.0058" />
			<param name="range_min" value ="0.45" />
			<param name="range_max" value ="25" />
            <param name="virtual_laser_scan" value ="/frnt_cam_p2l" /> <!-- LIST OF THE VIRTUAL LASER SCANS. YOU MUST PROVIDE THE STATIC TRANSFORMS TO TF, SEE ABOVE -->
    </node>

`

Using this package, is it possible to merge two scans lying in 2 different planes?

Hi,

I'm using two different sensors: a stereo camera and 2D Lidar; and both of them are mounted at different heights. Now, I have converted 3D PointCloud of the camera into a 2D scan using 'pointcloud_to_laserscan'. So, now I have scan data from the 2D lidar as well as converted scan data from the camera.

Now, in the package (ira_laser_tools) description, it's mentioned that "Laserscan_merger allows ... same time, single scanning plane, ... . The scanning planes need to be approximately the same. ..."
While for Virtual Laserscan, it's mentioned that "Laserscan_virtualizer ... a pointcloud such as the one generated by a multiple scanning plane laser scanner, e.g., a velodyne scanner). ..."

In my case, neither both the Laser sources are in a single plane nor they belong to single entity. So, I just wanted to confirm, can I use this package in my application?

Thanks in advance!

Inconsistent map generation when using Gmapping

I have two sources of LiDAR sensor on the robot one in the front and other on the back with 270 field view for both, I am using https://github.com/ros-perception/slam_gmapping to generate the map. The odom => base_link transform is provide by GAZEBO. I am using the same launch file to launch ira_laser_merger node given in the package.

Gmapping does produce a map with merged LaserScan data but the map generated is a bit inconsistent,

Screenshot from 2024-03-03 17-01-19

The map generated by any of the front or rear LaserScan sensor is as expected,

Screenshot from 2024-03-03 17-00-52

Below is the metadata for all the sensor,

Merged:

header: 
  seq: 244
  stamp: 
    secs: 158
    nsecs: 274000000
  frame_id: "merge_lidar"
angle_min: -3.1414999961853027
angle_max: 3.1414999961853027
angle_increment: 0.005799999926239252
time_increment: 0.0
scan_time: 0.03333330154418945
range_min: 0.20000000298023224
range_max: 5.0

Front:

header: 
  seq: 15
  stamp: 
    secs: 134
    nsecs: 513000000
  frame_id: "front_lidar_sensor"
angle_min: -2.3561899662017822
angle_max: 2.3561899662017822
angle_increment: 0.008742820471525192
time_increment: 0.0
scan_time: 0.0
range_min: 0.20000000298023224
range_max: 5.0

Rear:

header: 
  seq: 565
  stamp: 
    secs: 191
    nsecs: 371000000
  frame_id: "rear_lidar_sensor"
angle_min: 0.7853900194168091
angle_max: 5.497769832611084
angle_increment: 0.008742820471525192
time_increment: 0.0
scan_time: 0.0
range_min: 0.20000000298023224
range_max: 5.0

What could be the reason which leads to such an inconsistent map generation using merged LaserScan data along with Gmapping ?

Errors when combining two laser sources ([pcl::concatenatePointCloud])

Hello,

I'm trying to combine laser data from LDS-01 LIDAR and R200 camera.
To convert data from PointCloud2 of my R200 to LaserScan I use depthimage_to_laserscan and it works good. Everything is correctly displayed in rViz.

But when I try to combine these two data using ira_laser_tools I get errors.

burger@burger-UP-CHT01:~$ roslaunch ira_laser_tools laserscan_multi_merger.launch
... logging to /home/burger/.ros/log/4979d2f4-d902-11e8-a0f5-00c0caa51893/roslaunch-burger-UP-CHT01-5052.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://localhost:35838/

SUMMARY

PARAMETERS

  • /laserscan_multi_merger/cloud_destination_topic: /merged_cloud
  • /laserscan_multi_merger/destination_frame: /base_link
  • /laserscan_multi_merger/laserscan_topics: /scan /scan_r200
  • /laserscan_multi_merger/scan_destination_topic: /scan_multi
  • /rosdistro: kinetic
  • /rosversion: 1.12.14

NODES
/
laserscan_multi_merger (ira_laser_tools/laserscan_multi_merger)

ROS_MASTER_URI=http://localhost:11311

process[laserscan_multi_merger-1]: started with pid [5075]
[ INFO] [1540546555.340892157]: Subscribing to topics 2
/scan /scan_r200 [ WARN] [1540546555.411538397]: Transformer::setExtrapolationLimit is deprecated and does not do anything
[pcl::concatenatePointCloud] Number of fields in cloud1 (5) != Number of fields in cloud2 (4)
[pcl::concatenatePointCloud] Number of fields in cloud1 (5) != Number of fields in cloud2 (4)
[pcl::concatenatePointCloud] Number of fields in cloud1 (5) != Number of fields in cloud2 (4)
[pcl::concatenatePointCloud] Number of fields in cloud1 (5) != Number of fields in cloud2 (4)
[pcl::concatenatePointCloud] Number of fields in cloud1 (5) != Number of fields in cloud2 (4)
[pcl::concatenatePointCloud] Number of fields in cloud1 (5) != Number of fields in cloud2 (4)
[pcl::concatenatePointCloud] Number of fields in cloud1 (5) != Number of fields in cloud2 (4)
[pcl::concatenatePointCloud] Number of fields in cloud1 (5) != Number of fields in cloud2 (4)
[pcl::concatenatePointCloud] Number of fields in cloud1 (5) != Number of fields in cloud2 (4)
[pcl::concatenatePointCloud] Number of fields in cloud1 (5) != Number of fields in cloud2 (4)
[pcl::concatenatePointCloud] Number of fields in cloud1 (5) != Number of fields in cloud2 (4)

Any idea how to solve this problem?

ROS2/foxy Support

I'm wondering if anyone interested and/or working on porting ira_laser_tools to ROS2/foxy?

Use latest timestamp in laser merger scan publish

Hi,

Regarding the timestamp that is published by the laser scan merger, wouldn't it be more correct to use the timestamp associated with the last sensor reading included in the merge, instead of using the current time?

The change to do so is pretty simple, since it is enough to change the "laserscan_multi_merger.cpp" file so that the function pointcloud_to_laserscan accepts an additional argument, and pass that argument on the call to that function (in scanCallback), by using the received timestamp.

I can send a pull request with the change, if this change is welcome.

License

This looks like an interesting package that does exactly what I want (merge two laser sources). I'd like to use it, but there is currently no license. Could you please add one?

ROS2 port

Would you accept a PR for porting this to ROS2?

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.