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 명령어로 나올 수 있다.