Skip to content

BSSM-Mother/mother_v2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

16 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

MotherV2 โ€” Object Following Robot

Raspberry Pi 4B + ROS2 Jazzy ๊ธฐ๋ฐ˜์˜ ์ž์œจ ์ถ”์  ๋กœ๋ด‡.
LiDAR + ์นด๋ฉ”๋ผ๋กœ ๋Œ€์ƒ(๊ธฐ๋ณธ: ์‚ฌ๋žŒ)์„ ์ธ์‹ยท์ถ”์ ํ•˜๋ฉฐ, SLAM ๋งต ๊ธฐ๋ฐ˜ ๋™์  ๊ฐ์ฒด ํƒ์ง€ ๋ฐ ์ž์œจ ํƒ์ƒ‰์„ ์ง€์›ํ•œ๋‹ค.


์‹œ์Šคํ…œ ๊ตฌ์„ฑ

[IMX219 ์นด๋ฉ”๋ผ]         [RPLIDAR A1/A2]
      |                        |
      | /motherv2/image_raw    | /scan
      v                        v
[detection_node]         [slam_toolbox]โ”€โ”€โ†’ /map (OccupancyGrid)
      |                        |              |
      | /motherv2/detections   | map TF       |
      v                        v              |
[follower_node]โ†โ”€โ”€โ”€โ”€โ”€โ”€[slam_localization_node]
      |                        |
      | /motherv2/cmd_motor    | /motherv2/object_estimates
      v                        |
[serial_node]โ”€โ”€โ†’ STM32         v
                         [web_node] :8080
                                |
                         [explore_node] (์ž์œจ ํƒ์ƒ‰)

๋…ธ๋“œ๋ณ„ ๋™์ž‘ ์›๋ฆฌ

camera_node (camera_ros)

  • libcamera ๋ฐฑ์—”๋“œ๋กœ IMX219 ์นด๋ฉ”๋ผ๋ฅผ ์ง์ ‘ ์ œ์–ด
  • BGR888 ํฌ๋งท์œผ๋กœ /motherv2/image_raw ํผ๋ธ”๋ฆฌ์‹œ
  • ๊ธฐ๋ณธ ํ•ด์ƒ๋„: 640ร—360 @ 30fps

detection_node

  • ํ•ต์‹ฌ ๊ตฌ์กฐ: Detection + Tracking ๋ถ„๋ฆฌ
    • ์ถ”๋ก (MediaPipe): ๋ณ„๋„ ์Šค๋ ˆ๋“œ์—์„œ 0.5์ดˆ๋งˆ๋‹ค ์‹คํ–‰ โ€” CPU ๋ถ€ํ•˜ ์ œํ•œ
    • ํŠธ๋ž˜ํ‚น(MOSSE): ๋ฉ”์ธ ์ฝœ๋ฐฑ์—์„œ ๋งค ํ”„๋ ˆ์ž„(~30fps) ์‹คํ–‰ โ€” ์‘๋‹ต์„ฑ ์œ ์ง€
  • ํƒ์ง€ ๋Œ€์ƒ: ์‚ฌ๋žŒ (COCO class 0). target_class_id ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

slam_localization_node

  • LiDAR ๊นŠ์ด์™€ ์นด๋ฉ”๋ผ ํƒ์ง€ ๊ฒฐ๊ณผ๋ฅผ ์œตํ•ฉํ•ด ๊ฐ์ฒด์˜ SLAM ๋งต ์ขŒํ‘œ๋ฅผ ์ถ”์ •
  • 3๋‹จ๊ณ„ ์ถ”์ 
    1. ์นด๋ฉ”๋ผ + LiDAR: bbox ์ค‘์‹ฌ ๋ฐฉํ–ฅ์œผ๋กœ LiDAR ๊ฑฐ๋ฆฌ ์ธก์ • โ†’ ๋งต ์ขŒํ‘œ ๋ณ€ํ™˜
    2. LiDAR only (์นด๋ฉ”๋ผ FOV ์ดํƒˆ ์‹œ): ์ •์  ๋งต๊ณผ ํ˜„์žฌ ์Šค์บ”์„ ๋น„๊ตํ•ด ๋™์  ๊ฐ์ฒด(์‚ฌ๋žŒ) ํƒ์ง€
    3. Dead-reckoning: ๊ฐ์ฒด ์™„์ „ ์†Œ์‹ค ์‹œ ๋งˆ์ง€๋ง‰ ์†๋„๋ฒกํ„ฐ๋กœ 2์ดˆ๊ฐ„ ์œ„์น˜ ์˜ˆ์ธก
  • SLAM ๋ชจ๋“œ
    • mapping: slam_toolbox๋กœ ๋งต ์ƒ์„ฑ ์ค‘. LiDAR ๋ฐฉํ–ฅ ๊ธฐ๋ฐ˜ ์ถ”์ •
    • tracking: ์ €์žฅ๋œ ๋งต ์Šค๋ƒ…์ƒท๊ณผ ํ˜„์žฌ ์Šค์บ”์˜ ์ฐจ๋ถ„์œผ๋กœ ๋™์  ๊ฐ์ฒด ์ถ”์ • (๋” ์ •ํ™•)

explore_node

  • /motherv2/slam_mode = "explore" ์ˆ˜์‹  ์‹œ ์ž๋™ ํ™œ์„ฑํ™”
  • Nav2 ์—†์ด LiDAR + OccupancyGrid๋งŒ์œผ๋กœ frontier(๋ฏธํƒ์ƒ‰ ๊ฒฝ๊ณ„) ๊ธฐ๋ฐ˜ ์ž์œจ ๋งตํ•‘
  • ์ƒํƒœ ๋จธ์‹ : idle โ†’ rotating โ†’ driving โ†’ idle (๋ฐ˜๋ณต)
    • frontier ์†Œ์ง„ ์‹œ "tracking" ๋ชจ๋“œ๋กœ ์ž๋™ ์ „ํ™˜
    • ์ •์ฒด(8์ดˆ/12cm ๋ฏธ๋งŒ ์ด๋™) ๊ฐ์ง€ ์‹œ ํ›„์ง„ + ์šฐํšŒ์ „ ๋ณต๊ตฌ
  • ์šฉ๋„: ๋ฐฉ ํ•˜๋‚˜ ํฌ๊ธฐ์˜ ํ™˜๊ฒฝ์„ ์ฒ˜์Œ ํƒ์ƒ‰ํ•  ๋•Œ ์‚ฌ์šฉ

follower_node

  • Angular PID: ํ™”๋ฉด ์ค‘์•™์— ๋Œ€์ƒ์„ ์œ ์ง€ (์ขŒ์šฐ steering)
  • Distance PID: LiDAR ๊นŠ์ด ๊ธฐ๋ฐ˜ ๊ฑฐ๋ฆฌ ์ œ์–ด (target_depth_m ๊ธฐ๋ณธ 0.8m)
  • use_slam_depth=true์ด๋ฉด LiDAR ๊นŠ์ด ์ง์ ‘ ์‚ฌ์šฉ, ์•„๋‹ˆ๋ฉด bbox ๋†’์ด ๋น„์œจ๋กœ ์ถ”์ •

serial_node

  • STM32 UART ํ”„๋กœํ† ์ฝœ: right_speed,left_speed,right_dir,left_dir\n
  • Dead zone ๋ณด์ƒ: ์ž…๋ ฅ์„ min_speed~max_speed๋กœ ์„ ํ˜• ๋งคํ•‘
  • ์•ˆ์ „ ํƒ€์ด๋จธ: 0.5์ดˆ๊ฐ„ ๋ช…๋ น ์—†์œผ๋ฉด ์ž๋™ ์ •์ง€

web_node

  • :8080/ โ€” ์›น ๋Œ€์‹œ๋ณด๋“œ (๋ผ์ด๋ธŒ ์นด๋ฉ”๋ผ + SLAM ๋งต + ๋กœ๊ทธ)
  • :8080/stream โ€” MJPEG ์ŠคํŠธ๋ฆผ

๋นŒ๋“œ & ์‹คํ–‰

# ๋นŒ๋“œ
./build.sh

# ์‹คํ–‰ (SLAM ํฌํ•จ)
./run.sh

# SLAM ์—†์ด ์‹คํ–‰ (์นด๋ฉ”๋ผ+ํƒ์ง€๋งŒ)
./run.sh use_slam:=false

# ํŒŒ๋ผ๋ฏธํ„ฐ ์˜ค๋ฒ„๋ผ์ด๋“œ ์˜ˆ์‹œ
./run.sh camera_orientation:=2 lidar_port:=/dev/ttyAMA2

# API ์„œ๋ฒ„ ์—ฐ๋™ (API_URL ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • ์‹œ api_node ์ž๋™ ์‹คํ–‰)
API_URL=http://your-server/api ./run.sh

์›น ๋Œ€์‹œ๋ณด๋“œ: http://<๋กœ๋ด‡ IP>:8080


์›น ๋Œ€์‹œ๋ณด๋“œ ์‚ฌ์šฉ ๊ฐ€์ด๋“œ

ํ™”๋ฉด ๊ตฌ์„ฑ

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  [์นด๋ฉ”๋ผ ์ŠคํŠธ๋ฆผ]           [SLAM ๋งต]                    โ”‚
โ”‚                                                        โ”‚
โ”‚  โ€ข ์‹ค์‹œ๊ฐ„ ์˜์ƒ              โ€ข ์ ์œ  ๊ฒฉ์ž ๋งต (ํšŒ์ƒ‰/ํฐ์ƒ‰/๊ฒ€์ •) โ”‚
โ”‚  โ€ข ํƒ์ง€ bbox ์˜ค๋ฒ„๋ ˆ์ด       โ€ข ๋กœ๋ด‡ ์œ„์น˜ (์ฒญ๋ก์ƒ‰ ํ™”์‚ดํ‘œ)    โ”‚
โ”‚  โ€ข ์ถ”์  ๋Œ€์ƒ ํ‘œ์‹œ           โ€ข ๊ฐ์ฒด ์ถ”์ • ์œ„์น˜ (์ฃผํ™ฉ์ƒ‰ ์›)   โ”‚
โ”‚                             โ€ข LiDAR ์Šค์บ” ํฌ์ธํŠธ (๋…น์ƒ‰)   โ”‚
โ”‚                             โ€ข ์ธ๋ฑ์‹ฑ๋œ ์žฅ์†Œ (๋…ธ๋ž€์ƒ‰ ๋ ˆ์ด๋ธ”)โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  [๋ชจํ„ฐ ์ƒํƒœ]              โ”‚  [๋กœ๋ด‡ ๋กœ๊ทธ]                 โ”‚
โ”‚  ๋ฐฉํ–ฅ/์†๋„ ํ‘œ์‹œ           โ”‚  ์ด๋ฒคํŠธ ์‹œ๊ฐ„์ˆœ ๋ชฉ๋ก           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  [์ œ์–ด ๋ฒ„ํŠผ]                                            โ”‚
โ”‚  ๐Ÿ“‚ ๋งต ๋ถˆ๋Ÿฌ์˜ค๊ธฐ  ๐Ÿ’พ ๋งต ์ €์žฅ                              โ”‚
โ”‚  [MAPPING] [์ถ”์  ๋ชจ๋“œ] [๋งคํ•‘ ๋ชจ๋“œ] [์ž๋™ ํƒ์ƒ‰]           โ”‚
โ”‚  + ํ˜„์žฌ ์œ„์น˜ ์žฅ์†Œ ์ด๋ฆ„ ์ €์žฅ                              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๊ธฐ๋Šฅ๋ณ„ ์‚ฌ์šฉ๋ฒ•

1. ์ฒ˜์Œ ์‚ฌ์šฉ โ€” ๋งต ์ƒ์„ฑ

  1. ๋กœ๋ด‡์„ ๋ฐฉ์— ๋ฐฐ์น˜ํ•˜๊ณ  ./run.sh ์‹คํ–‰
  2. ์›น ๋Œ€์‹œ๋ณด๋“œ ์ ‘์† โ†’ ๋งคํ•‘ ๋ชจ๋“œ ๋ฒ„ํŠผ ํ™•์ธ (๊ธฐ๋ณธ๊ฐ’)
  3. ๋ฐฉ๋ฒ• A โ€” ์ˆ˜๋™: ๋กœ๋ด‡์„ ์ง์ ‘ ๋ฐ€๊ฑฐ๋‚˜ ์กฐ์ข…ํ•˜๋ฉฐ ๋ฐฉ ์ „์ฒด๋ฅผ ๋Œ๊ธฐ
  4. ๋ฐฉ๋ฒ• B โ€” ์ž๋™: ์ž๋™ ํƒ์ƒ‰ ๋ฒ„ํŠผ ํด๋ฆญ โ†’ ๋กœ๋ด‡์ด ์Šค์Šค๋กœ frontier ํƒ์ƒ‰ ์‹œ์ž‘
    • ํƒ์ƒ‰ ์™„๋ฃŒ(frontier ์—†์Œ) ์‹œ ์ž๋™์œผ๋กœ ์ถ”์  ๋ชจ๋“œ ์ „ํ™˜๋จ
  5. ๋งต์ด ์ถฉ๋ถ„ํžˆ ์ƒ์„ฑ๋˜๋ฉด ๐Ÿ’พ ๋งต ์ €์žฅ ํด๋ฆญ โ†’ ~/maps/slam_map.* ํŒŒ์ผ๋กœ ์ €์žฅ

2. ๋งค์ผ ์‚ฌ์šฉ โ€” ์ถ”์  ์‹œ์ž‘

  1. ๋กœ๋ด‡์„ ๋งต ์ƒ์„ฑ ๋‹น์‹œ์™€ ๊ฐ™์€ ์œ„์น˜์— ๋ฐฐ์น˜ (์ดˆ๊ธฐ ์œ„์น˜ ์ค‘์š”!)
  2. ./run.sh ์‹คํ–‰
  3. ๐Ÿ“‚ ๋งต ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ํด๋ฆญ โ†’ ์ €์žฅ๋œ ๋งต ๋กœ๋“œ + ์ถ”์  ๋ชจ๋“œ ์ž๋™ ์ „ํ™˜
  4. ๋กœ๋ด‡์ด ๋Œ€์ƒ์„ ์ž๋™์œผ๋กœ ๋”ฐ๋ผ๋‹ค๋‹ˆ๊ธฐ ์‹œ์ž‘

์ฃผ์˜: slam_toolbox๋Š” ๋กœ๋ด‡ ์ดˆ๊ธฐ ์œ„์น˜๋ฅผ ๋งต์˜ ์›์ ์œผ๋กœ ๊ฐ€์ •ํ•œ๋‹ค. ๋งค ์‹คํ–‰ ์‹œ ๋™์ผํ•œ ์‹œ์ž‘์ ์—์„œ ์ผœ์•ผ ๋กœ์ปฌ๋ผ์ด์ œ์ด์…˜์ด ์ •ํ™•ํ•˜๋‹ค.

3. ์žฅ์†Œ ์ธ๋ฑ์‹ฑ

  • ๋กœ๋ด‡์ด ํŠน์ • ์œ„์น˜์— ์žˆ์„ ๋•Œ ํ•˜๋‹จ ์ž…๋ ฅ์ฐฝ์— ์ด๋ฆ„ ์ž…๋ ฅ ํ›„ ์ถ”๊ฐ€ ํด๋ฆญ
  • SLAM ๋งต์— ๋…ธ๋ž€์ƒ‰ ๋ ˆ์ด๋ธ”๋กœ ํ‘œ์‹œ๋จ
  • ์žฅ์†Œ ์ •๋ณด๋Š” ~/.ros/motherv2/places.json์— ์ €์žฅ

4. SLAM ๋ชจ๋“œ ์ „ํ™˜

๋ฒ„ํŠผ ๋ชจ๋“œ ์„ค๋ช…
๋งคํ•‘ ๋ชจ๋“œ mapping slam_toolbox๋กœ ๋งต ์ƒ์„ฑ ์ค‘. LiDAR ๋ฐฉํ–ฅ ๊ธฐ๋ฐ˜ ๊ฐ์ฒด ์ถ”์ •
์ถ”์  ๋ชจ๋“œ tracking ์ €์žฅ๋œ ๋งต๊ณผ ํ˜„์žฌ ์Šค์บ” ์ฐจ๋ถ„์œผ๋กœ ๋™์  ๊ฐ์ฒด ํƒ์ง€
์ž๋™ ํƒ์ƒ‰ explore frontier ๊ธฐ๋ฐ˜ ์ž์œจ ๋งตํ•‘ ์‹œ์ž‘

์ฃผ์š” ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ ๊ธฐ๋ณธ๊ฐ’ ์„ค๋ช…
camera_device 0 ์นด๋ฉ”๋ผ ์ธ๋ฑ์Šค
camera_width/height 640/360 ํ•ด์ƒ๋„
camera_orientation 0 ํšŒ์ „ (2 = 180๋„)
serial_port /dev/ttyAMA0 STM32 UART ํฌํŠธ
lidar_port /dev/ttyAMA2 RPLIDAR ์‹œ๋ฆฌ์–ผ ํฌํŠธ
use_slam true SLAM ํ™œ์„ฑํ™” ์—ฌ๋ถ€
conf_threshold 0.35 ํƒ์ง€ ์‹ ๋ขฐ๋„ ์ž„๊ณ„๊ฐ’
target_depth_m 0.8 LiDAR ๊ธฐ๋ฐ˜ ๋ชฉํ‘œ ์ถ”์  ๊ฑฐ๋ฆฌ (m)
camera_hfov_deg 62.2 IMX219 ์ˆ˜ํ‰ ํ™”๊ฐ (๋„)
lidar_angle_offset_rad 0.0 ์นด๋ฉ”๋ผ-LiDAR ์ˆ˜ํ‰ ๊ฐ๋„ ์˜คํ”„์…‹
min_speed 130 ์ตœ์†Œ ๋ชจํ„ฐ PWM
max_speed 150 ์ตœ๋Œ€ ๋ชจํ„ฐ PWM
mqtt_broker broker.emqx.io MQTT ๋ธŒ๋กœ์ปค ์ฃผ์†Œ

ROS2 ํ† ํ”ฝ

ํ† ํ”ฝ ํƒ€์ž… ์„ค๋ช…
/motherv2/image_raw sensor_msgs/Image ์นด๋ฉ”๋ผ ์›๋ณธ (BGR8)
/motherv2/detections DetectionArray ํƒ์ง€/ํŠธ๋ž˜ํ‚น ๊ฒฐ๊ณผ
/motherv2/detection_image sensor_msgs/Image bbox ์˜ค๋ฒ„๋ ˆ์ด ์ด๋ฏธ์ง€
/motherv2/cmd_motor MotorCommand ๋ชจํ„ฐ ์ œ์–ด ๋ช…๋ น
/motherv2/object_estimates ObjectEstimateArray SLAM ์ขŒํ‘œ ๊ฐ์ฒด ์œ„์น˜ ์ถ”์ •
/motherv2/slam_mode std_msgs/String SLAM ๋ชจ๋“œ (mapping/tracking/explore)
/scan sensor_msgs/LaserScan LiDAR ์Šค์บ”
/map nav_msgs/OccupancyGrid SLAM ์ ์œ  ๊ฒฉ์ž ๋งต

ํŒจํ‚ค์ง€ ๊ตฌ์กฐ

src/
โ”œโ”€โ”€ motherv2_interfaces/     # ์ปค์Šคํ…€ ๋ฉ”์‹œ์ง€ (Detection, DetectionArray, MotorCommand, ObjectEstimateArray)
โ”œโ”€โ”€ motherv2_detection/      # MediaPipe + MOSSE ํƒ์ง€/์ถ”์  ๋…ธ๋“œ
โ”‚   โ””โ”€โ”€ models/
โ”‚       โ””โ”€โ”€ efficientdet_lite0.tflite
โ”œโ”€โ”€ motherv2_follower/       # LiDAR ๊ธฐ๋ฐ˜ PID ์ถ”์  ์ œ์–ด ๋…ธ๋“œ
โ”œโ”€โ”€ motherv2_serial/         # STM32 UART ํ†ต์‹  ๋…ธ๋“œ
โ”œโ”€โ”€ motherv2_slam/           # SLAM ์—ฐ๋™ ๋…ธ๋“œ
โ”‚   โ”œโ”€โ”€ slam_localization_node.py   # LiDAR+์นด๋ฉ”๋ผ ์œตํ•ฉ, ๋™์  ๊ฐ์ฒด ํƒ์ง€
โ”‚   โ””โ”€โ”€ explore_node.py             # frontier ๊ธฐ๋ฐ˜ ์ž์œจ ํƒ์ƒ‰
โ”œโ”€โ”€ motherv2_web/            # ์›น ๋Œ€์‹œ๋ณด๋“œ + HTTP API
โ”‚   โ”œโ”€โ”€ web_node.py                 # MJPEG ์ŠคํŠธ๋ฆผ + ๋Œ€์‹œ๋ณด๋“œ + SLAM ์‹œ๊ฐํ™”
โ”‚   โ””โ”€โ”€ api_node.py                 # ์™ธ๋ถ€ API ํด๋ง (API_URL ์„ค์ • ์‹œ)
โ”œโ”€โ”€ motherv2_mqtt/           # MQTT ํผ๋ธ”๋ฆฌ์‹œ ๋…ธ๋“œ (ESP32 ๋ฆด๋ ˆ์ด ์ œ์–ด)
โ”œโ”€โ”€ motherv2_bringup/        # ๋Ÿฐ์น˜ ํŒŒ์ผ + ์„ค์ •
โ”‚   โ”œโ”€โ”€ launch/motherv2.launch.py   # ์ „์ฒด ์‹œ์Šคํ…œ ๋Ÿฐ์น˜
โ”‚   โ””โ”€โ”€ launch/slam.launch.py       # SLAM ์„œ๋ธŒ ๋Ÿฐ์น˜
โ””โ”€โ”€ echo_lidar/              # RPLIDAR ROS2 ๋“œ๋ผ์ด๋ฒ„

ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

SLAM ๋งต์ด ์›น์—์„œ ์•ˆ ๋ณด์ธ๋‹ค

  • slam_toolbox๊ฐ€ /map ํ† ํ”ฝ์„ TRANSIENT_LOCAL QoS๋กœ ํผ๋ธ”๋ฆฌ์‹œํ•œ๋‹ค
  • ๊ตฌ๋… ์ธก(web_node)๋„ ๋ฐ˜๋“œ์‹œ TRANSIENT_LOCAL์ด์–ด์•ผ ์—ฐ๊ฒฐ๋จ
  • ros2 topic info /map --verbose๋กœ QoS ํ™•์ธ

๋งต ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ํ›„ ์œ„์น˜๊ฐ€ ํ‹€๋ฆฌ๋‹ค

  • ๋กœ๋ด‡ ์ดˆ๊ธฐ ์œ„์น˜๊ฐ€ ๋งต ์ƒ์„ฑ ๋‹น์‹œ์™€ ๋‹ค๋ฅผ ๋•Œ ๋ฐœ์ƒ
  • ํ•ด๊ฒฐ: ๋กœ๋ด‡์„ ๋งต ์ƒ์„ฑ ์‹œ์ž‘ ์ง€์ (๋ณดํ†ต ๋ฐฉ ์ถœ์ž…๊ตฌ)์œผ๋กœ ์ด๋™ ํ›„ ์‹œ์Šคํ…œ ์žฌ์‹œ์ž‘

LiDAR๊ฐ€ ์ธ์‹ ์•ˆ ๋œ๋‹ค

ls /dev/ttyAMA*       # ํฌํŠธ ํ™•์ธ
sudo chmod 666 /dev/ttyAMA2   # ๊ถŒํ•œ ๋ถ€์—ฌ
# ๋˜๋Š” dialout ๊ทธ๋ฃน์— ์‚ฌ์šฉ์ž ์ถ”๊ฐ€
sudo usermod -aG dialout robot

์ž๋™ ํƒ์ƒ‰์ด ์ œ์ž๋ฆฌ ํšŒ์ „๋งŒ ํ•œ๋‹ค

  • frontier ํด๋Ÿฌ์Šคํ„ฐ ์ตœ์†Œ ํฌ๊ธฐ(MIN_CLUSTER=5)์— ๋ฏธ๋‹ฌ โ€” ๋งต์ด ๋„ˆ๋ฌด ์ž‘๊ฑฐ๋‚˜ LiDAR ๋…ธ์ด์ฆˆ
  • ARRIVE_DIST(0.6m)๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ MIN_CLUSTER๋ฅผ ๋‚ฎ์ถฐ ๋ณผ ๊ฒƒ

๋ชจํ„ฐ๊ฐ€ ์•ˆ ์›€์ง์ธ๋‹ค / ํ•œ์ชฝ๋งŒ ๋ˆ๋‹ค

  • serial_node ๋กœ๊ทธ์—์„œ Serial opened ํ™•์ธ
  • UART ํฌํŠธ ํ™•์ธ: ls /dev/ttyAMA* โ€” ๊ธฐ๋ณธ๊ฐ’ /dev/ttyAMA0
  • STM32 ํ”„๋กœํ† ์ฝœ ํฌ๋งท ํ™•์ธ: right_speed,left_speed,right_dir,left_dir\n

FPS๊ฐ€ ์•ˆ ๋‚˜์˜จ๋‹ค

  • Raspberry Pi ๋ฐœ์—ด ํ™•์ธ: vcgencmd get_throttled (0x0 = ์ •์ƒ)
  • ํ•ด์ƒ๋„๋ฅผ ๋‚ฎ์ถ”๊ฑฐ๋‚˜ detection interval์„ ๋Š˜๋ฆฐ๋‹ค
  • ์นด๋ฉ”๋ผ QoS๋Š” ๋ฐ˜๋“œ์‹œ BEST_EFFORT๋กœ ๊ตฌ๋…ํ•ด์•ผ ํ•œ๋‹ค

Ctrl+C ํ›„ ๋ชจํ„ฐ๊ฐ€ ๊ณ„์† ๋ˆ๋‹ค

  • serial_node SIGINT ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์ •์ง€ ๋ช…๋ น์„ ์ „์†กํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ
  • ๊ฐ•์ œ ์ •์ง€: STM32 ๋ฆฌ์…‹ ๋ฒ„ํŠผ ๋˜๋Š” ์ „์› ์ฐจ๋‹จ

About

Robot V2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors