ROS2 È¥ÀÚ°øºÎÇÏ´Â ·Îº¿SW Á÷Á¢ ¸¸µé°í ÄÚµùÇÏÀÚ
- ÀúÀÚ<¹ÎÇü±â> Àú
- ÃâÆÇ»çÀÕÇÃITPLE
- ÃâÆÇÀÏ2022-09-15
- µî·ÏÀÏ2024-03-11
º¸À¯ 1, ´ëÃâ 0,
¿¹¾à 0, ´©Àû´ëÃâ 14, ´©Àû¿¹¾à 9
Ã¥¼Ò°³
ÀÌ Ã¥Àº ROS¶ó´Â µµ±¸ÀÇ Á¸À縦 ¾Ë°í °øºÎÇÏ·Á´Â ºÐ Áß¿¡ ¾ÆÁ÷ °øºÎ¸¦ ½ÃÀÛÇÏÁö ¾Ê¾Ò°Å³ª, ÀÌ°ÍÀú°Í ¿¹Á¦¸¦ µ¹·ÁºÃÁö¸¸ ¾î¶² °ÍÀÎÁö °¨À» ÀâÁö ¸øÇÑ ºÐµéÀ» ´ë»óÀ¸·Î ÇÏ°í ÀÖ´Ù. ¿À·§µ¿¾È °ÀǸ¦ ÇØ¿Ô´ø ³ªÀÇ °æÇèÀ» ¹ÙÅÁÀ¸·Î ÀÌ·¯ÇÑ µ¶ÀÚµéÀÌ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖ°Ô À̾߱⸦ µé·ÁÁÖ´Â °Íó·³ ÀÌ Ã¥À» ±â¼úÇß´Ù. ÀÌ Ã¥ÀÌ Ãß±¸ÇÏ´Â °ÍÀº µ¶ÀÚµéÀÌ ºü¸£°Ô ROSÀÇ ¿ø¸®¿Í »ç¿ë¹ýÀ» ÆľÇÇؼ ÇÏ°í ½ÍÀº ÀÏÀ» ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â °ÍÀÌ´Ù.
ÀÌ Ã¥ ÇÑ ±ÇÀÌ¸é ´Ù µÈ´Ù°í ÇÏ´Â ¸»Àº ¾Æ´Ï´Ù. ÀúÀÚÀÎ ³»°¡ µ¶Àںе鿡°Ô ÇÏ°íÀÚ ÇÏ´Â ¸»Àº ¡®ÀÌ·¸°Ô ¹è¿ì¸é Á» ´õ ½±Áö ¾ÊÀ»±î¿ä?¡¯¶ó´Â °ÍÀÌ´Ù. ¼öÇÐÀÇ ÇÑ ºÐ¾ß¶ó¸é ÇÑ ±ÇÀÌ¸é ´Ù µÇ´ÂÃ¥ÀÌ Áß¿äÇÏ°ÚÁö¸¸, Àüü ÀοøÀÌ °¡´Æµµ ¾È µÇ´Â »ç¶÷µéÀÌ Âü¿©Çؼ ´Ù¾çÇÑ ÆÐÅ°Áö¸¦ °øÀ¯ÇÏ´Â ROS¶ó´Â »ýÅ°迡 ±×·¸°Ô Á¢±ÙÇÒ ¼ö ÀÖ´Ù°í »ý°¢ÇÏÁö ¾Ê´Â´Ù. ¶ÇÇÑ, ¿ì¸®¿¡°Ô´Â ¡®Ç¥À±¼®¡¯ ¹Ú»ç¶ó´Â ¸Å¿ì ¶Ù¾î³ ROS Àüµµ»ç°¡ °è¼Å¼ ±×ºÐÀÇ Ã¥°ú ÀڷḦ ÅëÇØ ROS2ÀÇ ±âº»ÀûÀÎ µ¿ÀÛ ¿ø¸® µîÀ» ¾Ë ¼ö ÀÖ´Ù. ±×·¡¼ ³»°¡ ¼ö¾÷ ¶§ Áñ°Ü Á¢±ÙÇÏ´Â ¹æ½Ä´ë·Î ÀÌ Ã¥À» ±â¼úÇß´Ù. - ÀúÀÚÀÇ ¸» Áß¿¡¼
ÀúÀÚ¼Ò°³
10³âÀÌ ÈξÀ ³Ñ´Â ±â°£ µ¿¾È ·Îº¿°ú Á¦¾î°øÇÐ, µö·¯´× ¹× µ¥ÀÌÅÍ»çÀ̾𽺸¦ ´Ù·ç´Â ºí·Î±×(pinkwink.kr)¸¦ ¿î¿µÇÏ°í ÀÖ´Ù .±¹¸³Ã¢¿ø´ëÇб³ Á¦¾î°èÃø°øÇаú¿¡¼ Á¦¾î°øÇÐÀ» Àü°øÇÏ°í °øÇÐ ¹Ú»ç ÇÐÀ§¸¦ ¹Þ¾Ò´Ù. ¿£Æ¼·º½º ·Îº¿¿¬±¸¼Ò ¼ÒÀå, ¹Ì·¡ÄÄÆÛ´Ï ¼ö¼ú·Îº¿ ¿¬±¸¼Ò Ã¥ÀÓ¿¬±¸¿ø µîÀ» ¿ªÀÓÇß°í, ±¹°¡Á÷¹«´É·ÂÇ¥ÁØ(NCS) Áß¿¡¼ ·Îº¿ Àΰø Áö´É/±â°è Çϵå¿þ¾î ÇнÀ ¸ðµâ °³¹ß¿¡ Âü¿©Çß´Ù. ÀúÀÚ´Â ±¹³» ÃÖÃÊ·Î ½Ä¾àû ÀÎÁõÀ» ¹ÞÀº ¼ö¼ú¿ë ·Îº¿ÀÇ Á¦¾î ´ã´ç, ±¹³» ÃÖ´ë ±Ô¸ðÀÇ ÀüÀÚÁ¦Ç°, ·Îº¿ °ü·Ã ¿Â¶óÀÎ ¼îÇθôÀ» ¿î¿µÇÏ´ø ȸ»çÀÇ ¿¬±¸¼ÒÀå µîÀ» ¿ªÀÓÇÏ¸ç ´Ù¾çÇÑ ·Îº¿°ú ·Îº¿ °ü·Ã Á¦Ç°À» °æÇèÇÏ°í Á÷Á¢ °³¹ßÇß´Ù. ¶ÇÇÑ, µö·¯´×°ú µ¥ÀÌÅÍ »çÀ̾𽺠°ü·ÃÇؼ ´Ù¾çÇÑ ÇÁ·ÎÁ§Æ®¸¦ ¼öÇàÇÏ°í À̸¦ ±³À°¿¡ Á¢¸ñ½ÃÅ°°í ÀÖ´Ù. °øºÎÇÏ·Á´Â ºÐµéÀÌ ·Îº¿À̳ª µö·¯´×À̶ó´Â ºÐ¾ß¿¡ º¸´Ù ½±°Ô Á¢±ÙÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Ç×»ó °í¹ÎÇÏ°í ÀÖ´Ù. ÃÖ±Ù¿¡´Â µ¥ÀÌÅÍ °úÇаú ¸Ó½Å·¯´×, ·Îº¿À» ÁÖÁ¦·Î ´Ù¾çÇÑ ¿¬±¸ ¹× °¿¬È°µ¿À» ÇÏ°í ÀÖÀ¸¸ç, Àú¼·Î ¡ºÆÄÀ̽ãÀ¸·Î µ¥ÀÌÅÍ ÁÖ¹«¸£±â¡», ¡º»ý°¢´ë·Î ºí·ÏÄÚµù 1, 2¡» µîÀÌ ÀÖ´Ù.
¸ñÂ÷
¡¤¸Ó¸®¸»¡¤ÀÌ Ã¥ÀÌ À̾߱âÇÏ´Â ´ë»ó µ¶ÀÚ¡¤µé¾î°¡¸ç ȯ°æ¼³Á¤1. Å͹̳Π1.1 È¸é ºÐÇÒÀÌ µÇ´Â Å͹̳ÎÀÇ Çʿ伺 1.2 ±âº» Å͹̳Π»ç¿ëÇغ¸±â 1.3 Terminator 1.4 Tilix2. ÆíÁý±â 2.1 Sublime TextÀÇ ¼³Ä¡ 2.2 Sublime Text »ç¿ëÇغ¸±â3. ROS ¼³Ä¡ 3.1 ROS Galactic ¹öÀü ¼³Ä¡ ÆäÀÌÁö ã±â 3.2 Set Locale 3.3 Setup Sources 3.3 Install ROS2 packages 3.4 ROS2 ¼³Ä¡ È®ÀÎÇϱâ4. ¸¶¹«¸® Å͹̳ΰú bashrc ±×¸®°í ¸®´ª½º Àͼ÷ÇØÁö±â1. ÀÌ ÀåÀÇ ¸ñÀû2. UbuntuÀÇ Æú´õ °ü·Ã ±âº» ¸í·É 2.1 Æú´õ¸¦ Çϳª ¸¸µé¾î º¼°¡¿ä - mkdir 2.2 Æú´õ¸¦ À̵¿ÇØ ¸ô°¡¿ä - cd 2.3 »èÁ¦ ¸í·É = rm3. bashrc 3.1 Shell ½© 3.2 .bashrc 3.3 .bashrc¿¡ ¸í·É ÀÔ·ÂÇØ µÎ±â4. .bashrc¿¡¼ alias ¼³Á¤ 4.1 alias ¼³Á¤ 4.2 galactic ¼³Á¤À» alias·Î ÁöÁ¤Çϱâ 4.3 source ~/.bashrcµµ alias·Î ÁöÁ¤Çϱâ5. ROS2 µµ¸ÞÀÏ ¼³Á¤6. ¸¶¹«¸®ROS2 ±âº» ¸í·É ÀÍÈ÷±â1. ÀÌ ÀåÀÇ ¸ñÀû2. Turtlesim ¼³Ä¡¿Í ½ÇÇà3. ´Ù½Ã °Á¶ÇÏ´Â setup.bash ȯ°æ4. ROS Node5. ROS Service 5.1 ServiceÀÇ °³³ä 5.2 ros2 service list 5.3 ros2 service type 5.4 service definition 5.5 Mobile Robot ¼Ò°³ 5.6 ¼ºñ½º¸¦ È£ÃâÇÏ´Â ¹æ¹ý service call 5.7 namespace 5.8 spawn6. ROS Topic 6.1 TopicÀÇ °³³ä 6.2 ros2 topic list 6.3 ros2 topic type 6.4 ros2 topic info 6.5 ÅäÇÈÀ» »ç¿ëÇϱâ À§ÇØ ¸Þ½ÃÁö ŸÀÔ È®ÀÎÇϱâ 6.6 °£´ÜÇÏ°Ô Å͹̳ο¡¼ ÅäÇÈ ±¸µ¶Çغ¸±â 6.7 ÁÖÇà ¸í·É ÅäÇÈ ¹ßÇàÇØ º¸±â 6.8 ÅäÇÈÀÇ È帧À» º¸¿©ÁÖ´Â rqt_graph7. ROS Action 7.1 ³ëµå turtle_teleop_key ½ÇÇà 7.2 ros2 action list 7.3 ros2 action send_goal8. ¸¶¹«¸®PythonÀ¸·Î ROS2 ÅäÇÈ ´Ù·ç±â1. ÀÌ ÀåÀÇ ¸ñÀû2. ¼³Ä¡ ¹× Áغñ3. JupyterÀÇ °£´ÜÇÑ »ç¿ë¹ý ¹× Python ±âÃÊ 3.1 JupyterÀÇ ±âº» »ç¿ë 3.2 Markdown ¹®¼4. PythonÀ¸·Î ÅäÇÈ ±¸µ¶Çϱâ 4.1 Jupyter·Î ÅäÇÈÀ» ±¸µ¶Çϱâ À§ÇÑ Áغñ 4.2 ÄÚµù¿¡ µé¾î°¡±â Àü¿¡ ´çºÎÀÇ ¸» 4.3 ±¸µ¶À» À§ÇØ ÇÊ¿äÇÑ ¸ðµâ import 4.4 Python Import ¹æ½Ä 4.5 rclpyÀÇ ÃʱâÈ ¹× ³ëµå »ý¼º 4.6 Subscription¿¡¼ ½ÇÇàÇÒ callback ÇÔ¼ö ÀÛ¼º 4.7 ÅäÇÈ subscriber ¸¸µé±â 4.8 Jupyter »ç¿ëÇؼ À¯ÀÇÇÒ Á¡ 4.9 ÅäÇÈÀ» ¹Þ´Â Ƚ¼ö Á¦ÇÑÇغ¸±â5. PythonÀ¸·Î ÅäÇÈ ¹ßÇàÇϱâ 5.1 Jupyter·Î ÅäÇÈÀ» ¹ßÇàÇϱâ À§ÇÑ Áغñ 5.2 ÅäÇÈ ¹ßÇàÀ» À§ÇÑ rclpy¿Í ¸Þ½ÃÁö ÃʱâÈ 5.3 cmd_vel ÅäÇÈÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀÎ Twist ¼±¾ð 5.4 PythonÀ¸·Î cmd_vel ÅäÇÈ °£´ÜÈ÷ ¹ßÇàÇغ¸±â 5.5 ROS¿¡¼ timer¸¦ ÀÌ¿ëÇؼ ÅäÇÈ ¹ßÇàÇϱâ6. ³ëµåÀÇ Á¾·ù7. ¸¶¹«¸®PythonÀ¸·Î ¼ºñ½º Å©¶óÀ̾ðÆ® ´Ù·ç±â1. ÀÌ ÀåÀÇ ¸ñÀû2. PythonÀ¸·Î ROS Service Client »ç¿ëÇϱâ 2.1 ÇнÀÀ» À§ÇÑ Áغñ¿Í Service Client¸¦ À§ÇÑ ³ëµå »ý¼º 2.2 ¼ºñ½º¸¦ ¿äûÇÏ´Â Service client »ý¼º 2.3 ¼ºñ½ºÀÇ Á¤ÀÇ(service definition)¸¦ Python¿¡¼ »ç¿ëÇÒ ÁغñÇϱâ 2.4 °£´ÜÈ÷ service callÀ» ½ÇÇàÇØ º¸±â 2.5 wait_for_service »ç¿ëÇغ¸±â 2.6 ¼ºñ½º Ŭ¶óÀ̾ðÆ®°¡ ½ÇÇàµÇ´Â »óȲ È®ÀÎÇϱâ3. ¸¶¹«¸®ROS2 ÇнÀÀ» À§ÇÑ Python Class ÀÌÇØÇϱâ1. ÀÌ ÀåÀÇ ¸ñÀû2. ÁغñÀÛ¾÷ ¹× ±×³É sin ÇÔ¼ö ±×·Áº¸±â 2.1 ºó ¹®¼ ÁغñÇϱâ 2.2 matplotlib »ç¿ë ÁغñÇÏ°í import Çϱâ 2.3 domain ÁغñÇϱâ 2.4 sin ÇÔ¼ö ±¸Çϱâ 2.5 ±×·¡ÇÁ ±×·Áº¸±â 2.6 ÇÔ¼ö def·Î ±¸ÇöÇغ¸±â3. Ŭ·¡½º·Î sin ÇÔ¼ö¸¦ ±×·Áº¸±â 3.1 ÀÏ´Ü Å¬·¡½º¿¡ º¯¼ö¶óµµ µî·ÏÇغ¸ÀÚ 3.2 »ï°¢ÇÔ¼ö¸¦ ±×¸®´Â Ŭ·¡½º ¿Ï¼ºÇϱâ4. Ŭ·¡½ºÀÇ »ó¼Ó Inherritance5. ¸Þ¼µå ¿À¹ö¶óÀ̵ù Method Overriding6. Ŭ·¡½º¿¡¼ super()ÀÇ »ç¿ë7. ¸¶¹«¸®ÆÐÅ°Áö ¸¸µé°í ÅäÇÈ ´Ù·ç±â1. ÀÌ ÀåÀÇ ¸ñÀû2. ¼³Ä¡ ¹× Áغñ3. óÀ½À¸·Î ÆÐÅ°Áö ¸¸µé±â 3.1 ÀÏ´Ü ÆÐÅ°Áö¸¦ ¹«ÀÛÁ¤ ¸¸µé¾î º¸ÀÚ 3.2 ÆÐÅ°Áö ºôµå Çغ¸±â, ±×¸®°í ¿öÅ©½ºÆäÀ̽º ¼³Á¤4. Topic Subscriber ³ëµå Ãß°¡ 4.1 »õ·Î¿î subscriber ÆÄÀÏ Ãß°¡Çϱâ 4.2 my_subscriber.py ÆÄÀÏ ¼³¸í 4.3 »õ·Î Ãß°¡ÇÑ ³ëµå ½ÇÇàÇØ º¸±â5. Topic Publisher ³ëµå Ãß°¡ 5.1 my_publisher.py ÆÄÀÏ ¼³¸í 5.2 ¿öÅ©½ºÆäÀ̽ºÀÇ ºôµå Á¤º¸¸¦ Áö¿ì°í ½Í´Ù¸é 5.3 my_publisher ½ÇÇàÇØ º¸±â6. ¸¶¹«¸®¸Þ½ÃÁö Á¤ÀÇ ¸¸µé°í ÅäÇÈ°ú ¼ºñ½º¿¡¼ ´Ù·ç±â1. ÀÌ ÀåÀÇ ¸ñÀû2. ¸Þ½ÃÁö Á¤ÀÇ 2.1 ¸Þ½ÃÁö Á¤ÀǸ¦ À§ÇÑ º°µµÀÇ ÆÐÅ°Áö ¸¸µé±â 2.2 ¸Þ½ÃÁö Á¤ÀÇ msg definition ¸¸µé±â 2.3 »õ·Î Á¤ÀÇµÈ msg¸¦ Æ÷ÇÔÇÑ ÆÐÅ°Áö ºôµåÇϱâ3. µÎ °³ÀÇ ÅäÇÈÀ» ±¸µ¶ÇÏ°í ÇϳªÀÇ ÅäÇÈÀ» ¹ßÇàÇÏÀÚ 3.1 turtlesimÀÌ ¹ßÇàÇÏ´Â pose ÅäÇÈ ±¸µ¿ ºÎºÐºÎÅÍ ½ÃÀÛÇÏÀÚ 3.2 »õ·Î Á¤ÀÇÇÑ CmdAndPoseVelÀ» »ç¿ëÇØ º¸ÀÚ 3.3 cmd_vel ÅäÇȵµ ±¸µ¶ÇØ º¸±â 3.4 µÎ °³ÀÇ ÅäÇÈÀ» ±¸µ¶ÇÑ °á°ú¸¦ ¹ßÇàÇØ º¸ÀÚ4. ¼ºñ½º Á¤ÀÇ Service definition ³»°¡ Çѹø ¸¸µé¾î º¸ÀÚ 4.1 ¼ºñ½º Á¤ÀÇ ¸¸µé°í ºôµåÇϱâ 4.2 ¼ºñ½º ¼¹ö ¸¸µé¾î º¸ÀÚ 4.3 ¼ºñ½º ¼¹ö ÄÚµå ¾È¿¡ Ŭ¶óÀ̾ðÆ® Äڵ带 ¸¸µé¾î º¸ÀÚ 4.4 ¿©·¯ °ÅºÏÀ̸¦ ¿ø ¸ð¾çÀ¸·Î ¹èÄ¡Çϱâ À§ÇÑ °í¹Î 4.5 ¿©·¯ °ÅºÏÀ̸¦ ¹èÄ¡ÇÏ´Â ¼ºñ½º ¼¹ö ±¸Çö 4.6 ¿©·¯ °ÅºÏÀ̸¦ µîÀå½ÃÅ°ÀÚ5. ¸¶¹«¸®¾×¼Ç Àͼ÷ÇØÁö±â1. ÀÌ ÀåÀÇ ¸ñÀû2. ¾×¼Ç Á¤ÀÇ ¸¸µé±â 2.1 ¾×¼Ç Á¤ÀǸ¦ ¸¸µé±â À§ÇÑ Áغñ 2.2 ¾×¼Ç Á¤ÀÇ ¸¸µé±â 2.3 ¾×¼Ç Á¤ÀÇ ºôµåÇϱâ3. °£´ÜÇÑ ¾×¼Ç ¼¹ö·Î °³³ä µé¿©´Ùº¸±â 3.1 °£´ÜÈ÷ °á°ú¸¦ º¸¿©ÁÖ´Â ¾×¼Ç ¼¹ö 3.2 feedbackÀ» ¾×¼Ç ¼¹ö¿¡ Ãß°¡ÇØ º¸±â4. ROS2 Multi Thread ±âÃÊ5. ÁöÁ¤ÇÑ °Å¸®¸¸Å À̵¿ÇÏ´Â ¾×¼Ç ¼¹ö ¸¸µé±â 5.1 ÀüüÄÚµå 5.2 main:¸ÖƼ½º·¹µå Àû¿ë 5.3 TurtleSub_Action: pose ÅäÇÈ ±¸µ¶ 5.4 DistTurtleServer: »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ °Å¸®¸¸Å À̵¿6. ¾×¼Ç ¼¹ö °£´ÜÈ÷ »ç¿ëÇغ¸±â7. ¸¶¹«¸®Parameter ´Ù·ç±â1. ÀÌ ÀåÀÇ ¸ñÀû2. Å͹̳Π¸í·ÉÀ¸·Î ÆĶó¹ÌÅÍ »ç¿ëÇغ¸±â 2.1 ½Ç½Àȯ°æ 2.2 ros2 param list 2.3 ros2 param get 2.4 ros2 param set 2.5 ros2 param dump 2.6 ros2 param load3. ÄÚµå·Î Á¢±ÙÇÏ´Â ÆĶó¹ÌÅÍ 3.1 ÀÏ´Ü ÆĶó¹ÌÅ͸¦ ¼±¾ðÇÏÀÚ 3.2 ÆĶó¹ÌÅ͸¦ ÄÚµå ³»¿¡¼ »ç¿ëÇÏ´Â ¹æ¹ý 3.3 ÆĶó¹ÌÅÍ°¡ º¯°æµÇ´Â °Í ´«Ä¡Ã¤±â4. ¸¶¹«¸®µð¹ö±×¿Í °üÂûÀ» À§ÇÑ ¿©·¯ µµ±¸µé1. ÀÌÀåÀÇ ¸ñÀû2. ·Î±× 2.1 °£´ÜÈ÷ rqt_consoleÀ» ÀÌ¿ëÇؼ ·Î±× È®ÀÎÇϱâ 2.2 ·Î±× ¸Þ½ÃÁö Á÷Á¢ ¸¸µé±â3.rqt 3.1 rqt_graph 3.2 rqt_plot 3.3 topic monitor 3.4 topic publisher4. rosbag5. ROSLAUNCH 5.1 roslaunch ±âº» 5.2 parameter ÁöÁ¤Çϱâ6. ¸¶¹«¸®¸¶Ä¡¸ç