Don't Worry, Be Happy πŸ˜›

ROS2 Docker Setting

ROS2 κ°œλ°œμ„ μœ„ν•΄ Docker μ»¨ν…Œμ΄λ„ˆλ₯Ό μ„€μ •ν•  λ•Œ λ°œμƒν•˜λŠ” κ·Έλž˜ν”½ μ‹€ν–‰ μ΄μŠˆμ™€ ν•΄κ²° 과정을 λ‹¨κ³„λ³„λ‘œ μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.

#Youtube Docker 자료 μ„€λͺ… 정리


원본 링크[Docker_Ros]

#λ„μ»€μ˜ 일반적 λ¬Έμ œμ™€ ν™œμš©μ€?

λ„μ»€μ˜ 기초λ₯Ό 배우고 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν–ˆμ§€λ§Œ, 일뢀 κ·Έλž˜ν”½ ν”„λ‘œκ·Έλž¨μ€ μ‹€ν–‰λ˜μ§€ μ•Šμ•„μš”.
λ„€νŠΈμ›Œν¬ 톡신은 μ΄μƒν•˜κ²Œ μž‘λ™ν•˜λ©°, 곡유 λ³Όλ₯¨μ—μ„œ μƒμ„±ν•œ νŒŒμΌμ€ μž κΈ°λŠ” λ“±μ˜ λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμ–΄μš”.
μ˜€λŠ˜μ€ Dockerfileκ³Ό docker run λͺ…령에 μˆ˜μ •μ„ κ°€ν•΄ μ΄λŸ¬ν•œ 일반적 λ¬Έμ œλ“€μ„ ν•΄κ²°ν•΄λ³Ό κ±°μ—μš”.
λ‘œλ΄‡κ³΅ν•™ 및 μžλ™ν™” μ†Œν”„νŠΈμ›¨μ–΄ 개발 ν™˜κ²½μ„ 예둜 λ“€λ©° ν•΄κ²° 방법을 λ³΄μ—¬μ£Όκ² μ§€λ§Œ, μ΄λŠ” λ‹€μ–‘ν•œ Docker μ‚¬μš© μ‹œλ‚˜λ¦¬μ˜€μ—λ„ 적용 κ°€λŠ₯ν•΄μš”.
μ΅œμ’…μ μœΌλ‘œ DockerλŠ” 맀우 κ²¬κ³ ν•œ ν”Œλž«νΌμ΄λ©°, λ‹€μ–‘ν•œ 이미지λ₯Ό ꡬ좕할 수 μžˆλŠ” μ•ˆμ •μ μΈ κΈ°λ°˜μ„ μ œκ³΅ν•΄μš”.

#도컀 파일 μ—…λ°μ΄νŠΈ 및 ROS 이미지 λ³€κ²½

μ˜μƒμ—μ„œ λ³΄μ—¬λ“œλ¦¬λŠ” λ‚΄μš© 쀑 잘λͺ»λ˜μ—ˆκ±°λ‚˜ μ΅œμ„ μ˜ 방법이 μ•„λ‹Œ 뢀뢄이 μžˆμ„ 수 μžˆμ–΄μš”.
DockerfilesλŠ” Alison Thaxton이 μž‘μ„±ν•œ 것을 μ°Έκ³ ν–ˆκ³ , μ—¬λŸ¬ λͺ¨λ²” 사둀λ₯Ό μ œκ³΅ν–ˆμ–΄μš”.
이전 μ˜μƒμ—μ„œ 남겨둔 뢀뢄을 λ°”νƒ•μœΌλ‘œ ROS 도컀 이미지λ₯Ό λ³€κ²½ν•˜κΈ°λ‘œ ν•˜μ˜€μ–΄μš”.
κΈ°λŠ₯에 맞좰 μ‚¬μš©λ  이미지λ₯Ό λ³€κ²½ν•΄μ•Ό ν•œλ‹€λŠ” λ‚΄μš©μ„ 닀루죠.

#도컀 μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ‚¬μš©μž μ„€μ •ν•˜λŠ” 방법은?

도컀 μ»¨ν…Œμ΄λ„ˆ λ‚΄μ—μ„œ μƒμ„±λœ 파일이 ν˜ΈμŠ€νŠΈμ—μ„œ 루트 μ‚¬μš©μžμ— μ˜ν•΄ μƒμ„±λ˜μ–΄ 잠겨있던 문제λ₯Ό ν•΄κ²°ν•΄μ•Ό ν•΄μš”.

λ¦¬λˆ…μŠ€μ—μ„œλŠ” μ‚¬μš©μžμ—κ²ŒλŠ” μ‚¬μš©μžλͺ…κ³Ό μ‚¬μš©μž ID 번호 λ˜λŠ” UIDκ°€ 있고, 도컀 μ»¨ν…Œμ΄λ„ˆλŠ” 기본적으둜 루트둜 싀행돼.

주둜 ν˜ΈμŠ€νŠΈμ™€ ν˜Έν™˜μ„± μžˆλŠ” μ‚¬μš©μžλ‘œ λ˜λŠ” 일반 μ‚¬μš©μžλ‘œ μ‹€ν–‰ν•˜λ €λ©΄ λ¦¬λˆ…μŠ€ μ‚¬μš©μž 식별에 λŒ€ν•œ λ°°κ²½ 지식이 ν•„μš”ν•΄μš”.

νŒŒμΌμ„ μƒμ„±ν•˜λŠ” μ‚¬μš©μžλŠ” μƒμ„±ν•œ μ‚¬μš©μžμ˜ UIDλ₯Ό μ €μž₯ν•˜λŠ”λ°, ls -l λͺ…령은 μ‚¬μš©μž 이름을 λ³΄μ—¬μ£Όμ§€λ§Œ ls -ln λͺ…령을 톡해 μ‚¬μš©μž ID 번호λ₯Ό 확인할 수 μžˆμ–΄μš”.

νŒŒμΌλ§ˆλ‹€ μ‚¬μš©μž ID와 κ·Έλ£Ή IDκ°€ μžˆμ–΄μ„œ μ†Œμœ μžλ§Œ νŽΈμ§‘ν•˜κ³  λ‹€λ₯Έ μ‚¬μš©μžλŠ” λ³Ό 수 μžˆλ„λ‘ ν•˜λŠ” λ“±μ˜ μ œν•œμ„ λ‘λŠ” 것도 κ°€λŠ₯ν•΄μš”.

Docker에 μ‚¬μš©μž μ§€μ • 방법은?

Dockerμ—κ²Œ μƒˆ μ‚¬μš©μžλ₯Ό μ‚¬μš©ν•˜λ„λ‘ μ§€μ‹œν•˜λŠ” 방법은 λͺ‡ κ°€μ§€κ°€ μžˆμ–΄μš”.

μ‚¬μš©μžλ₯Ό λ§Œλ“€κΈ° μ „μ—λŠ” μ‹€μ œλ‘œ μž‘λ™ν•˜μ§€ μ•Šμ•„μš”.

μ½”λ“œλ₯Ό λΆ™μ—¬λ„£μœΌλ©΄μ„œ β€˜λ‘œμŠ€(Ross)β€˜λΌλŠ” μ‚¬μš©μžλ₯Ό μƒμ„±ν•˜κ³  UID 및 GID 1000으둜 μ„€μ •ν•˜λ©°, μ΄λŸ¬ν•œ μΈμˆ˜λ“€μ΄ λΉŒλ“œ μ‹œ λ³€κ²½ κ°€λŠ₯ν•˜λ„λ‘ μ„€μ •λ˜μ–΄ μžˆλ‹€κ³  ν•΄μš”.

ν˜„μž¬ β€˜λ±(deck)β€˜μΈ ν˜ΈμŠ€νŠΈμ™€ λ‹€λ₯Έ μ‚¬μš©μžλͺ…이라 생각할 수 μžˆμ§€λ§Œ, μž‘λ™ν•  수 μžˆλ‹€λŠ” 점을 기닀렀봐야 ν•΄μš”.

μ‚¬μš©μžλ₯Ό μœ„ν•œ ν™ˆ 디렉토리와 ꡬ성 디렉토리가 μƒμ„±λ˜λ©°, 일뢀 ν”„λ‘œκ·Έλž¨μ€ ν•΄λ‹Ή 디렉토리가 μžˆμ„ κ²ƒμœΌλ‘œ μ˜ˆμƒλΌμš”.

β€˜docker build -t myimage’λ₯Ό μ‚¬μš©ν•˜μ—¬ μ»¨ν…Œμ΄λ„ˆλ₯Ό λ‹€μ‹œ λΉŒλ“œν•œ ν›„ μ €μž₯ν•  수 있고, β€˜humbledesktop/full’이 μ‹€μ œ 리포지토리인 것을 μžŠμ–΄λ²„λ Έλ‹€λ©΄, μƒˆ 이미지λ₯Ό λ‹€μš΄λ‘œλ“œν•  것이라 κΈ°λ‹€λ €μ•Ό ν•©λ‹ˆλ‹€.

도컀 μ»¨ν…Œμ΄λ„ˆμ—μ„œμ˜ μ‚¬μš©μž μ„€μ •κ³Ό 파일 μ†Œμœ κΆŒ 확인

도컀 μ»¨ν…Œμ΄λ„ˆ λ‚΄μ—μ„œ νŠΉμ • λ³Όλ₯¨μ„ λ§€ν•‘ν•˜μ—¬ μƒˆ μ‚¬μš©μžλ‘œ μ‹€ν–‰ν•˜λŠ” 방법을 μ†Œκ°œν•΄μš”.

μ»¨ν…Œμ΄λ„ˆ μ•ˆμ—μ„œ 파일의 μ†Œμœ μžλ₯Ό λ³€κ²½ν•˜κ³  ν˜ΈμŠ€νŠΈμ™€μ˜ 관련성을 μ„€λͺ…ν•©λ‹ˆλ‹€.

도컀 μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ‚¬μš©μžλ₯Ό ν˜ΈμŠ€νŠΈμ™€ μΌμΉ˜μ‹œν‚€λŠ” 것이 μ€‘μš”ν•œ κ²½μš°μ— λŒ€ν•œ 상황을 μ„€λͺ…ν•˜κ³ , νŒŒμΌμ— λŒ€ν•œ μ†Œμœ κΆŒ κ΄€λ ¨ μ˜ˆμ™Έμ μΈ 상황에 λŒ€ν•΄ μ–ΈκΈ‰ν•˜λ©° μΌλ°˜μ μœΌλ‘œλŠ” λ¬Έμ œμ—†μŒμ„ κ°•μ‘°ν•΄μš”.

λ„μ»€νŒŒμΌμ—μ„œμ˜ μ‚¬μš©μž 관리 방법?

λ„μ»€νŒŒμΌ λ‚΄μ—μ„œ μ‚¬μš©μžλ₯Ό λ³€κ²½ν•˜κ±°λ‚˜ 루트 κΆŒν•œμœΌλ‘œ μ „ν™˜ν•˜λŠ” 방법에 λŒ€ν•΄ μ„€λͺ…ν•΄μš”.

μ‚¬μš©μž 이름, UID λ˜λŠ” GIDλ₯Ό λ³€κ²½ν•˜λ €λ©΄ Dockerfile λ˜λŠ” λΉŒλ“œ μ‹œμ— 인수 전달 κ°€λŠ₯ν•΄μš”.

μ‚¬μš©μž λ³€κ²½ ν›„ λͺ…령이 ν•΄λ‹Ή μ‚¬μš©μžλ‘œ μ‹€ν–‰λ˜λ©°, λ§ˆμ§€λ§‰ μ‚¬μš©μžκ°€ μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ μ‹œ κΈ°λ³Έ μ‚¬μš©μžκ°€ λ©λ‹ˆλ‹€.

이미지λ₯Ό ν™•μž₯ν•  λ•Œ 루트 μ‚¬μš© 여뢀에 μ£Όμ˜ν•˜κ³ , β€˜RUN’ λͺ…λ Ήμ–΄λ‘œ μ‹œμž‘ν•  λ•Œ μ‚¬μš©ν•  μ‚¬μš©μžλ₯Ό 선택할 수 μžˆμ–΄μš”.

sudo와 pseudo κΆŒν•œ μ„€μ •μ˜ μ£Όμš” κΈ°λŠ₯?

μ£Όμš” κΈ°λŠ₯은 두 κ°€μ§€λ‘œ, λ¨Όμ € aptλ₯Ό μ‚¬μš©ν•˜μ—¬ sudoλ₯Ό μ„€μΉ˜ν•΄μš”.

그리고 λ‹€λ₯Έ κΈ°λŠ₯으둜, pseudo κΆŒν•œμ„ μ„€μ •ν•΄μš”.

이둜써, νŠΉμ • μ‚¬μš©μžμ—κ²Œ sudo κΆŒν•œμ„ λΆ€μ—¬ν•˜κ³  sudoλ₯Ό μ‹€ν–‰ν•  λ•Œλ§ˆλ‹€ λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•  ν•„μš”κ°€ 없도둝 μ„€μ •ν•΄μš”.

λΉ„λ°€λ²ˆν˜Έλ₯Ό μ„€μ •ν•˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— 이 λ™μž‘μ„ λ³€κ²½ν•˜κ±°λ‚˜ νŠΉμ • ν”„λ‘œκ·Έλž¨μ΄ sudo둜 μ‹€ν–‰λ˜λŠ” 것을 μ œν•œν•  수 μžˆμ–΄μš”.

이제 apt μ„€μΉ˜ μž‘μ—…μ„ μ²˜λ¦¬ν•˜κΈ° 전에 κ΄€λ ¨ λͺ…λ Ήμ–΄λ₯Ό λ‹€λ€„λ΄μš”.

이 λͺ…λ Ήμ–΄λ“€μ—λŠ” 해석할 μš”μ†Œκ°€ λͺ‡ κ°€μ§€ μžˆμœΌλ―€λ‘œ κΆκΈˆμ¦μ„ ν•΄μ†Œν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν•΄ λ³Όκ²Œμš”.

Dockerμ—μ„œ apt-get κ³Ό apt의 차이와 μ—…λ°μ΄νŠΈ ν•„μš”μ„±

apt-get은 μžλ™ν™”λœ μž‘μ—… 및 μŠ€ν¬λ¦½νŠΈμ— 더 μ‹ λ’°μ„± 있고 ν˜Έν™˜ κ°€λŠ₯ν•˜κ²Œ μ‚¬μš©λΌμš”.

반면, aptλŠ” μ‚¬μš©μž μΉœν™”μ μœΌλ‘œ μ„€κ³„λ˜μ–΄ μžˆμ§€λ§Œ μžλ™ν™”λœ μž‘μ—…μ—λŠ” μ ν•©ν•˜μ§€ μ•Šμ•„μš”.

β€˜apt-get update’λ₯Ό μ‹€ν–‰ν•΄μ•Ό ν•˜λŠ” μ΄μœ λŠ” 이전 호좜둜 νŒ¨ν‚€μ§€ λͺ©λ‘μ΄ μ™„μ „νžˆ λ¬΄νš¨ν™”λ˜μ—ˆμ„ κ°€λŠ₯성이 μžˆμ–΄ μ„€μΉ˜λ₯Ό μœ„ν•΄ μƒˆλ‘œ 고쳐야 ν•˜κ³ , 도컀 이미지λ₯Ό λ‹€μ‹œ λΉŒλ“œν•  λ•Œ 이전 라인을 μž¬μ‹€ν–‰ν•˜μ§€ μ•Šμ„ 수 있기 λ•Œλ¬Έμ΄μ—μš”.

β€˜install -y’λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” μ΄μœ λŠ” μ‚¬μš©μžκ°€ 확인을 μš”μ²­ν•˜μ§€ μ•Šκ³  β€˜μ˜ˆβ€™λ‘œ μ‘λ‹΅ν•˜λ„λ‘ κ°•μ œν•œλ‹€λŠ” κ±°μ£ .

Docker λͺ…λ Ήμ–΄ μ‹€ν–‰μ˜ 이유?

λͺ¨λ“  ν”„λ‘œκ·Έλž¨μ„ κ°œλ³„μ μΈ μ‹€ν–‰ λͺ…λ Ήμ–΄λ‘œ μ„€μΉ˜ν•  수 μžˆμ§€λ§Œ, μ΄λŠ” 번거둜울 뿐만 μ•„λ‹ˆλΌ 각 μ„€μΉ˜λ§ˆλ‹€ νŒ¨ν‚€μ§€ λͺ©λ‘μ„ μ—…λ°μ΄νŠΈν•΄μ•Ό ν•˜λŠ” λ²ˆκ±°λ‘œμ›€μ΄ μžˆμ–΄μš”.

νŒ¨ν‚€μ§€ λͺ©λ‘μ„ μ‚­μ œν•˜λŠ” μ΄μœ λŠ” μ΅œμ’… μ΄λ―Έμ§€μ˜ 크기λ₯Ό 쀄이기 μœ„ν•¨μ΄λ©°, λ‹€λ₯Έ κ³„μΈ΅μ—μ„œλ„ μ΄λŸ¬ν•œ μž‘μ—…μ΄ λ°œμƒν•˜λŠ” κ±Έ λ°©μ§€ν•˜κΈ° μœ„ν•¨μ΄μ—μš”.

apt-get updateλ₯Ό μ‹€ν–‰ν•˜μ§€ μ•Šκ³  μ„€μΉ˜ λͺ…령을 내릴 경우 λ‚˜μ€‘μ— ν”„λ‘œκ·Έλž¨ μ„€μΉ˜κ°€ λΆˆκ°€λŠ₯ν•΄μ§ˆ 수 μžˆμœΌλ―€λ‘œ ν•œ λ²ˆμ— λͺ¨λ‘ μ‹€ν–‰ν•΄μ•Ό ν•΄μš”.

도컀 ν™˜κ²½ λ³€μˆ˜ μ„€μ •

도컀λ₯Ό μ‚¬μš©ν•΄ ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •ν•  λ•Œ Debian_frontendλ₯Ό non-interactive둜 μ„€μ •ν•  수 μžˆμ–΄μš”.

μ„€μΉ˜ κ³Όμ • 쀑에 λ‹€λ₯Έ μ‚¬μš©μž ν”„λ‘¬ν”„νŠΈλ₯Ό λ°›μ§€ μ•Šκ²Œ ν•΄μš”.

μ‹€ν—˜ κ²°κ³Ό, 큰 차이λ₯Ό λͺ» 느꼈고, ꡬ글링 κ²°κ³Ό 이것을 넣어도 일뢀 ν”„λ‘¬ν”„νŠΈκ°€ ν‘œμ‹œλ  수 μžˆλ‹€κ³  ν•΄μš”.

λ”°λΌμ„œ Docker ENV λͺ…령을 μ‚¬μš©ν•˜μ—¬ μ„€μ •ν•˜μ§€ μ•ŠλŠ” 것이 μ’‹μ•„μš”.

μ΄λ ‡κ²Œ ν•˜μ§€ μ•ŠμœΌλ©΄ 이후에 λ‹€μ‹œ 끄지 μ•Šμ•˜λ‹€κ°€ μ‚¬μš©ν•˜λŠ” λͺ¨λ“  μ‚¬μš©μžμ— 영ν–₯ 쀄 수 μžˆμ–΄μš”.

λ„μ»€μ—μ„œμ˜ μ€‘μš”ν•œ 섀정은?

Dockerλ₯Ό μ‚¬μš©ν•  λ•Œ, μ€‘μš”ν•œ 것 쀑 ν•˜λ‚˜λŠ” λ„€νŠΈμ›Œν‚Ήμ΄μ—μš”.

ROSλ₯Ό μ‚¬μš©ν•œλ‹€λ©΄, β€˜out of the boxβ€™λ‘œλŠ” 항상 잘 μž‘λ™ν•˜μ§€ μ•ŠμŒμ„ 빨리 κΉ¨λ‹«κ²Œ λ˜μ–΄μš”.

DockerλŠ” 높은 μ„€μ • κ°€λŠ₯성을 κ°€μ§„ λ„€νŠΈμ›Œν‚Ή μ‹œμŠ€ν…œμ„ κ°€μ§€κ³  μžˆμ–΄μ„œ λ³΅μž‘ν•œ μž‘μ—…μ„ ν•  수 있죠.

λ‘œλ΄‡ μ‘μš© ν”„λ‘œκ·Έλž¨μ—μ„œλŠ” 이λ₯Ό κ³ λ €ν•˜μ§€ μ•Šκ³  λͺ¨λ“  것이 μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜κΈΈ 원할 λ•Œ, β€”network=hostλ₯Ό μΆ”κ°€ν•˜μ—¬ ν˜ΈμŠ€νŠΈμ™€ λ„€νŠΈμ›Œν‚Ήμ„ κ³΅μœ ν•˜λ„λ‘ μ§€μ‹œν•˜κ³ , β€”ipc=hostλ₯Ό μΆ”κ°€ν•˜μ—¬ 곡유 λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•˜λ„λ‘ μ§€μ‹œν•˜μ—¬ μ†Œν†΅ μ‹œμŠ€ν…œμ—μ„œ μ‚¬μš© κ°€λŠ₯ν•˜κ²Œ ν•΄μš”.

도컀 λ„νλ¨ΌνŠΈμ˜ λ‚΄μš©μ€ λ¬΄μ—‡μΈκ°€μš”?

도컀 λ„νλ¨ΌνŠΈλŠ” μ˜΅μ…˜μ— λŒ€ν•΄ μΉœμ ˆν•˜κ²Œ μ„€λͺ…ν•˜λ©°, GUI ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 방법도 λ‹€λ£¨μ–΄μš”.

λ„μ»€νŒŒμΌμ„ 생성할 λ•Œ Entry point와 commandλ₯Ό μ§€μ •ν•  수 μžˆμ§€λ§Œ, 두 κ°€μ§€κ°€ μƒν˜Έμž‘μš©ν•˜λŠ” 방식은 쑰금 λ³΅μž‘ν•˜μ£ .

λ˜ν•œ νŠΉμ • νŒ¨ν„΄μ„ μ†Œκ°œν•΄ μ†μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆλŠ” 방법을 μ–ΈκΈ‰ν•΄μš”.

ROS 이미지 및 μ—”νŠΈλ¦¬ 포인트 μ„€μ • 방법은?

ROS 이미지 섀정은 bash 슀크립트λ₯Ό μ΄μš©ν•΄ λŸ°νƒ€μž„ ν™˜κ²½μ„ μ„€μ •ν•˜κ³  슀크립트λ₯Ό μ‹€ν–‰ν•˜λŠ” κ²ƒμ΄μ—μš”.

이 μŠ€ν¬λ¦½νŠΈλŠ” μ‹€ν–‰ κ°€λŠ₯ν•œ 래퍼처럼 μž‘λ™ν•˜λ©° μ „λ‹¬λœ μΈμˆ˜λŠ” μΆ”κ°€λ‘œ 제곡된 λ‚΄μš©μ„ ν¬ν•¨ν•˜μ—¬ μ‹€ν–‰λΌμš”.

μ—”νŠΈλ¦¬ 포인트 μŠ€ν¬λ¦½νŠΈλŠ” 였λ₯˜ μ‹ ν˜Έλ₯Ό ν™œμ„±ν™”ν•˜κ³  ROS μ„€μΉ˜λ₯Ό μ‹€ν–‰ν•˜κ³  μ „λ‹¬λœ λ‚΄μš©μ„ 좜λ ₯ν•˜λ©° μ‹€ν–‰λΌμš”.

Dockerfile에 μΆ”κ°€ μ§€μ‹œλ¬Έμ„ λ„£μ–΄ 섀정을 μ™„λ£Œν•˜κ³  λͺ…령을 μ „λ‹¬ν•˜κΈ° μœ„ν•΄ λͺ…λ Ή μ§€μ‹œλ¬Έμ„ μ‚¬μš©ν•˜λ©°, 이미지λ₯Ό λ‹€μ‹œ λΉŒλ“œν•˜μ—¬ μ‹€ν–‰ μ‹œ μ „λ‹¬λœ 인수λ₯Ό 확인할 수 μžˆμ–΄μš”.

ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ ν›„ PCBWay μ†Œκ°œ λ™κΈ°λŠ”?

ν”„λ‘œκ·Έλž¨μ΄ νŠΉμ • λ²„μ „μ˜ ROS 및 Linuxμ—μ„œ μ‹€ν–‰ μ€‘μ΄λΌλŠ” 사싀을 인지 λͺ»ν•œ 채, λ‹¨λ…μœΌλ‘œ κ·Έ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•œ 것 κ°™μ•„μš”.

νŠœν† λ¦¬μ–Όμ—μ„œ λ‹€λ€˜λ˜ λ‚΄μš©μ΄ λ§Žμ€λ°, 이제 λ‹€μŒ λ‹¨κ³„μ—μ„œλŠ” κ·Έλž˜ν”½ ν”„λ‘œκ·Έλž¨μ„ λ™μž‘μ‹œν‚€λŠ” 것이 더 λ³΅μž‘ν•΄μ§ˆ κ²ƒμœΌλ‘œ μ˜ˆμƒλΌμš”.

λ”°λΌμ„œ μž μ‹œ 쉬어가며 이 λ™μ˜μƒμ˜ 후원사인 PCBWayλ₯Ό ν™•μΈν•˜κΈ°λ‘œ ν–ˆμ–΄μš”.

PCBWayλŠ” PCB κ΄€λ ¨ κ΅­λ‚΄ μ΅œλŒ€ ν—ˆλΈŒλ‘œ PCB μ œμž‘ 뿐만 μ•„λ‹ˆλΌ μ‘°λ¦½κΉŒμ§€ κ°€λŠ₯ν•˜λ©°, 3D ν”„λ¦°νŒ…, CNC 가곡, μ‹œνŠΈ κΈˆμ† 가곡, μ‚¬μΆœ μ„±ν˜• λ“± λ‹€μ–‘ν•œ μ œν’ˆμ„ μ œκ³΅ν•΄μš”.

PCBκ°€ ν•„μš”ν•˜μ§€ μ•Šλ‹€λ©΄, λ‹€μ–‘ν•œ λ‹€λ₯Έ μ œν’ˆλ„ μ œκ³΅ν•˜λ‹ˆ, 창의적인 아이디어λ₯Ό μ‹€ν˜„ν•˜κ³ μž ν•œλ‹€λ©΄ 링크λ₯Ό 톡해 PCBWayλ₯Ό λ°©λ¬Έν•΄λ³΄μ„Έμš”.

도컀 λ‚΄μ—μ„œ κ·Έλž˜ν”½μŠ€ μ‚¬μš©ν•˜κΈ°

도컀 λ‚΄μ—μ„œ κ·Έλž˜ν”½μŠ€λ₯Ό μ œλŒ€λ‘œ μž‘λ™μ‹œν‚€λ €λ©΄ μ‚¬μš©ν•˜κ³  μžˆλŠ” CPU μ œμ‘°μ‚¬, μ‹€ν–‰ν•˜λ €λŠ” ν”„λ‘œκ·Έλž¨, ν•„μš”ν•œ κΈ°λŠ₯ μœ ν˜•μ— 따라 λ³΅μž‘ν•  수 μžˆμ–΄μš”.

X μœˆλ„μš°μ¦ˆλ₯Ό μ‚¬μš©ν•œλ‹€κ³  κ°€μ •ν•˜λ©°, μ‚¬μš© κ°€λŠ₯ν•œ 방법은 상황에 따라 λ”λ‚˜ μ μ ˆν•œ 것이 μ‘΄μž¬ν•΄μš”.

μ‚¬μš©μž κΆŒν•œκ³Ό X에 λŒ€ν•œ μ ‘κ·Ό κΆŒν•œμ΄ μ€‘μš”ν•˜λ©°, X 도메인 μ†ŒμΌ“μ„ λ…ΈμΆœμ‹œμΌœμ•Ό ν•΄μš”.

λ˜ν•œ, ν•΄λ‹Ή μ‚¬μš©μžλ‘œ μ‹€ν–‰λœ μ»¨ν…Œμ΄λ„ˆλ“€μ΄ μ ‘κ·Όν•  수 μžˆλ„λ‘ λͺ¨λ“  μ‚¬μš©μžμ—κ²Œ κΆŒν•œμ„ λΆ€μ—¬ν•˜κ±°λ‚˜ νŠΉμ • μ‚¬μš©μžμ—κ²Œ κΆŒν•œμ„ λΆ€μ—¬ν•  수 있고, ν™˜κ²½μ„€μ • μž‘μ—… ν›„μ—λŠ” ν•„μš”μ‹œ ν•΄λ‹Ή κΆŒν•œμ„ μ·¨μ†Œν•  수 μžˆμ–΄μš”.

λ§ˆμ§€λ§‰μœΌλ‘œ, X λ””μŠ€ν”Œλ ˆμ΄λ₯Ό ν• λ‹Ήν•˜κ³ , ν˜ΈμŠ€νŠΈμ—μ„œ μ‚¬μš© 쀑인 λ””μŠ€ν”Œλ ˆμ΄λ₯Ό μ‚¬μš©ν•˜λ„λ‘ Docker에 μ§€μ‹œν•˜μ—¬ νŠΉμ • 값을 μ œκ³΅ν•˜λŠ” λŒ€μ‹ μ— 호슀트 λ””μŠ€ν”Œλ ˆμ΄λ₯Ό μ‚¬μš©ν•˜λ„λ‘ μ„€μ •ν•΄μš”.

ROS2 ν–₯ν›„ μ½˜ν…μΈ  μ˜ˆμ •μ€?

ROS2 ν† ν”½ λͺ©λ‘μ΄ μžˆλŠ” μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹œμž‘ν•˜κ³  RVizλ₯Ό μ‹€ν–‰ν•˜λ©΄ κ·Έλž˜ν”½μ΄ μ˜€ν”ˆλ  κ²ƒμœΌλ‘œ κΈ°λŒ€λ˜κ³ , CUDA의 미래 λΉ„λ””μ˜€μ—μ„œ GPU 가속에 λŒ€ν•΄ μžμ„Ένžˆ λ‹€λ£° μ˜ˆμ •μ΄μ—μš”.

λ‘œμΌ€μΌκ³Ό μ‹œκ°„λŒ€ κ°œλ…μ€ μ†Œν”„νŠΈμ›¨μ–΄κ°€ νŠΉμ • 데이터 쑰각을 μ‚¬μš©μžμ—κ²Œ μ–΄λ–»κ²Œ ν‘œν˜„ν•΄μ•Ό ν•˜λŠ”μ§€ μ•Œλ €μ£ΌλŠ” μ‹œμŠ€ν…œμΈλ°, 곡식 ROS 도컀 이미지λ₯Ό μ‚¬μš©ν•˜λ©΄ 이 μž‘μ—…μ΄ μ²˜λ¦¬λ˜μ§€λ§Œ, Ubuntu κΈ°λ³Έ μ΄λ―Έμ§€μ—μ„œ μƒμ„±ν•˜λŠ” 경우 μ£Όμ˜ν•΄μ•Ό ν•΄μš”.

ROS2 μžλ™μ™„μ„± μ„€μ • 방법은?

ROS2μ—μ„œ μžλ™μ™„μ„±μ€ 일뢀 섀정이 ν•„μš”ν•˜λ©°, .bashrc νŒŒμΌμ— μ†ŒμŠ€ λͺ…λ Ήμ–΄ μΆ”κ°€ν•˜μ—¬ ν•΄κ²°ν•  수 μžˆμ–΄μš”.

터미널이 싀행될 λ•Œλ§ˆλ‹€ .bashrc νŒŒμΌμ— λͺ…λ Ήμ–΄κ°€ μ‹€ν–‰λ˜λ„λ‘ κ΅¬μ„±ν•˜λ©΄ ros2λ‚˜ colconκ³Ό 같은 λͺ…λ Ήμ–΄λ₯Ό μžλ™μœΌλ‘œ μ™„μ„±ν•  수 μžˆμ–΄μš”.

μžλ™μ™„μ„±μ΄ μž‘λ™ν•˜μ§€ μ•Šμ„ λ•ŒλŠ” python3-ardcomplete을 μ„€μΉ˜ν•˜κ±°λ‚˜ bash completion을 μ‹œλ„ν•  수 μžˆμ–΄μš”.

λ˜ν•œ, λ‹€λ₯Έ μœ μš©ν•œ 도ꡬ, ν”„λ‘œκ·Έλž¨ 및 λΌμ΄λΈŒλŸ¬λ¦¬λ„ ν™œμš© κ°€λŠ₯ν•΄μš”.

Docker 이미지 ꡬ성 및 ν™•μž₯ 방법은?

κΈ°λ³Έ μ„€μΉ˜μ—μ„œλŠ” ν…μŠ€νŠΈ νŽΈμ§‘κΈ°, ν—₯슀 νŽΈμ§‘κΈ°, 컴파일러, 린터와 같은 것듀이 ν•„μš”ν•΄μš”.

맀우 μΌλΆ€λ§Œ 닀룬 것이며, 세뢀사항은 κ°œμΈλ§ˆλ‹€ λ‹€λ₯Ό κ±°μ—μš”.

ν•„μˆ˜μ μΈ 것이 λͺ¨λ‘ μžˆλŠ” 경우, ν•΄λ‹Ή μ˜μƒ λŒ“κΈ€μ΄λ‚˜ Articulated Robotics Discourse Forum의 λ…Όμ˜ μŠ€λ ˆλ“œμ—μ„œ μ•Œλ €μ€˜μš”.

λ§ˆμ§€λ§‰μœΌλ‘œ 도컀에 κΈ°κΈ°λ₯Ό μ „λ‹¬ν•˜λŠ” 방법은 λ‹€μŒ μ˜μƒμ— λ„£κΈ°λ‘œ κ²°μ •ν–ˆμ§€λ§Œ, κ²Œμž„νŒ¨λ“œ, 카메라, μ‹œλ¦¬μ–Ό κΈ°κΈ° 등이 될 수 μžˆμ–΄μš”.

ν˜„μž¬ μ‚¬μš© 쀑인 run λͺ…λ Ήμ–΄λŠ” λ§Žμ€ μΈμžλ“€μ„ κΈ°μ–΅ν•΄μ•Ό ν•˜κ³  μ‹€μ œλ‘œ μ‚¬μš©ν•˜λŠ” 것은 μ—¬μ „νžˆ λ‹€μ†Œ λ³΅μž‘ν•˜μ£ .

κ·Έλž˜μ„œ λ‹€μŒ μ˜μƒμ—μ„œλŠ” λͺ¨λ“  μ‹€ν–‰ μ‹œ μΈμžλ“€μ„ μ„€μ •ν•˜λŠ” 더 κΉ”λ”ν•œ 방법인 Docker Compose와 μ—¬λŸ¬ ν”Œλž«νΌμ—μ„œ κ°œλ°œμ„ κ°„νŽΈν•˜κ²Œ ν•˜λŠ” VS Code Dev containersλ₯Ό μ‚΄νŽ΄λ³Ό κ±°μ˜ˆμš”.

μ–΄λ–€ 것뢀터 λ³Όμ§€λŠ” 아직 κ²°μ •ν•˜μ§€ μ•Šμ•˜μœΌλ‹ˆ, νŠΉλ³„νžˆ 보고 싢은 것이 μžˆλ‹€λ©΄ μ•Œλ €μ€˜μš”.

Related Posts

νž™(Heap) 자료ꡬ쑰 정리

νž™(Heap)의 ꡬ쑰와 λΆ€λͺ¨-μžμ‹ 인덱슀 κ·œμΉ™, μš°μ„ μˆœμœ„ 큐 κ΅¬ν˜„μ— ν•„μš”ν•œ 핡심 κ°œλ…μ„ μ˜ˆμ‹œμ™€ ν•¨κ»˜ μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.

Share this post