๋‹จ์ผ ๋ณด๋“œ์šฉ Ubuntu IMG ์ด๋ฏธ์ง€์— ROS ์„ค์น˜

์†Œ๊ฐœ

์–ผ๋งˆ ์ „ ๋…ผ๋ฌธ์„ ์ž‘์„ฑํ•˜๋Š” ๋™์•ˆ ROS๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋œ ๋‹จ์ผ ๋ณด๋“œ ํ”Œ๋žซํผ์šฉ Ubuntu ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค(๋กœ๋ด‡ ์šด์˜์ฒด์ œ - ๋กœ๋ด‡ ์šด์˜์ฒด์ œ). ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, ์กธ์—…์žฅ์€ ๋กœ๋ด‡ ๊ทธ๋ฃน์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์ „๋…ํ•ฉ๋‹ˆ๋‹ค. ๋กœ๋ด‡์—๋Š” ๋ฐ”ํ€ด 2๊ฐœ์™€ ๊ฑฐ๋ฆฌ ์ธก์ •๊ธฐ XNUMX๊ฐœ๊ฐ€ ์žฅ์ฐฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์€ ODROID-CXNUMX ๋ณด๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ROS์—์„œ ์ œ์–ด๋ฉ๋‹ˆ๋‹ค.

๋‹จ์ผ ๋ณด๋“œ์šฉ Ubuntu IMG ์ด๋ฏธ์ง€์— ROS ์„ค์น˜
๋กœ๋ด‡ ๋ ˆ์ด๋””๋ฒ„๊ทธ. ์‚ฌ์ง„ ํ’ˆ์งˆ์ด ์ข‹์ง€ ์•Š์•„์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค

๊ฐ ๋กœ๋ด‡์— ๊ฐœ๋ณ„์ ์œผ๋กœ ROS๋ฅผ ์„ค์น˜ํ•  ์‹œ๊ฐ„๋„ ์š•๊ตฌ๋„ ์—†์—ˆ์œผ๋ฏ€๋กœ ROS๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋œ ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ธํ„ฐ๋„ท์„ ๊ฒ€์ƒ‰ํ•œ ํ›„ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.
์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐœ๊ฒฌ๋œ ๋ชจ๋“  ์†”๋ฃจ์…˜์€ ๋‹ค์Œ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๊ธฐ์„ฑ ๋ฐ ๊ตฌ์„ฑ๋œ ์‹œ์Šคํ…œ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ(Distroshare Ubuntu ์ด๋ฏธ์ €, ๋ฆฌ๋ˆ…์Šค ๋ผ์ด๋ธŒ ํ‚คํŠธ, ๋ฆฌ๋ˆ…์Šค ๋ ˆ์Šคํ•€, ์‹œ์Šคํ…œ๋ฐฑ ๋“ฑ)
  2. ์ž์‹ ๋งŒ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ(์š•ํ† , ๋ฆฌ๋ˆ…์Šค๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ)
  3. ์ด๋ฏธ์ง€๋ฅผ ์ง์ ‘ ์กฐ๋ฆฝํ•˜๊ธฐ(๋ผ์ด๋ธŒ CD ์‚ฌ์šฉ์ž ์ •์˜ ะธ ๋Ÿฌ์‹œ์•„์–ด ์ƒ๋‹น๋”ํ•˜๊ธฐ ํ•˜๋ธŒ๋ ˆ์— ๊ด€ํ•œ ๊ธฐ์‚ฌ)

์ฒซ ๋ฒˆ์งธ ๊ทธ๋ฃน์˜ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ๋งค๋ ฅ์ ์ธ ์˜ต์…˜์ธ ๊ฒƒ ๊ฐ™์•˜์ง€๋งŒ ODROID์šฉ ๋ผ์ด๋ธŒ ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๊ทธ๋ฃน์˜ ์†”๋ฃจ์…˜๋„ ์ง„์ž… ์ž„๊ณ„๊ฐ’์ด ์ƒ๋‹นํžˆ ๋†’๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์—๊ฒŒ ์ ํ•ฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํŠœํ† ๋ฆฌ์–ผ์— ๋”ฐ๋ฅธ ์ˆ˜๋™ ์กฐ๋ฆฝ๋„ ์ ํ•ฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด... ๋‚ด ์ด๋ฏธ์ง€์— ์••์ถ• ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์—†์Šต๋‹ˆ๋‹ค.
๊ทธ ๊ฒฐ๊ณผ chroot์— ๊ด€ํ•œ ์˜์ƒ์„ ๋ณด๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.chroot - ๋ฃจํŠธ ๋ณ€๊ฒฝ, ๊ฒŒ์‹œ๋ฌผ ๋์— ๋™์˜์ƒ ๋งํฌ) ๋ฐ ๊ทธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ ๋กœ๋ด‡ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•ด Ubuntu๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•œ ํŠน๋ณ„ํ•œ ์‚ฌ๋ก€๋ฅผ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ธฐ์ค€์„  :

  • ์ „์ฒด ์ด๋ฏธ์ง€ ์ˆ˜์ • ํ”„๋กœ์„ธ์Šค(balenaEtcher๋ฅผ ์‚ฌ์šฉํ•œ SD ์นด๋“œ์— ์“ฐ๊ธฐ ์ œ์™ธ)๋Š” Ubuntu 18.04 ์šด์˜ ์ฒด์ œ์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ œ๊ฐ€ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•œ ์šด์˜ ์ฒด์ œ๋Š” Ubuntu 18.04.3 mate ๋ฐ์Šคํฌํ†ฑ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.
  • ์กฐ๋ฆฝ๋œ ์‹œ์Šคํ…œ์ด ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๊ณ„๋Š” ODROID-C2์ž…๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์ค€๋น„ ์ค‘

  1. ODROID์šฉ Ubuntu ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์Œ์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”. ๊ณต์‹ ์‚ฌ์ดํŠธ

  2. ์•„์นด์ด๋ธŒ ์••์ถ• ํ’€๊ธฐ

    unxz โ€“kv <ั„ะฐะนะป ะฐั€ั…ะธะฒะฐ ั ะพะฑั€ะฐะทะพะผ>

  3. ์ด๋ฏธ์ง€๋ฅผ ๋งˆ์šดํŠธํ•  ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    mkdir mnt

  4. ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์žˆ๋Š” ํŒŒํ‹ฐ์…˜์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    file <ั„ะฐะนะป ะพะฑั€ะฐะทะฐ>

    ext2, ext3 ๋˜๋Š” ext4 ํ˜•์‹์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์žˆ๋Š” ํŒŒํ‹ฐ์…˜์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์„น์…˜ ์‹œ์ž‘ ๋ถ€๋ถ„์˜ ์ฃผ์†Œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(ํ™”๋ฉด์— ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋จ).

    ๋‹จ์ผ ๋ณด๋“œ์šฉ Ubuntu IMG ์ด๋ฏธ์ง€์— ROS ์„ค์น˜

    ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์œ„์น˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋‰œ.

  5. ์ด๋ฏธ์ง€ ๋งˆ์šดํŠธ

    sudo mount -o loop,offset=$((264192*512)) <ั„ะฐะนะป ั ะพะฑั€ะฐะทะพะผ> mnt/

    ํ•„์š”ํ•œ ์„น์…˜์€ ๋ธ”๋ก 264192(์ˆซ์ž๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ)๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ธ”๋ก์˜ ํฌ๊ธฐ๋Š” 512๋ฐ”์ดํŠธ์ด๋ฏ€๋กœ ์ด๋ฅผ ๊ณฑํ•˜์—ฌ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

  6. ์‹œ์Šคํ…œ์ด ๋งˆ์šดํŠธ๋œ ํด๋”๋กœ ์ด๋™ํ•˜์—ฌ ๊ทธ ํด๋”์—์„œ ๋†€์•„๋ณด์„ธ์š”.

    cd mnt/
    sudo chroot ~/livecd/mnt/ bin/sh

    ~/livecd/mnt โ€” ๋งˆ์šดํŠธ๋œ ์‹œ์Šคํ…œ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ „์ฒด ๊ฒฝ๋กœ
    ๋นˆ/์‹œ - ์‰˜(๋‹ค์Œ์œผ๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅ) ๋นˆ/๋ฐฐ์‰ฌ)
    ์ด์ œ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์น˜๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ROS ์„ค์น˜

์ตœ์‹  ๋ฒ„์ „์˜ ROS(ROS Melodic)๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณต์‹ ํŠœํ† ๋ฆฌ์–ผ.

  1. ํŒจํ‚ค์ง€ ๋ชฉ๋ก ์—…๋ฐ์ดํŠธ

    sudo apt-get update

    ์—ฌ๊ธฐ์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

    Err:6 http://deb.odroid.in/c2 bionic InRelease
    The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <[email protected]>

    ์ด๋Š” ํŒจํ‚ค์ง€ ์„œ๋ช… ํ‚ค๊ฐ€ ๋งŒ๋ฃŒ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ‚ค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9

  2. ROS ์„ค์น˜๋ฅผ ์œ„ํ•œ ์‹œ์Šคํ…œ ์ค€๋น„

    sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

    sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

    sudo apt update

  3. ROS ์„ค์น˜
    ์•ˆํƒ€๊น๊ฒŒ๋„ ๋ฐ์Šคํฌํ†ฑ ๋ฒ„์ „์˜ ROS๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์—†์–ด์„œ ๊ธฐ๋ณธ ํŒจํ‚ค์ง€๋งŒ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

    sudo apt install ros-melodic-ros-base
    apt search ros-melodic

    1์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ์„ค์น˜ ๊ณผ์ •์—์„œ ๊ฐ€๋” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค:

    dpkg: error: failed to write status database record about 'iputils-ping' to '/var/lib/dpkg/status': No space left on device

    apt ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์บ์‹œ๋ฅผ ์‚ญ์ œํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    sudo apt-get clean; sudo apt-get autoclean

    2์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ์„ค์น˜ ํ›„ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    source /opt/ros/melodic/setup.bash

    ๊ทธ๊ฑด ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฑฐ์•ผ, ์™œ๋ƒ๋ฉด ์šฐ๋ฆฌ๋Š” bash๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ํ„ฐ๋ฏธ๋„์— ์ž…๋ ฅํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

  4. ํ•„์š”ํ•œ ์ข…์†์„ฑ ์„ค์น˜

    sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

    sudo apt install python-rosdep

    sudo rosdep init
    rosdep update

  5. ์ ‘๊ทผ ๊ถŒํ•œ ์„ค์ •
    ์šฐ๋ฆฌ๋Š” ๋กœ๊ทธ์ธ๋˜์–ด ์žˆ๊ณ  ์‹ค์ œ๋กœ ์กฐ๋ฆฝ๋˜๋Š” ์‹œ์Šคํ…œ์˜ ๋ฃจํŠธ๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ROS๋Š” ์ˆ˜ํผ์œ ์ € ๊ถŒํ•œ์œผ๋กœ๋งŒ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.
    sudo ์—†์ด roscore๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค:

    Traceback (most recent call last): File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 230, in main write_pid_file(options.pid_fn, options.core, options.port) File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 106, in write_pid_file with open(pid_fn, "w") as f: IOError: [Errno 13] Permission denied: '/home/user/.ros/roscore-11311.pid'

    ์˜ค๋ฅ˜ ๋ฐœ์ƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ROS ์‚ฌ์šฉ์ž์˜ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ณ€๊ฒฝํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋‹ค์Œ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    sudo rosdep fix-permissions

  6. rviz ๋ฐ rqt ํŒจํ‚ค์ง€ ์ถ”๊ฐ€ ์„ค์น˜

    sudo apt-get install ros-melodic-rqt ros-melodic-rviz

์ตœ์ข… ์†์งˆ

  1. chroot ์ข…๋ฃŒ:
    exit
  2. ์ด๋ฏธ์ง€ ๋งˆ์šดํŠธ ํ•ด์ œ
    cd ..
    sudo umount mnt/
  3. ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€๋ฅผ ์•„์นด์ด๋ธŒ์— ์••์ถ•ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
    xz โ€“ckv1 <ั„ะฐะนะป ะพะฑั€ะฐะทะฐ>

๋ชจ๋‘! ์ด์ œ ๋„์›€์„ ๋ฐ›์•„ ๋ฐฉ๊ธ€๋ผ ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€๋ฅผ SD ์นด๋“œ์— ๊ตฌ์›Œ์„œ ODROID-C2์— ์‚ฝ์ž…ํ•˜๋ฉด ROS๊ฐ€ ์„ค์น˜๋œ Ubuntu๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค!

๋งํฌ :

  • ์ด ๋น„๋””์˜ค๋Š” Linux์—์„œ ์น˜ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ทธ๊ฒƒ์ด ํ•„์š”ํ•œ ์ด์œ ์— ๋Œ€ํ•ด ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.



์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€