Welcome to SDM18 Laser Ranging Module repository
3.Get distance information_Jetson
SDM18 and Jetson Communication
SDM18 and Jetson CommunicationSDM18 Introduction1. Experimental Preparation2. Experimental Wiring3. Experimental Steps4. Experimental Results5. Explanation of Some Important SDM18 Parameters and Default Values
SDM18 Introduction
The YDLIDAR SDM18 LiDAR (hereafter referred to as the SDM18) is a high-performance single-point LiDAR. This product utilizes the time-of-flight ranging principle and incorporates relevant optical, electrical, and algorithmic design to achieve high-precision laser distance measurement and output point cloud data at a high frame rate.
Product Features ➢ High ranging frequency, internal high sampling rate combined with filtering algorithms, resulting in highly stable data. ➢ Long detection range, up to 18 meters. ➢ Lightweight, approximately 1.35g. ➢ Laser power meets FDA Class I safety standards.
1. Experimental Preparation
SDM18 Laser Ranging Module
Jetson Series This tutorial uses the Jetson Orin Nano.
2. Experimental Wiring
Note: You can solder the pin headers to the serial port adapter board yourself. The default pin headers are not included. For our testing, we cannot use pin-based communication, so we need to use a USB port. Here, we directly connect the motherboard and SDM18 via Type-C (UART baud rate 921600).
The wiring diagram is shown in the figure.

3. Experimental Steps
Install the sdm18_test.py program provided in the example program onto the Jetson.
After connecting the USB, type lsusb. If the following device is recognized, the connection is successful.

Run ls /dev/ttyUSB* to see if the USB device is recognized. If it is, skip step 4. If not, proceed to step 4.
Type lsusb -t

git clone https://github.com/juliagoda/CH341SER.git cd CH341SER make -j6 sudo make install sudo modprobe ch34x
Then enter modinfo ch34x in terminal
If successful, the following information will be displayed.

You can first execute the following command to see if a device such as 'ttyUSB*' appears. If successful, continue with the following steps. If still unsuccessful, connect the USB to TTL pins (GND-->GND RXD-->TX TXD-->RX 3V3-->3.3V)
sudo sh -c 'echo "1a86 7522" > /sys/bus/usb-serial/drivers/ch34x/new_id'
x#1. Create the binding scriptsudo tee /usr/local/bin/ch34x_bind.sh <<EOFsudo modprobe ch34xecho "1a86 7522" > /sys/bus/usb-serial/drivers/ch34x/new_idEOF
# Grant execution permissionssudo chmod +x /usr/local/bin/ch34x_bind.sh
#2. Enable automatic startup via cron# Edit the cron tasksudo crontab -eAdd the following to the end of the file:
@reboot /usr/local/bin/ch34x_bind.shYou need to modify the program according to the actual device number, such as /dev/ttyUSB0.
This experiment requires the Python environment and pyserial library, which you need to prepare yourself .
xxxxxxxxxxpip3 install pyserialYou need to upload the sdm18_test.py program to the Jetson in advance, then enter the following command in the terminal:
x
python3 sdm18_test.py4. Experimental Results
After connecting the cables and communicating normally, the serial port assistant will print the measured distance information, as shown in the figure.

dis: Distance in mm
strength: Strength
5. Explanation of Some Important SDM18 Parameters and Default Values
The SDM18 interface is shown in the figure:

Default Serial Port Configuration The default baud rate for the SDM18 is 921600

Important Serial Port Protocol Commands (all sent in hexadecimal format) The SDM18 defaults to idle mode upon power-up. To perform ranging, you must first issue the ranging start command
Start ranging: A5 03 20 01 00 00 00 02 6E
Stop ranging: A5 03 20 02 00 00 00 46 6E
Protocol Analysis for Received Ranging

Checksum Calculation This checksum uses the CRC-16-modelbus calculation method, calculating all bytes except the check digit.
The following figure shows the checksum calculation result for the "Start Ranging" command.

Other protocols will not be explained here. Interested parties can refer to the SDM18 Development Manual.