embeded/AVR (ATmega,ATtiny)2010. 1. 11. 23:55
How to control analog servo using Atmega128 timer0 (8bit timer)

서보모터는, 재미난 녀석이다. 근데 다루기 쉽지는 않다 ㅠ.ㅠ
예전에 구매한 녀석으로 이렇게 생겨먹었다.

특이하게도 색이 흰색/빨강/검정이 아니라 주황/빨강/갈색이다.
빨강은 Vcc
갈색은 GND
주황은 Signal 이다.


서보 스펙
아날로그 신호를 받아들이며(아날로그 서보)
4.8V에 0.19sec/60' 대략 180도 전체 이동에 0.6sec 정도 걸린다.(생각보다 빠른거 같은데 막상보면 느리다.)

AVR 스펙
us-technology 사의 제품으로 16Mhz로 작동하며
PORTC 는 디버깅용 LED
PORTF 는 PWM 출력용으로 사용하였다.

Timer0(8bit timer)를 이용하여, PWM 신호를 만들어낸다.(Timer만으로 제어함)
[링크 : http://www.us-technology.co.kr/product/product_main.asp?mode=101&smode=2]

소스코드는 AVR BIBLE (배성중/북두출판사) 를 참고하였으며
winavr 요즘 버전에 맞추고(ISR, outp 매크로, include 경로), 클럭이 맞지않아 변수들을 수정하여 타이밍을 조절하였다.

지루한 계산
16Mhz = 16,000,000 hz 이고
서보 모터는 20ms = 0.02sec 단위로 신호를 넣어준다.
그리고 PWM 신호는 0.5ms ~ 2ms 사이의 길이를 넣어주면 0 ~ 180도의 각도로 이동한다.
(책에는 1.5ms 에서 길거나 짧거나 라고 하는데 서보마다 다른듯.. 데이터 시트에도 없다 ㄱ-)

일단 8bit timer를 사용함으로 256 clock 마다 overflow를 발생시키며
    16,000,000(clock/sec) / 256 = 62,500 times
1초에 62,500 번의 overflow가 발생하게 된다.
    1/62500 = 0.000016 sec 이며
    62500/50 = 1250 이다.(20ms 는 1초에 50회)
즉, 256번씩의 overflow를 1250번 반복하게 되면 0.02sec = 20msec 간격을 잡을수 있다.
그리고 1msec는 62.5 인터럽트가 모이면 되고,
실험적으로 서보에서 사용하는 PWM의 width를 얻어내면 된다.

엘레파츠 ES-311 서보에서
     0도는 0.512ms = 32 overflows
    90도는 1.216ms = 76 overflows
    180도 1.792ms = 112 overflows

아무튼 위의 값은 정확한건 아니지만.. (ㄱ-) 대략적으로 맞아들어가며
0도와 180도의 하한/상한을 찾은뒤 평균내면 90도가 잡아진다.(레드썬!)
(위의 값으로는 180도 쪽이 약간 5도 정도 부족해 보이나,
끽끽대며 더이상 가지 못하는 문제가 있어 실질적으로 90도를 약간 좌측으로 수정해야 하지 않을까 싶다.)

대충의 계산방식이 들어있는 스프레드시트 파일.
클럭과 timer overflow 에 필요한 clock을 입력하면 된다.



Posted by 구차니
프로그램 사용/nfs2010. 1. 11. 18:10
mount -t nfs servername:directory local_directory
mount -t nfs serverip:directory local_directory

예를 들어
서버 이름이 ubuntu 이고 ip가 192.168.0.2 라면

mount -t nfs ubuntu:/home/ubunutu /mnt/nfs
mount -t nfs 192.168.0.2:/home/ubunutu /mnt/nfs

이런식으로 마운트 하면 된다.

[링크 : http://www.faqs.org/docs/linux_network/x-087-2-nfs.mountd.html]


만약에
Protocol not supported 에러가 발생한다면

-t nfs 대신
-t nfs4를 해보면 된다고 한다.


그것도 안되면 커널을 다시 빌드해야 한다.

File systems ---> Network File Systems
<*> NFS file system support
[  ]   Provide NFSv3 client support
[  ]   Provide NFSv4 client support (EXPERIMENTAL)

[링크 : http://www.lslnet.com/linux/edosc/36/linux-36266311.htm]

NFSv3 와 NFSv4를 체크해주면 된다. busybox 문제라기 보다는 커널의 문제이다.
Posted by 구차니
pivot table은 Microsoft office의 기능으로
오픈오피스에서는 pilot 이라는 기능으로 들어있다.

피벗으로 할 수 있는 건 데이터의 정렬?
간단하게는 가계부에서 카테고리별로 합계를 낸다거나 이러한 노가다 작업을 자동화 할 수 있다.



[링크 : http://openoffice.blogs.com/openoffice/2006/11/data_pilots_in_.html]
Posted by 구차니
프로그램 사용/apache2010. 1. 11. 12:18
아파치에서 하는 xml graphic 프로젝트로
xml의 내용을 svg 포맷으로 변환하여 이미지로 출력하는듯 하다.
(머.. 웹서버 깔고 귀차니즘.. 확인안함)

사족 : 저~~얼대 웹브라우저에 탭을 하나 차지하고 있기에 이걸 없애려고 글쓴거라고 할수 없다고는 못함.

[링크 : http://xmlgraphics.apache.org/batik/using/dom-api.html]

'프로그램 사용 > apache' 카테고리의 다른 글

ab - apache HTTP server benchmarking tool  (0) 2014.10.10
apache 특정 디렉토리만 인증하기  (0) 2013.04.09
500 internal server error - mediawiki 이전시  (0) 2011.12.18
apache - url rewrite  (2) 2011.04.26
webDAV  (0) 2010.11.19
Posted by 구차니
Linux2010. 1. 11. 11:42
/proc/diskstats 파일은 linux kernel 2.6 부터 지원하는 것으로
hdd의 파일 입출력 속도를 볼 수 있다.

음.. FC6에서는 해보니, 1초 간격으로 갱신되는것 같은데
$ cat /proc/diskstats
   1    0 ram0 0 0 0 0 0 0 0 0 0 0 0
   1    1 ram1 0 0 0 0 0 0 0 0 0 0 0
   1    2 ram2 0 0 0 0 0 0 0 0 0 0 0
   1    3 ram3 0 0 0 0 0 0 0 0 0 0 0
   1    4 ram4 0 0 0 0 0 0 0 0 0 0 0
   1    5 ram5 0 0 0 0 0 0 0 0 0 0 0
   1    6 ram6 0 0 0 0 0 0 0 0 0 0 0
   1    7 ram7 0 0 0 0 0 0 0 0 0 0 0
   1    8 ram8 0 0 0 0 0 0 0 0 0 0 0
   1    9 ram9 0 0 0 0 0 0 0 0 0 0 0
   1   10 ram10 0 0 0 0 0 0 0 0 0 0 0
   1   11 ram11 0 0 0 0 0 0 0 0 0 0 0
   1   12 ram12 0 0 0 0 0 0 0 0 0 0 0
   1   13 ram13 0 0 0 0 0 0 0 0 0 0 0
   1   14 ram14 0 0 0 0 0 0 0 0 0 0 0
   1   15 ram15 0 0 0 0 0 0 0 0 0 0 0
   3    0 hda 108013 40509 5794964 3417656 108015 779595 7103102 61420792 0 2737052 64843120
   3    1 hda1 1076 2158 19 38
   3    2 hda2 147415 5792382 887883 7103064
 253    0 dm-0 147169 0 5791122 5857704 887853 0 7102824 1796618756 0 2736044 1802476620
 253    1 dm-1 70 0 560 1432 30 0 240 38624 0 6188 40056
   2    0 fd0 0 0 0 0 0 0 0 0 0 0 0
   9    0 md0 0 0 0 0 0 0 0 0 0 0 0

이런식으로 숫자만 잔뜩 나온다.

/proc/diskstats, giving some information (including device numbers) for each of the logical disk devices
[링크 : http://en.wikipedia.org/wiki/Procfs]

sysstat 패키지의 iostat 유틸리티
[링크 : http://elenoa.tistory.com/52]

3.2 /proc/diskstat => disk utilization, throughput (only 2.6 kernels)
[링크 : http://duo830210.tistory.com/45]

Field  1 -- # of reads completed
    This is the total number of reads completed successfully.

Field  2 -- # of reads merged, field 6 -- # of writes merged
    Reads and writes which are adjacent to each other may be merged for
    efficiency.  Thus two 4K reads may become one 8K read before it is
    ultimately handed to the disk, and so it will be counted (and queued)
    as only one I/O.  This field lets you know how often this was done.

Field  3 -- # of sectors read
    This is the total number of sectors read successfully.

Field  4 -- # of milliseconds spent reading
    This is the total number of milliseconds spent by all reads (as
    measured from __make_request() to end_that_request_last()).

Field  5 -- # of writes completed
    This is the total number of writes completed successfully.

Field  7 -- # of sectors written
    This is the total number of sectors written successfully.

Field  8 -- # of milliseconds spent writing
    This is the total number of milliseconds spent by all writes (as
    measured from __make_request() to end_that_request_last()).

Field  9 -- # of I/Os currently in progress
    The only field that should go to zero. Incremented as requests are
    given to appropriate struct request_queue and decremented as they finish.

Field 10 -- # of milliseconds spent doing I/Os
    This field is increases so long as field 9 is nonzero.

Field 11 -- weighted # of milliseconds spent doing I/Os
    This field is incremented at each I/O start, I/O completion, I/O
    merge, or read of these stats by the number of I/Os in progress
    (field 9) times the number of milliseconds spent doing I/O since the
    last update of this field.  This can provide an easy measure of both
    I/O completion time and the backlog that may be accumulating.

[링크 : http://www.mjmwired.net/kernel/Documentation/iostats.txt]


Posted by 구차니
Linux2010. 1. 11. 09:42
fork-exec로 실행한 프로그램의 리턴값을 받는 방법이다.
예를 들어 mount를 쉘에서 실행하고 그 결과값을 받고 싶을때 사용한다.

#include <sys/types.h>
#include <sys/wait.h>

WEXITSTATUS
(status)
    returns the exit status of the child. This consists of the least significant 16-8 bits of the status argument that the child specified in a call to exit() or _exit() or as the argument for a return statement in main(). This macro should only be employed if WIFEXITED returned true.

[링크 : http://linux.die.net/man/2/waitpid]

[링크 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/2/waitpid]
Posted by 구차니
아이디어!2010. 1. 10. 20:38
친구녀석에게 물어보니 상당부분 논문으로도 나온 내용이라는데서 기운이 피식~ OTL



아무튼,
인간은 주파수 성분이 높은 데이터를 좋아한다.
예를들어, 대리석 벽을 보는 것과 단색으로 페인트 칠해진 벽중에 어느것에 더 많은 시선을 주고
어떠한 정보를 파악하려고 시간을 소비할까? 라는 의미이다.

대리석은 여러가지 색상들이 혼합되어 있어, 주파수로 따지면 상당히 높은 주파수이다.
그에 반해 단색 페인트 벽은 주파수가 1이다.(1가지 색 / 공간)
물론 의미가 없는 패턴이므로 사람이 이러한 벽에 관심을 주는 시간은 상당히 짧겠지만
그러한 시간 속에서도, 사람은 어떠한 반복되는 문양을 찾으려고 하게된다.

반복 = 주파수 = FFT 가 떠올랐다.

문자인식에 있어서도, 공간을 분할하는데 주파수로 파악을 하면
문자 하나의 위치를 파악하는데 사용할수도 있을것 같고,
반복되는 이미지가 존재하는지를 파악하는데도 사용할수 있을것 같고,
이미지 내에서 유사하거나 동일한 이미지가 존재하는지 파악하는데도 사용할수 있을것 같다.


그리고, 부가적으로 영상에 있어 처리 우선순위를 정하는데도 상당한 도움이 될 것 같다.
사람들이 어떤 의미를 주기 위해서는 색상의 변화가 생긴다.
글씨를 쓰거나 어떤 의미를 지닌 그림을 그리거나, 모두 공간 내에서 색상이 변화한다(= 주파수가 높다)

모든 이미지를 검색하기 보다는
1차 적으로 FFT 연산을 통해(아니.. FFT가 더 높을지도?) 특정 블럭의 주파수가 1인 부분을 분리하고
블럭들을 모아 여러개의 패턴이 반복되거나 공간대비 낮은 주파수의 패턴을 검출을 한다.
그리고 아주 높은 부분은 OCR로 돌리거나(문자로 간주) 너무 높을 경우 무시한다.(대리석 벽과 같이 의미없는 반복)

음.. FFT가 비록 부동소수점 연산으로 인해 상당히 CPU를 많이 사용하는 연산이었지만
HW 가속을 받을수 있게 된 현재에서는 영상인식에 있어 FFT를 전면적으로 도입하느것도 나쁘지는 않을듯 하다.


최소한, 판단에 '주파수' 라는 변수를 하나더 추가함으로서
전처리에 드는 CPU 파워 이상의 처리량을 줄일수 있지 않을까?

'아이디어!' 카테고리의 다른 글

휠체어 탑재차량  (2) 2010.05.10
스테레오 카메라의 다른 효용  (0) 2010.03.13
투명종이 / 방수종이  (0) 2009.12.05
파동, 파장, 주파수, 색상  (0) 2009.11.30
도로공사 통제 요령  (0) 2009.11.15
Posted by 구차니
개소리 왈왈/독서2010. 1. 10. 11:02
바이오스피어2는 바이오스피어1(지구/생명권)과 독립된 생태계를 만들어
독립적인 생명을 유지해나갈수 있는(물/식량 등) 폐쇄 생태계를 만드는 실험이다.


이 프로젝트에 대한 책을 보면서(실은 가이아 이론 빌리러 갔다가 바이오스피어2 책이 눈에 띄었다)
떠오른건 가이아 이론. 물론 이 프로젝트에 가이아 가설의 공동 저자(러브록 말고!)가 참여하기도 했다는데
이 때문인지, 상당부분 가이아 이론을 실험하는 느낌이 들었다.

물론 지구내에서 완전 밀폐된(저 큰 구조물이 우주왕복선 보다 더 밀폐가 잘되어 있다니!)
구조체에서 외부로 부터 유입은 전기와 태양 뿐이었지만
지구내에서 이뤄진 실험이라 biosphere2의 독립 가이아 보다는 지구의 가이아에 영향을 받지 않았을까
하는 조금의 아쉬운 생각이 들었다. 물론 우주로 저 큰 실험동을 옮기거나 바로 다른 행성으로 보낼수는 없기 때문에
선택된 방법이긴 했겠지만 말이다.

예전 1990년대 과학동아를 보면서 많이 접했던 것이긴 하지만,
이러한 책이 실험이 끝난지 거의 20년만에 나왔다는건 조금 의아하기까지 하다(원서 기준 15년)



인간실험 : 바이오스피어2, 2년 20분


프로젝트 - 1991년 부터 2년간
원서 - 2006년 출판
번역판 - 2008년 출판

[링크 : http://en.wikipedia.org/wiki/Biosphere_2]
[링크 : http://www.b2science.org/]
Posted by 구차니
'사진학 강의' 책을 본면서 읽은거 정리

DX 코드(DX encoding)
필름옆에 있는 은박과 검은색의 마킹부분.
이부분을 통해서 카메라에서 자동으로 인식하여 ISO를 설정하기도 한다.


[링크 : http://en.wikipedia.org/wiki/DX_encoding]


비넷팅(Vignetting)
비넷팅은 로모 카메라 처럼 사진 외곽이 검게 둥근 원형테를 이루는 듯한 현상이다.
원래 좋은건 아니라지만, 그래도 로모 분위기에 이 녀석이 한 역활을 하니 ^^;

[링크 : http://www.dcinside.com/graphic-info/vignetting.htm]
[링크 : http://en.wikipedia.org/wiki/Vignetting]


ISO (감광도)
ISO는 International Organization for Standardization의 약자이며,
필름의 경우 ISO 5800:1987 표준을, 디지털 카메라의 경우 ISO 12232:1998 표준을 따른다.
(wikipedia에 링크는 있으나 iso 공식 문서로 돈이 든다 ㄱ-)
ISO 값은 선형적으로 증가하며, DIN 값은 로그적으로 증가한다.
ISO 200은 ISO 100에 비해 감도(감광속도)가 2배(1스탑 ?) 높다.(사진학 강의 한글번역 9판 82p)

[링크 : http://ko.wikipedia.org/wiki/감광_속도]
[링크 : http://en.wikipedia.org/wiki/Film_speed]


ISO / ANSI / DIN
ISO 는 원래 표준화 조직이다. 카메라(필름/광학) 계열에서는 감광도로 쓰이지만..
아무튼 표준화 기구로서 세계/미국/독일 표준화 기구가 있다.

[링크 : http://en.wikipedia.org/wiki/International_Organization_for_Standardization] ISO (국제표준)
[링크 : http://en.wikipedia.org/wiki/American_Standards_Association]  ASA -> ANSI (미국 표준)
[링크 : http://en.wikipedia.org/wiki/DIN] DIN - Deutsches Institut für Normung (독일 표준)


stop(스탑)
스텝이라고 말하기도 하지만, 원래는 스탑이다.
초기의 카메라들은 금속판에 구멍을 뚫어(일종의 핀홀 카메라?) 조리개로 사용했는데
이 금속을 '스톱(stop)' 이라고 불렀다고 한다. (사진학 강의 한글번역 9판 24p)
+1 스톱은 빛의 양이 2배가 되는 것이며
-1 스톱은 빛의 양이 1/2배가 되는 것이다. (사진학 강의 한글번역 9판 18p)

[링크 : http://en.wikipedia.org/wiki/F-stop]


조리개(aperture)
조리개는 f 값(f number) 으로 불리며 일반적으로 조리개는 2스탑 단위로 제조된다.
그리고 8단계 이상의 스탑을 지닌 렌즈는 드문편 이라고 한다.
즉, 카메라의 사용가능한 조리개가 아래와 같은 경우 f/1.4와 f/2는 1스탑 차이이고, 2배의 밝기 차이가 있다.
(2배씩 차이나는 조리개를 풀 스탑 조리개라고 한다.)


f/1.4 f/2
f/2.8 f/4
f/5.6 f/8
f/11 f/16
f/22

조리개 값을 보면 2,4,8,16 그리고 1.4/2.8/5.6/11/22 로 서로 2배의 값의 차이가 나고
1.4와 2는 log의 차이이다. 각각의 숫자는 대략 root 2(대략 1.4)를 곱하면 맞아들어간다.

[링크 : http://en.wikipedia.org/wiki/Aperture]


음.. 밝기가 2배씩 되는건 ISO, f 값, 그리고 셔터속도(노출시간) 세가지이다.
등가노출 원리에 의해서  f값과 셔터속도는 서로 영향을 받으며,
f값이 1스탑 내려가면 셔터속도는 2배 길어진다.(그러면 심도는 깊어짐)
이러한 것들이 스탑으로 묶이는지는 알 수 없지만, 2배 차이라는 점은 웬지 모를 묘한 느낌이 든다.

'이론 관련 > 사진 광학 관련' 카테고리의 다른 글

소니 디카에서 이미지가 보이지 않을 경우  (0) 2010.06.06
노달 포인트 - Nodal Point  (4) 2010.05.27
색수차 - aberration  (0) 2010.01.03
디옵터(Diopter)  (0) 2010.01.03
사진학 강의  (16) 2009.12.27
Posted by 구차니
개소리 왈왈2010. 1. 9. 16:10
영화들을 보면, 인류가 우주로 뻗어 나가는 내용들이 많다.
머.. 아래 적게될 내용은 어쩌면 가이낙스 작품인 '건버스터'와 유사할수도 있다.



간혹 인간의 활동을 세포 수준에서 상상해 볼때가 있다.
근육의 확장과 수축을 통한 인간이라는 유기체 수준에서의 운동
근육세포와 다른 세포들의 차이점은 모르겠지만,
모든 세포에는 똑같은 전기적 자극이 흐를테고 조금더 많이 통하고 주로 통하는 곳이 신경이 되는 걸꺼고
조금더 많이 수축하고 늘어나는게 근육세포일테지만,

그 세포수준에서 외부의 자극 - 여기서는 전기가 되겠지만 - 에 의해서 움츠러 들고 늘어나는 수준의 행동이
유기체 수준에서 보여질때는 잡거나 던지거나 이런식으로 해석이 되는게 아닐까

세포수준에서 볼수 있는건 바로 옆 세포 정도?
광학탐지보다는 우주를 탐험하는데에는 X-ray등의 고주파 성분을 사용하지만
어떻게 되었던 인류에게는 매우 먼 거리일지라도, 정말 먼걸까? 라는 의문이 든다.

세포내부 넘어서, 분자 원자 수준으로 가면 그런게 아닐까?
원자 수준에서는 옆에 원자들과 멀리 떨어져있지만,
원자에서 관측해봤자 시야각제한도 있고, 멀어져봤다 옆에 세포까지 관측하기도 버겁지 않을까?

아무튼 각설하고,
인류가 다른 우주로 넘어가서까지 활동할 수 있을진 모르겠지만,
그렇게 된다면 지금의 인류와는 다른 정신적 진화로 과분하게 살지 않고
착해질지 아닐지는 모르겠지만, 지금대로라면 과연~? 이라는 생각이 든다.

현생 인류가 다른 우주에 까지 가서 자원을 채취하게 되면
(머.. 이 내용들은 영화 '아바타'를 보고 책 '가이아'를 읽고 나서 이전의 경험인 애니메이션 '건버스터'를 보고 느낀점이다)
그 우주의 자원도 소모하고 다른 곳으로 가고. 인류가 전 우주에 우글우글하는
또 다른 암(cancer)이 되지 않을까? 라는 생각이 든다.

문득, 이런 생각을 넘어서 SETI 프로젝트의 효용마저도 의구심이 든다.
정신적으로 진화를 하게 되면 가이아와의 조화를 이루며 이렇게 무리한 바벨탑을 만들어가며
우주를 휘젓고 다닐만한 '인간형' 유기생명체를 우주적 수준의 '가이아'가 만들어 내지 않을것 같다.

우리가 인지가능한 우주에서 살아있는 인간형 유기생명체는 우리뿐만이 아닐까.
우리보다 큰 인간형 생명체는 실은 우리가 살고있는 우주가 아닐까. 단지 너무 커서 우리가 관측할수 없을뿐이고
그렇고 그런게 아닐까~

'개소리 왈왈' 카테고리의 다른 글

일하기 싫어 뻘짓 2  (4) 2010.01.14
일하기 싫어 뻘짓  (0) 2010.01.13
아이폰과 함꼐 하는 재미없는 인터넷 생활!  (2) 2010.01.09
겨울 이상 한파와 가이아  (2) 2010.01.05
SixSense - 증강현실  (6) 2010.01.04
Posted by 구차니