Linux2015. 7. 16. 12:52

임베디드 시스템으로 뭔가를 하시려는 분들은 요즘 라즈베리파이 시리즈나 오드로이드 시리즈의 리눅스를 많이 쓰시니까 보드를 키자마자 프로그램을 자동실행하게 하는 경우가 많을 것 같습니다.


저도 쿼드콥터 위에 오드로이드C1를 올려서 자동주행 알고리즘 연구를 하고있는데, 리눅스 고급유저가 아닌지라 많이 헤메게 되네요 ㅠㅠ


보통 자동실행은 /etc/rc.local 파일에 실행시킬 프로그램 경로를 써서 하게됩니다.


/root/hsPi/wing &


이런 식으로 써두는데 &는 백그라운드로 실행하라는 의미입니다. 백그라운드로 실행시키지 않으면 부팅 중간에 저 프로그램을 실행했다가 부팅과정을 마저 못끝내는 현상이 발생하더라구요 (저 프로그램은 loop구조라 끝나지 않는 프로그램..)


보통 이렇게 자동실행을 등록해서 사용해왔습니다. 그런데!


오드로이드C1에 올린 리눅스 우분투에서 위처럼 자동실행을 등록해놨는데 두 번 실행되는 문제가 발생했습니다.


아두이노와 Serial통신을 일정 주기마다 일정 크기만큼 주고받는데, 프로그램 두개가 한번에 보내니 아두이노에서 못받는 현상이 생기더라구요


부팅 과정을 짚어봐도 도저히 고칠수가 없길래 그냥 프로그램이 이미 실행중이면 실행하지 말라는 쉘 스크립트로 해결했습니다. ㅜ 뭔가 찜찜한 기분..


리눅스 중복실행 방지로 검색하니까 좋은 소스가 있어서 사용중입니다.


#load date
date=$(date +%y/%m/%d-%H:%M:%S)

#해당되는 프로세스 ID 읽어오기 (read process id with file name 'takeOriginImage.php').
pid=`ps -ef | grep "takeOriginImage.php" | grep -v 'grep' | awk '{print $2}'`

#프로세스ID가 있을 경우, 즉 실행 중일 경우, 메시지를 출력하고 종료.
#If the process ID - that means if it is running, a message and exit.
if [ -z $pid ]
then
/usr/local/php/bin/php /home/jdk/takeOriginImage.php > /home/jdk/_log/takeOriginImage.txt
else
echo $data "can not dual exec process!!!\r\n";
fi


도움 - http://breezymoon.blogspot.kr/2013/09/shell-script-to-avoid-duplicate-runs.html





'Linux' 카테고리의 다른 글

rc.local에 등록한 시작프로그램이 두번 실행되는 현상  (2) 2015.07.16
OpenCV 2.4.9 on Ubuntu 14.04  (0) 2015.06.15
Posted by 너를위한노래

댓글을 달아 주세요

  1. 비밀댓글입니다

    2015.07.16 17:15 [ ADDR : EDIT/ DEL : REPLY ]
  2. hmi45

    같은 문제로 인터넷 검색하다가 알게되었는데 tightnvserver라는 VNC프로그램때문에 중복실행되는거라네요..

    2018.01.09 23:50 [ ADDR : EDIT/ DEL : REPLY ]

Quadrotor20152015. 6. 18. 18:53

MPU6050의 데이터 시트를 보면 DLPF(Digital Low Pass Filter)정도를 조작할 수 있는 레지스터가 있습니다.


아두이노 MPU6050 라이브러리를 보니까 MPU6050_DLPF_BW_xxx로 나와있네요.


xxx자리에 256, 188, 98, 42, 20, 10, 5라고 쓰여있는데 숫자가 낮을수록 더 낮은 주파수만 통과시키는 것 같습니다.


오늘 포스팅에서는 쿼드로터에 달린 MPU6050의 자이로 센서만 가지고 DLPF 성능을 비교해볼껀데요,


실험 할 때는 쿼드로터가 뜰랑 말랑할 정도까지 모터를 작동시키되, 손으로 눌러서 바닥에 고정시켰습니다.


각속도인 가속도 센서 출력은 0이 나와야 정상인데 모터로 인한 노이즈를 측정한 셈입니다.


위에서부터 BW는 5, 42, 256입니다. 대충 3개만 집어서 테스트해봤습니다.


데이터는 스케일링 해서 [deg/s^2]로 변환했습니다~





BW를 5로 해서 진동에 둔감하게 하면 반응이 느려지는가 싶어서 센서 두 개를 같이 장착하고 BW를 다르게해서 각도 변화를 살펴본 결과,


반응이 느려지지 않았습니다.


왜 느려지지 않는지 모르겠네요 ㅠ 하드웨어적으로 LPF하는 기능이 들어가있는 건지.. 


이에 관해 아시는 분 계신다면 댓글남겨주시면 감사하겠습니다 ㅠㅠ









Posted by 너를위한노래

댓글을 달아 주세요

  1. 반응속도

    BW 5로 설정하시고 그대로 진행하셨나요?

    2015.10.13 09:35 [ ADDR : EDIT/ DEL : REPLY ]
    • 공대

      숫자가 올라갈수록 bandwitdh는 낮아지고 delay시간도 올라갑니다..

      2015.12.10 15:24 [ ADDR : EDIT/ DEL ]
  2. dd

    반응 느려집니다. 시간이 좀 지나야 점점 느려져요. 한 5분정도쯤되면 3~4초쯤 늦게 반응해요 ^^

    2016.03.15 20:22 [ ADDR : EDIT/ DEL : REPLY ]

Linux2015. 6. 15. 21:40

http://karytech.blogspot.kr/2014/05/opencv-249-on-ubuntu-1404.html

OpenCV 2.4.9 was released on April 2014. See more here.

This is another post in a series of walkthroughs that will hopefully make your life easier to configure, compile, install and test it out.

The dependencies are divided into categories. I have only tested it with GTK.

If you don't need the latest OpenCV then you can easily install version 2.4 using apt:
sudo apt-get install libopencv-dev
If you wanna use the latest version, then follow the steps above:

Install Dependencies


Essentials
These are libraries and tools required by OpenCV.
sudo apt-get install build-essential checkinstall cmake pkg-config yasm

Image I/O
Libraries for reading and writing various image types. If you do not install then the versions supplied by OpenCV will be used.
sudo apt-get install libtiff4-dev libjpeg-dev libjasper-dev


Video I/O
You need some or all of these packages to add video capturing/encoding/decoding capabilities to the highgui module.
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev

Python
Packages needed to build the Python wrappers.
sudo apt-get install python-dev python-numpy

Other third-party libraries
Install Intel TBB to enable parallel code in OpenCV.
sudo apt-get install libtbb-dev

GUI
The default back-end for highgui in Linux is GTK. You can optionally install QT instead of GTK and later enable it in the configuration (see next section) but I haven't tested it with QT on Ubuntu 14.04 yet. 
sudo apt-get install libqt4-dev libgtk2.0-dev

Download Compile & Install

Get a copy of the source code here, extract and create a build directory:
unzip opencv-2.4.9.zip
cd opencv-2.4.9/
mkdir build
cd build
Configure using CMake. You have a lot of options in this step. This is what I use:
cmake -D WITH_XINE=ON -D WITH_OPENGL=ON -D WITH_TBB=ON -D BUILD_EXAMPLES=ON ..
If you add -D WITH_QT=ON, the highgui module will use QT instead of GTK. For more information on the options, look at the CMakeLists.txt file. When you are happy with the configuration you have, you can start compiling:
make
If compilation finishes without errors, you can install by saying:
sudo make install
Finally, make sure that your programs can link to the OpenCV library in run-time by adding the following line at the end of your /etc/ld.so.conf:
/usr/local/lib
And then configure dynamic linker run-time bindings:
sudo ldconfig

Testing

An easy way to test that the compilation went well is to use the OpenCV tests and samples. For example, go to opencv-2.4.9/build/bin and run:
./cpp-example-opencv_version
You should get the correct version.

If you run other tests notice that some failures come from missing image files. To correctly run these tests or samples you should move the corresponding image files from opencv-2.4.9/samples to OpenCV-2.4.9/build/bin.

For testing that you can compile your own programs and link against the installed OpenCV libraries I have packaged the face detection sample with all the necessary files and a simple Makefile. Download it here, extract and type:
make
This should compile and run with a test image, so you should see something like this:


'Linux' 카테고리의 다른 글

rc.local에 등록한 시작프로그램이 두번 실행되는 현상  (2) 2015.07.16
OpenCV 2.4.9 on Ubuntu 14.04  (0) 2015.06.15
Posted by 너를위한노래

댓글을 달아 주세요