Control using Odroid SBC

Startup Session λ§Œλ“€κΈ°

λ‘œλ΄‡μ˜ 전원인가후 OS μ‹œμž‘μ‹œμ— μžλ™μœΌλ‘œ ν”„λ‘œκ·Έλž¨μ΄ λ™μž‘λ˜λ„λ‘ μ„ΈνŒ…ν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³Έλ‹€.

~/.bashrc 에 λͺ…λ Ήμ–΄λ₯Ό λ‹¨μΆ•μ–΄λ‘œ μ‹€ν–‰μ‹œν‚€κΈ° μœ„ν•œ alias 섀정을 ν•œλ‹€. μ΄λŠ” μ„ νƒμ‚¬ν•­μ΄λ‚˜ μ΄λ ‡κ²Œ ν•΄λ†“μœΌλ©΄ νŽΈλ¦¬ν•˜λ‹€. μ•„λž˜μ™€ 같이 λ‚΄μš©μ„ .bashrc 파일 λ§ˆμ§€λ§‰μ— κΈ°μž…μ„ ν•΄ λ†“μœΌλ©΄ mr0λΌλŠ” λͺ…λ Ήμ–΄λ₯Ό 톡해 ν•΄λ‹Ήν•˜λŠ” roslaunch λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•  수 μžˆλ‹€.

srκ³Ό sr0 단좕 λͺ…λ Ήμ–΄λŠ” μ•„λž˜μ—μ„œ λ‹€μ‹œ μ„€λͺ…ν•˜κ² λ‹€.

alias mr0='roslaunch mecanum_robot_ver1 mecanum_robot_ver1_teleop.launch'
alias sr='screen -r startupSess'
alias sr0='screen -r startupSess0'

이젠 ~/ 폴더에 ν˜Ήμ€ μ›ν•˜λŠ” 폴더에 screen을 μ΄μš©ν•˜μ—¬ μ‹œμž‘ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰μ‹œν‚€λŠ” 방법에 λŒ€ν•΄ μ„€λͺ…ν•œλ‹€. screen 이 μ„€μΉ˜λ˜μ–΄ μžˆμ§€ μ•Šμ€ κ²½μš°μ—λŠ” sudo apt-get install screen λͺ…λ Ήμ–΄λ‘œ μ„€μΉ˜λ₯Ό ν•˜λ©΄λœλ‹€. μ•„λž˜μ™€ 같은 bash scriptλ₯Ό μ΄μš©ν•˜μ—¬ startupSess μŠ€νƒ€νŠΈμ—… μ„Έμ…˜μ„ λ§Œλ“€μˆ˜ μžˆλ‹€. cat λͺ…λ Ήμ–΄λ₯Ό μ΄μš©ν•˜μ—¬ autorun_script.sh νŒŒμΌμ•ˆμ˜ λ‚΄μš©μ„ λ“€μ—¬λ‹€ 보면 screen λͺ…λ Ήμ–΄λ₯Ό μ΄μš©ν•˜μ—¬ μ‹œμž‘ ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λ©° mr0 λΌλŠ” μ•žμ— μ„ μ–Έν•œ 단좕λͺ…λ Ήμ–΄λ‘œ roslaunch ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•  수 있게 λœλ‹€.

[email protected]:~$ cat autorun_script.sh
# Run HuboQ Remastered Ver1 - hq0 in Startup
screen -S "startupSess" -d -m
screen -r "startupSess" -X stuff $'mr0\n'

autorun_script.shλŠ” μ‹€ν–‰κ°€λŠ₯ λͺ…λ Ήμ–΄λ‘œ λ§Œλ“€μ–΄μ•Όν•˜κΈ° chmod +x autorun_script.sh λ₯Ό μ‹€ν–‰ν•˜μ—¬ μ‹€ν–‰κ°€λŠ₯ν•˜κ²Œ λ§Œλ“€μ–΄λ†“λŠ”λ‹€. μ—¬κΈ°κΉŒμ§€ ν•˜λ©΄ autorun_script.sh νŒŒμΌμ„ μ΄μš©ν•˜μ—¬ screen μ„Έμ…˜μ„ μ—΄κ³  κ·Έ μ•ˆμ—μ„œ rosν”„λ‘œκ·Έλž¨μ„ 돌리게 λœλ‹€.

screen은 μš°λ¦¬κ°€ sshλ₯Ό μ΄μš©ν•΄μ„œ 원격접속을 ν•˜λ©΄ 터미널 μ°½μ—μ„œ ν•˜λ‚˜μ˜ μ„Έμ…˜μ΄ μƒμ„±λ˜λ“―μ΄ μœ„μ˜ screen을 μ΄μš©ν•˜μ—¬ μ„Έμ…˜μ„ λ§Œλ“  κ²ƒμ΄λ―€λ‘œ μ΄λŠ” 기본적으둜 backgroundμ—μ„œ λ™μž‘ν•˜κ²Œ 되며 이λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•œ λͺ…λ Ήμ–΄κ°€ μ•žμ—μ„œ 미리 λ§Œλ“€μ–΄ 놓은 sr 이닀.

자, 이제 μ‹€μ§ˆμ μœΌλ‘œ 처음 OSκ°€ μ‹€ν–‰λ˜κ³ λ‚˜μ„œ μžλ™μ μœΌλ‘œ autorun_script.shκ°€ λ™μž‘λ˜λ„λ‘ ν•΄μ•Όν•œλ‹€. 이것은 /etc/rc.local νŒŒμΌμ— λ‹€μŒκ³Ό 같이 μΆ”κ°€ν•˜λ©΄ λœλ‹€.

[email protected]:~$ cat /etc/rc.local
#!/bin/bash
​
# autorun script
su odroid -c '/home/odroid/autorun_script_gpio.sh &'
su odroid -c '/home/odroid/autorun_script.sh &'
​
if [ -f /aafirstboot ]; then /aafirstboot start ; fi
​
if [ -f /aafirstboot ]; then /aafirstboot start ; fi
​
exit 0

μ—¬κΈ°μ„œλŠ” autorun_script.sh와 autorun_script_gpio.sh λ‘κ°œμ˜ bash scriptκ°€ 각각 독립적인 screen μ„Έμ…˜μœΌλ‘œ μ‹€ν–‰λ˜λ„λ‘ ν•˜μ˜€λ‹€. μ΄λŠ” odroid의 gpioλ₯Ό λ‹΄λ‹Ήν•˜λŠ” λ³„λ„μ˜ ν”„λ‘œκ·Έλž¨κ³Ό roslauchλ₯Ό 톡해 μ‹€ν–‰ν•˜λŠ” λ‘κ°œμ˜ ν”„λ‘œκ·Έλž¨μ„ λͺ¨λ‘ μ‹€ν–‰ν•΄μ•Όν–ˆκΈ° λ•Œλ¬Έμ— 이와 같이 κ΅¬μ„±ν•˜μ˜€λ‹€.

μ΄λ ‡κ²Œ μ„ΈνŒ…μ„ ν•˜λ©΄ μ‹œμž‘μ‹œ μžλ™μ μœΌλ‘œ mr0 ν”„λ‘œκ·Έλž¨κ³Ό gpio ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λŠ”λ° μ΄λŠ” backgroundμ—μ„œ 싀행이 λœλ‹€κ³  ν•˜μ˜€μœΌλ―€λ‘œ 이 μ‹€ν–‰μƒνƒœλ₯Ό 직접 ν™•μΈν•˜κ³ μž ν• λ•ŒλŠ” ssh둜 터미널 접속을 ν•œ μƒνƒœμ—μ„œ sr λ˜λŠ” sr0λ₯Ό 톡해 각각 μ„Έμ…˜μœΌλ‘œ μž…μž₯을 ν•  수 있고 λ‚˜μ˜¬ λ•ŒλŠ” exit λͺ…λ Ήμ–΄λ‘œ λ‚˜μ˜¬ 수 μžˆλ‹€.