# ydlidar_ros_driver
**Repository Path**: wbr_git/ydlidar_ros_driver
## Basic Information
- **Project Name**: ydlidar_ros_driver
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: BSD-3-Clause
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-12-21
- **Last Updated**: 2024-07-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README

# YDLIDAR ROS Driver
ydlidar_ros_driver is a new ros package, which is designed to gradually become the standard driver package for ydlidar devices in the ros environment.
## Compile & Install YDLidar SDK
ydlidar_ros_driver depends on YDLidar-SDK library. If you have never installed YDLidar-SDK library or it is out of date, you must first install YDLidar-SDK library. If you have installed the latest version of YDLidar-SDK, skip this step and go to the next step.
1. Download or clone the [YDLIDAR/YDLidar-SDK](https://github.com/YDLIDAR/YDLidar-SDK) repository on GitHub.
2. Compile and install the YDLidar-SDK under the ***build*** directory following `README.md` of YDLIDAR/YDLidar-SDK.
## Clone ydlidar_ros_driver
1. Clone ydlidar_ros_driver package for github :
`git clone https://github.com/YDLIDAR/ydlidar_ros_driver.git ydlidar_ws/src/ydlidar_ros_driver`
2. Build ydlidar_ros_driver package :
```
cd ydlidar_ws
catkin_make
```
>Note: If the following error occurs, Please install [YDLIDAR/YDLidar-SDK](https://github.com/YDLIDAR/YDLidar-SDK) first.

3. Package environment setup :
`source ./devel/setup.sh`
Note: Add permanent workspace environment variables.
It's convenientif the ROS environment variables are automatically added to your bash session every time a new shell is launched:
```
$echo "source ~/ydlidar_ws/devel/setup.bash" >> ~/.bashrc
$source ~/.bashrc
```
4. Confirmation
To confirm that your package path has been set, echo the `ROS_PACKAGE_PATH` variable.
```
$ echo $ROS_PACKAGE_PATH
```
You should see something similar to:
`/home/tony/ydlidar_ws/src:/opt/ros/melodic/share`
5. Create serial port Alias [optional]
```
$chmod 0777 src/ydlidar_ros_driver/startup/*
$sudo sh src/ydlidar_ros_driver/startup/initenv.sh
```
Note: After completing the previous operation, replug the LiDAR again.
## Run ydlidar_ros_driver
##### Run ydlidar_ros_driver using launch file
The command format is :
`roslaunch ydlidar_ros_driver [launch file]`
1. Connect Triangle LiDAR uint(s).
```
# G4, G5
roslaunch ydlidar_ros_driver lidar_view.launch
```
2. Connect to TOF LiDAR uint(s).
```
# TG15, TG30, TG50
roslaunch ydlidar_ros_driver TG.launch
# TX8, TX20
roslaunch ydlidar_ros_driver TX.launch
```
3. Connect to TOF NET LiDAR uint(s).
```
# T5, T15
roslaunch ydlidar_ros_driver T15.launch
```
##### Launch file introduction
The driver offers users a wealth of options when using different launch file. The launch file directory
is `"ydlidar_ws/src/ydlidar_ros_driver/launch"`. All launch files are listed as below :
| launch file | features |
| ------------------------- | ------------------------------------------------------------ |
| G1.launch | Connect to G1 LiDAR
Publish LaserScan message on `scan` topic |
| G2.launch | Connect to G2 LiDAļ¼²
Publish LaserScan message on `scan` topic |
| G6_G7.launch | Connect to G6/G7 LiDAR
Publish LaserScan message on `scan` topic |
| lidar.launch | Connect to G4/G5 LiDAR
Publish LaserScan message on `scan` topic |
| lidar_view.launch | Connect to G4/G5 LiDAR
Publish LaserScan message on `scan` topic
Automatically load rviz |
| T15.launch | Connect to T5/T15 LiDAR
Publish LaserScan message on `scan` topic |
| TG.launch | Connect to TG15/TG30/TG50 LiDAR
Publish LaserScan message on `scan` topic |
| TX.launch | Connect to TX8/TX20 LiDAR
Publish LaserScan message on `scan` topic |
| X2.launch | Connect to X2/X2L LiDAR
Publish LaserScan message on `scan` topic |
| X4.launch | Connect to X4 LiDAR
Publish LaserScan message on `scan` topic |
## Publish Topic
| Topic | Type | Description |
|----------------------|-------------------------|--------------------------------------------------|
| `scan` | sensor_msgs/LaserScan | 2D laser scan of the 0-angle ring
| `point_cloud` | sensor_msgs/PointCloud | 2D point cloud of the 0-angle ring |
| ~~`laser_fan`~~(removed in version 1.0.1) | ydlidar_ros_driver::LaserFan | 2D Raw laser fan of the 0-angle ring |
## Subscribe Service
| Service | Type | Description |
|----------------------|-------------------------|--------------------------------------------------|
| `stop_scan` | std_srvs::Empty | turn off lidar |
| `start_scan` | std_srvs::Empty | turn on lidar |
## Configure ydlidar_ros_driver internal parameter
The ydlidar_ros_driver internal parameters are in the launch file, they are listed as below :
| Parameter name | Data Type | detail |
| -------------- | ------- | ------------------------------------------------------------ |
| port | string | Set Lidar the serial port or IP address
it can be set to `/dev/ttyUSB0`, `192.168.1.11`, etc.
default: `/dev/ydlidar` |
| frame_id | string | Lidar TF coordinate system name.
default: `laser_frame` |
| ignore_array | string | LiDAR filtering angle area
eg: `-90, -80, 30, 40` |
| baudrate | int | Lidar baudrate or network port.
default: `230400` |
| lidar_type | int | Set lidar type
0 -- TYPE_TOF
1 -- TYPE_TRIANGLE
2 -- TYPE_TOF_NET
default: `1` |
| device_type | int | Set device type
0 -- YDLIDAR_TYPE_SERIAL
1 -- YDLIDAR_TYPE_TCP
2 -- YDLIDAR_TYPE_UDP
default: `0` |
| sample_rate | int | Set Lidar Sample Rate.
default: `9` |
| abnormal_check_count | int | Set the number of abnormal startup data attempts.
default: `4` |
| fixed_resolution | bool | Fixed angluar resolution.
default: `true` |
| reversion | bool | Reversion LiDAR.
default: `true` |
| inverted | bool | Inverted LiDAR.
false -- ClockWise.
true -- CounterClockWise
default: `true` |
| auto_reconnect | bool | Automatically reconnect the LiDAR.
true -- hot plug.
default: `true` |
| isSingleChannel | bool | Whether LiDAR is a single-channel.
default: `false` |
| intensity | bool | Whether LiDAR has intensity.
true -- G2 LiDAR.
default: `false` |
| support_motor_dtr | bool | Whether the Lidar can be started and stopped by Serial DTR.
default: `false` |
| angle_min | float | Minimum Valid Angle.
default: `-180` |
| angle_max | float | Maximum Valid Angle.
default: `180` |
| range_min | float | Minimum Valid range.
default: `0.1` |
| range_max | float | Maximum Valid range.
default: `16.0` |
| frequency | float | Set Scanning Frequency.
default: `10.0` |
| invalid_range_is_inf | bool | Invalid Range is inf.
true -- inf.
false -- 0.0.
default: `false` |
| point_cloud_preservative | bool | Keep invalid range.
true -- Keep.
false -- Reject.
default: `false` |
More paramters details, see [here](details.md)
## Contact EAI

If you have any extra questions, please feel free to [contact us](http://www.ydlidar.cn/cn/contact)