๐ก ์ด ๊ธ์ ROS2์์ ๋ ธ๋๊ฐ์ ํต์ ์ ๋ณ๊ฒฝ์ ๋ฐ DDS๊ด๋ จ ์ฉ์ด ๋ฐ QoS ์ค์ ์ ๊ดํ ๋ด์ฉ์ด ํฌํจ๋์ด ์์ต๋๋ค.
ROS2๋ ๊ธฐ๋ณธ์ ์ผ๋ก DDS Middleware๋ฅผ ์ฌ์ฉํ๋ค. ๋ค์ํ DDS ํน์ RTPS ๊ฐ ํธํ๋๋๋ฐ ์์ฑ์ผ ๊ธฐ์ค ํธํ๋๋ ๋ฒค๋๋ ์๋์ ๊ฐ๋ค.
- eProsima’s Fast DDS → Humble์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ๋ DDS Middleware
- RTI’s Connext DDS
- Eclipse Cyclone DDS
- GurumNetworks GurumDDS
ROS2๋ ๋ค๋ฅธ DDS์๋ ํต์ ์ด ๊ฐ๋ฅํ๋ค. ๊ทธ ์ด์ ๋ RMW(Robot MiddleWare)๊ฐ RCL(Robot Client Library)์์ ํต์ ์ ์ํด DDS ๊ตฌํ์ ๋ํ ์ถ์ํ ๊ณ์ธต์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ด๋ค. (DDS๊ฐ ๋์ ๋๋ฉด์ ROS1๊ณผ ๊ฐ์ฅ ํฌ๊ฒ ์ฒด๊ฐ๋๋ ์ฐจ์ด๋ QoS ๋ผ๊ณ ์๊ฐํ๋ค.)
QoS
ROS2๋ ๋ ธ๋๊ฐ์ ํต์ ์ ์กฐ์ ํ ์ ์๋ QoS ์ ์ฑ ์ ์ ๊ณตํ์ฌ, ์์ ์ฑ์ธ TCP, best-effort UDP๋ฑ ๊ทธ ์ฌ์ด์ ๋ฌด์์ด๋ ์ ์ฐํ๊ฒ ์ํฉ์ ๋ง๋ ํต์ ์ ์ฑ ์ ์ ํ ์ ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์๋์ ๊ฐ์ ์ค์ ์ ์ง์ํ๋ค.
- History
- Keep last: N๊ฐ์ ์ํ๋ง์ ์ ์ฅ (N(Depth)์ ์ค์ ๊ฐ๋ฅ)
- Keep all: middleware์ ์ง์ ๋ ๋ฆฌ์์ค ์ ํ ๋งํผ ์ ์ฅ
- Depth
- Keep last ์ ์ฑ ์ผ ๋ Depth ์ง์
- Reliability
- Best effort: ์ํ์ ๋ณด๋ด๋ ค๊ณ ์๋๋ ํ๋ ๋ถ์์ ํ ๋คํธ์ํฌ ์์์ ์ ์ค์ด ๋ฐ์ํ ์ ์์
- Reliable: ์ํ์ ์ ์ก์ ๋ณด์ฅํจ, ๋จ ์ฌ๋ฌ๋ฒ ์๋ ํ ์ ์์
- Durability
- Transient local: ์ํ์ ์์ ๋ฐ์ subscriber๊ฐ ์์ฑ๋๊ธฐ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๋ ค ํจ
- Volatile: ์ํ์ ์ ์งํ๋ ค ํ์ง ์์
- Deadline
- Duration: Topic์์ ์ ์ก๋๋ ๋ฉ์์ง์ ํ์ ๋ฉ์์ง ์ฌ์ด์ ์ต๋ ๊ธฐ๊ฐ
- Lifespan
- Duration: ๋ฉ์์ง์ ์ต๋ ์๋ช , ์ต๋ ์๋ช ์ด ๋๋ ๋ฉ์์ง๋ ์ญ์ ๋จ
- Liveliness
- Automatic: publisher๊ฐ ๋ฉ์์ง๋ฅผ ์ ์กํ ๋ lease duration ๊ธฐ๊ฐ๋์ ํ์ฑ ์ํ์ธ ๊ฒ์ผ๋ก ๊ฐ์ฃผ
- Manual by topic: publisher๊ฐ ์ด์ ์๋ค๊ณ ์๋์ผ๋ก ๊ฐ์ฃผํ๋ ๊ฒฝ์ฐ lease duration ๋์ ํ์ฑ ์ํ๋ก ๊ฐ์ฃผ
- Lease duration
- ๊ฒ์์๊ฐ ํ์ฑ์ํ์์ ๋ํ๋ด๋ ์ต๋ ๊ธฐ๊ฐ
Compatibility
ROS์์ ํต์ ์ด ๋์ง ์๋๋ค๋ฉด QoS ์ค์ ์ ๋ฐ๋ผ ํธํ์ฑ ์ฌ๋ถ๋ฅผ ํ์ธํด๋ณผ ํ์๊ฐ ์๋ค.
https://docs.ros.org/en/humble/Concepts/Intermediate/About-Quality-of-Service-Settings.html
QoS Profile
- RMW์์ QoS ์ค์ ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ QoS ์ค์ ์ ์ธํธ๋ก ํํํด๋๋ค.
- ๋ชฉ์ ์ ๋ฐ๋ผ Default, Sensor Data, Service, Action Status, Parameters, Parameter Events์ ๊ฐ์ด 6๊ฐ์ง๋ก ๊ตฌ๋ถํ๋ฉฐ Reliability, History, Depth(History Depth), Durability ๋ฅผ ์ค์ ํ๋ค.
Default | Sensor Data | Service | Action | Status | Parameters | Parameters Events |
Reliability | RELIABLE | BEST_EFFORT | RELIABLE | RELIABLE | RELIABLE | RELIABLE |
History | KEEP_LAST | KEEP_LAST | KEEP_LAST | KEEP_LAST | KEEP_LAST | KEEP_LAST |
Depth | 10 | 5 | 10 | 1 | 1,000 | 1,000 |
Durability | VOLATILE | VOLATILE | VOLATILE | TRANSIENT LOCAL | VOLATILE | VOLATILE |
์ฝ๋๋ ์๋ Github ์ฃผ์์์ ํ์ธ ๊ฐ๋ฅํ๋ค.
https://github.com/ros2/rmw/blob/humble/rmw/include/rmw/qos_profiles.h#L25
์ฐธ๊ณ ์ฌ์ดํธ
DDS implementations — ROS 2 Documentation: Humble documentation
About internal ROS 2 interfaces — ROS 2 Documentation: Humble documentation
About Quality of Service settings — ROS 2 Documentation: Humble documentation
'ROS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Nav2] AMCL(Adaptive Monte Carlo Localization) package ๋ถ์ (0) | 2024.01.09 |
---|---|
[ROS2] Callback group ๊ฐ๋ ๋ฐ Deadlock ๋ฌธ์ ํด๊ฒฐ (1) | 2024.01.04 |
[ROS2] Life cycle node ๊ฐ๋ ๋ฐ Nav2 ์์ ์ดํด๋ณด๊ธฐ (0) | 2024.01.04 |
ROS1 Noetic Arduino์ Serial ํต์ ํ๊ธฐ (0) | 2022.07.15 |