Skip to content

open-SDI/SDR_DEVICE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

21 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿค– TurtleBot3 ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํ”„๋กœ์„ธ์Šค ๊ฐ€์ด๋“œ

์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๊ตฌ์„ฑ์„ ์•ˆํ•˜์…จ์œผ๋ฉด ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๊ตฌ์„ฑ๋ถ€ํ„ฐ ํ•ด์ฃผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค!

[์˜ค์ผ€์Šคํฌ๋ ˆ์ด์…˜ ๊ตฌ์„ฑ] => https://github.com/KopenSDI/SDI-Orchestration

๐Ÿ“š ๋ชฉ์ฐจ

  1. ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ ๊ตฌ์กฐ
  2. ํ™˜๊ฒฝ ์„ค์ • ๋ฐ ๋ฒ„์ „
  3. ํ”„๋กœ์„ธ์Šค ์—ญํ• 
  4. ํ”„๋กœ์„ธ์Šค ์„ค์น˜
    1. ์˜์กด์„ฑ ์„ค์น˜
    2. ์ดˆ๊ธฐ ํ™˜๊ฒฝ ์„ธํŒ…
  5. ํ”„๋กœ์„ธ์Šค ์‹คํ–‰
    1. ๋ฐ์ดํ„ฐ ์ถ”์ถœ ์ „ ์ค€๋น„
    2. ๋ฐฐํ„ฐ๋ฆฌยท์œ„์น˜ ์ •๋ณด ์ถ”์ถœ
  6. ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ ๊ฐ€์ด๋“œ
  7. ์ฐธ๊ณ  ๋ฌธ์„œ

๐Ÿ—‚๏ธ 1. ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ ๊ตฌ์กฐ

SDR_DEVICE/                      # TurtleBot Raspberry Pi ์ธก ์ „์šฉ ๋””๋ ‰ํ„ฐ๋ฆฌ
โ”œโ”€โ”€ src/                          # ์†Œ์Šค ์ฝ”๋“œ
โ”‚   โ””โ”€โ”€ exporter.py               # โ†ณ ROS โœ• metric-collector ๋ธŒ๋ฆฟ์ง€ (Python 3 Node)
โ”œโ”€โ”€ scripts/                      # ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ๋“ค
โ”‚   โ”œโ”€โ”€ etri-setup/               # โ†ณ ETRI ํ™˜๊ฒฝ ์„ค์ • ์Šคํฌ๋ฆฝํŠธ
โ”‚   โ”‚   โ”œโ”€โ”€ k3s/                  # โ†ณ K3s ํด๋Ÿฌ์Šคํ„ฐ ์„ค์ • ๋ฐ ๊ด€๋ฆฌ ์Šคํฌ๋ฆฝํŠธ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ 01.sync-time-from-server.sh
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ 02.k3s-auto-join.sh
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ 03.load-docker-images.sh
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ save-docker-images.sh
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ remove-k3s.sh
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ README.md
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ CONFIGURATION.md
โ”‚   โ”‚   โ”œโ”€โ”€ network/              # โ†ณ ๋„คํŠธ์›Œํฌ ์™ธ๋ถ€๋ง ์ฐจ๋‹จ/๋ณต๊ตฌ ์Šคํฌ๋ฆฝํŠธ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ 01.block_network_option.sh
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ 04.restore_network_option.sh
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ README.md
โ”‚   โ”‚   โ””โ”€โ”€ turtlebot3/           # โ†ณ TurtleBot3 ๊ด€๋ จ ์Šคํฌ๋ฆฝํŠธ
โ”‚   โ”‚       โ”œโ”€โ”€ bringup-turtlebot-discovery.sh
โ”‚   โ”‚       โ”œโ”€โ”€ README.md
โ”‚   โ”‚       โ””โ”€โ”€ CONFIGURATION.md
โ”‚   โ””โ”€โ”€ run_exporter.sh          # โ†ณ ์‹คํ–‰ ๋ž˜ํผ: ENV ์ฃผ์ž… + ROS setup + exporter ํ˜ธ์ถœ
โ””โ”€โ”€ README.md                     # โ†ณ (ํ˜„์žฌ) ์‚ฌ์šฉ์ž ๊ฐ€์ด๋“œ

๐Ÿ› ๏ธ2. ํ™˜๊ฒฝ ์„ค์ • ๋ฐ ๋ฒ„์ „

ํ•ญ๋ชฉ ๋ฒ„์ „ / ์„ธ๋ถ€ ์ •๋ณด
ROS 2 ros2-jazzy
Operating System Ubuntu 24.04.2 LTS
Kernel Linux 6.8.0-1028-raspi
Architecture arm64
k3s v1.32.5+k3s1
Container Runtime containerd://2.0.5-k3s1.32
๊ฒฝ๋กœ ์œ ํ˜• ํ•ต์‹ฌ ๊ธฐ๋Šฅ
src/exporter.py Python 3 /battery_stateยท/amcl_pose ๊ตฌ๋…ย โ†’ย 5โ€ฏ์ดˆ๋งˆ๋‹ค metric-collector ๋ฐœํ–‰ย ย (ํ:ย turtlebot.telemetry)
scripts/run_exporter.sh Bash metric-collectorยทRobot ์‹๋ณ„ ENV๋ฅผ ์„ค์ •ํ•˜๊ณ  python3 ../src/exporter.py ์‹คํ–‰
scripts/etri-setup/k3s/ Shell K3s ํด๋Ÿฌ์Šคํ„ฐ ์„ค์ •, ์‹œ๊ฐ„ ๋™๊ธฐํ™”, Docker ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ ์Šคํฌ๋ฆฝํŠธ
scripts/etri-setup/network/ Shell ๋„คํŠธ์›Œํฌ ์™ธ๋ถ€๋ง ์ฐจ๋‹จ ๋ฐ ๋ณต๊ตฌ ์Šคํฌ๋ฆฝํŠธ
scripts/etri-setup/turtlebot3/ Shell TurtleBot3 bringup ๋ฐ Discovery Server ์„ค์ • ์Šคํฌ๋ฆฝํŠธ
README.md Markdown ํ”„๋กœ์ ํŠธ ์ „์ฒด ๊ฐ€์ด๋“œ ๋ฐ ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ๋ฒ•

3. ํ”„๋กœ์„ธ์Šค ์—ญํ• 

  • ๐Ÿ“ก run_exporter: ํ„ฐํ‹€๋ด‡์˜ ๋ฐฐํ„ฐ๋ฆฌ ์ƒํƒœ์™€ ์œ„์น˜ ์ •๋ณด๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆ˜์ง‘ํ•ด Metric-Collector์— ์ „์†กํ•˜๋Š” ์ต์Šคํฌํ„ฐ ํ”„๋กœ์„ธ์Šค
ROS 2 ํ† ํ”ฝ (/battery_state & /amcl_pose)
        โ”‚ (QoS ์„ค์ • BEST_EFFORT / RELIABLE)
        โ–ผ
            ExporterNode (rclpy)
                โ”œ battery_callback       โ€”โ€”  ์ „์••ยทํผ์„ผํŠธ ์‹ค์‹œ๊ฐ„ ์ €์žฅ
                โ”œ pose_callback         โ€”โ€”  XยทY ์ขŒํ‘œ ์ €์žฅ
                โ”” publish_telemetry()   โ€”โ€”  5ย ์ดˆ๋งˆ๋‹ค metric-collector ๋ฐœํ–‰
        โ–ผ
metric-collectorย Queue  โ”€โ”€ "turtlebot.telemetry" (durable)
  • ๋ฉ”์‹œ์ง€ ์˜ˆ์‹œ(JSON)*
{
  "ts": 1719123456789012345,  // epochโ€‘ns
  "bot": "tb3-alpha",
  "type": "telemetry",
  "battery": { "percentage": 0.83, "voltage": 11.8, "wh": 16.583 },
  "pose":    { "x": 4.16,      "y": -1.92 }
}

4. ํ”„๋กœ์„ธ์Šค ์„ค์น˜

์˜์กด์„ฑ ์„ค์น˜

git clone https://github.com/sungmin306/SDI-Turtlebot-Setting.git
cd SDI-Turtlebot-Setting/KETI_TURTLEBOT
sudo apt install -y python3-pika  # ํ„ฐํ‹€๋ด‡ ๋ฉ”ํŠธ๋ฆญ ๋ฐ์ดํ„ฐ ๊ด€๋ จ ์˜์กด์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

์ดˆ๊ธฐ ํ™˜๊ฒฝ ์„ธํŒ…

vi scripts/run_exporter.sh  # ์ฃผ์„ ์ฒ˜๋ฆฌ๋œ ๋ถ€๋ถ„์„ ๋ณธ์ธ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ˆ˜์ •(์ฃผ์„ ์„ค๋ช… ์ฐธ๊ณ )

5. ํ”„๋กœ์„ธ์Šค ์‹คํ–‰

๋ฐ์ดํ„ฐ ์ถ”์ถœ ์ „ ์ค€๋น„

โš ๏ธ TurtleBot3์—์„œ 2D Pose Estimate๋ฅผ ์„ค์ •ํ•ด์•ผ /tfยท/amcl_pose ๋“ฑ ์œ„์น˜ ๊ด€๋ จ ROS ํ† ํ”ฝ์„ ์ •์ƒ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„์™€ ๊ฐ™์ด RViz์—์„œ Initial Pose ํ• ๋‹น ํ›„ SLAM ๋งต์„ ์™„์„ฑํ•˜๋ฉด /amcl_pose ํ† ํ”ฝ์— ์ขŒํ‘œ๊ฐ€ ๋“ค์–ด์˜ค๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

๊ฒฐ๊ณผ ์˜ˆ์‹œ:


6. ๋ฐฐํ„ฐ๋ฆฌยท์œ„์น˜ ์ •๋ณด ์ถ”์ถœ

# 1) ํ„ฐํ‹€๋ด‡ bringup(ํ„ฐํ‹€๋ด‡์—์„œ ์‹คํ–‰)
ros2 launch turtlebot3_bringup robot.launch.py

# 2) SLAM ๋งต ํš๋“(ํ„ฐํ‹€๋ด‡-Remote-PC์—์„œ ์‹คํ–‰)
ros2 launch turtlebot3_cartographer cartographer.launch.py  # ๊ณต์‹ ๊ฐ€์ด๋“œ ์ฐธ๊ณ 

# 3) Navigation ํ™œ์„ฑํ™”(ํ„ฐํ‹€๋ด‡-Remote-PC ์—์„œ ์‹คํ–‰)
ros2 launch turtlebot3_navigation2 navigation2.launch.py   # ๊ณต์‹ ๊ฐ€์ด๋“œ ์ฐธ๊ณ 

# 4) ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰(ํ„ฐํ‹€๋ด‡์—์„œ ์‹คํ–‰)
./scripts/run_exporter.sh # SDI-์Šค์ผ€์ค„๋Ÿฌ ์‚ฌ์šฉ์‹œ ๊ผญ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ฒฐ๊ณผ

Image

์ค‘์š” SLAM ๋‹จ๊ณ„์—์„œ ์ƒ์„ฑํ•œ ๋งต(.pgm & .yaml)์„ ์ €์žฅํ•œ ๋’ค Navigation์„ ์‹คํ–‰ํ•ด์•ผ ์œ„์น˜ ํ† ํ”ฝ์ด ์ •์ƒ์ ์œผ๋กœ ๊ฒŒ์‹œ๋œ๋‹ค.


7. ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ ๊ฐ€์ด๋“œ

7.1 K3s ์„ค์ • ์Šคํฌ๋ฆฝํŠธ

K3s ํด๋Ÿฌ์Šคํ„ฐ ์„ค์ • ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ๋“ค์ด scripts/etri-setup/k3s/ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ์Šคํฌ๋ฆฝํŠธ:

  • 01.sync-time-from-server.sh: ์„œ๋ฒ„ ์‹œ๊ฐ„ ๋™๊ธฐํ™”
  • 02.k3s-auto-join.sh: K3s ํด๋Ÿฌ์Šคํ„ฐ ์ž๋™ ์กฐ์ธ
  • 03.load-docker-images.sh: Docker ์ด๋ฏธ์ง€ ๋กœ๋“œ
  • save-docker-images.sh: Docker ์ด๋ฏธ์ง€ ์ €์žฅ
  • remove-k3s.sh: K3s ์ œ๊ฑฐ

์ž์„ธํ•œ ์‚ฌ์šฉ๋ฒ•์€ scripts/etri-setup/k3s/README.md ๋ฐ scripts/etri-setup/k3s/CONFIGURATION.md๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

7.2 ๋„คํŠธ์›Œํฌ ์„ค์ • ์Šคํฌ๋ฆฝํŠธ

๋„คํŠธ์›Œํฌ ์™ธ๋ถ€๋ง ์ฐจ๋‹จ ๋ฐ ๋ณต๊ตฌ๋ฅผ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ๋“ค์ด scripts/etri-setup/network/ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ์Šคํฌ๋ฆฝํŠธ:

  • 01.block_network_option.sh: ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ ์ฐจ๋‹จ
  • 04.restore_network_option.sh: ๋„คํŠธ์›Œํฌ ๋ณต๊ตฌ

์ž์„ธํ•œ ์‚ฌ์šฉ๋ฒ•์€ scripts/etri-setup/network/README.md๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

7.3 TurtleBot3 ์Šคํฌ๋ฆฝํŠธ

TurtleBot3 ๊ด€๋ จ ์Šคํฌ๋ฆฝํŠธ๋“ค์ด scripts/etri-setup/turtlebot3/ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ์Šคํฌ๋ฆฝํŠธ:

  • bringup-turtlebot-discovery.sh: Discovery Server๋ฅผ ์‚ฌ์šฉํ•œ TurtleBot3 bringup

์ž์„ธํ•œ ์‚ฌ์šฉ๋ฒ•์€ scripts/etri-setup/turtlebot3/README.md ๋ฐ scripts/etri-setup/turtlebot3/CONFIGURATION.md๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

โš ๏ธ IP ์ฃผ์†Œ ์„ค์ • ์ฃผ์˜์‚ฌํ•ญ:

  • ๊ฐ ์Šคํฌ๋ฆฝํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ CONFIGURATION.md ํŒŒ์ผ์—์„œ IP ์ฃผ์†Œ ์„ค์ • ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์„ธ์š”.
  • ํ•˜๋“œ์ฝ”๋”ฉ๋œ IP ์ฃผ์†Œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

7.4 ํ•„์š”ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ ์„ค์น˜

๋‹ค์Œ ํŒŒ์ผ๋“ค์€ .gitignore๋กœ ์ธํ•ด ์ €์žฅ์†Œ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. K3s ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด scripts/etri-setup/k3s/ ๋””๋ ‰ํ† ๋ฆฌ์— ์ง์ ‘ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๋กœ ์„ค๋ช… ์„ค์น˜ ๋ฐฉ๋ฒ•
scripts/etri-setup/k3s/k3s K3s ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ K3s ๊ณต์‹ ๋ฆด๋ฆฌ์Šค์—์„œ arm64 ๋ฒ„์ „ ๋‹ค์šด๋กœ๋“œ
scripts/etri-setup/k3s/k3s-airgap-assets-v1.33.4+k3s1-arm64/ Air-gap ์„ค์น˜ ํŒจํ‚ค์ง€ ๋™์ผ ๋ฆด๋ฆฌ์Šค ํŽ˜์ด์ง€์˜ airgap assets ๋‹ค์šด๋กœ๋“œ ๋˜๋Š” ๋‚ด๋ถ€ ๋ฐฐํฌ ์„œ๋ฒ„์—์„œ ๋ณต์‚ฌ

์ฃผ์˜: ์œ„ ํŒŒ์ผ๋“ค์ด ์—†์œผ๋ฉด 02.k3s-auto-join.sh, 03.load-docker-images.sh ๋“ฑ K3s ๊ด€๋ จ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ •์ƒ ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


์ฐธ๊ณ  ๋ฌธ์„œ

์ฃผ์ œ ๋งํฌ
SLAM ์„ค์ • https://emanual.robotis.com/docs/en/platform/turtlebot3/slam/#run-slam-node
Navigation ์„ค์ • https://emanual.robotis.com/docs/en/platform/turtlebot3/navigation/#run-navigation-nodes
SDI-Orchestration https://github.com/KopenSDI/SDI-Orchestration

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors