Development of an Integrated ROS Interface for a Time-of-Flight Measurement System of a LiDAR Sensor
Development of an Integrated ROS
Interface for a Time-of-Flight
Measurement System of a LiDAR Sensor
0
Project description
๐ Development of a ROS Interface for a LiDAR Sensor (Master's Thesis)
๐ Paper Overview
Title: Development of an Integrated ROS Interface for a Time-of-Flight Measurement System of a LiDAR Sensor
Author: Simรฃo Pedro Torres Araรบjo (University of Minho, Portugal)
Year: 2021
Collaboration: Bosch Portugal & University of Minho
๐ฏ Research Objectives
Development of a LiDAR sensor system for autonomous vehicles:
Implementation of a high-precision Time-to-Digital Converter (TDC)
Integrated ROS (Robotic Operating System) interface
Full FPGA hardware implementation verification
๐ฌ Core Technologies
1. Double-sampling Gray TDC
Role: Measures the time from laser firing to reflected light detection (ToF)
Innovative Performance:
Resolution: 69 ps (1 cm depth resolution)
Precision: 59 ps
Power Consumption: 7 per channel LUTs, 20 Flip-flops, 1mW
73% resolution improvement over previous models
2. Software ROS Interface
Structure:
FPGA (TDC) โ AXI โ Zynq processor (Linux) โ ROS Publisher โ RVIZ visualization
Performance:
36,000 point cloud: 10.32 FPS
Power consumption: 2.087W
Disadvantages: Performance fluctuations due to OS overhead
3. Hardware ROS Interface (PoC)
Core: Utilizes the WIZ850io (W5500) network module
Structure:
FPGA (TDC) โ FIFO โ ROS Publisher (FPGA) โ WIZ850io (SPI) โ Ethernet
WIZ850io Configuration:
W5500 hardware TCP/IP stack
8 sockets (Sockets 0-2: for ROS communication)
SPI interface (30MHz)
IP: 192.168.1.10
๐ Role of WIZ850io (W5500)
Key Contributions
TCP/IP stack hardware offload
Simultaneous operation of three TCP sockets required for ROS communication
No need to implement complex network protocols
System Simplification
No Linux OS required
No ARM processor required
ROS Publisher completed with FPGA only
Power Efficiency
84% reduction in overall system power
Suitable for industrial embedded systems
Bottlenecks
SPI interface Limitations:
30MHz operation (relatively slow)
Bit-by-bit serial transfer
FPS limited from 10.32 to 3.45
Author's improvement suggestions:
"Performance can be significantly improved by implementing TCP/IP directly on the FPGA or using a faster interface."
๐ก Key Achievements
Academic Contributions
Development of a world-class TDC
Optimizing performance per resource
Ideal for multi-channel LiDAR sensors
Demonstrated full hardware ROS implementation
Implemented ROS node solely on FPGA without a processor
Reduced development time with WIZ850io
Industrial Applications
Bosch Automotive LiDAR Project
Academic Paper Published
==================
๐ LiDAR ์ผ์์ฉ ROS ์ธํฐํ์ด์ค ๊ฐ๋ฐ (์์ฌํ์ ๋ ผ๋ฌธ)
๐ ๋ ผ๋ฌธ ๊ฐ์
์ ๋ชฉ: Development of an Integrated ROS Interface for a Time-of-Flight Measurement System of a LiDAR Sensor
์ ์: Simรฃo Pedro Torres Araรบjo (University of Minho, ํฌ๋ฅดํฌ๊ฐ)
์ฐ๋: 2021๋
ํ๋ ฅ: Bosch Portugal & University of Minho
๐ฏ ์ฐ๊ตฌ ๋ชฉํ
์์จ์ฃผํ ์ฐจ๋์ฉ LiDAR ์ผ์ ์์คํ ๊ฐ๋ฐ:
- ๊ณ ์ ๋ฐ Time-to-Digital Converter (TDC) ๊ตฌํ
- ROS(Robotic Operating System) ์ธํฐํ์ด์ค ํตํฉ
- FPGA ์์ ํ๋์จ์ด ๊ตฌํ ๊ฒ์ฆ
๐ฌ ํต์ฌ ๊ธฐ์
1. Double-sampling Gray TDC
์ญํ : ๋ ์ด์ ๋ฐ์ฌ ํ ๋ฐ์ฌ๊ด ๊ฒ์ถ๊น์ง์ ์๊ฐ(ToF) ์ธก์
ํ์ ์ ์ฑ๋ฅ:
- ํด์๋: 69 ps (1cm ๊น์ด ๋ถํด๋ฅ)
- ์ ๋ฐ๋: 59 ps
- ์๋น ์์: ์ฑ๋๋น 7 LUTs, 20 Flip-flops, 1mW
- ๊ธฐ์กด ๋๋น ํด์๋ 73% ํฅ์
2. ์ํํธ์จ์ด ROS ์ธํฐํ์ด์ค
๊ตฌ์กฐ:
FPGA(TDC) โ AXI โ Zynq ํ๋ก์ธ์(Linux) โ ROS Publisher โ RVIZ ์๊ฐํ์ฑ๋ฅ:
- 36,000 ํฌ์ธํธ ํด๋ผ์ฐ๋: 10.32 FPS
- ์ ๋ ฅ ์๋น: 2.087W
- ๋จ์ : OS ์ค๋ฒํค๋๋ก ์ฑ๋ฅ ๋ณ๋
3. ํ๋์จ์ด ROS ์ธํฐํ์ด์ค (PoC)
ํต์ฌ: WIZ850io (W5500) ๋คํธ์ํฌ ๋ชจ๋ ํ์ฉ
๊ตฌ์กฐ:
FPGA(TDC) โ FIFO โ ROS Publisher(FPGA) โ WIZ850io(SPI) โ EthernetWIZ850io ์ค์ :
- W5500 ํ๋์จ์ด TCP/IP ์คํ
- 8๊ฐ ์์ผ (Socket 0-2: ROS ํต์ ์ฉ)
- SPI ์ธํฐํ์ด์ค (30MHz)
- IP: 192.168.1.10
๐ ์ํํธ์จ์ด vs ํ๋์จ์ด ๋น๊ต
| ํญ๋ชฉ | ์ํํธ์จ์ด | ํ๋์จ์ด(WIZ850io) |
|---|---|---|
| FPS | 10.32 (๋ณ๋) | 3.45 (์์ ) |
| ํ๋ก์ธ์ | ํ์ | ๋ถํ์ โ |
| ์ ๋ ฅ | 2.087W | 0.331W (-84%) |
| ์์ ์ฑ | ๋ฎ์ | ๋งค์ฐ ๋์ |
| BRAM | 0 | 61 |
๐ WIZ850io(W5500)์ ์ญํ
ํต์ฌ ๊ธฐ์ฌ
- TCP/IP ์คํ ํ๋์จ์ด ์คํ๋ก๋
- ROS ํต์ ์ ํ์ํ 3๊ฐ TCP ์์ผ ๋์ ์ด์
- ๋ณต์กํ ๋คํธ์ํฌ ํ๋กํ ์ฝ ๊ตฌํ ๋ถํ์
- ์์คํ
๋จ์ํ
- Linux OS ๋ถํ์
- ARM ํ๋ก์ธ์ ๋ถํ์
- FPGA๋ง์ผ๋ก ROS Publisher ์์ฑ
- ์ ๋ ฅ ํจ์จ์ฑ
- ์ ์ฒด ์์คํ ์ ๋ ฅ 84% ๊ฐ์
- ์ฐ์ ์ฉ ์๋ฒ ๋๋ ์์คํ ์ ์ ํฉ
๋ณ๋ชฉ ์์ธ
SPI ์ธํฐํ์ด์ค์ ํ๊ณ:
- 30MHz ๋์ (์๋์ ์ผ๋ก ๋๋ฆผ)
- ๋นํธ ๋จ์ ์ง๋ ฌ ์ ์ก
- FPS๋ฅผ 10.32 โ 3.45๋ก ์ ํ
์ ์์ ๊ฐ์ ์ ์:
"TCP/IP๋ฅผ FPGA์ ์ง์ ๊ตฌํํ๊ฑฐ๋ ๋ ๋น ๋ฅธ ์ธํฐํ์ด์ค ์ฌ์ฉ ์ ์ฑ๋ฅ ๋ํญ ํฅ์ ๊ฐ๋ฅ"
๐ก ์ฃผ์ ์ฑ๊ณผ
ํ์ ์ ๊ธฐ์ฌ
- ์ธ๊ณ ์ต๊ณ ์์ค TDC ๊ฐ๋ฐ
- ์์ ๋๋น ์ฑ๋ฅ ์ต์ ํ
- ๋ค์ฑ๋ LiDAR ์ผ์์ ์ด์์
- ์์ ํ๋์จ์ด ROS ๊ตฌํ ์
์ฆ
- ํ๋ก์ธ์ ์์ด FPGA๋ง์ผ๋ก ROS ๋ ธ๋ ๊ตฌํ
- WIZ850io๋ก ๊ฐ๋ฐ ์๊ฐ ๋จ์ถ
- ์ฐ์
์ ์ฉ
- Bosch ์๋์ฐจ LiDAR ํ๋ก์ ํธ
- ํ์ ๋ ผ๋ฌธ ๋ฐํ
์ด 133ํ์ด์ง ๋ฌธ์์์ 15๋ฒ์ W5500 ์ธ๊ธ ์ฅ๋ฉด - 12๋ฒ์ 5์ฅ์์ ์ธ๊ธ๋๋ค.
์ 1์ฅ: ์๋ก (Introduction) : ์ฐ๊ตฌ์ ๋ฐฐ๊ฒฝ๊ณผ ๋ชฉ์ ์ ์ค์ ํฉ๋๋ค.
๋ด์ฉ: ์์จ ์ฃผํ ๋ฐ ์ ๋ฐ ๋งคํ์ ์ํ LiDAR ์ผ์์ ์ค์์ฑ์ ์ค๋ช
ํ๊ณ , ๋ณธ ๋
ผ๋ฌธ์ ๋๊ธฐ, ๊ตฌ์ฒด์ ์ธ ์ฐ๊ตฌ ๋ชฉํ ๋ฐ ๋ฐฉ๋ฒ๋ก ์ ์ ์ํฉ๋๋ค.
์ 2์ฅ: ๊ธฐ์ ํํฉ (State-of-the-Art): ๋ณธ ์ฐ๊ตฌ์ ๊ด๋ จ๋ ๊ธฐ์กด ๊ธฐ์ ๋ฐ ์ด๋ก ์ ๋ฐฐ๊ฒฝ์ ๊ฒํ ํฉ๋๋ค.
๋ด์ฉ: LiDAR ์ผ์์ ์๋ฆฌ, ์๊ฐ-๋์งํธ ๋ณํ๊ธฐ(TDC), FPGA ๊ตฌ์กฐ, ๊ทธ๋ฆฌ๊ณ ๋ก๋ด ์ด์ ์ฒด์ (ROS)์ ๋ํ ์ ๋ฐ์ ์ธ ๊ฐ์์ ์ต์ ๊ธฐ์ ๋ํฅ์ ๋ค๋ฃน๋๋ค.
์ 3์ฅ: ์ด์ค ์ํ๋ง ๊ทธ๋ ์ด TDC (Double-sampling Gray TDC): ๋ณธ ์ฐ๊ตฌ์์ ์ ์ํ๋ ํต์ฌ ํ๋์จ์ด ์ํคํ
์ฒ๋ฅผ ์ค๋ช
ํฉ๋๋ค.
๋ด์ฉ: ํด์๋๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ์ด์ค ์ํ๋ง ๋จ๊ณ๋ฅผ ๋์
ํ ๊ทธ๋ ์ด ์ฝ๋ ์ค์ค๋ ์ดํฐ ๊ธฐ๋ฐ TDC์ ์ค๊ณ, ๊ตฌํ ๊ณผ์ ๋ฐ ํ
์คํธ ๊ฒฐ๊ณผ(์ ๋ฐ๋ ๋ฐ ํด์๋ ๋ฑ)๋ฅผ ์์ธํ ๊ธฐ์ ํฉ๋๋ค.
์ 4์ฅ: ์ํํธ์จ์ด ROS ์ธํฐํ์ด์ค (Software ROS Interface): ํ๋ก์ธ์์์ ์คํ๋๋ ์ํํธ์จ์ด ๊ธฐ๋ฐ ์ธํฐํ์ด์ค ๊ตฌํ์ ๋ค๋ฃน๋๋ค.
๋ด์ฉ: PetaLinux๋ฅผ ์ด์ฉํ ์๋ฒ ๋๋ ๋ฆฌ๋
์ค ์ด๋ฏธ์ง ์์ฑ, TDC ๋ฐ์ดํฐ ์ ๊ทผ์ ์ํ ๋ฆฌ๋
์ค ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ, ๊ทธ๋ฆฌ๊ณ RVIZ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๋ ROS ๋
ธ๋์ ๊ตฌํ ๊ณผ์ ์ ์ค๋ช
ํฉ๋๋ค.
์ 5์ฅ: ํ๋์จ์ด ROS ์ธํฐํ์ด์ค (Hardware ROS Interface): ์์คํ
์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ํ๋์จ์ด ๊ธฐ๋ฐ ROS ์ธํฐํ์ด์ค ๊ตฌํ ๋ฐ ๋ถ์์ ๋ค๋ฃน๋๋ค.
๋ด์ฉ: ROS ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ๋ถ์ํ๊ณ , ์ด๋ฅผ FPGA ํ๋์จ์ด(Programmable Logic)๋ก ์ด์ํ๋ ๊ณผ์ ๊ณผ ํ๋์จ์ด์์ ์ง์ ๋ฉ์์ง๋ฅผ ๋ฐํํ๋ ๋ฐฉ์์ ์ฑ๋ฅ(์๋น ์ ๋ ฅ ๊ฐ์ ๋ฐ ์ฑ๋ฅ ์์ ์ฑ)์ ํ๊ฐํฉ๋๋ค.
5.1์ ์ "๋ฌด์์ ์ด๋ป๊ฒ ๋ง๋ค์ง ๋ถ์"ํ๊ณ , 5.2์ ์ "์ค์ ํ๋์จ์ด ๋ก์ง์ผ๋ก ์ ์"ํ๋ฉฐ, 5.3์ ์ "๋ง๋ค์ด์ง ๊ฒฐ๊ณผ๋ฌผ์ ์ฑ๋ฅ์ด ์ผ๋ง๋ ์ข์์ก๋์ง ๊ฒ์ฆ"ํ๋ ๋จ๊ณ์ ๋๋ค.
5.2.2์ ์์ 12๋ฒ, 5.2.3์ ์์ 1๋ฒ ์ธ๊ธ๋๋ค.

์ฒ์ 5๋ฒ์ WIZ850io ์๊ฐํ๋ ๋ถ๋ถ์์ ์ธ๊ธ๋๊ณ , 6๋ฒ์งธ ์ธ๊ธ์ ์๋์์ ์ธ๊ธ๋๋ค.

7๋ฒ์งธ์ 8๋ฒ์งธ, 9๋ฒ์งธ ์ธ๊ธ์ SPI Master ๋ฅผ ์๊ฐํ๋ฉด์ ์ธ๊ธํ๋ค.
SPI Master๋ FPGA๊ฐ ์ธ๋ถ ์ฅ์น์ธ W5500(์ด๋๋ท ์ปจํธ๋กค๋ฌ)๊ณผ ํต์ ํ๊ธฐ ์ํด ์ ์ด๊ถ(์ฃผ๋๊ถ)์ ๊ฐ๋ ํต์ ์ฃผ์ฒด๋ฅผ ๋งํฉ๋๋ค.
์ด ๋ ผ๋ฌธ์์๋ FPGA ๋ด๋ถ์ ๋ก์ง์ด SPI Master๊ฐ ๋ฉ๋๋ค. FPGA๊ฐ W5500(Slave)์๊ฒ "๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ผ"๊ฑฐ๋ "์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๋ผ"๊ณ ๋ช ๋ น์ ๋ด๋ฆฌ๋ ์ฌ๋ น๊ด ์ญํ ์ ํ๋ ๊ฒ์ ๋๋ค.

10๋ฒ์งธ ์ธ๊ธ์ Building the ROS publisher ์ ์์ ๋์ต๋๋ค.
FPGA์ ํ๋์จ์ด ๋ก์ง(Programmable Logic, PL)๋ง์ผ๋ก ROS ๋ ธ๋๋ฅผ ์์ฑํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ(Publish)ํ๋ ์ค์ ์ ์ธ ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ค๋ฃจ๊ณ ์์ต๋๋ค.
"์๋ฒ ๋๋ ๋ฆฌ๋ ์ค(OS) ๋์ ์์ด FPGA ํ๋์จ์ด๋ง์ผ๋ก ์ด๋ป๊ฒ ํ์ค ROS ํต์ ๊ท์ฝ์ ๋ง์กฑ์ํค๊ณ , ์ค์๊ฐ์ผ๋ก Lidar ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋๊ฐ"์ ๋ํ ๊ตฌ์ฒด์ ์ธ ๊ธฐ์ ์ ํด๋ต์ ๋ด๊ณ ์์ต๋๋ค.

11๋ฒ์งธ ์ธ๊ธ๋ ์์ ์ฐ์ฅ์ ์์์ FPGA ์ W5500์ด ์ด๋ป๊ฒ ๋ฐ์ดํ๋ฅผ ์ฃผ๊ณ ๋ฐ๋์ง๋ฅผ ์ค๋ช ํ๋ ๋ถ๋ถ์์ ๋์ต๋๋ค.


12๋ฒ์งธ ์ธ๊ธ์ ์ค์ ๊ตฌํ๋ ํ๋์จ์ด๊ฐ ์ด๋ป๊ฒ ์๋๋๋์ง๋ฅผ ์ค๋ช ํ๋ฉด์ ์ธ๊ธ๋๊ณ ์์ต๋๋ค.

13~15๋ฒ์งธ ์ธ๊ธ์ ์ฃผ์์ ์๋ค.

์ ํ๋์จ์ด ๋ถ๋ฌธ์์ W5500์ ์ด์ฉํ๋๊ฐ?
TCP/IP ํ๋กํ ์ฝ ์คํ์ ํ๋์จ์ด์ ์ผ๋ก ๊ฐ๋จํ๊ฒ ๊ตฌํํ๊ธฐ ์ํจ์ ๋๋ค. ์์ธํ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. TCP/IP ์คํ ๊ตฌํ์ ๋จ์ํ
๋ณต์ก์ฑ ๊ฐ์: ROS์ ๋น๋๊ธฐ ํต์ ์์คํ ์ ํ๋์จ์ด(FPGA)๋ก ์ฎ๊ธฐ๋ ค๋ฉด TCP/IP ์คํ์ด ํ์์ ์ ๋๋ค. ์ด๋ฅผ FPGA ๋ก์ง(HDL)์ผ๋ก ์ง์ ๋ชจ๋ ๊ตฌํํ๋ ๊ฒ์ ๋งค์ฐ ๋ณต์กํ๊ณ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ์์ ์ ๋๋ค.
์ ํ์ ์ด์ : ์ ์๋ ROS ํต์ ๊ตฌ์กฐ๋ฅผ ๋ถ์ํ๊ณ ์ดํดํ๋ ๋ฐ ์ง์คํ๊ธฐ ์ํด, ๋ณต์กํ TCP/IP ์คํ์ ์ง์ ์ค๊ณํ๋ ๋์ ์ด๋ฅผ ์ด๋ฏธ ์นฉ ๋ด๋ถ์ ํ๋์จ์ด๋ก ๊ตฌํํ๊ณ ์๋ W5500์ ์ ํํ์ฌ ๊ตฌํ ๋ฐฉ์์ ๋จ์ํํ์ต๋๋ค.
2. ๋ค์ค ์์ผ ์ง์ (ROS ํต์ ์๊ตฌ์ฌํญ ์ถฉ์กฑ)
ํ์ ์์ผ ์: ํ๋์จ์ด ๊ธฐ๋ฐ์ ROS ํผ๋ธ๋ฆฌ์ (Publisher)๋ฅผ ์์ ํ ๊ตฌ๋ํ๋ ค๋ฉด ์ต์ 3๊ฐ์ ์์ผ(ํด๋ผ์ด์ธํธ 1๊ฐ, ์๋ฒ 2๊ฐ)์ด ํ์ํฉ๋๋ค.
W5500์ ์ฑ๋ฅ: W5500์ ์ต๋ 8๊ฐ์ ๋ ๋ฆฝ์ ์ธ ์์ผ์ ๋์์ ์ง์ํ ์ ์์ด, ROS ๋ ธ๋ ๊ฐ์ ํต์ (๋ง์คํฐ ๋ฑ๋ก, ํ ํฝ ์์ฒญ, ๋ฐ์ดํฐ ์ ์ก ๋ฑ)์ ํ์ํ ๋ค์ค ์ฐ๊ฒฐ์ ์ถฉ๋ถํ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
3. ํ๋์จ์ด ๋ฆฌ์์ค ํจ์จ์ฑ ๋ฐ ๋ ๋ฆฝ์ฑ
ํ๋ก์ธ์ ๋ฐฐ์ : W5500์ ์ฌ์ฉํจ์ผ๋ก์จ ๊ธฐ์กด์ ์ํํธ์จ์ด ๋ฐฉ์(PetaLinux ์์ ROS)๊ณผ ๋ฌ๋ฆฌ ๋ฉ์ธ ํ๋ก์ธ์(PS)์ ๋์ ์์ด๋ ๋คํธ์ํฌ ํต์ ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค.
ํ๋์จ์ด ์ปจํธ๋กค๋ฌ: FPGA ๋ด๋ถ์ W5500์ ์ ์ดํ๊ธฐ ์ํ SPI ๋ง์คํฐ FSM(์ ํ ์ํ ๋จธ์ )์ ์ค๊ณํ์ฌ ์ฅ์น๋ฅผ ์ ์ดํ๋๋ก ํจ์ผ๋ก์จ ์์คํ ์ ํ๋์จ์ด ๋ ๋ฆฝ์ฑ์ ํ๋ณดํ์ต๋๋ค.
4. ๊ฐ๋ ์ฆ๋ช (PoC) ๋ชฉ์
์คํ ๊ฐ๋ฅ์ฑ ํ์ธ: ์ด ์ฐ๊ตฌ๋ ROS ์ธํฐํ์ด์ค์ ํ๋์จ์ด ์ด์์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๋ '๊ฐ๋ ์ฆ๋ช (Proof of Concept)' ๋จ๊ณ์ ์ค์ ์ ๋์์ต๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ฅ ํจ์จ์ ์ด๊ณ ์์ ์ ์ผ๋ก ๋คํธ์ํฌ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋ ์๋จ์ผ๋ก W5500 ๊ธฐ๋ฐ์ WIZ850io ๋ชจ๋์ ํ์ฉํ ๊ฒ์ ๋๋ค.
์์ฝํ์๋ฉด, W5500์ FPGA์์ ROS ํต์ ์ ํ์์ ์ธ TCP/IP ๊ธฐ๋ฅ์ ํ๋์จ์ด์ ์ผ๋ก ์ฝ๊ณ ๋น ๋ฅด๊ฒ ํตํฉํ ์ ์๊ฒ ํด์ฃผ์ด, ์ฐ๊ตฌ์ ํต์ฌ์ธ ROS ์ธํฐํ์ด์ค ์ค๊ณ์ ๋ ์ง์คํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ๋ก ์ฌ์ฉ๋์์ต๋๋ค.
