Code Monkey home page Code Monkey logo

livox_ros_driver's Introduction

中文版本使用说明

1 Introduction

Livox SDK is the software development kit designed for all Livox products. It is developed based on C/C++ following Livox SDK Communication Protocol, and provides easy-to-use C style API. With Livox SDK, users can quickly connect to Livox products and receive point cloud data.

Livox SDK consists of Livox SDK communication protocol, Livox SDK core, Livox SDK API, Linux sample, and ROS demo.

Prerequisites

  • Ubuntu 14.04/Ubuntu 16.04/Ubuntu 18.04, both x86 and ARM (Nvidia TX2)
  • Windows 7/10, Visual Studio 2015 Update3/2017/2019
  • C++11 compiler

2 Livox SDK Communication Protocol

Livox SDK communication protocol opens to all users. It is the communication protocol between user programs and Livox products. The protocol consists of control commands and data format. Please refer to the Livox SDK Communication Protocol for detailed information.

3 Livox SDK Core

Livox SDK provides the implementation of control commands and point cloud data transmission, as well as the C/C++ API. The basic structure of Livox SDK core is shown as below:

Livox SDK Architecture

User Datagram Protocol (UDP) is used for communication between Livox SDK and LiDAR sensors. Please refer to the Livox SDK Communication Protocol for further information. Point cloud data handler supports point cloud data transmission, while command handler receives and sends control commands. And the C/C++ API is based on command handler and point cloud data handler.

The Livox LiDAR sensors can be connected to host directly or through the Livox Hub. Livox SDK supports both connection methods. When LiDAR units are connected to host directly, the host will establish communication with each LiDAR unit individually. And if the LiDAR units connect to host through Hub, then the host only communicates with the Livox Hub while the Hub communicates with each LiDAR unit.

4 Livox SDK API

Livox SDK API provides a set of C style functions which can be conveniently integrated in C/C++ programs. Please refer to the Livox SDK API Reference for further information.

4.1 Installation

The installation procedures in Ubuntu 18.04/16.04/14.04 LTS and Windows 7/10 are shown here as examples. For Ubuntu 18.04/16.04/14.04 32-bit LTS and Mac, you can get it in Livox-SDK wiki.

4.1.1 Ubuntu 18.04/16.04/14.04 LTS

Dependencies

Livox SDK requires CMake 3.0.0+ as dependencies. You can install these packages using apt:

sudo apt install cmake

Compile Livox SDK

In the Livox SDK directory, run the following commands to compile the project:

git clone https://github.com/Livox-SDK/Livox-SDK.git
cd Livox-SDK
cd build && cmake ..
make
sudo make install

4.1.2 Windows 7/10

Dependencies

Livox SDK supports Visual Studio 2015 Update3/2017/2019 and requires install CMake 3.0.0+ as dependencies.

In the Livox SDK directory, run the following commands to create the Visual Studio solution file. Generate the 32-bit project:

cd Livox-SDK/build

For Viusal Studio 2015 Update3/2017:

cmake ..

For Viusal Studio 2019:

cmake .. -G "Visual Studio 16 2019" -A Win32

Generate the 64-bit project:

cd Livox-SDK/build 

For Viusal Studio 2015 Update3:

cmake .. -G "Visual Studio 14 2015 Win64"

For Viusal Studio 2017:

cmake .. -G "Visual Studio 15 2017 Win64"

For Viusal Studio 2019:

cmake .. -G "Visual Studio 16 2019" -A x64

Compile Livox SDK

You can now compile the Livox SDK in Visual Studio.

4.1.3 ARM-Linux Cross Compile

The procedure of cross compile Livox-SDK in ARM-Linux are shown below.

Dependencies

Host machine requires install cmake. You can install these packages using apt:

sudo apt install cmake

Cross Compile Toolchain

If your ARM board vendor provides a cross compile toolchain, you can skip the following step of installing the toolchain and use the vendor-supplied cross compile toolchain instead.

The following commands will install C and C++ cross compiler toolchains for 32bit and 64bit ARM board. You need to install the correct toolchain for your ARM board. For 64bit SoC ARM board, only install 64bit toolchain, and for 32bit SoC ARM board, only install 32bit toolchain.

Install ARM 32 bits cross compile toolchain

 sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi

Install ARM 64 bits cross compile toolchain

sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

Cross Compile Livox-SDK

For ARM 32 bits toolchain,In the Livox SDK directory,run the following commands to cross compile the project:

cd Livox-SDK
cd build && \
cmake .. -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_C_COMPILER=arm-linux-gnueabi-gcc -DCMAKE_CXX_COMPILER=arm-linux-gnueabi-g++
make

For ARM 64 bits toolchain,In the Livox SDK directory,run the following commands to cross compile the project:

cd Livox-SDK
cd build && \
cmake .. -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++
make

Note:

  • gcc cross compiler need to support C ++11 standard

4.2 Run Livox SDK Sample

Two samples are provided in Sample/Lidar and Sample/Hub, which demonstrate how to configure Livox LiDAR units and receive the point cloud data when directly connecting Livox SDK to LiDAR units or by using a Livox Hub, respectively. The sequence diagram is shown as below:

4.2.1 Ubuntu 18.04/16.04 /14.04 LTS

For Ubuntun 18.04/16.04/14.04 LTS, run the lidar_sample if connect with the LiDAR unit(s):

cd sample/lidar && ./lidar_sample

or run the hub_sample if connect with the hub unit(s):

cd sample/hub && ./hub_sample

4.2.2 Windows 7/10

After compiling the Livox SDK as shown in section 4.1.2, you can find hub_sample.exe or lidar_sample.exe in the {Livox-SDK}\build\sample\hub\Debug or {Livox-SDK}\build\sample\lidar\Debug folder, respectively, which can be run directly.

Then you can see the information as below:

4.3 Connect to the specific LiDAR units

Samples we provided will connect all the broadcast device in you LAN in default.There are two ways to connect the specific units:

  • run sample with input options

  • edit the Broadcast Code list in source code

NOTE:

Each Livox LiDAR unit owns a unique Broadcast Code . The broadcast code consists of its serial number and an additional number (1,2, or 3). The serial number can be found on the body of the LiDAR unit (below the QR code).The Broadcast Code may be used when you want to connect to the specific LiDAR unit(s). The detailed format is shown as below:

Broadcast Code

4.3.1 Program Options

We provide the following program options for connecting the specific units and saving log file:

[-c]:Register LiDAR units by Broadcast Code. Connect the registered units ONLY. 
[-l]:Save the log file(In the executable file's directory).
[-h]:Show help.

Here is the example:

./lidar_sample_cc -c "00000000000002&00000000000003&00000000000004" -l
./hub_sample_cc -c "00000000000001" -l

4.3.2 Edit Broadcast Code List

Comment the following code section:

/** Connect all the broadcast device. */
int lidar_count = 0;
char broadcast_code_list[kMaxLidarCount][kBroadcastCodeSize];

Remove the comment of the following code section, set the BROADCAST_CODE_LIST_SIZE and replace the broadcast code lists in the main.c for both LiDAR sample ({Livox-SDK}/sample/lidar/main.c) and Hub sample ({Livox-SDK}/sample/hub/main.c) with the broadcast code of your devices before building.

/** Connect the broadcast device in list, please input the broadcast code and modify the BROADCAST_CODE_LIST_SIZE. */
/*#define BROADCAST_CODE_LIST_SIZE  3
int lidar_count = BROADCAST_CODE_LIST_SIZE;
char broadcast_code_list[kMaxLidarCount][kBroadcastCodeSize] = {
  "000000000000002",
  "000000000000003",
  "000000000000004"
};*/

4.4 Generate the lvx file

We provide the C++ sample to generate the lvx file for hub and LiDAR unit(s). You can use the same way in 4.2.1 and 4.2.2 to run them.

4.4.1 Program Options

You can alse use the program options in 4.3.1 to connect specific device and generate the log file, and we provide two new options for lvx file:

[-t] Time to save point cloud to the lvx file.(unit: s)
[-p] Get the extrinsic parameter from standard extrinsic.xml file(The same as viewer) in the executable file's directory.(Especially for LiDAR unit(s) as the hub will calculate the extrinsic parameter by itself)

Here is the example:

./lidar_lvx_sample -c "00000000000002&00000000000003&00000000000004" -l -t 10 -p
./hub_lvx_sample -c "00000000000001" -l -t 10

5 Support

You can get support from Livox with the following methods:

  • Send email to [email protected] with a clear description of your problem and your setup
  • Github Issues

livox_ros_driver's People

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

livox_ros_driver's Issues

remove werror option in release mode

Hello,

I am building your library with the latest version of pcl , where I get

/opt/ros/melodic/include/pcl_ros/point_cloud.h:51:18:` error: ‘using uint32_t = uint32_t’ is deprecated: use std::uint32_t instead of pcl::uint32_t [-Werror=deprecated-declarations]`

warnings. So I had to remove the -werror compiler flag for the compilation to work.
I understand why you develop with werror, but since users won't be fixing this stuff could you turn it off in release mode?

Thank you

Error: Received an invalid TCPROS header. Each line must have an equals sign.

I am running the roslaunch livox_ros_driver livox_lidar_rviz.launch bd_list="0TFDFCE00505101" from my Nvidia Xavier on ROS Melodic and Ubuntu 18.04, on an Arm64 processor.

I connected the Livox by Ethernet to my Xavier computer and confirmed that both my computer and Livox Mid-40 have static IP addresses. I also confirmed previously that I was able to see the Livox lidar when I used it separately on my Ubuntu 16.04 setup on my virtual machine on my Mac via VMWare.

Here, I saw Rviz open up but with no data points. I also couldn't test the Livox Viewer since I cannot open it, probably because I am on a computer with Arm64 processor. The error output from the Livox viewer was the following:

christopherkao@christopherkao-xavier:~/Downloads/Livox Viewer For Linux Ubuntu16.04_x64 0.5.0$ livox_viewer.sh: 11: livox_viewer.sh: ./so/livox_viewer: Exec format error
^C

Here is the output when I tried to run the roslaunch livox_ros_driver livox_lidar_rviz.launch bd_list="0TFDFCE00505101":

christopherkao@christopherkao-xavier:~/livox_ws/src/ws_livox$ roslaunch livox_ros_driver livox_lidar_rviz.launch bd_list:="0TFDFCE00505101"
... logging to /home/christopherkao/.ros/log/acd7bbd6-d848-11e9-a972-00044bcba063/roslaunch-christopherkao-xavier-7378.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://christopherkao-xavier:43629/

SUMMARY
========

PARAMETERS
 * /livox_msg_type: 0
 * /rosdistro: melodic
 * /rosversion: 1.14.3

NODES
  /
    livox_lidar_publisher (livox_ros_driver/livox_lidar_node)
    rviz (rviz/rviz)

auto-starting new master
process[master]: started with pid [7391]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to acd7bbd6-d848-11e9-a972-00044bcba063
process[rosout-1]: started with pid [7405]
started core service [/rosout]
process[livox_lidar_publisher-2]: started with pid [7412]
[ INFO] [1568614230.064185685]: Livox-SDK ros demo
[ INFO] [1568614230.064931554]: broadcast code list :000000000000001
[ INFO] [1568614230.065042537]: Invalid bd:000000000000001
[ INFO] [1568614230.065137455]: Commandline input 0TFDFCE00505101
[ INFO] [1568614230.065205939]: commandline input bd:0TFDFCE00505101
[ INFO] [1568614230.065286680]: list all valid bd:
[ INFO] [1568614230.065401183]: 0TFDFCE00505101
[ INFO] [1568614230.089117477]: Publish PointCloud2
process[rviz-3]: started with pid [7415]
[2019-09-15 23:10:31.071] [console] [info]  Boradcast broadcast code: 0TFDFCE00505101  [device_discovery.cpp] [OnBroadcast] [161]
[ INFO] [1568614231.071927816]: Receive Broadcast Code 0TFDFCE00505101, please add it to broacast_code_list if want to connect!

[2019-09-15 23:10:31.072] [console] [info]  LocalIP: 192.168.1.20  [device_discovery.cpp] [OnBroadcast] [213]
[2019-09-15 23:10:31.072] [console] [info] Command Port: 55501  [device_discovery.cpp] [OnBroadcast] [214]
[2019-09-15 23:10:31.073] [console] [info] Data Port: 56001  [device_discovery.cpp] [OnBroadcast] [215]
[2019-09-15 23:10:31.095] [console] [info] New Device  [device_discovery.cpp] [OnData] [110]
[2019-09-15 23:10:31.095] [console] [info] Handle: 0  [device_discovery.cpp] [OnData] [111]
[2019-09-15 23:10:31.095] [console] [info] Broadcast Code: 0TFDFCE00505101  [device_discovery.cpp] [OnData] [112]
[2019-09-15 23:10:31.095] [console] [info] Type: 1  [device_discovery.cpp] [OnData] [113]
[2019-09-15 23:10:31.095] [console] [info] IP: 192.168.1.80  [device_discovery.cpp] [OnData] [114]
[2019-09-15 23:10:31.095] [console] [info] Command Port: 55501  [device_discovery.cpp] [OnData] [115]
[2019-09-15 23:10:31.095] [console] [info] Data Port: 56001  [device_discovery.cpp] [OnData] [116]
[ INFO] [1568614231.096706414]: OnDeviceChange broadcast code 0TFDFCE00505101 update type 0
[ INFO] [1568614231.096946877]: Device State status_code 0
[ INFO] [1568614231.097053284]: Device State working state 5
[ INFO] [1568614231.097144873]: Device feature 0
[2019-09-15 23:10:31.097] [console] [info]  Send Command: Set 0 Id 2 Seq 3  [command_channel.cpp] [Send] [233]
[2019-09-15 23:10:31.119] [console] [info]  Recieve Ack: Set 0 Id 2 Seq 3  [command_handler.cpp] [OnCommand] [104]
[ INFO] [1568614231.119764076]: firm ver: 3.2.0.0
[2019-09-15 23:10:31.143] [console] [info]  Update State to 1, device connect true  [device_manager.cpp] [UpdateDeviceState] [224]
[ INFO] [1568614231.143560343]: OnDeviceChange broadcast code 0TFDFCE00505101 update type 2
[ INFO] [1568614231.143746595]: Device State status_code 0
[ INFO] [1568614231.145343748]: Device State working state 1
[ INFO] [1568614231.146114547]: Device feature 0
[2019-09-15 23:10:31.146] [console] [info]  Send Command: Set 0 Id 4 Seq 5  [command_channel.cpp] [Send] [233]
[2019-09-15 23:10:31.167] [console] [info]  Recieve Ack: Set 0 Id 4 Seq 5  [command_handler.cpp] [OnCommand] [104]
[ INFO] [1568614231.167695031]: OnSampleCallback statue 0 handle 0 response 0
[ INFO] [1568614231.193830961]: packet loss : 1689189507410
Error:   Received an invalid TCPROS header.  Each line must have an equals sign.
         at line 103 in /tmp/binarydeb/ros-melodic-cpp-common-0.6.12/src/header.cpp
[2019-09-15 23:11:38.032] [console] [info]  Update progress 64, device connect true  [device_manager.cpp] [UpdateDeviceState] [235]
[ INFO] [1568614298.032293569]: OnDeviceChange broadcast code 0TFDFCE00505101 update type 2
[2019-09-15 23:11:38.847] [console] [info]  Update progress 0, device connect true  [device_manager.cpp] [UpdateDeviceState] [235]
[ INFO] [1568614298.848107201]: OnDeviceChange broadcast code 0TFDFCE00505101 update type 2
[2019-09-15 23:11:50.272] [console] [info]  Update progress 64, device connect true  [device_manager.cpp] [UpdateDeviceState] [235]
[ INFO] [1568614310.272320971]: OnDeviceChange broadcast code 0TFDFCE00505101 update type 2
[2019-09-15 23:11:51.088] [console] [info]  Update progress 0, device connect true  [device_manager.cpp] [UpdateDeviceState] [235]
[ INFO] [1568614311.088939017]: OnDeviceChange broadcast code 0TFDFCE00505101 update type 2
[2019-09-15 23:12:52.852] [console] [info]  Device 0 removed   [device_manager.cpp] [RemoveDevice] [99]
[ INFO] [1568614372.853348666]: OnDeviceChange broadcast code 0TFDFCE00505101 update type 1

timestamp表示什么时间?

您好!我需要对Livox mid-40与其他传感器(camera or IMU)的数据进行时间同步,其他传感器数据的时间戳一般是unix time(从1970-01-01至今的秒数),但是livox发布的数据的时间戳比较特殊,导致无法进行同步。livox驱动中的时间戳是这样的:
timestamp = GetStoragePacketTimestamp(&storage_packet, data_source);
cloud.header.stamp = ros::Time(timestamp / 1000000000.0); // to ros time stamp
我不太明白GetStoragePacketTimestamp获取的时间代表什么含义呢?麻烦您解答一下,谢谢!

What is the default setting when converting lvx file to bag file?

When converting an lvx file to a bag file, I am asking you how to use the parameter.
ex) roslaunch livox_ros_driver lvx_to_rosbag_rviz.launch lvx_file_path:="/home/livox/test.lvx"
If I don't use the parameter, does it not convert properly? What's the default setting?

Whether the original file size of lvx is large or small, it will be converted to 4.0 kb.

Error in lvx_to_rosbag.launch

I am trying to convert lvx files from LivoxViewer to rosbag files.
I'm using LivoxHorizon.
I use the command (roslaunch livox_ros_driver lvx_to_rosbag. launch lvx_file_path:="xxxxx")
Errors :

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://ubuntu:37899/

SUMMARY
========

PARAMETERS
 * /cmdline_file_path: test.lvx
 * /cmdline_str: 100000000000000
 * /data_src: 2
 * /multi_topic: 0
 * /output_data_type: 1
 * /publish_freq: 10.0
 * /rosdistro: kinetic
 * /rosversion: 1.12.14
 * /xfer_format: 1

NODES
  /
    livox_lidar_publisher (livox_ros_driver/livox_ros_driver_node)

auto-starting new master
process[master]: started with pid [17649]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 3b98411e-b9d6-11ea-91e3-000c2904aa6a
process[rosout-1]: started with pid [17662]
started core service [/rosout]
process[livox_lidar_publisher-2]: started with pid [17671]
[ INFO] [1593414037.262532016]: Livox Ros Driver Version: 2.0.1
[ INFO] [1593414037.277491507]: Data Source is lvx file.
[ INFO] [1593414037.278872809]: Create bag file :test.bag!
Open test.lvx file fail[1]!
[ERROR] [1593414037.278990743]: Init lds lvx file fail!
^C[livox_lidar_publisher-2] killing on exit
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done

Thank you.

Mid-100设备无法订阅三个Mid-40的一帧

Livox Team, 你们好,我们的设备型号是Mid-100, 操作系统Ubuntu 18.04, 我们连接了设备,运行

roslaunch livox_ros_driver livox_lidar_msg.launch

进行/livox/lidar话题发布,我们订阅这个话题(/livox/lidar)的时候,发现在订阅回调函数里每次被调用的时候接收到的只是其中一个Mid-40的点云数据,观察发现,好像是这三个Mid-40分别按依次发布的。不能一次性在调用订阅的回调函数的直接返回三个Mid-40的一起的一帧点云数据吗?目前每次回调函数只能接收到其中某一个Mid-40返回的点云。怎样才能让回调函数接收的是Mid-100(三个Mid-40)的一帧点云数据呢?

我们的配置:
publish_freq:10
multi_topic:0
xfer_format:2

在线切换激光雷达的运行状态

您好:
我可以在驱动运行的时候接受指令来动态地切换激光雷达的运行状态吗?
状态具体指的是:

/** Lidar mode. */
typedef enum {
  kLidarModeNormal = 1,      /**< Normal mode. */
  kLidarModePowerSaving = 2, /**< Power-saving mode. */
  kLidarModeStandby = 3      /**< Standby mode. */
} LidarMode;

而不是让激光雷达一直处于 kLidarModeNormal状态。
请问有类似功能的demo吗?
谢谢,盼复。

build failed in livox_ros_driver/lddc.cpp

Hi,

I am build livox ros driver on my raspberry pi, it show me these error:

home/pi/ws_livox/src/livox_ros_driver/livox_ros_driver/lddc.cpp:31:10: fatal error: 'pcl_ros/point_cloud.h' file not found
#include <pcl_ros/point_cloud.h>
^~~~~~~~~~~~~~~~~~~~~~~
1 warning and 1 error generated.
make[2]: *** [livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/build.make:158: livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/lddc.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:469: livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/all] Error 2
make: *** [Makefile:158: all] Error 2

I am already installed pcl 1.7.2 and ros kinetic.

Thanks

How to create a depth image ?

The majority of object segmentation methods utilise a depth image in their learning and inference.
Is there a way to specify the dimensions of the depth image from livox horizon pointcloud data?
Is there a method to create depth images in the SDK?

failed to load lvx file and show in rviz

Hi,

when I run the command "roslaunch livox_ros_driver lvx_to_rosbag_rviz.launch" throw the issue:

...
[INFO] [1582801801.888035630]: livox/imu publish imu data, Publisher QueueSize[4096]
terminate called after throwing an instance of 'std::runtime_error'
what(): Time is out of dual 32-bit range

REQUIRED process [livox_lidar_publisher-1] has died!
process has died [pid 7458, exit code -6, cmd /home/user/ws_livox/devel/lib/livox_ros_driver/livox_ros_driver_node 100000000000000 __name:=livox_lidar_publisher __log:=/home/lyh/.ros/log/a2764ea2-5942-11ea-8291-000c29292ea9/livox_lidar_publisher-1.log].
log file: /home/user/.ros/log/a2764ea2-5942-11ea-8291-000c29292ea9/livox_lidar_publisher-1*.log
Initiating shutdown!

[record-2] killing on exit
[livox_lidar_publisher-1] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done

Don't know how to fix it

Thank you

激光频率和修改

请问一下,使用这个sdk的时候,livox的激光频率是多少?能不能修改频率?

Horizon: Recording to rosbag including internal IMU data

Hi, i try to record to rosbag using the
livox_lidar_msg.launch file.
So I changed the arg "rosbag_enable" to true, which records succesfully to a file located in ~/.ros
When I want to play that file with the Livox-SDK/livox_horizon_loam package it works successfully only with the default launch file.

If I use the "_imu" version (changed line 24 in the launch file to use the internal IMU of horizon) nothing happens when playing the rosbag.

Is this an issue with the recorded bag, or with the loam package?

Livox-hardware on WSL2 Ubuntsu

WSL2 is very useful application for testing linux applications.
I tried to use Livox-mapping on Ubuntsu18.04 and WSL2.
The rosbag example worked well.

But the example with horizon-hardware does not work.
The application could not find the device.
Are there good way to run the horizon hardware on WSL2 system of windows10?

Failed to convert the lvx data file to rosbag file

Hi,
I excute the follow command roslaunch livox_ros_driver lvx_to_rosbag.launch lvx_file_path:="xxxxxx".
Throw the issue:

Start to read lvx file.
[ INFO] [1584608695.672558908]: Support only one topic.
[ INFO] [1584608695.673374797]: livox/lidar publish use PointCloud2 format, publisher queue size [4096]
Read progress : 1
Read progress : 2
Read progress : 3
Read progress : 4
Read progress : 5
Read progress : 6
Read progress : 7
Read progress : 8
Read progress : 9
Read progress : 10
Read progress : 11
Read progress : 12
Read progress : 13
Read progress : 14
Read progress : 15
Read progress : 16
Read progress : 17
Read progress : 18
Read progress : 19
Read progress : 20
Read progress : 21
Read progress : 22
Read progress : 23
Read progress : 24
Read progress : 25
Read progress : 26
Read progress : 27
Read progress : 28
Read progress : 29
Read progress : 30
Read progress : 31
Read progress : 32
Read progress : 33
Read progress : 34
Read progress : 35
Read progress : 36
Read progress : 37
Read progress : 38
Read progress : 39
Read progress : 40
Read progress : 41
Read progress : 42
Read progress : 43
Read progress : 44
Read progress : 45
Read progress : 46
Read progress : 47
Read progress : 48
Read progress : 49
Read progress : 50
[ INFO] [1584608696.135814489]: Support only one topic.
[ INFO] [1584608696.136708602]: livox/imu publish imu data, Publisher QueueSize[4096]
terminate called after throwing an instance of 'std::runtime_error'
what(): Time is out of dual 32-bit range
================================================================================REQUIRED process [livox_lidar_publisher-2] has died!
process has died [pid 20133, exit code -6, cmd /home/vic/catkin_ws/src/ws_livox/devel/lib/livox_ros_driver/livox_ros_driver_node 100000000000000 __name:=livox_lidar_publisher __log:=/home/vic/.ros/log/b35834fe-69c0-11ea-bbe7-b42e992833a3/livox_lidar_publisher-2.log].
log file: /home/vic/.ros/log/b35834fe-69c0-11ea-bbe7-b42e992833a3/livox_lidar_publisher-2*.log
Initiating shutdown!

[livox_lidar_publisher-2] killing on exit
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done

The point_cloud_data.lvx file was downloaded from [https://www.livoxtech.com/downloads].
May I have your help to fixed it.
Thank you!

Question about ros lvx_to_bag

Hello, thanks to give us the livox_ros_driver sdk. I have use this convert lvx to bag. However, there are many packet loss in the switching process. The .lvx file contains about 2 minutes of radar data, which is converted to a .bag file with only a few seconds of data. I want to know if I have missed some configuration. Thx to your answer.
1

Horizon Imu message orientation all 0.0 values

I'm trying to get the imu orientation values from the ROS /livox/imu topic, and when looking at the message values, all quaternion values are 0.0. The configuration json file has set "imu_rate": 1. Not sure where to go next?

Client [/rviz] wants topic /livox/lidar to have datatype/md5sum

Running a livox_lidar_msg.launch in one PC, I get the following error

Set coordinate success!
[2020-07-02 20:07:13.516] [console] [info] Recieve Ack: Set 1 Id 6 Seq 7 [command_handler.cpp] [OnCommand] [129]
Set return mode success!
[2020-07-02 20:07:13.516] [console] [info] Recieve Ack: Set 1 Id 8 Seq 8 [command_handler.cpp] [OnCommand] [129]
Set imu rate success!
[2020-07-02 20:07:13.517] [console] [info] Send Command: Set 0 Id 4 Seq 9 [command_channel.cpp] [Send] [241]
Lidar00[1HDDGC500100821] queue size : 4000 4096
Lidar00[1HDDGC500100821] imu queue size : 256 256
[ INFO] [1593734833.539689247]: Support only one topic.
[2020-07-02 20:07:13.540] [console] [info] Recieve Ack: Set 0 Id 4 Seq 9 [command_handler.cpp] [OnCommand] [129]
Lidar start sample success
[ INFO] [1593734833.544097289]: livox/imu publish imu data, set ROS publisher queue size 128
[ INFO] [1593734833.645416044]: Support only one topic.
[ INFO] [1593734833.647921107]: livox/lidar publish use livox custom format, set ROS publisher queue size 256
[ERROR] [1593734849.259791528]: Client [/rviz] wants topic /livox/lidar to have datatype/md5sum [sensor_msgs/PointCloud2/1158d486dd51d683ce2f1be655c3c181], but our version has [livox_ros_driver/CustomMsg/e4d6829bdfe657cb6c21a746c86b21a6]. Dropping connection.
[ERROR] [1593734891.463433635]: Client [/rviz] wants topic /livox/lidar to have datatype/md5sum [sensor_msgs/PointCloud2/1158d486dd51d683ce2f1be655c3c181], but our version has [livox_ros_driver/CustomMsg/e4d6829bdfe657cb6c21a746c86b21a6]. Dropping connection.
[ERROR] [1593735250.868341960]: Client [/rviz] wants topic /livox/lidar to have datatype/md5sum [sensor_msgs/PointCloud2/1158d486dd51d683ce2f1be655c3c181], but our version has [livox_ros_driver/CustomMsg/e4d6829bdfe657cb6c21a746c86b21a6]. Dropping connection.
[ERROR] [1593735384.721011751]: Client [/rviz] wants topic /livox/lidar to have datatype/md5sum [sensor_msgs/PointCloud2/1158d486dd51d683ce2f1be655c3c181], but our version has [livox_ros_driver/CustomMsg/e4d6829bdfe657cb6c21a746c86b21a6]. Dropping connection.

image

when open the same(same commit) rviz config file in a different PC.
Any suggestions ?

Problems setting spherical coordinates on Livox Horizon

Hello,

I want to use a point cloud with spherical coordinates, so as it says in the livox_ros_driver github, I set coordinate parameter to "1" and then I see what kind of coordinates I find. I always see cartesian coordinates instead of spherical.

I use a script to see the type of coordinates that the LiDAR is giving to me . So that I see (p.x, p.y, p.z, p.intensity) to see what kind of points are recorded (because that is the composition of a point in the pointcloud). As I am recording a wall, I see that x is almost constant, and the other parameters are variable.

Could you please tell me what I have done wrong?

Thanks in advance.

rosbag does not contain original timestamps

Hi,

I just noticed that a created rosbag from a lvx file does not contain the correct timestamp (always starts from time since epoch)

Can you please set the correct timestamp from the original lvx file or just let me know, if I am doing something wrong?
Thanks in advance.

How to differentiate /livox/imu messages in case of hub configuration

Would like to check with Livox folks, that in case multi horizon lidars are installed with a hub unit, since every lidar unit publish the same /livox/imu message, which is of type sensor_msgs/Imu, how to seperate these imu messages so that we know which lidar unit there are attached to? Thanks

No tf data. Actual error: Fixed Frame [livox_frame] does not exist

Hello,

I am having trouble visualising the point cloud using the following ROS driver on the Jetson Tx2. The problem seems to be a result of the following message:

No tf data. Actual error: Fixed Frame [livox_frame] does not exist.

The following is the roslaunch console message which seems to show no errors:

SUMMARY

========

PARAMETERS

  • /cmdline_file_path: livox_test.lvx
  • /cmdline_str: 100000000000000
  • /data_src: 0
  • /frame_id: livox_frame
  • /multi_topic: 0
  • /output_data_type: 0
  • /publish_freq: 10.0
  • /rosdistro: melodic
  • /rosversion: 1.14.9
  • /user_config_path: /home/seymur/Docu...
  • /xfer_format: 0

NODES
/
livox_lidar_publisher (livox_ros_driver/livox_ros_driver_node)
rviz (rviz/rviz)

auto-starting new master
process[master]: started with pid [15552]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 46dca2ea-f252-11ea-a8da-00044bf848ae
process[rosout-1]: started with pid [15563]
started core service [/rosout]
process[livox_lidar_publisher-2]: started with pid [15570]
[ INFO] [1599624580.401020910]: Livox Ros Driver Version: 2.5.0
[ INFO] [1599624580.413450077]: Data Source is raw lidar.
[ INFO] [1599624580.416246372]: Config file : /home/seymur/Documents/Projects/Livox_ROS/ws_livox/src/livox_ros_driver/config/livox_lidar_config.json
Commandline input bd:100000000000000
Invalid bd:100000000000000!
Livox SDK version 2.1.1
broadcast code[1HDDH1200104011] : 1 1 0 0 1 0
Add Raw user config : 1HDDH1200104011
Disable timesync
Disable auto connect mode!
List all broadcast code in whiltelist:
1HDDH1200104011
Livox-SDK init success!
[ INFO] [1599624580.417805909]: Init lds lidar success!
process[rviz-3]: started with pid [15572]

I will also include the config file params for reference:

{
"lidar_config": [
{
"broadcast_code": "1HDDH1200104011",
"enable_connect": true,
"enable_fan": true,
"return_mode": 0,
"coordinate": 0,
"imu_rate": 1,
"extrinsic_parameter_source": 0,
"enable_high_sensitivity": false
}
],

"timesync_config": {
    "enable_timesync": false,
    "device_name": "/dev/ttyUSB0",
    "comm_device_type": 0,
    "baudrate_index": 2,
    "parity_index": 0     
}

}

I did some research through the Google Conversation forums and just browsing some of the potential things that can cause this problem but I am not having any luck.

I will also include the Static IP config file and ifconfig output for eth0:

/etc/network/interfaces

This file describes the network interfaces available on your system
and how to activate them. For more information, see interfaces(5).

The loopback network interface
auto lo
iface lo inet loopback

The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.101
netmask 255.255.255.0
gateway 192.168.1.1

ifconfig:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::12f9:4e8:1744:898 prefixlen 64 scopeid 0x20
ether 00:04:4b:f8:48:b0 txqueuelen 1000 (Ethernet)
RX packets 5752 bytes 356480 (356.4 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1856 bytes 322436 (322.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 41

I would really appreciate some assistance on this issue. Thanks

EDIT:

I managed to get the device to show the pointcloud running the following line

'sudo ifconfig eth0 192.168.1.50'

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.50 netmask 255.255.255.0 broadcast 192.168.1.255
ether 00:04:4b:f8:48:b0 txqueuelen 1000 (Ethernet)
RX packets 959233 bytes 1229490442 (1.2 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2647 bytes 404869 (404.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 41

I was wondering why we would run the following static IP 192.168.1.50 when the IP address in the manual is 192.168.1.1XX defines the specific LiDAR where XX is the last 2 digits on the serial. Setting that as the IP address doesnt seem to work.

The error below is still occuring:

No tf data. Actual error: Fixed Frame [livox_frame] does not exist.

Failed to conert the lvx data file to rosbag file

Hi,
I excute the follow command roslaunch livox_ros_driver lvx_to_rosbag.launch lvx_file_path:="xxxxxx".
Throw the issue:
`Start to read lvx file.
[ INFO] [1584608695.672558908]: Support only one topic.
[ INFO] [1584608695.673374797]: livox/lidar publish use PointCloud2 format, publisher queue size [4096]
Read progress : 1
Read progress : 2
Read progress : 3
Read progress : 4
Read progress : 5
Read progress : 6
Read progress : 7
Read progress : 8
Read progress : 9
Read progress : 10
Read progress : 11
Read progress : 12
Read progress : 13
Read progress : 14
Read progress : 15
Read progress : 16
Read progress : 17
Read progress : 18
Read progress : 19
Read progress : 20
Read progress : 21
Read progress : 22
Read progress : 23
Read progress : 24
Read progress : 25
Read progress : 26
Read progress : 27
Read progress : 28
Read progress : 29
Read progress : 30
Read progress : 31
Read progress : 32
Read progress : 33
Read progress : 34
Read progress : 35
Read progress : 36
Read progress : 37
Read progress : 38
Read progress : 39
Read progress : 40
Read progress : 41
Read progress : 42
Read progress : 43
Read progress : 44
Read progress : 45
Read progress : 46
Read progress : 47
Read progress : 48
Read progress : 49
Read progress : 50
[ INFO] [1584608696.135814489]: Support only one topic.
[ INFO] [1584608696.136708602]: livox/imu publish imu data, Publisher QueueSize[4096]
terminate called after throwing an instance of 'std::runtime_error'
what(): Time is out of dual 32-bit range
================================================================================REQUIRED process [livox_lidar_publisher-2] has died!
process has died [pid 20133, exit code -6, cmd /home/vic/catkin_ws/src/ws_livox/devel/lib/livox_ros_driver/livox_ros_driver_node 100000000000000 __name:=livox_lidar_publisher __log:=/home/vic/.ros/log/b35834fe-69c0-11ea-bbe7-b42e992833a3/livox_lidar_publisher-2.log].
log file: /home/vic/.ros/log/b35834fe-69c0-11ea-bbe7-b42e992833a3/livox_lidar_publisher-2*.log
Initiating shutdown!

[livox_lidar_publisher-2] killing on exit
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done`
The point_cloud_data.lvx file was downloaded from https://www.livoxtech.com/downloads
May I have your help to fixed it.
Thank you!

How to get the Lidar caliberation parameters into ROS

The original Livox visualization software has a feature to do extrinsic calibration of the lidar, which can be stored to the Lidar itself.

When I try to receive the lidar information in ROS, the calibration doesn't seem to take effect and each time, the orientation of each lidar changes arbitrarily.

How can I get calibrated Lidar data from the Livox via ROS?

Horizon使用livox_ros_driver点云存在拖影

我们在livox_viewer下显示Horizon数据时正常,但使用livox_ros_driver时在rviz中观察到有1S以上的拖影,请问需要修改驱动中什么参数来解决这个问题

Ros2 driver

Hi! Do you have ros2 driver \ plans to implement it?

Build failing in 16.04/Kinetic due to PCL bug

Build fails with the following errors:

:0:15: error: ISO C++11 requires whitespace after the macro name [-Werror]
:0:15: error: ISO C++11 requires whitespace after the macro name [-Werror]
:0:15: error: ISO C++11 requires whitespace after the macro name [-Werror]

These are caused because of some bug with PCL and the cmake definitions that include the following:

-DDISABLE_LIBUSB-1.0

The dash after LIBUSB is an invalid character. See: PointCloudLibrary/pcl#1406

This issue was closed, but I'm guessing that PCL in 16.04 doesn't have the fix. I've verified this with a clean environment and brand new installs of everything.

Suggested fix: instead of using PCL directly in package.xml/CMakeLists.txt, use pcl_ros. This works fine. For example, remove find_package(PCL REQUIRED) and just use find_package(catkin REQUIRED COMPONENTS pcl_ros ...). You're also missing any PCL depends statements in package.xml, so add in a pcl_ros.

cant connect and update my livox 40

Hello here, I am now tetsing a livox mid-40 with DJI manifold2, while the rviz gives me no output data, with “firm_ware_err = 1” in Ubuntu. Thus I turn to my windows and try updating this lidar, however, it shows”critical error! 0x80000100” in my livox viewer window, and further “firmware abnormal, No PPS signal, No 1588 signal No synchronicity”. I can’t get my firmware updated anyway. I guess that's because no sychronicity within my PC and livox, thus I tried changing different routers with Manifold 2C always the power supply (connected with a 22.8v battery).
Any suggestions?

catkin_make error

In file included from /home/dfg/Livox/ws_livox/src/livox_ros_driver/livox_ros_driver/lds_lidar.cpp:25:0:
/home/dfg/Livox/ws_livox/src/livox_ros_driver/livox_ros_driver/lds_lidar.h:92:7: error: ‘DeviceParameterResponse’ has not been declared
       DeviceParameterResponse *response, void *clent_data);
       ^
/home/dfg/Livox/ws_livox/src/livox_ros_driver/livox_ros_driver/lds_lidar.cpp: In static member function ‘static void livox_ros::LdsLidar::OnDeviceChange(const DeviceInfo*, DeviceEvent)’:
/home/dfg/Livox/ws_livox/src/livox_ros_driver/livox_ros_driver/lds_lidar.cpp:369:49: error: ‘LidarEnableHighSensitivity’ was not declared in this scope
                                      g_lds_ldiar);
                                                 ^
/home/dfg/Livox/ws_livox/src/livox_ros_driver/livox_ros_driver/lds_lidar.cpp:373:50: error: ‘LidarDisableHighSensitivity’ was not declared in this scope
                                       g_lds_ldiar);
                                                  ^
/home/dfg/Livox/ws_livox/src/livox_ros_driver/livox_ros_driver/lds_lidar.cpp: At global scope:
/home/dfg/Livox/ws_livox/src/livox_ros_driver/livox_ros_driver/lds_lidar.cpp:547:5: error: ‘DeviceParameterResponse’ has not been declared
     DeviceParameterResponse *response, void *clent_data) {
     ^
/home/dfg/Livox/ws_livox/src/livox_ros_driver/livox_ros_driver/lds_lidar.cpp: In static member function ‘static void livox_ros::LdsLidar::SetHighSensitivityCb(livox_status, uint8_t, int*, void*)’:
/home/dfg/Livox/ws_livox/src/livox_ros_driver/livox_ros_driver/lds_lidar.cpp:567:45: error: ‘LidarEnableHighSensitivity’ was not declared in this scope
                                  g_lds_ldiar);
                                             ^
/home/dfg/Livox/ws_livox/src/livox_ros_driver/livox_ros_driver/lds_lidar.cpp:570:46: error: ‘LidarDisableHighSensitivity’ was not declared in this scope
                                   g_lds_ldiar);
                                              ^
[ 84%] Building CXX object livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/timesync/user_uart/user_uart.cpp.o
livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/build.make:158: recipe for target 'livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/lds_lidar.cpp.o' failed
make[2]: *** [livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/lds_lidar.cpp.o] Error 1
make[2]: *** 正在等待未完成的任务....
In file included from /home/dfg/Livox/ws_livox/src/livox_ros_driver/livox_ros_driver/livox_ros_driver.cpp:32:0:
/home/dfg/Livox/ws_livox/src/livox_ros_driver/livox_ros_driver/lds_lidar.h:92:7: error: ‘DeviceParameterResponse’ has not been declared
       DeviceParameterResponse *response, void *clent_data);
       ^
livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/build.make:230: recipe for target 'livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/livox_ros_driver.cpp.o' failed
make[2]: *** [livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/livox_ros_driver.cpp.o] Error 1
In file included from /home/dfg/Livox/ws_livox/src/livox_ros_driver/livox_ros_driver/lddc.cpp:37:0:
/home/dfg/Livox/ws_livox/src/livox_ros_driver/livox_ros_driver/lds_lidar.h:92:7: error: ‘DeviceParameterResponse’ has not been declared
       DeviceParameterResponse *response, void *clent_data);
       ^
livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/build.make:206: recipe for target 'livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/lddc.cpp.o' failed
make[2]: *** [livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/lddc.cpp.o] Error 1
CMakeFiles/Makefile2:3403: recipe for target 'livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/all' failed
make[1]: *** [livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j8 -l8" failed

hello, when I use catkin_make to make this package, I meet this problem, do you know how to solve it, thank you!

Installation on Win10

Hi,

Is there any installation guidelines for Win10? I encountered a problem when building livox_ros_driver package:

fatal error C1083: Could not open file "unistd.h": No such file
NMAKE : fatal error U1077: “"E:\Visual Studio\VC\Tools\MSVC\14.23.28105\bin\Hostx64\x64\cl.exe"”: Return code“0x2” Stop.
NMAKE : fatal error U1077: “"E:\Visual Studio\VC\Tools\MSVC\14.23.28105\bin\HostX64\x64\nmake.exe"”: Return code“0x2” Stop.
NMAKE : fatal error U1077: “"E:\Visual Studio\VC\Tools\MSVC\14.23.28105\bin\HostX64\x64\nmake.exe"”: Return code“0x2” Stop.
Invoking "nmake" failed

It is converted to only 4 kb regardless of the original capacity.

Hello
Do I have to give an option to convert lvx file to bag file so that it can be converted normally?
If you check the information in the bag file after conversion, the version and size will be shown below. Regardless of the original size.(4.0kb)
Is there any way to solve this problem?

command

roslaunch livox_ros_driver lvx_to_rosbag_rviz.launch lvx_file_path:="/home/livox/test.lvx"

#rosbag info /home/livox/test.bag

result
path : /home/livox/test.bag
version : 2.0
size : 4.0kb

Build fail

Hello,

I am having trouble to build the driver.
Althought I have ros installed on my machine, the library can't be included.
Do you have any idea ?

/dev/ws_livox/src/livox_ros_driver/livox_ros_driver/lddc.cpp:39:10: fatal error: pcl_ros/point_cloud.h: No such file or directory
 #include <pcl_ros/point_cloud.h>

Question about ros lvx_to_bag

Hi, we have a windows sdk collected lvx file contains 8 horizon lidar. Now i am trying to convert it to rosbag. While the conversion was successful, I did not see any data published on /livox/lidar topic. On the other hand, I downloaded a lvx file from your website, in this case there were data published on /livox/lidar.

Question is:
is it possible to convert windows collected lvx file to rosbag through livox_ros_driver? if yes, what is the key element that i need to take care? to change the config of hub.json?

What is imu_rate?

Hello,
I am just testing mid-40 sensor and i see the imu_rate parameter in the config file?
What does this do? Is there an imu inside the sensor?

Thanks

synchronized or not

Hello here, recently I tried using Horizon together with other sensors, I have connected the sync cable with mine, and the state of horizon in livox_viewer is "PPS sync" which means sucessfully sychronized. However when I tried view the timestamp like velodyne in spreadsheet, the timestamp of first .lvx file with GPS sync is somewhat 310^12, while the same with the second .lvx file(without gps sync) starts from 110^13.
From one of the closed issues I got that if successfuly synchronized, the time stamp should be GPRMC format, and I connected Horizon sync cable with GPS, TTL to 485 connected with my PC, which do give the GPRMC format. So I am wondering whether I am synchronized or not.

support RainFogSupression in launch file

Could you please update the ros dirver package to support enable RainFogSuppression in the launch files (i.e. add enableRainFogSuppression in the livox_lidar_config.json just like the enableFanCtrl)?

set high sensitivity fail and topic is empty

The /lidar/livox topic is empty and rviz shows nothing. The terminal print ""enable_high_sensitivity": false", however, I have set "enable_high_sensitivity": false in the configure json. The lidar is tele 15.
Terminal info:
[2020-07-26 16:43:45.342] [console] [info] Recieve Ack: Set 0 Id 11 Seq 17 [command_handler.cpp] [OnCommand] [129]
Set high sensitivity fail, try again!

Command Port and Data Port are constantly changing

After starting the livox_ros_driver, console prints the successful information of connecting Lidar, and prints the correct BD code. However, the Command Port and Data Port are always changing, and there is no topic published by the Lidar, at least I cant find it by "rostopic list".

What should I do in this situation?

Thanks in advance.

Make error with Melodic

Hi guys, I'm new to ROS and getting some trouble.
I get this compile error when compiling the ros driver.
The livox SDK itself works fine..

OS: ubuntu 18.04
ROS: Melodic

ws_livox/src/livox_ros_driver/livox_ros_driver/livox_ros_driver/lddc.cpp:372:39: error: expected primary-expression before ‘)’ token
   LivoxImuPoint* imu = (LivoxImuPoint*)point_buf;
                                       ^
livox_ros_driver/livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/build.make:206: recipe for target 'livox_ros_driver/livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/lddc.cpp.o' failed
make[2]: *** [livox_ros_driver/livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/lddc.cpp.o] Error 1
CMakeFiles/Makefile2:579: recipe for target 'livox_ros_driver/livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/all' failed
make[1]: *** [livox_ros_driver/livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

驱动的接口文档说明

你好:
请问你们有ros驱动接口的文档说明吗,我指的是驱动里面一些函数的说明文档。
谢谢!盼复。

Simple tf causes "Message removed because it is too old"

Hi,

I have added very simple static tf publisher in "livox_lidar_rviz.launch" but PointCloud2(/livox/lidar) is not published with the error saying "Message removed because it is too old".

This is the 1-line code I added to the launch file.
<node pkg="tf" type="static_transform_publisher" name="cab_livox_tf" args="1 0 1 0 0.785398 0 cab_frame livox_frame 100"/>

The PointCloud2 was displayed without this single line. Only this single line is causing error somehow.

I have checked tf tree but it looks fine. As this is not rosbag, typical answer to this error such as "set /use_simu_time true" does not work.

It would be highly appreciated if someone can provide a solution to this issue.

How does the return_mode parameter works in the livox_lidar_config.json file?

Hello,

I'm trying to see the second return points in the point cloud that Livox mid 40 gives to me. When I use the standard firmware (not the multirreturn firmware), and set return_mode to 2, I can see via RVIZ and rostopic echo that there aren't second return points in the point cloud.

Then I tested the opposite, dual_return set to 0 and use the multirreturn special firmware. Now I can see the second return points. But it shouldn't work like that, I think.

I'm only using the LiDAR and a laptop to do this kind of experiments.

The question is, how does the return_mode works? Have I missed something?

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.