하지만 lattepanda의 센서들은 사실상 데이터의 전달 역할만을 하고 실질적인 SLAM 작업은 labtop에서 이루어지므로, 앞으로의 작업에서 lattepanda가 켜질때마다 센서들이 바로 동작하도록 만든다면 효율적일 것이다.
그럼 해당 작업을 수행해보자.
p.s. 참고로 시스템 부팅과 함께 프로그램을 실행시키는 많은 방법들이 있지만, 필자의 경우에 성공한 결과만 적도록 하겠다.
작업환경
- Labtop OS : Ubuntu 16.04- Labtop ROS : Kinetic
- Lattepanda alpha OS : Ubuntu 16.04
- Lattepanda alpha ROS : Kinetic
- LIDAR Sensor ( connected to Lattepanda alpha ) : YDLIDAR-G4
- Depth Camera : pico monstar
1. Making script
보통 리눅스 환경에서 시스템 부팅과 함께 프로그램이 실행되게 하기 위해서 스크립트를 많이 활용한다. 이를 위해 home 환경에 'auto_run.sh' 라는 파일을 생성한다.
1
2
|
$ cd ~
$ nano auto_run.sh
| cs |
2. Edit 'auto_run.sh'
스크립트 파일의 내용을 수정해준다.
많은 시행착오 끝에 완성한 내용이다.
1
2
3
4
5
6
7
8
9
10
|
#!/bin/bash
source /home/suho/catkin_ws/devel/setup.bash
export ROS_MASTER_URI=http://[ ip address of lattepanda ]:11311
export ROS_HOSTNAME=[ ip address of lattepanda ]
roscore
gnome-terminal -e "roslaunch ydlidar lidar.launch"
gnome-terminal -e "roslaunch royale_ros camera.launch"
| cs |
내용을 간단히 살펴보자면 다음과 같다.
line 1 : bash 작업과 관련된 스크립트라는 의미.
line 3 : ros와 관련된 내용을 인식시키기 위함.
line 5, 6 : ROS network를 인식시키기 위함.
line 8 : roscore를 실행.
line 9, 10 : lidar와 camera를 구동시킨다. 이때, gnome-terminal을 사용하게 되는데, 이는 새로운 터미널 창에서 argument로 주어진 작업들을 수행시키는 프로그램이다.
파일을 저장한 후에는 다음의 명령어를 통해 권한을 부여해준다.
1
2
|
$ cd ~
$ sudo chmod +x ./auto_run.sh
| cs |
3. Edit 'rc.local'
리눅스 환경에서 시스템이 부팅할때 프로그램을 실행시키려면 rc.local 파일 내에 실행시킬 파일의 경로를 적어주어야 한다.
1
|
$ sudo nano /etc/rc.local
| cs |
위 경로에 진입한 뒤, 'exit 0'의 위에 '/home/[username]/auto_run.sh' 와 같이 적어준 뒤, 저장하면 된다.
4. Add to Startup Application
사실 필자의 생각에는 3번 작업만 수행해주어도 자동실행이 되어야할 것 같은데, 왜인지 실제로는 지금 설명할 4번 작업도 해주어야 한다.
아마 3번 작업은 해당 파일이 startup으로써 사용이 가능하도록 만들어주는 것 같다.
(1) Launcher에 'Startup Applications' 를 검색해 실행한다.
(2) Add를 클릭한다.
(3) Name과 Comment에 원하는 내용을 적는다.
( ex. Name : auto_run , Comment : it's for auto_run )
(4) Command에 "/home/username/auto_run.sh" 를 적어준 뒤 저장한다.
5. Reboot Lattepanda
이제 lattepanda를 reboot하면 센서들이 자동으로 실행되는 것을 확인할 수 있다.
댓글 없음:
댓글 쓰기