Self-healing Mobile Relay Robot for Infrastructure-less Disaster Communication
BATMAN-ADV ๋ฉ์ ๋คํธ์ํน๊ณผ ์ฐ๊ฒฐ์ฑ ์ธ์ ๋ด๋น๊ฒ์ด์ ์ ์ฌ์ฉํ์ฌ NLOS ๋ฐ ์ฌ๋ ํ๊ฒฝ์์ ๊ณ ์ฅ๋ ํต์ ๋งํฌ๋ฅผ ์์จ์ ์ผ๋ก ๋ณต๊ตฌํ๋
๋ชจ๋ฐ์ผ ์ค๊ณ ๋ก๋ด ์์คํ ์ ๋๋ค.
- ๐ฅ Demo GIFs: Without Relay | With Relay
- ๐งฉ System Architecture: Jump
- ๐ Run: Jump
Intel Edge AI SW Academy 8th Gen - Team 4 Project > ๊ฐ๋ฐ ๊ธฐ๊ฐ: 2025.11.21 ~ 2026.1.5
์ฌ๋ ํ์ฅ, ์งํ ํต๋ก, ํฐ๋๊ณผ ๊ฐ์ ํ๊ฒฝ์์๋ ๊ตฌ์กฐ ์ธ๋ ฅ์ ์ด๋์ ๋ฐ๋ผ
๊ธฐ์กด ํต์ ์ธํ๋ผ(LTE/5G)๊ฐ ๊ธ๊ฒฉํ ์ฝํ๋๊ฑฐ๋ ์์ ํ ๋จ์ ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ๋ฐ์ํฉ๋๋ค.
๊ณ ์ ํ ์ค๊ณ๊ธฐ๋ ๋จ์ ์ ํธ ์ฆํญ ๋ฐฉ์์ ์ด๋ฌํ ๋์ ์ธ ํ๊ฒฝ ๋ณํ์ ํจ๊ณผ์ ์ผ๋ก ๋์ํ๊ธฐ ์ด๋ ต์ต๋๋ค.
๋ณธ ํ๋ก์ ํธ๋ ์ด๋ฌํ ํ๊ณ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด,
ํต์ ํ์ง(TQ/RSSI)์ ์ค์๊ฐ์ผ๋ก ๋ถ์ํ๊ณ ์ค๊ณ ๋ก๋ด์ด ์ง์ ์ด๋ํ์ฌ
ํต์ ๊ฒฝ๋ก๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฌ๊ตฌ์ฑํ๋ ์์จ ์ด๋ํ ๋ฉ์ ์ค๊ณ ์์คํ
์ ์ ์ํฉ๋๋ค.
- ๐ก ์๊ฐ ์น์ ๋คํธ์ํฌ (Self-Healing Network): - BATMAN-ADV ๊ธฐ๋ฐ Layer 2 ๋ฉ์ ๋คํธ์ํฌ
- ์ค์ AP, IP ์ค์ , NAT/DHCP ์์ด ๋ ธ๋ ์๋ ํฉ๋ฅ ๋ฐ ๊ฒฝ๋ก ๋ณต๊ตฌ
- ๐ค ํต์ ํ์ง ๊ธฐ๋ฐ ์์จ ์ฃผํ (Connectivity-Aware Navigation): - Nav2/SLAM ๋ฏธ์ฌ์ฉ
- ๋งํฌ ํ์ง(TQ/RSSI)์ ๋ชฉ์ ํจ์๋ก ํ๋ Gradient-based ์ด๋ ์ ์ด
- ์ง๋ ์์ด ํต์ ํ์ง์ ์ง์ ์ต์ ํ
- ๐งฑ NLOS(๋น๊ฐ์๊ถ) ๊ทน๋ณต: - ์ฝ๋, ์ฅ์ ๋ฌผ, ๊ฑฐ๋ฆฌ ์ฆ๊ฐ๋ก ์ธํ ํต์ ๋จ์ ์ ๋ฌผ๋ฆฌ์ ์ค๊ณ๋ก ํด๊ฒฐ
- ๐ฅ๏ธ ์ค์๊ฐ ๋ชจ๋ํฐ๋ง GUI: - ๋คํธ์ํฌ ํ ํด๋ก์ง, TQ, ๋ก๋ด ์ํ๋ฅผ ์ง๊ด์ ์ผ๋ก ์๊ฐํ
์ด ํ๋ก์ ํธ์์ ์ ๋ ํต์ ํ์ง์ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ ๋ก๋ด์ด ์ด๋ํ๋๋ก ํ๋ ํต์ฌ ๋ก์ง์ ์ค๊ณ ๋ฐ ๊ตฌํ์ ๋ด๋นํ์ต๋๋ค.
- TQ/RSSI๋ฅผ ์ต์ ํ ๋ชฉํ๋ก ์ฌ์ฉํ๋ ์ฐ๊ฒฐ ์ธ์ ๋ด๋น๊ฒ์ด์ ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณ ๋ฐ ๊ตฌํ
- BATMAN-ADV ๋ฉ์ ๋คํธ์ํฌ ๋ฉํธ๋ฆญ์ ROS 2 ์ ์ด ๋ฃจํ์ ์ฐ๋
- SLAM ๋๋ Nav2์ ์์กดํ์ง ์๋ ์์จ ๋ฆด๋ ์ด ์ฌ๋ฐฐ์น ๋ก์ง ๊ฐ๋ฐ
- RSSI/TQ ๋ ธ์ด์ฆ๋ก ์ธํ ๋ถ์์ ํ ์์ง์์ ๋ถ์ํ๊ณ ์ ์ด ํ๋ผ๋ฏธํฐ ์กฐ์
- ๋ฆฌ๋ ์ค ๋คํธ์ํน๊ณผ ROS 2 ๊ธฐ๋ฐ ๋ก๋ด ์ ์ด ๊ฐ์ ์ฐ๋ ๋ฐ ์์คํ ํตํฉ์ ๊ธฐ์ฌ
-
Why I Chose BATMAN-ADV?
- ์๊ฐ ์น์ ๊ธฐ๋ฅ์ ๊ฐ์ถ L2 ๋ฉ์ ๋ผ์ฐํ
- ๋ ธ๋ ์ด๋์ฑ ๋ฐ ์ธํ๋ผ ์ฅ์ ์ ๊ฐ์ธํจ
- ์ฌ๋ ๋ฐ ์์ ๋คํธ์ํฌ์ ์ ํฉ
-
Why I Used Gradient-based Navigation Instead of Nav2/SLAM?
- ์์น ์ ํ์ฑ์ด ์๋ ์ปค๋ฎค๋์ผ์ด์ ํ์ง์ด ์ฃผ์ ๋ชฉํ
- ์ฌ์ ์ง๋๋ ์์น ํ์ธ์ด ํ์ ์์
- ๋ถ์์ ํ ํ๊ฒฝ์ ์ ํฉํ ๊ฐ๋ณ๊ณ ๋ฐ์ํ ์ ์ด
๐ธ Qt Dashboard Screenshot
Qt ๊ธฐ๋ฐ ๊ด์ ๋์๋ณด๋ โ ๋ฉ์ ๋คํธ์ํฌ(TQ) ๋ฐ ์์คํ ๋์์ ์ค์๊ฐ ์๊ฐํ
๋ณธ ์์คํ ์ ROS 2๋ฅผ ๋ฏธ๋ค์จ์ด๋ก ์ฌ์ฉํ๋ฉฐ, Batman-adv ์ปค๋ ๋ชจ๋์ ํตํด ํฌ๋ช ํ(Transparent) ๋ฉ์ ๋คํธ์ํฌ๋ฅผ ํ์ฑํฉ๋๋ค.
flowchart LR
A["Command Center<br/>(Qt Dashboard)"] <-->|Batman-adv Mesh| B("Relay Robot<br/>TurtleBot3")
B <-->|Batman-adv Mesh| C["Explorer Client<br/>Camera/Sensor"]
subgraph "Relay Robot Logic"
B1[TQ Analyzer] --> B2[Connectivity Gradient Navigation]
B2 --> B3[Motor Control]
end
Intel-4th-Project
โโโ ๐ comm_pkg # Batman-adv ๋ฐ ๋คํธ์ํฌ ์ํ ๋ชจ๋ํฐ๋ง ๋ชจ๋ (Non-ROS)
โโโ ๐ ros2_turtlebot_createdpkg # ROS 2 ํต์ฌ ํจํค์ง
โโโ ๐ relay_bot_pkg # [Core] ํต์ ํ์ง ๊ธฐ๋ฐ ์์จ ์ฃผํ ๋
ธ๋ (Nav2 ๋ฏธ์ฌ์ฉ, ์์ฒด ์๊ณ ๋ฆฌ์ฆ)
โโโ ๐ robot_Qt # [GUI] ๊ด์ ์ผํฐ์ฉ Qt ๋์๋ณด๋ ์ดํ๋ฆฌ์ผ์ด์
Without Relay
- ํ์ฌ ๋ก๋ด์ด ์ฝ๋๋ฅผ ๋์๊ฐ๋ฉด ํต์ ๋งํฌ๊ฐ ๊ธ๊ฒฉํ ์ฝํ๋๊ฑฐ๋ ์์ ํ ๋จ์ ๋จ
With Mobile Relay
- ํต์ ํ์ง(TQ) ์ ํ๋ฅผ ๊ฐ์งํ ์ค๊ณ ๋ก๋ด์ด ์ฝ๋ ์ ๊ตฌ๋ก ์ด๋
- ๋ฉ์ ๋คํธ์ํฌ๊ฐ ์ฌ๊ตฌ์ฑ๋๋ฉฐ ์์ ์คํธ๋ฆผ ์ ์ง
Without Relay
- ํ์ฌ ๊ฑฐ๋ฆฌ๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ํต์ ํ์ง์ด ์๊ณ์น ์ดํ๋ก ํ๋ฝ
- ์์ ํ๋ ์ ๋๋กญ ๋ฐ ์ฐ๊ฒฐ ๋ถ์์ ๋ฐ์
With Mobile Relay
- ์ค๊ณ ๋ก๋ด์ด ์ ์งํ์ฌ ์ต์ ์ค๊ณ ์์น ํ๋ณด
- ํต์ ๊ฐ๋ฅ ๊ฑฐ๋ฆฌ ๋ฐ ๋งํฌ ์์ ์ฑ ํ์ฅ
Without Relay
With Mobile Relay
- TQ/RSSI๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฆด๋ ์ด ๋ก๋ด์ ์ฌ๋ฐฐ์นํ์ฌ NLOS ์ฝ๋ ์๋๋ฆฌ์ค์์ ๋งํฌ ๋ณต๊ตฌ๋ฅผ ์์ฐํ์ต๋๋ค.
- ์ง์ ํต์ (์ค๊ณ ์์ด)์ ๋นํด ์์ ์ ์ธ ๋น๋์ค ์คํธ๋ฆฌ๋ฐ์ ์ ์งํฉ๋๋ค.
์ ๋ฐ๋ชจ๋ ์ค์ ๋ณต๋/์ฝ๋ ํ๊ฒฝ์์ ์ดฌ์ํ์ผ๋ฉฐ, ์๋๋ ์คํ์ ์ฌ์ฉํ TurtleBot3 ๊ธฐ๋ฐ ์ค๊ณ ๋ก๋ด ๊ตฌ์ฑ์ ๋๋ค.
TurtleBot3 ๊ธฐ๋ฐ ์ด๋ํ ๋ฉ์ ์ค๊ณ ๋ก๋ด ์คํ ๊ตฌ์ฑ
BATMAN-ADV ๋ฉ์ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฌผ๋ฆฌ์ ์ผ๋ก ํต์ ๊ฒฝ๋ก๋ฅผ ์ฌ๊ตฌ์ฑ
- Hardware: TurtleBot3 (Burger/Waffle), Raspberry Pi 4, USB Wi-Fi Dongle (Mesh mode ์ง์)
- OS: Ubuntu 22.04 LTS (Jammy Jellyfish)
- ROS 2: Humble Hawksbill
# 1. ์ํฌ์คํ์ด์ค ์ด๋ ๋ฐ ํด๋ก
cd ~/turtlebot3_ws/src/
git clone https://github.com/mmc47047/Relay_Bot.git
# 2. ์์กด์ฑ ์ค์น ๋ฐ ๋น๋
cd ~/turtlebot3_ws
colcon build --symlink-install
source install/local_setup.bash
# 3. Batman-adv ์ค์ (๊ฐ ๋
ธ๋์์ ์คํ)
sudo bash comm_pkg/scripts/setup_batman.sh
# 4. ์ค๊ณ ๋ก๋ด ๋
ธ๋ ์คํ
ros2 launch relay_bot_pkg relay_system.launch.py
# 5. Qt GUI ์คํ (PC)
ros2 run robot_Qt gui_dashboard
Mesh interface
bash
ip -4 addr show bat0
sudo batctl o
ROS 2 topics
ros2 topic list | grep -E "tq|rssi|cmd_vel"
ros2 topic echo /cmd_vel
Expected behavior
-
TQ/RSSI๊ฐ ๊ฐ์ํ๋ฉด ์ค๊ณ ๋ก๋ด์ด ์ด๋์ ์์ํจ
-
์ค๊ณ ๋ก๋ด์ด ์์น๋ฅผ ์ก์ผ๋ฉด TQ๊ฐ ํ๋ณต๋๊ณ ํต์ ์ด ์์ ํ๋จ
- RSSI/TQ ๋ณ๋์ผ๋ก ์ธํด ๋ฆด๋ ์ด ์์ง์์ ๊ตญ๋ถ์ ์ธ ์ง๋์ด ๋ฐ์ํ ์ ์์ต๋๋ค
- ๋จ์ผ ๋ฆด๋ ์ด ์๋๋ฆฌ์ค; ๋ค์ค ๋ฆด๋ ์ด ์กฐ์ ์ ํฅํ ์์ ์ ๋๋ค
- ์ฅ์ ๋ฌผ ์ธ์ ๋ด๋น๊ฒ์ด์ ์ ๋ ๋ณต์กํ ํ๊ฒฝ์ ํตํฉ๋ ์ ์์ต๋๋ค
- ๋ฐฐํธ๋งจ-ADV๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ด์ด 2 ๋ฉ์ ๋คํธ์ํฌ๋ฅผ ๊ตฌํํ๊ณ ๊ธฐ์กด IP ๋ผ์ฐํ ๊ณผ์ ์ฐจ์ด์ ์ ์ดํด
- SLAM์ด๋ Nav2์ ์์กดํ์ง ์๊ณ ์ฐ๊ฒฐ์ฑ์ ์ธ์ํ๋ ๋ด๋น๊ฒ์ด์ ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณ
- ์ค์ ํ๊ฒฝ์์ RSSI/TQ ๋ ธ์ด์ฆ์ ๋ฐ์ ์ ์ด์ ์ค์ฉ์ ์ธ ๋์ ๊ณผ์ ํ์ต
- ROS 2, ๋ฆฌ๋ ์ค ๋คํธ์ํน ๋ฐ ์๋ฒ ๋๋ ์์คํ ์ ๋จ์ผ ์์จ ์์คํ ์ ํตํฉ
| ์ญํ | ์ด๋ฆ | ๋ด๋น ์ ๋ฌด | GitHub |
|---|---|---|---|
| ํ์ฅ | ๊น์ฑ์ค | ํ๋ก์ ํธ ์ด๊ด, ROS2 ์์จ ์ฃผํ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ | @seolihan651jw |
| ํ์ | ๊น์๊ต | Batman-adv Mesh ๋คํธ์ํฌ ๊ตฌ์ถ ๋ฐ ์ปค๋ ๋ชจ๋ ์ต์ ํ | @mmc47047 |
| ํ์ | ์ค์ฐฌ๋ฏผ | Qt GUI ๋์๋ณด๋ ๊ฐ๋ฐ, ์์คํ ํตํฉ ํ ์คํธ | @CMYMC |
| ํ์ | ์ ์ฐฌ์ | ROS2 ์ผ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ํ๋์จ์ด ์ ์ด | @salnock |
This project is licensed under the MIT License - see the LICENSE file for details.



