서보

1 일반적 정의

서보(Servo)란 서보메커니즘을 적용했다는 의미이며, 시스템에서 해당 기기를 시스템이 요구하는 특정 위치로 이동하거나, 특정한 수치(속도, 토크 등)만큼 가동시킬 때, 피드백이나 에러 정정을 통해 정확하게 제어할 수 있는 구조를 갖추고 있다는 의미이다. 눈으로 보고 조정하는건 당연히 서보가 아니다.
간단하게 말해서 서보모터라고 하면 일반적인 모터(원형으로 빙빙 돌기만 함)와는 달리 움직임을 지정하면 제어계측 회로에 의해 정확하게 움직일 수 있는 모터란 뜻이다. 스텝모터를 각도를 조절해서 움직일 수 있기 때문에 서보모터라고 착각할 수 있는데 회전상태를 파악하는 구조를 갖추지 않아 서보메커니즘이 없기 때문에 서보모터라고 할 수 없다.

여기서 나오는 서보모터는 산업용 서보모터와 RC 서보모터.

1.1 산업용 서보모터

산업용 서보모터는 대개 다른 어플리케이션의 부품으로 사용되는 경우가 많다. 생산을 위해 이곳에서 사용되는 많은 어플리케이션은 특정한 형상으로 제작되어 교체 및 업그레이드를 편리하게 한다. 또한, 성능 역시 많이 높은 편.

모터의 드라이브는 3가지가 존재한다. DC 서보, AC 서보, BLDC 서보.
현재는 BLDC 방법이 가장 많이 사용되나, Response 가 매우 높아야 할 경우 DC 서보를 사용하기도 한다. RC 에서 반응속도를 중요시 하는 것과 같이, BLDC 나 AC 의 경우 Space Vactor PWM 제어를 하게되는데, 이 속도보다 DC 서보의 변속기 전원 변경속도가 훨씬 빠르기 때문에 반응속도는 DC 서보가 가장 높다. 이런 특수 경우가 있음을 알아두자.

서보 컨트롤러는 대개 모터와 분리되어, 모터로 가는 동력선과 모터에서 오는 인코더 케이블로 연결되어 있다. 서보 컨트롤러에 지령을 알맞은 방법으로 하면 서보 모터가 구동되는데, 이 과정에서 서보 컨트롤러에 의한 보정이 이루어진다.

가령, 이송 시스템에서 적제된 제품을 다음 라인으로 옮기고자 서보를 불러올 경우,

+1800000 to -3400 (step) val 100% tor 20N*M

하여 서보를 원점으로 불러온다. 이 때의 서보는 무부하.
그리고 적제가 되었을 경우, 다시

-3400 to +1800000 (step) val 100% tor 20N*M

으로 저 멀리 보내게되는데, 이 때의 서보는 적제가 된 항목으로 인해 부하가 생겨 출렁출렁거리게 된다. 특히, 이걸 제대로 제어하지 못하는 서보의 경우, 도착지점에서 브레이크 동작의 시작을 늦게 하여 오버런, 대형사고가 난다.

FANUC, 미쯔비시 의 경우가 대표적으로, 이런 부분을 자동 보정한다.

생긴 건 대략 이렇게 생겼다.

servoalphai_cover.jpg

1.2 무선용 서보모터

포인트는 하는 일은 다 똑같다. 만 보면 된다. 무선 조종용 서보모터는 그 자체가 완제품으로, 그 서보모터에 Horn 이라는 파츠를 달아 와이어링, 특정 파츠를 움직일 수 있도록 해준다. 서보 컨트롤러는 내부에 내장되어 있고, 드라이브 방식은 DC 와 BLDC. 토크 때문에 DC 를 많이 사용한다. 이런 제품들은 특정 포지션으로 이동하는 것을 주 목적으로 하므로, 속도제어나 토크제어는 되지 않는다. 특히, 이런 제품은 제어할 때 PWM 시그널의 폭을 기준으로 혼의 움직이는 각도가 변한다.

2 웹 브라우저 렌더링 엔진 Servo

모질라에서 개발 중인 웹 브라우저용 처리 엔진으로, 현재 파이어폭스에서 사용되고 있는 Gecko 엔진의 뒤를 이을 차세대 브라우저 엔진 연구 프로젝트의 일환이다.[1] 같은 모질라 연구 프로젝트로 개발되고 있는 프로그래밍 언어Rust로 개발되고 있다.

Acid2 Test를 통과할 수 있을 정도로 개발이 진척되어 있다. # 게다가 2015년 10월기준 웹사이트를 참고하면 Servo 공식 웹사이트를 정상적으로 로드할 수 있을만큼 진척되어 있다!

2.1 개발 배경

Gecko 엔진은 넷스케이프인터넷 익스플로러가 싸우던 소위 브라우저 전쟁 시기에 만들어진 것으로, 이후 10년이 넘는 세월 동안 모질라 파이어폭스의 렌더링 엔진으로 쓰이면서 인터넷 익스플로러, 구글 크롬 등의 경쟁자들과 맞서는 데에 많은 역할을 해 왔다. 하지만 구글이나 애플 등의 거대 기술 기업들이 다방면으로 브라우저 시장을 압박함에 따라 비영리 재단모질라로서는 상황을 반전시킬 만한 카드가 필요했는데, 그 일환으로 Servo 프로젝트가 시작되게 되었다.

Servo의 가장 중요한 목표는 "멀티코어(Electrolysis)를 온전히 활용하는 병렬적인 웹 브라우저 엔진을 만드는 것"으로, 이미 중저가형 스마트폰에까지 멀티코어 프로세서가 널리 보급된 환경에서 확실하게 브라우저 성능에서 우위를 확보하겠다는 것이다. Gecko를 포함하여 대중적으로 쓰이는 브라우저 엔진들은 모두 멀티코어가 대중화되기 전에 만들어진 탓에, 이제 와서 멀티코어를 활용하도록 고쳐보기에는 곤란한 구조로 굳어버린 상태로, 구글 크롬조차 을 희생해 페이지 별로 프로세스를 따로 쓰는 정도가 한계고 그나마도 실제로 화면에 페이지를 그리는 렌더러는 한 창에 하나뿐이라 여러 CPU를 동시에 한 페이지의 렌더링에 동원하는 건 불가능한 상황이다. 만약 Servo가 성공하여 쿼드면 쿼드, 옥타면 옥타코어 전부를 온전히 활용하는 브라우저를 만들어낼 수 있게 된다면 모질라 재단은 다음 10년 정도를 맘놓고 보낼 수 있을 것이다.

보통 이런 브라우저 엔진들은 수행 성능, 응답성[2], 규모[3] 등 여러 사정들 때문에 주로 C++로 만들곤 했다.[4] 하지만 C++는 멀티코어를 잘 쓰기 위한 기능은 부족하여[5] 3rd-party 라이브러리들의 도움과 개발자의 실력이 절대적으로 중요하며, 모태가 된 C처럼 C++도 메모리 안정성 따위는 쌈 싸먹은 언어라 멀티코어를 안 써도 버그 만들기 엄청나게 쉬운 언어다. C++ 같은 언어에서 메모리 오류는 보통 치명적인 보안 버그가 될 수 있다는 걸 생각하면 무시하기 힘든 문제다. 이런 탓에, C++로 멀티코어를 지원하는 프로젝트를 진행하는 것은 상대적으로 많은 인력과 시간이 필요하다. [6] 게다가 웹 렌더링 엔진도 매우 크고 복잡한 소프트웨어이라 뛰어난 프로그래머가 많이 필요한데, 모질라는 기본적으로 비영리 재단이라 다른 브라우저 제조사들처럼 마냥 개발자를 고용하기도 힘들다.

이런 탓에, C++로는 도저히 Servo 프로젝트를 완성하기 힘들다는 판단 하에 C++보다 적은 노력으로, 메모리 오류를 피하기 쉬우면서, 큰 소프트웨어를 만들기 용이하며, 멀티코어 프로그래밍을 하기에 좋은 언어를 물색하게 되었다. 허나 결국 마땅한 언어를 찾을 수가 없었고, 그래서 이렇게 된 이상 목적에 맞는 프로그래밍 언어를 직접 만들기로 하여 Rust라는 새로운 프로그래밍 언어 개발 프로젝트를 동시에 진행하게 되었다. Rust와 Servo 모두 모질라의 연구 프로젝트로서 현재 개발이 진행중이며, Rust는 2015년 5월 15일 1.0을 발표하고 Servo는 2016년 6월 Firefox nightly에 배포를 검토하는 등[7] 두 프로젝트 모두 활발한 진행을 보여 주고 있다.

그리고 2016년 6월 30일, Servo의 Nightly 버전이 공개되었다! #
2016년 7월 2일, 현재 리눅스와 맥만 지원한다. 윈도 버전은 2016년 7월 18일자 주간 포스팅에 이번 주 내로 올라올 것이라고 언급한 상황이다. 그리고 9월 27일 현재 안 올라왔다 [8] 안드로이드는 곧 나올 것이라는 예고 외에는 아직 계획이 없다. 삼성전자와 현재 협력하여 개발중인 상황이니 곧 나올 것은 분명하다. 삼성전자는 갤럭시 시리즈에 탑재될 새로운 브라우저 엔진으로서 사용할 수 있는 가능성을 믿고 개발에 참여한 것이기 때문이다.

3 슈퍼휴먼 사무라이 사이버스쿼드의 등장 히어로

원작 전광초인 그리드맨그리드맨. 해당 문서 참조.
  1. 다만, PC용 파이어폭스는 웹 페이지뿐만 아니라 웹 브라우저 자체와 거기에 딸린 확장 기능까지 브라우저 엔진인 Gecko가 담당하는 신기한 구조라, Servo가 완성되고 나서도 파이어폭스에 Servo가 적용될지는 아직 알 수 없다.
  2. HTML5, WebGL 등의 기술이 보급되면서 페이지를 한 번 그리면 끝이 아니라 실시간으로 JavaScript 코드를 돌리면서 페이지를 갱신해야 한다. 브라우저에서 초당 60프레임이 뽑히네 마네 하는 세상인지라...
  3. W3C 표준이 워낙 방대하고 또 계속해서 새로운 기술이 갱신되는 탓에 C로는 도저히 복잡도를 감당할 수 없다. 브라우저 엔진 만드는 게 OS 커널보다 복잡하네 마네 할 지경.
  4. 넷스케이프가 옛날에 Java로 브라우저를 만들려고 시도했었으나 망했다.
  5. 최근 표준인 C++11에서 약간 나아졌다
  6. 그 구글마저도 비슷한 문제에 봉착하여 결국 Go를 만들게 된다.
  7. Servo is planning to make its first alpha releases available in June.[1]
  8. 사실 올라오긴 올라왔다. 다만 직링크 대신 버그 트래커링크가 올라왔다. 트래커 포스트를 잘 보면 msi 파일 링크가 있어서 설치할 수 있다.