Today
-
Yesterday
-
Total
-
  • ์Šค๋งˆํŠธ ์นดํŠธ ์„ค๊ณ„๊ธฐ (4) - ๋‘ ๋ฒˆ์งธ ๊ธฐ๋Šฅ ํ•ฉ์น˜๊ธฐ, ์ž‘ํ’ˆ ๋ฐ ์‹œ์—ฐ ํ™˜๊ฒฝ ๊พธ๋ฏธ๊ธฐ
    Soliloquy 2020. 12. 25. 00:03

     

    ๐Ÿ”จ

     

    ์‚ฌ๋žŒ ์ถ”์  ๊ธฐ๋Šฅ์˜ ๋ณ€๊ฒฝ ๋ฐ ์—ฐ๋™

     

    ๊ธฐ์กด์—๋Š” ์‚ฌ๋žŒ์˜ ๋ชจ์Šต์„ ์ถ”์ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๋ ค๊ณ  ํ–ˆ์ง€๋งŒ, ์ƒ๋‹นํžˆ ๊ณ ๋‚œ๋„์˜ ์ง€์‹์ด ํ•„์š”ํ•˜๋‹ค๋Š” ํŒ๋‹จ์— ์ƒ‰์ƒ ์ถ”์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์˜€๋‹ค. ๊ทธ๋ฆฌ๊ณ  2ํ•™๊ธฐ๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ์ฏค, ์‚ฌ๋žŒ ์ถ”์  ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋˜ ์นœ๊ตฌ๋กœ๋ถ€ํ„ฐ OpenCV๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ๊ธฐ๋Šฅ์— ๊ตฌํ˜„์„ ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ๋ง์„ ๋“ค์—ˆ๋‹ค.

     

    OpenCV๋ฅผ ์ด์šฉํ•œ ์ƒ‰์ƒ ์ถ”์  ๊ธฐ๋Šฅ์€ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์™€ ์นด๋ฉ”๋ผ ๋ชจ๋“ˆ์„ ์ด์šฉํ•˜์—ฌ ์ž‘๋™ํ–ˆ๋Š”๋ฐ, ํ™”๊ฐ์ด ์ž‘์•„์„œ ๊ทธ๋Ÿฐ์ง€ ๊ฐ„ํ˜น ์ž˜ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์—ˆ๋‹ค. ๋˜ํ•œ, ์ƒ‰ ๊ตฌ๋ถ„์ด ์™„๋ฒฝํ•˜์ง€ ์•Š์•„์„œ ๊ทธ๋Ÿฐ์ง€ ์ฃผ๋ณ€์˜ ์ƒ‰์ƒ์— ์˜ํ–ฅ์„ ๋ฐ›๊ธฐ๋„ ํ–ˆ๋‹ค. ๋‹ค์†Œ ํฐ ๋‹จ์ ์ด ์žˆ๊ธด ํ–ˆ์ง€๋งŒ, ์ด๊ฒŒ ์–ด๋””์•ผ… ๋ผ๋Š” ์ƒ๊ฐ์œผ๋กœ Flask ์›น ์„œ๋ฒ„ ์ฝ”๋“œ์™€ ์—ฐ๋™ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค.

     

    OpenCV๋ฅผ ํ†ตํ•ด ์ƒ‰์ƒ์„ ์ธ์‹ํ•˜๋Š” ๋™์˜์ƒ

     

    ์™ธ๋ถ€์—์„œ ๋ณธ ์ž‘๋™ ๋™์˜์ƒ[๊ฐ์ฃผ:1]

     

    ์ƒ‰์ƒ ์ถ”์  ๊ธฐ๋Šฅ์˜ ์—ฐ๋™

    ์šฐ์„  ์ƒ‰์ƒ ์ถ”์  ์ฝ”๋“œ๋ฅผ ์–ธ์ œ, ์–ด๋–ป๊ฒŒ ์‹œ์ž‘ํ•  ์ง€์— ๊ด€ํ•ด ๊ตฌ์ƒํ•˜์˜€๋‹ค. ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•˜๋‹ค๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ํŒ๋‹จ๋˜์—ˆ๋‹ค.

     

    1. Flask ์„œ๋ฒ„ ๋‹จ์—์„œ ROS๋ฅผ ํ†ตํ•ด ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์— ์ƒ‰์ƒ ์ถ”์  ๊ธฐ๋Šฅ ์‹คํ–‰ ๋ช…๋ น์–ด๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•
    2. NFC ํƒœ๊ทธ ๊ธฐ๋ก ๋•Œ ์‚ฌ์šฉํ•˜๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ์‰˜๊ณผ Flask ์„œ๋ฒ„ ๋‹จ์—์„œ TCP/IP ๋ฌธ์ž์—ด ์ „์†ก ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•˜์—ฌ ์ƒ‰์ƒ ์ถ”์  ๊ธฐ๋Šฅ์„ ๋™์ž‘์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•

     

    ์•„๋ฌด๋ž˜๋„ ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์ธ ROS๋ฅผ ํ†ตํ•œ ๋ฐฉ๋ฒ•์ด ๊ฐ€์žฅ ์žˆ์–ด ๋ณด์ด๋Š” ๋ฐฉ๋ฒ•์ด์–ด์„œ ROS๋ฅผ ์ด์šฉํ•œ ์ „์†ก์„ ์‹œ๋„ํ•ด๋ณด์•˜์ง€๋งŒ, ์•„์‰ฝ๊ฒŒ๋„ ์กฐ์›๋“ค ๋ชจ๋‘ ROS์— ๊ด€ํ•œ ์ง€์‹์ด ๊นŠ์ง€๊ฐ€ ์•Š์•„์„œ ROS๋ฅผ ์ด์šฉํ•œ ๋ช…๋ น์–ด ์ „์†ก์— ์‹คํŒจํ–ˆ๋‹ค. ํ•˜๋Š” ์ˆ˜ ์—†์ด ์ผ๋‹จ์€ TCP/IP๋กœ ๊ตฌํ˜„ํ•ด๋ณด๊ณ , ๋‚˜์ค‘์— ์‹œ๊ฐ„์ด ๋‚จ๋Š”๋‹ค๋ฉด ROS๋กœ ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

     

    elif data.decode('utf-8') == 'b' :
                    subpro3 = subprocess.Popen(['python', '/home/pi/Desktop/nfc/camera.py'])
    elif data.decode('utf-8') == 'c' :
                    subpro3.kill()

    ์‚ฌ๋žŒ ์ถ”์  ์ฝ”๋“œ๋ฅผ ๊ฐ€๋™ํ•˜๋Š” ์ฝ”๋“œ

     

    ์ƒ‰์ƒ ์ถ”์  ๊ธฐ๋Šฅ์˜ ๋ฌธ์ œ์  ํ•ด๊ฒฐ ๊ณผ์ •

    ์ƒ‰์ƒ ์ถ”์  ๊ธฐ๋Šฅ์˜ ์ฝ”๋“œ๊ฐ€ ์ž‘๋™ ์ƒ์—๋Š” ์™„๋ฒฝํ•œ ์ค„ ์•Œ์•˜์ง€๋งŒ, ์ž‘๋™์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ ์žˆ์—ˆ๋‹ค. ๊ทธ์ค‘์— ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค.

     

    • ๊ธฐ๋Šฅ์˜ ์‹œ์ž‘ ๋ฐ ์ข…๋ฃŒ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค. ์‹œ์ž‘๊ณผ ์ข…๋ฃŒ ์‹œ ์•ฝ 3์ดˆ์˜ ๋”œ๋ ˆ์ด๊ฐ€ ์žˆ์—ˆ๋‹ค.
    • ์ •์ง€ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ ธ์„ ๋•Œ ๋งˆ์ง€๋ง‰ ๋™์ž‘์„ ์œ ์ง€ํ•˜์—ฌ ์‚ฌ์šฉ์— ์–ด๋ ค์›€์ด ์žˆ์—ˆ๋‹ค. ์•ž์œผ๋กœ ๊ฐ€๋Š” ๋„์ค‘ ์ข…๋ฃŒ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์นดํŠธ๊ฐ€ ๊ทธ๋Œ€๋กœ ์•ž์œผ๋กœ ์›€์ง์ธ๋‹ค.

     

    ๋ฐ˜์‘ ์†๋„์˜ ๋ฌธ์ œ์ 

    ์›น ์‚ฌ์ดํŠธ์—์„œ ํ•ด๋‹น ๊ธฐ๋Šฅ์˜ ์ž‘๋™ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ฆ‰์‹œ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์•ฝ 3์ดˆ ๋’ค์— ๋™์ž‘์„ ํ•˜๋ฉฐ, ์ž‘๋™ ์ค‘๋‹จ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์•ฝ 3์ดˆ ๋’ค์— ์›€์ง์ž„์„ ๋ฉˆ์ถ”์—ˆ๋‹ค. ์ด๋ฅผ ์ตœ๋Œ€ํ•œ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ OpenCV ๋™์ž‘ ์ฝ”๋“œ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ค„์—ฌ๋ณด๊ธฐ๋„ ํ–ˆ๋‹ค. ํ˜น์‹œ๋‚˜ ๋™์ž‘ ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ๋ฌธ์ œ์ธ๊ฐ€ ์‹ถ์–ด์„œ ๋™์ž‘ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ „์†ก ๊ณผ์ •์„ ๋ฐ”๊ฟ”๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.


    ๊ธฐ์กด์—๋Š” OpenCV๋ฅผ ์ด์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ๋™์ž‘ ๋ฐ์ดํ„ฐ๋ฅผ Flask ์„œ๋ฒ„๋กœ ๋ณด๋‚ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค๋ฉด, Flask ์„œ๋ฒ„๋กœ ์ „์†กํ•˜์ง€ ์•Š๊ณ  ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด ๋‚ด๋ถ€์—์„œ ๋™์ž‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ”๊ฟ”๋ณด๊ธฐ๋„ ํ•˜๋Š” ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์‹œ๋„๋ฅผ ํ–ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒฐ๊ณผ๋Š” ๊ทธ๋ ‡๊ฒŒ ๋‚˜์•„์ง€์ง€ ์•Š์•˜๋‹ค.


    ํ›„์— OpenCV์˜ ์‹œ์ž‘ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ OpenCV์˜ ๋” ๊ฐ€๋ฒผ์šด ๋ฒ„์ „์„ ์ฐพ์•„๋ณด๋Š” ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ์ข…๋ฃŒ ์†๋„๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์Šค๋ ˆ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๋‚˜์•„์งˆ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ? ๋ผ๋Š” ๊ตฌ์ƒ๋„ ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์•„์‰ฝ๊ฒŒ๋„ ์‹œ๊ฐ„ ๊ด€๊ณ„์ƒ ์—ฌ๊ธฐ์„œ ๋งˆ๋ฌด๋ฆฌ๋˜์—ˆ๋‹ค.

     

    ๋งˆ์ง€๋ง‰ ๋™์ž‘์„ ๊ณ„์† ์œ ์ง€ ์ž‘๋™ํ•œ๋‹ค๋Š” ๋ฌธ์ œ์ 

    ๋ณธ ๊ธฐ๋Šฅ์˜ ๋™์ž‘ ์ค‘, ์›€์ง์ด๊ณ  ์žˆ์„ ๋•Œ ๊ธฐ๋Šฅ์„ ๊บผ๋ฒ„๋ฆฌ๋ฉด ์นดํŠธ๋Š” ์ด์ „์— ํ•˜๊ณ  ์žˆ๋˜ ๋™์ž‘์„ ๊ณ„์† ๋ฐ˜๋ณตํ•ด์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฌธ์ œ์ ์ด ์žˆ์—ˆ๋‹ค. ์šฐ๋ฆฌ๋“ค์ด ๋ฐœ๊ฒฌํ•œ ์›์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜์œผ๋ฉฐ, ์ด๋Š” ๋ฐ˜์‘ ์†๋„ ๋ฌธ์ œ์™€ ์–ด๋Š ์ •๋„ ์—ฐ๊ด€์ด ๋˜์–ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค.

     

    1. ์นดํŠธ์˜ ๋™์ž‘์„ ํŒ๋‹จํ•˜๋Š”(OpenCV) ์ฝ”๋“œ๊ฐ€ ์ข…๋ฃŒ๋œ ๋’ค์—๋„ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์ด์ „ ๊ฐ’์„ ๊ณ„์†ํ•ด์„œ ์œ ์ง€ํ•ด์„œ ๋™์ž‘ํ•œ๋‹ค.
    2. ์‚ฌ์šฉ ์ข…๋ฃŒ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐ•์ œ ์ข…๋ฃŒํ•˜๋ ค๊ณ  ํ•˜์—ฌ๋„ ์นดํŠธ์˜ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋๋‚˜ ์ง€์ง€ ์•Š๋Š”๋‹ค.

     

    ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ํŒŒ๋ณด๋Š” ๊ฒƒ ๋Œ€์‹ , ์‹œ๊ฐ„ ๊ด€๊ณ„์ƒ ๊ฐ•์ œ ์ข…๋ฃŒ์™€ ๊ฐ•์ œ๋กœ ์ด๋™์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜์—ฌ ์ด์ „ ๊ฐ’์„ ์ฐจ๋‹จํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•˜์˜€๋‹ค. ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ์™„๋ฒฝํ•œ ๋ฐฉ๋ฒ•์ด ์•„๋‹Œ ๋ฏธ๋ด‰์ฑ…์ด๊ธด ํ•˜๋‚˜, ๊ทธ๋•Œ ๋‹น์‹œ์—๋Š” ์‹œ๊ฐ„์„ ์ƒ๊ฐํ•œ๋‹ค๋ฉด ์ด๊ฒƒ์ด ์ตœ์„ ์ด์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

     

    elif data.decode('utf-8') == 'b' :
        subpro3 = subprocess.Popen(['python', '/home/pi/Desktop/nfc/camera.py'])
        subpro4 = subprocess.Popen(['roslaunch', 'turtlebot3_teleop', 'turtlebot3_teleop_key.launch'])
    elif data.decode('utf-8') == 'c' :
        subpro3.kill() ##OpenCV ๊ฐ•์ œ ์ข…๋ฃŒ
        subpro4.terminate() ##ํ„ฐํ‹€๋ด‡3๋ฅผ ์›€์ง์ด๋Š” ์ฝ”๋“œ ๊ฐ•์ œ ์ข…๋ฃŒ
        subpro5 = subprocess.Popen(['rostopic', 'pub', '-1', '/cmd_vel', 'geometry_msgs/Twist', '--', '[0.0,0.0,0.0]', '[0.0,0.0,0.0]']) ##ํ„ฐํ‹€๋ด‡3์˜ ์›€์ง์ž„ ๊ฐ’์„ 0์œผ๋กœ ์ „์†ก
    

     

    ์ด๋ ‡๊ฒŒ ๊ธฐ๋ณธ์ ์ธ ์ฝ”๋“œ ์„ค์ •์€ ๋ชจ๋‘ ๋์ด ๋‚ฌ๋‹ค. ์ด์ œ ๋‚จ์€ ๊ฒƒ์€ ์™ธ๊ด€์„ ๊พธ๋ฏธ๋Š” ์ผ์ด์—ˆ๋‹ค.

     

    ํ„ฐํ‹€๋ด‡3 ์™ธ๊ด€ ๊พธ๋ฏธ๊ธฐ

    ํ„ฐํ‹€๋ด‡3์˜ ์•ž๋ถ€๋ถ„์— ์นด๋ฉ”๋ผ๋ฅผ ์žฅ์ฐฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ํŒŒ์ด ์นด๋ฉ”๋ผ ํ”„๋ ˆ์ž„์„ ๊ตฌ๋งคํ•œ ํ›„ ์žฅ์ฐฉํ–ˆ๋‹ค.[๊ฐ์ฃผ:2]

     

    ํ„ฐํ‹€๋ด‡3์— ์žฅ์ฐฉํ•œ ํŒŒ์ด ์นด๋ฉ”๋ผ

     

    ๊ทธ๋ฆฌ๊ณ  ๋ฌผ๊ฑด์„ ๋‹ด์„ ์ฒ ์ œ ๋ฐ”๊ตฌ๋‹ˆ ๊ตฌ๋งคํ•˜์—ฌ ์žฅ์ฐฉ, ๊ทธ๋ฆฌ๊ณ  ์‡ผํ•‘ ์นดํŠธ์˜ ๋’ท๋ถ€๋ถ„์— ์™€ํ”Œํ”Œ๋ ˆ์ดํŠธ๋ผ๋Š” ํŒ์„ ์ถ”๊ฐ€๋กœ ์žฅ์ฐฉํ•˜์—ฌ NFC ๋ชจ๋“ˆ์„ ์˜ฌ๋ ค๋†“์„ ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด NFC ๋ชจ๋“ˆ์„ ์žฅ์ฐฉํ–ˆ๋‹ค.

     

    ํ„ฐํ‹€๋ด‡3์— ์žฅ์ฐฉํ•œ NFC ๋ชจ๋“ˆ, ๋ฐ”๊ตฌ๋‹ˆ

     

    ๋Œ€๋žต์ ์œผ๋กœ ์™„์„ฑ์„ ํ•œ ๋’ค, ์‹œํ—˜ ์‚ผ์•„ ๋™์ž‘์„ ์‹œ์ผœ๋ณด์•˜๋‹ค. ์ฒ˜์Œ์—๋Š” ์ž˜ ๋™์ž‘์ด ๋˜๋Š”๊ฐ€ ์‹ถ๋”๋‹ˆ, ์นดํŠธ๊ฐ€ ์ •์ง€ ์‹œ์— ์•ž์ด๋‚˜ ๋’ค๋กœ ๊ฐˆ ๋•Œ ์ฐจ์ฒด๊ฐ€ ๋ฒ„๋ฒ…๊ฑฐ๋ฆฌ๋ฉด์„œ ์›€์ง์ด๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ๋‹ค. ์ด๋Š” ์ฒ ์ œ ๋ฐ”๊ตฌ๋‹ˆ ์ชฝ์œผ๋กœ์˜ ๋ฌด๊ฒŒ ์ค‘์‹ฌ ์ ๋ฆผ์ด ์›์ธ์ผ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•˜์—ฌ ์ฒ ์ œ ๋ฐ”๊ตฌ๋‹ˆ์˜ ๋ฐ˜๋Œ€์ชฝ์ธ ์•ž์ชฝ์— ๋ฌด๊ฑฐ์šด ๋ฌผ์ฒด๋ฅผ ํ•˜๋‚˜ ๋งค๋‹ฌ์•„ ์ค˜์•ผ ํ•  ๊ฒƒ์ด๋ผ ์˜ˆ์ƒํ–ˆ๋‹ค.

     

    ๊ทธ๋ž˜์„œ ๊ทผ์ฒ˜ ๋ฌธ๊ตฌ ์ ์— ๋“ค๋ ค ์ ๋‹นํ•œ ๋ฌด๊ฒŒ์˜ ๋ฌผ์ฒด๋ฅผ ์ฐพ๊ธฐ๋กœ ํ–ˆ๊ณ , ๊ทธ ๊ฒฐ๊ณผ ํƒ€์นด ์‹ฌ 2ํŒฉ๊ณผ ๊ณ ๋ฆฌ๋ฅผ ์‚ฌ์„œ ์•ž ์ชฝ์— ์ถ”๊ฐ€๋กœ ์žฅ์ฐฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์žฅ์ฐฉํ•œ ๊ฒฐ๊ณผ ์ด์ „๋ณด๋‹ค ์ด๋™ ์•ˆ์ •์„ฑ์ด ํ›จ์”ฌ ๋‚˜์•„์ง์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

     

    ๊ฑฐ์˜ ์™„์„ฑ๋œ ์Šค๋งˆํŠธ ์‡ผํ•‘์นดํŠธ์˜ ์™ธ๊ด€

     

    ์‹œ์—ฐ ํ™˜๊ฒฝ ๊พธ๋ฏธ๊ธฐ

    ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ž‘ํ’ˆ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ๊ณต๊ฐ„์ด ํ•„์š”ํ–ˆ๋‹ค. ์‹œ์—ฐ ๊ณต๊ฐ„์˜ ๊ตฌ์ƒ์€ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ข‹์„๊นŒ? ๋ผ๋Š” ๊ณ ๋ฏผ ๋์— ๊ฐ€๋กœ ์„ธ๋กœ ๊ฐ๊ฐ 1M ์ •๋„์˜ ๊ณต๊ฐ„์„ ์•„ํฌ๋ฆดํŒ์œผ๋กœ ๊ตฌ์„ฑํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. [๊ฐ์ฃผ:3]

     

    ์‹œ์—ฐ ํ™˜๊ฒฝ์˜ ๊ตฌ์ƒ

     

    ์‹œ์—ฐ ํ™˜๊ฒฝ์—์„œ์˜ ์˜ˆ์ƒ์ง€ ๋ชปํ•œ ๋ฌธ์ œ ๋ฐœ์ƒ

    ์•„ํฌ๋ฆดํŒ์œผ๋กœ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๊ณ  ์ž‘๋™ ์‹œ์—ฐ์„ ์ค€๋น„ํ•ด๋ณด๋Š”๋ฐ, ๋„ค๋น„๊ฒŒ์ด์…˜ ๊ธฐ๋Šฅ์„ ์‹คํ–‰ ์‹œ ๋ชฉ์ ์ง€๊นŒ์ง€ ๋„์ฐฉํ•˜๋Š” ๊ฒฝ๋กœ๊ฐ€ ์กฐ๊ธˆ ์ด์ƒํ•˜๊ฑฐ๋‚˜, ๋ชฉ์ ์ง€๊นŒ์ง€ ์›€์ง์ด๋˜ ๋„์ค‘์— ๋ฉˆ์ถ”๋Š” ์ผ์ด ๋ฐœ์ƒํ–ˆ๋‹ค.

     

    SLAM์„ ์ด์šฉํ•œ ๋„ค๋น„๊ฒŒ์ด์…˜ ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” RViz ์ฐฝ๊ณผ ๋„ค๋น„๊ฒŒ์ด์…˜ ์ฝ”๋“œ ์‹คํ–‰ ์ฐฝ์„ ๋„์›Œ๋ณด๋‹ˆ ๋ชฉ์ ์ง€๊นŒ์ง€ ์›€์ง์ด๋Š” ๊ฒฝ๋กœ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์‹คํŒจํ–ˆ๋‹ค๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ์ ํ˜€ ์žˆ์—ˆ๋‹ค. ์ด๋ฅผ ๋ณด๊ณ  ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋กœ ์ธํ•ด ํ•ด๋‹น ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

     

    1. Lidar ์„ผ์„œ์˜ ๋‚œ๋ฐ˜์‚ฌ ๋•Œ๋ฌธ์ด๋‹ค.
      SLAM ๊ธฐ์ˆ ์€ Lidar ์„ผ์„œ๋กœ ์žฅ์• ๋ฌผ์˜ ์œ„์น˜๋ฅผ ํŒ๋‹จํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๊ตฌ๋งคํ•œ ์•„ํฌ๋ฆดํŒ์€ ํฐ์ƒ‰ ์œ ๊ด‘ ์•„ํฌ๋ฆดํŒ์ด์—ˆ๋‹ค. ์ด๋•Œ Lidar ์„ผ์„œ์˜ ๋น›์ด ์•„ํฌ๋ฆดํŒ์— ์˜ํ•ด์„œ ๋‚œ๋ฐ˜์‚ฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , ์žฅ์• ๋ฌผ์ด ์—†๋Š” ๊ณณ์— ์žฅ์• ๋ฌผ์ด ์žˆ๋‹ค๊ณ  ํŒ๋‹จ์ด ๋˜์—ˆ์„ ๊ฒƒ์ด๋‹ค.

      RViz ์ฐฝ์— ๊ฐ‘์ž๊ธฐ ๋‚˜ํƒ€๋‚ฌ๋‹ค๊ฐ€ ๊ฐ‘์ž๊ธฐ ์‚ฌ๋ผ์ง€๋Š” ๋‚œ๋ฐ˜์‚ฌ๋กœ ์ธํ•œ ์ถ”์ •๋˜๋Š” ์žฅ์• ๋ฌผ์ด ์‹ค์ œ๋กœ ํฌ์ฐฉ๋˜์—ˆ๋‹ค.

    2. ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์„ฑ์— ์˜ํ•œ ๋ฌธ์ œ์ผ ๊ฒƒ์ด๋‹ค.
      ์—ฌ๊ธฐ์— ์‚ฌ์šฉ๋œ ๋ชฉ์ ์ง€๊นŒ์ง€์˜ ๊ฒฝ๋กœ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ด๋ ‡๊ฒŒ ์ข์€ ๊ณณ์—์„œ ์ž‘๋™ํ•˜๋Š”๋ฐ ์ ํ•ฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ๋‹ค.

     

    ๋‚œ๋ฐ˜์‚ฌ ๋ฌธ์ œ ์ค„์ด๊ธฐ

    ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์•„ํฌ๋ฆดํŒ์˜ ๋‚œ๋ฐ˜์‚ฌ๋ฅผ ์—†์• ๊ธฐ ์œ„ํ•ด์„œ ๊ฒ€์€์ƒ‰ ์ƒ‰์ง€๋ฅผ ์‚ฌ์„œ ์•„ํฌ๋ฆดํŒ์— ๋ถ™์—ฌ ๋ณด์•˜๋‹ค. ๊ทธ๋žฌ๋”๋‹ˆ ๋‚œ๋ฐ˜์‚ฌ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์žฅ์• ๋ฌผ ๊ฐ์ง€๊ฐ€ ์ค„์–ด๋“ค์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์—ฌ์ „ํžˆ ๋ชฉ์ ์ง€๊นŒ์ง€ ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

     

    ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋˜๋Š” ํ™˜๊ฒฝ ์ˆ˜์ •ํ•˜๊ธฐ

    ๋‘ ๋ฒˆ์งธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋„ค๋น„๊ฒŒ์ด์…˜ ๋‹ด๋‹น ์นœ๊ตฌ๊ฐ€ ์—ด์‹ฌํžˆ ๋„ค๋น„๊ฒŒ์ด์…˜ ๊ฒฝ๋กœ ๊ณ„ํš ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŒŒ๋ผ๋ฉ”ํ„ฐ ๊ฐ’๋“ค์„ ์ˆ˜์ •ํ•ด๋ณด์•˜๋‹ค. ํ•˜์ง€๋งŒ, ์•ˆํƒ€๊น๊ฒŒ๋„ ์ง์ ‘์ ์ธ ํšจ๊ณผ๊ฐ€ ์—†์—ˆ๊ณ  ๊ฐœ์ธ์ ์ธ ์นœ๊ตฌ์˜ ์‚ฌ์ •์œผ๋กœ ์ธํ•ด ๋” ์ด์ƒ ๋„ค๋น„๊ฒŒ์ด์…˜ ๊ด€๋ จ ์ฝ”๋“œ๋‚˜ ํŒŒ์ผ ์ˆ˜์ •์—๋Š” ์–ด๋ ค์›€์ด ๋”ฐ๋ฅด๊ฒŒ ๋˜์—ˆ๋‹ค.

     

    ํ•˜๋Š” ์ˆ˜ ์—†์ด, ๊ธฐ์กด์˜ ๊ฐ€๋กœ, ์„ธ๋กœ 1M ๊ณต๊ฐ„์„ 1.5M๋กœ ๋Š˜๋ ค์„œ ์ƒˆ๋กœ ์ œ์ž‘ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์•„ํฌ๋ฆดํŒ์„ ๋‹ค์‹œ ๊ตฌ๋งคํ•˜์—ฌ ๋ถ™์—ฌ๋ณธ ๊ฒฐ๊ณผ ์ด์ „์˜ ๋ฌธ์ œ๊ฐ€ ๋ง๋”ํžˆ ํ•ด๊ฒฐ๋˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ, ์‹œ์—ฐ์ด ๊ฐ€๋Šฅํ•  ๋งŒํผ ํ•ด๋‹น ๋ฌธ์ œ๊ฐ€ ์ค„์–ด๋“ค์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

     

    ๊ธฐ์กด์˜ ์‹œ์—ฐ ํ™˜๊ฒฝ๊ณผ ์ƒˆ๋กœ์šด ์‹œ์—ฐ ํ™˜๊ฒฝ์˜ ๊ตฌ์ƒ, ์ค‘๊ฐ„์˜ ์•„ํฌ๋ฆดํŒ์ด ์ด์ „์— ์‚ฌ์šฉํ•˜๋˜ 1M ์•„ํฌ๋ฆด

     

    ์ด๋ ‡๊ฒŒ ์‹œ์—ฐ์„ ์œ„ํ•œ ์™ธ๋ถ€ ํ™˜๊ฒฝ ๊พธ๋ฏธ๊ธฐ๋„ ์—ฌ์ฐจ ์ €์ฐจ ๋๋งบ์Œ์ด ๋‚ฌ๋‹ค.

     

     

    [๋ณธ๋ฌธ ๋™์˜์ƒ ํŒŒ์ผ]

     

     

    opencv_test.mp4
    0.43MB

     

    opencv_test2.mp4
    2.01MB

     

     

    1. ์™ธ๊ด€์„ ๊พธ๋ฏธ๊ณ  ๋‚œ ๋’ค์— ๋งŒ๋“ค์–ด์ง„ ๋™์˜์ƒ์ด์–ด์„œ ์ „๋ฐ˜์ ์ธ ํ‹€์ด ๋ชจ๋‘ ๊ฐ–์ถฐ์ ธ ์žˆ๋‹ค. [๋ณธ๋ฌธ์œผ๋กœ]
    2. ์กฐ๊ทธ๋งŒ ๋ถ€ํ’ˆ์ด 1๋งŒ ์›์„ ๋„˜์–ด๊ฐ„๋‹ค๋Š” ๊ฒŒ ์ฐธ ์‹ ๊ธฐํ–ˆ๋‹ค…… [๋ณธ๋ฌธ์œผ๋กœ]
    3. ์—ฌ๋‹ด์ด์ง€๋งŒ ์ฒ˜์Œ ํ™˜๊ฒฝ ์ œ์ž‘ ์‹œ ์•„ํฌ๋ฆด ํŒ์„ ์‚ด ๋•Œ ๊ฐ™์ด ์ฃผ๋ฌธํ•œ 1000์›์งœ๋ฆฌ ์•„ํฌ๋ฆด ์ ‘์ฐฉ์ œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ถ™์˜€๋Š”๋ฐ, ์ ‘์ฐฉ์ œ๊ฐ€ ๋‹ค๋ฃจ๊ธฐ ํž˜๋“ค์–ด์„œ ๊ธ€๋ฃจ๊ฑด์œผ๋กœ ์ž‘์—…์„ ํ–ˆ๋‹ค. [๋ณธ๋ฌธ์œผ๋กœ]

    ๋Œ“๊ธ€

์–ด์ œ๋Š” ์ด๊ณณ์— ๋ช…์ด ๋‹ค๋…€๊ฐ”์Šต๋‹ˆ๋‹ค.

Powered & Designed by Tistory