Coder Social home page Coder Social logo

pepperlfuchs / pf_lidar_ros_driver Goto Github PK

View Code? Open in Web Editor NEW
36.0 5.0 37.0 3.16 MB

ROS driver for Pepperl+Fuchs R2000 and R2300 laser scanners

Home Page: https://www.pepperl-fuchs.com/global/en/23097.htm

License: Apache License 2.0

CMake 2.57% C++ 85.50% Python 11.55% C 0.38%
lidar pepperl-fuchs ros

pf_lidar_ros_driver's Introduction

ROS drivers for R2000 and R2300 laser scanners

Build Status

Required platform:
Ubuntu 18.04 / ROS Melodic OR Ubuntu 20.04 / ROS Noetic

Note: The ROS2 driver is available here: https://github.com/PepperlFuchs/pf_lidar_ros2_driver

To use catkin_tools instead of catkin_make for building from source:

sudo sh \
    -c 'echo "deb http://packages.ros.org/ros/ubuntu `lsb_release -sc` main" \
        > /etc/apt/sources.list.d/ros-latest.list'
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get install python3-catkin-tools

For more details, refer https://catkin-tools.readthedocs.io/en/latest/installing.html

Clone the repository:
Clone the repository in the src folder of your ROS workspace

git clone --branch=main https://github.com/PepperlFuchs/pf_lidar_ros_driver.git

Install the missing dependencies:

export ROS_DISTRO=melodic OR export ROS_DISTRO=noetic
cd <path/to/workspace>
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=$ROS_DISTRO -y

Build the workspace:

cd <path/to/workspace>
source /opt/ros/$ROS_DISTRO/setup.bash

If catkin_tools is installed as shown above:

catkin build
source <path/to/workspace>/install/setup.bash

Instead, to use catkin_make:

catkin_make
source <path/to/workspace>/install/setup.bash

Usage:
Now you are ready to use the driver. Make the necessary power and ethernet connections. Make sure your computer's IP address is on the same subnet mask as that of the device. Change the scanner_ip argument in the respective launch file as necessary. You can now launch one of the drivers in the following manner:

roslaunch pf_driver r2000.launch

OR

roslaunch pf_driver r2300.launch

With R2300, the term scan refers to a contiguous group of measurements spanning one particular horizontal circular sector. Depending on the orientation of the mirrors on the cube, the scans may be taken in the same or slightly different layers.

In current sensors, all four mirrors are inclined slightly differently so that scans are taken at the following vertical angle (relative to the mounting plane). Note that the layers are numbered in the order they are scanned during one turn. This is (yet) not strictly from bottom to top:

Layer index Angle Description
0 -4.5° bottom (connector side)
1 -1.5° -
2 +4.5° top
3 +1.5° -

pf_lidar_ros_driver's People

Contributors

bk-mtg avatar hsd-dev avatar michaelgrupp avatar ptruka avatar valeriomagnago avatar wsaihopfsg 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

Watchers

 avatar  avatar  avatar  avatar  avatar

pf_lidar_ros_driver's Issues

Bug: dynamic reconfigure

Hi,

I think there is a bug in the dynamic reconfigure. Once you update a parameter all the other parameters get updated to the default value. More specifically, in this line you re-update the the values from the output of the scanner and here there is something going wrong that reset the values of the parameters. In addition, I noticed that changing the config values for example the start_angle has no impact because the values are always overwritten due to this line of code. By deleting this line the dynamic reconfigure works as it should be but I am wondering why do you re-write the values from the output of the scanner ?

https://github.com/PepperlFuchs/ROS_driver/blob/8cf3b8dc8121aa0c0dc30e34da8685326ee52b7f/pf_driver/src/pf/pf_interface.cpp#L254

config.watchdog is always true

In the virtual function get_scanoutput_config in pfsdp_protocol.hpp, the json_keys for "watchdog" is missing during the invocation of get_request, resulting in config.watchdog being always true.

Original code:
https://github.com/PepperlFuchs/ROS_driver/blob/80c423ad038d2ff197bd81588ad40ee3f3cd56e5/pf_driver/include/pf_driver/pf/pfsdp_protocol.hpp#L385

New code:

auto resp = get_request("get_scanoutput_config", {"start_angle", "packet_type", "watchdogtimeout", "skip_scans", "watchdog"}, { KV("handle", handle) });

Bug when start_angle & max_num_points_scan are specified

In R2300 there are 2 ways to limit the FOV

  1. User specifies the optional start_angle & max_num_points_scan arguments when invoking request_handle_udp. This is backward-compatible with R2000
  2. By changing the paramaters measure_start_angle & measure_stop_angle. This is only available in R2300.

The current code makes provision only for case 2 and does not seem to consider case 1, which may result in erroneous RViz output.

For example, consider the following parameters in which the FOV is between -10⁰ to 10⁰

scan_frequency = 100Hz
angular_increment = 0.2⁰
measure_start_angle = -50⁰ (default)
measure_stop_angle =  50⁰ (default)
start_angle = -10⁰
max_num_points_scan = 101 

RViz output will be wrong
image

This is due to the fact that the current code only consider param_.angle_min, which is obtained from measure_start_angle
https://github.com/PepperlFuchs/ROS_driver/blob/80c423ad038d2ff197bd81588ad40ee3f3cd56e5/pf_driver/src/ros/scan_publisher.cpp#L60

If we use the correct values for msg->angle_min & msg->angle_max, the RViz output will be okay i.e. scan lines subtended from the origin from -10⁰ to 10⁰
image

Possible connection drop after long runtime

Hi!

We had the issue that after running for several hours (overnight), the driver node suddenly stopped publishing data on the scan topic during one of our tests. The node did not output any log messages, and obviously did not try to reconnect to the scanner. When checking, the scanner was reactive (ping + curl). We restarted the node, and it published scan data again.

Have you encountered this issue?
We are using the current main branch with an R2000.

Best regards,
Alex

Development status

What is the current status of the development of the driver? Is it still recommended to use the community edition of the driver? (Since it hasn't had any update in the last 4 years).

When call the httpGet(), the program is jam.

Sometimes the network is breakdown, and the customer track the driver, when run in HttpCommandInterface::httpGet(), and boost::asio::read_until() and boost::asio::read() will jam, and can't exit with CRTL+C.
We also can do like this: connect() to R2000, and sleep 5s, in this 5s run "ifdown" in terminal, have the same issue.
My suggestion is when the network have this problem , the R2000 driver throw the exception and return, maybe you can modify the driver?

Thank you!

Is UDP supposed to work?

Hi,

I am trying out the driver and I can't get it to work over UDP.

First, there is a hardcoded udp address in pfsdp_protocol.hpp.
Then at least parse_data() gets called but no scans are published...

TCP is working.

Driver status / release plans

Hi,

What is the current status of the driver? Is a proper release planned anytime soon for Melodic / Noetic? According to #12 it was planned to be finished two months ago.

Is there a way we can help?

transplant to ros2

hi, thanks for your work, when i transplant the code to ros2, which can connet to the r2000 like this:
[r2000_node-4] [INFO] [1677779762.428661354] [r2000_node]: Device found: R2000
[r2000_node-4] [INFO] [1677779762.445970648] [r2000_node]: Device state changed to Initialized
[r2000_node-4] [INFO] [1677779762.452387113] [r2000_node]: Device state changed to Running
but after that return fault:
[r2000_node-4] terminate called after throwing an instance of 'rcpputils::IllegalStateException'
[r2000_node-4] what(): Wrongly initialized. Serialized message has a capacity of zero.
dou you have any idea for that,thanks a lot.

protocol error: 120 Invalid handle or no handle provided

After running the released version (1.2.0) for more than 5 hours, I receive the protocol error
protocol error: 120 Invalid handle or no handle provided
This is printed every 60 seconds and no scan data is published. According to the data sheet https://files.pepperl-fuchs.com/webcat/navi/productInfo/doct/doct3469f.pdf?v=20201005101009 this error should be printed when a scan_output command is sent with a bad handle.
Bildschirm­foto 2023-02-21 um 00 10 54
The way I understand the code, the scan_output command is sent once so I do not know where this could come from.

R2000 UHD not supported

Hi,
I was testing our R2000 UHD with this driver and it seems it does not work as it says:
[ERROR] [1652961708.518646295]: Device unsupported
[ERROR] [1652961708.521031680]: Unable to initialize device

I debugged a little and found that the function
PFInterface::handle_version
fails at line 124 (

)
which indicated a mismatch of the version as far as I understood.
The actual version inside the function would be 1 (major) 4 (minor)

Is the UHD version not supported and this is a known behavior ?

Firmware: 1.60
Hardware: 1.71
Protocol: 1.04

/scan topic is published at 360+ hz

HI,
the publishing frequency of the /scan topic is very high. Please suggest me how to change the rate of the /scan publisher?

roslaunch pf_driver r2000.launch
R2000:
transport: "udp"
scanner_ip: "10.0.10.9"
port: "3000" # optional
device: "R2000"
start_angle: -1800000
max_num_points_scan: 0
packet_type: "C"
scan_topic: "/scan"
frame_id: "r2000_scanner_link"
watchdogtimeout: 60000
watchdog: true

Thank You in advance.

ROS2 support

Hi,
I'm using an R2000 lidar with ROS2, currently using a bridge from the ROS1 driver.
I will now have a need not to use the bridge anymore, and having only ROS2 nodes.
Is there a work in progress for ROS2 porting ? If not, I will start forking the repository and do it myself, but I just wanted to be sure nobody is alreay working on it.

UDP port not used - connection with firewall not possible

Hi,

using transport via udp does only work when I disable my firewall (which is unwanted).
Looking at the code it seems, that the udp port set in the config is never really used as it is overwritten by
the port of the local endpoint used in the initial connection to the scanner:

info_->port = transport_->get_port();

So unless I missed something it seems that the port specified by the user is completely ignored which causes the incoming scan data connection to fail if the (random?) used port is not allowed in the firewall.

Can you confirm this behavior and is known/wanted ?

cURLpp not found on Debian 9.0

Hi,

I tried installing the driver on Debian 9.0.

During the rosdep install step, Unable to locate package libcurlpp-dev is reported.

I proceeded with an alterative package apt-get install libcurl4-openssl-dev.

In the CMakeFiles.txt I added pkg_check_modules(CURL libcurl REQUIRED).

However during catkin_make compilation all #include <curlpp/cURLpp.hpp> will get an "No such file or directory" error.

I guess the CMakeFiles.txt is still broken but I have no idea how to correct it.

Anyway here is the output for pkg-config --print-variables libcurl

exec_prefix
includedir
libdir
pcfiledir
prefix
supported_features
supported_protocols

Thank you.

frame_id of the LaserScanMsg should be configurable

ScanPublisherR2000 and ScanPublisherR2300 constructors are called (in pf_interface.cpp:186) with hardcoded parameters frame_id (set value "scanner") and topic (set value "/scan"). It should be configurable because sometimes in ros frame structure there's more than one laser scanner and they need unique frame_id's. Similar problem with the topic parameter, but this one can be fixed easier by remapping in launch file.

Device unsupported

Hi
i'm using
OMD30M-R2000-B23-V1V1D-HD-1L On Ubuntu20.04 ROS noetic ,
when i launch " roslaunch pf_driver r2000.launch "
it shows error below:
Device unsupported
Unable to initialize device

and i'm sure that i can "ping" Lidar's IP
thanks

Release

Hi,

I just wanted to ask what your schedule for a new release looks like. The latest release in the ROS Noetic distro is 1.2.0, and since then there have been quite a number of improvements committed to this repo, which probably would also benefit the users who install the package from the distro. Thanks in advance!

Maintenance status driver

I wanted to share with you that we're not that happy with the maintenance status of the driver/repo given our experience over the last year. Here are some examples why:

  1. Official release took a very long time, first mention was May 2020 actual date of the first tag (not even ROS release) was November 2020. Reference: #12 #34
  2. No Noetic support, also takes quite some time. Reference: #28
  3. Meaningfull comments and PR are closed (due to insufficient knowledge?). Reference: #37 #36 (comment)
  4. Issues stay open for a long time. Reference: #38

In general what we lack is response within a reasonable timespan and constructive discussions. If you truly want to have an open-source driver we would expect a more active approach in maintaining the driver.

What is your opinion on this and what are your plans for the future?

@PepperlFuchs @ipa-hsd

R2000 Driver produces corrupt data under high load

We experienced an issue during field testing a week ago where the system was unable to keep up with the log data rate for whatever reason, and this appears to have led to corrupt data logged from the R2000 sensor attached. Missing data would obviously be expected if the system is unable to keep up, however in this case it appears that data is incorrectly assigned to points in the wrong laserscan or something, leading to things like the ground plane of the scan being duplicated and mis-aligned.

I haven't had time to reproduce this in the lab yet, but it appears to me that the current driver code (e.g. here) doesn't do any validation that packets are arriving and being parsed in order without missing packets, and so if packets are out of order or dropped, the subsequent scan points end up being incorrectly assigned to the wrong angular slots in a ScanData object. I am hoping to have time later this afternoon to do some further testing of this in the office.

Of interest: the R2300 we were logging at the same time doesn't appear to have any issues with corrupt data - unclear to me exactly why that is; maybe each scan fits entirely in one packet or something?

Reconnictivity issue

Hi,

The the node reconnects once the connection is lost with the scanner but the node doesn't keep trying to reconnect. In other words, if the connection was lost for a particular time the node raises an errors and it doesn't recover at all which means that the re-connectivity is not robust. Would you please look at this problem because the node should always keep trying to reconnect.

Regards,
Jad

R2300 can't visualize point cloud in rviz

Launching r2300.launch, I get the following error in rviz for the PointCloud2 display:

Failed to transform from frame [/base_link] to frame [base_link]

base_link is selected as the Global Fixed frame.

I checked the /cloud topic at the command line, and it is publishing at 10-11 Hz. I can also visualize each of the 4 LaserScan topics.

Any ideas how to fix?

Display custom text

Could not find a documentation which describes the interface, so I would like to know if it's possible to pass custom text which is displayed on the scanners display?

boost error

Starting >>> pf_driver
--- stderr: pf_driver                          
CMake Warning at /usr/share/cmake-3.16/Modules/FindBoost.cmake:1161 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1283 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1921 (_Boost_MISSING_DEPENDENCIES)
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:134 (find_package)
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:314 (find_boost)
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:551 (find_external_library)
  /opt/ros/galactic/share/pcl_ros/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
  /opt/ros/galactic/share/pcl_ros/cmake/pcl_rosConfig.cmake:41 (include)
  CMakeLists.txt:9 (find_package)


CMake Warning at /usr/share/cmake-3.16/Modules/FindBoost.cmake:1161 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1283 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1921 (_Boost_MISSING_DEPENDENCIES)
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:134 (find_package)
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:314 (find_boost)
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:551 (find_external_library)
  /opt/ros/galactic/share/pcl_ros/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
  /opt/ros/galactic/share/pcl_ros/cmake/pcl_rosConfig.cmake:41 (include)
  CMakeLists.txt:9 (find_package)


CMake Warning at /usr/share/cmake-3.16/Modules/FindBoost.cmake:1161 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1283 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1921 (_Boost_MISSING_DEPENDENCIES)
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:134 (find_package)
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:314 (find_boost)
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:551 (find_external_library)
  /opt/ros/galactic/share/pcl_ros/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
  /opt/ros/galactic/share/pcl_ros/cmake/pcl_rosConfig.cmake:41 (include)
  CMakeLists.txt:9 (find_package)


CMake Warning at /usr/share/cmake-3.16/Modules/FindBoost.cmake:1161 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1283 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1921 (_Boost_MISSING_DEPENDENCIES)
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:134 (find_package)
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:314 (find_boost)
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:551 (find_external_library)
  /opt/ros/galactic/share/pcl_ros/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
  /opt/ros/galactic/share/pcl_ros/cmake/pcl_rosConfig.cmake:41 (include)
  CMakeLists.txt:9 (find_package)


CMake Warning at /usr/share/cmake-3.16/Modules/FindBoost.cmake:1161 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1283 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1921 (_Boost_MISSING_DEPENDENCIES)
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:134 (find_package)
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:314 (find_boost)
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:551 (find_external_library)
  /opt/ros/galactic/share/pcl_ros/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
  /opt/ros/galactic/share/pcl_ros/cmake/pcl_rosConfig.cmake:41 (include)
  CMakeLists.txt:9 (find_package)


CMake Error at /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:62 (message):
  common is required but boost was not found
Call Stack (most recent call first):
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:367 (pcl_report_not_found)
  /usr/lib/aarch64-linux-gnu/cmake/pcl/PCLConfig.cmake:551 (find_external_library)
  /opt/ros/galactic/share/pcl_ros/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
  /opt/ros/galactic/share/pcl_ros/cmake/pcl_rosConfig.cmake:41 (include)
  CMakeLists.txt:9 (find_package)


---
Failed   <<< pf_driver [6.26s, exited with code 1]

Summary: 2 packages finished [13.9s]
  1 package failed: pf_driver
  1 package had stderr output: pf_driver

getting this error when building the driver

NaN range not filled in for packet type C

I haven't actually observed this in an operational setting, but I think this line that publishes NaN instead of the distance measurement only works for packet types A/B but not for packet type C. Not sure if it matters in practice since in any case it will be above the range_max parameter and should be ignored, but it seems generally undesirable to treat the various packet types differently.
https://github.com/PepperlFuchs/ROS_driver/blob/477d72066f8cfc6ecb960fc388c2a8f0e9f6a3ec/pf_driver/src/ros/scan_publisher.cpp#L81-L82

How to configure angular fov for r2000?

I can connect to r2000 normally, but I want to specify a angular fov, e.g. 180 degrees. I set the start_angle to -1.57, the topic echo shows the angle_min is -1.57, but angle_max is 4.71(2PI-start_angle).

Not getting any data from any of the scan topics

Hi,

I'm not getting any data from any of the scan topics, i.e, by executing rostopic echo /r2300_node/scan_0 or by trying to visualize them using RViz. I'm not getting any error either when executing the launch file so, I'm not sure what is happening. I'm using the default values:

SUMMARY

PARAMETERS

  • /r2300_node/frame_id: /scan
  • /r2300_node/major_version: 0
  • /r2300_node/samples_per_scan: 500
  • /r2300_node/scan_frequency: 100
  • /r2300_node/scanner_ip: 10.0.10.76
  • /rosdistro: melodic
  • /rosversion: 1.14.3

NODES
/
r2300_node (pf_driver/r2300_node)

and these are the topics I'm getting:

/r2300_node/scan_0
/r2300_node/scan_1
/r2300_node/scan_2
/r2300_node/scan_3
/rosout
/rosout_agg

By the way, I'm able to ping the R2300 with no problems. Here is a picture of the status of the LEDs.

Best,

port 80 connection getting refused

Even after changing ip address in the r2300 launch file, there is a repeated HTTP Error:
Failed to connect to 169.254.x.x port 80: Connection refused. Any leads are appreciated! Thanks!

Too many scans in receiver queue: Dropping scans!(It appears again)

I am using the r2000 radar, and after 2 hours of operation, this issue occurs when it is reopened.
At this time, running the cartographer did not receive the radar data, and could only restart the entire system to solve the problem.
Of course I also see the same problem described in #16, so is there any other way?

still the transport:

hi, when i try transplant the code to ros2, i use reinterpret_cast replace the ros2 de-serialization ,and it works. but there is another issue: the code returns
[r2000_node-4] terminate called after throwing an instance of 'std::bad_weak_ptr'
[r2000_node-4] what(): bad_weak_ptr
in here:
virtual void read(std::shared_ptr packet)
{
packet->read_with(*shared_from_this());
}
i did not change other code,do you have any idea? is it because ros2 ? thanks
i use the main branch. another thing is the version of C++ we need, is C++14 enough?

ROS release

I've seen you created a release zip in Github. What about releasing the package using bloom so that it can be added to the rosdistro?

Acquiring IP address for R2300

Has anyone had success using this with the R2300. If so, how were you able to acquire the IP address from the device?

Very high cpu usage with R2300

I am using R2300 with intel i5-6500TE. At the htop I can see pf driver consuming almost 80-90% CPU. Does anyone facing the same because I haven't modified the driver. Please guide me on how to debug the cause. Just launching the r2300.launch increases this much CPU usage. Not even launching the data processing node.
High CPU usage causing computational bottlenecks with my usage so looking forward to reducing it to considerable levels.
System details: Ubuntu 18.04, ROS melodic, driver v1.1.1

also since I am for now using only one of the planes out of four is there any way to optimize in terms of reducing load and data.

Too many scans in receiver queue: Dropping scans!

Hi!
My customer start R2000 and start to get R2000 point data, but after 1 hour, the R2000 driver post err:Too many scans in receiver queue: Dropping scans!
They use TCP request to get R2000 data.

How to solve this issue?
Thannk you!

ROS2.0 driver

hi, where can i find the ROS2.0 driver for R2000, thanks

the time stamp of r2000

hi, i used the https://github.com/dillenberger/pepperl_fuchs ros driver, and adpted the code to ros2, and set the freq 15hz, but i find the time increment between continuous scans is not stable at 0.067s(15Hz), it is jumping. i'm confused of it. thanks. i guess there is a delay in ros::now(),which the code set it as our laserscan timestamp. but i donot know why. is it related to the TCP,which old code use?

ros2 topic echo /sensor/lidar/front |grep "nan" return:
nanosec: 318257440
nanosec: 351830200
nanosec: 443586160
nanosec: 507178640
nanosec: 575243960
nanosec: 642684760
nanosec: 711937880
nanosec: 774544320
nanosec: 812977520
nanosec: 910250320
nanosec: 946705240
nanosec: 41409120
nanosec: 75564240
nanosec: 178305840
nanosec: 212612680
nanosec: 313216520
nanosec: 376459200
nanosec: 446580800
nanosec: 514330840
nanosec: 590611800
nanosec: 645330520
nanosec: 681103960
nanosec: 775655080
nanosec: 815243520

Where is r2300_allscans.launch

The readme says
"To visualize the 4 rings in RViz, run the following launch file:

roslaunch pf_driver r2300_allscans.launch

"
I can only find r2300.launch but not r2300_allscans.launch.

Thank you

Error: Unknown parameter, 'measure_start_angle

When I start r2000 driver with latest code, I get this error on startup:
Is my firmware not up to date or something?

[r2000_node-2] protocol error: 0 success
[r2000_node-2] protocol error: 0 success
[r2000_node-2] [10/12/19 11:27:41:144:144954] [default] [info] UDP Connection: connecting to: 192.168.123.60:60849
[r2000_node-2] protocol error: 0 success
[r2000_node-2] protocol error: 110 Unknown parameter, 'measure_start_angle'.
[r2000_node-2] terminate called after throwing an instance of 'std::invalid_argument'
[r2000_node-2]   what():  stoi

Seg fault on ROS Noetic

Hello,
I know that this driver is not yet released on Noetic, but when I tried to use it I got a Seg fault (error code -11).
The driver is properly launched and I receive the LaserScab but after a few seconds the error (seen below) pop.
The error conversion of data from string failed comes from the parameter "skip_scans" missing since the LiDAR I use is not a version 1.03 or newer. But I don't think it is the cause of the problem since it has a default value of 0.
My setup is Ubuntu 20.04 with ROS Noetic.

Screenshot from 2020-10-13 09-37-16

Timestamping laser scan message

in the LaserScan message, it is written that the timestamp in the header should be a time at which first reading was made.

Currently, in the code (and in the other driver), this field is populated by ros::Time::now() just before publishing message, which is by default wrong timestamp.

In the documentation, it says that there exists synchronized timestamp, but it still isn't implemented and only raw can be used (which calculates time from zero at the moment of turning on the sensor). Is there any news on a firmware updates to solve this?

If not, in the meantime, probably it would be more accurate at the initialization of driver to get a few raw timestamp reading and to time round trip time, and then average it to get approximate offset which could then be applied to the timestamp in the header of laser reading data to populate header in ROS message.

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.