# Blickfeld ROS package This package provides an ROS node and a nodelet for publishing PointCloud2 messages from Blickfeld LiDAR devices. ## Supported devices The Blickfeld ROS driver supports all currently available Blickfeld LiDARs, such as Cube 1 and Cube Range 1. ## Dependencies To install the Blickfeld ROS driver, please make sure that the following dependencies are installed on your system. * [blickfeld-scanner-library (BSL)](https://docs.blickfeld.com/cube/latest/external/blickfeld-scanner-lib/install.html) with system-wide protobuf installation. ## Build To build the ROS driver, clone this package into your ROS catkin workspace. Run $ catkin build or respectively $ catkin build blickfeld_driver You may use ```catkin_make``` instead of ```catkin build``` as well. ## Running the Blickfeld ROS node You can start the Blickfeld driver as either a node or a nodelet. For the node, you can use the launch file $ live_scanner.launch and for the nodelet, the $ live_scanner_nodelet.launch is provided. The typical way to launch the ROS driver is the following (**Make sure you have sourced your workspace**): $ roslaunch blickfeld_driver live_scanner.launch host:=cube-0028 or respectively $ roslaunch blickfeld_driver live_scanner_nodelet.launch host:=cube-0028 You should now be able to see a PointCloud2 in Rviz on the `/bf_lidar/points_raw` topic. ### Parameters Both launch files have arguments you can use: | Argument | Note | Default | | ------ | ------ | ------ | | **host** (required) | The host name or the IP of the device you want to publish the point clouds from, e.g., `cube-0028`. | | | node_name | Name of this ROS node. | `bf_lidar` | | point_cloud_out | Topic to publish the PointCloud2 message to. | `$(arg node_name)/points_raw` | | remap | Remap this node’s input/output topics to commonly used ones.
If `false`, canonical names in the form of `$(arg node_name)/foo_(in/out)` are used, depending on whether a topic is an input or and output topic. | `true` | | lidar_frame_id | The ROS TF where the point cloud should be in. | `lidar` | | rviz | Start rviz if this argument is true. | `false` | | use_lidar_timestamp | Set to true if the timestamp in the ROS point cloud message should be generated from the device timestamp; otherwise the timestamp will be the ROS time when the frame was received on ROS. | `true` | | publish_intensities | Set to true if the PointCloud2 message should contain intensities. | `true` | | publish_ambient_light | Set to true if the PointCloud2 message should contain the ambient light level. | `false` | | publish_explicit_range | Set to true if the PointCloud2 message should contain the `range` field. | `false` | | publish_no_return_points | Set to true if the PointCloud2 message should contain points in a given range for pulses without a return. | `false` | | no_return_point_range | Dummy range for points of pulses without a return. | `1.0` | | publish_all_returns | Set to true to publish all the returns for every point. Adds the field `return_id` (ID for each returned point) to the point cloud. | `false` | | publish_time_delta | If `true`, the PointCloud2 message will contain the timestamp field per point to represent the time offset from the start of the frame. | `false` | | publish_point_id | Add the `scanline_id` field, the `scanline_point_index` field (= the point’s number in the scan line), and the `point_id` (= frame-global point ID) to PointCloud2 message.
If the device is configured to return multiple return points (multiple reflections), all these three IDs will be identical; only the `return_id` will differ. | `false` | ## License This package is released under a [BSD 3-Clause License](LICENSE) (see also [https://opensource.org/licenses/BSD-3-Clause](https://opensource.org/licenses/BSD-3-Clause))