2019년 5월 15일 수요일

블랙홀 촬영기법 찾다가 알게된 사실들 기록

- M87 블랙홀 촬영 기법은?
-> 지구상에 퍼져있는 여러대의 전파망원경을 마치 한대의 전파망원경처럼 사용. 간섭계라는 기술인데, 기술 자체는 좀 나온지 되었는데, 이미지를 깔끔하게 복원하는 방법이 없었음. 이번에 이사람이 이것을 개선한듯.
->Ref.s : Ketie Bouman
TED speech : https://www.ted.com/talks/katie_bouman_what_does_a_black_hole_look_like?language=ko
Caltech speech : https://www.youtube.com/watch?v=UGL_OL3OrCE
MIT news page: http://news.mit.edu/2016/method-image-black-holes-0606


- 전파 망원경 이란?
-> 광원망원경(허블우주망원경)이 가시광선으로 사진을 생성하는 것과 비슷하게, 전파(Radio wave)를 이용하여 특정 주파수로 이루어진 사진을 생성하는 망원경. 가시광선은, 지구 대기 등에 의해서 지상에서 먼 우주를 촬영하는데 어려움이 있음.
이를 극복하기 위한 것이 우주망원경이나, 그 마저도 성간 물질에 의해서 가시광선으로 먼 우주를 관찰하는 것은 한계가 있음. 그러나 가시광선에 비해서 긴 파장을 가진 전파는, 이러한 성간 물질에 영향을 비교적 적게 받음. 또한, 지상에서도 특정 주파수 대의 전파들은 대기에 거의 영향을 받지 않기에 지상에서 측정하기에도 좋음.


- 전파 망원경의 dish or reflector 는 왜 구멍이 뚫려있어도 되나?
-> 전파 망원경은 간단하게, 안테나와 반사경(dish) 로 이루어짐. 안테나는 직접적으로 신호를 측정하는 것이고, 반사경은 전파를 안테나로 모아주는 것.
이러한 반사경은 꽉 찬 형태의 면일 필요는 없고, 구멍이 송송 뚫린 형태여도 됨. 그러나 이 구멍의 직경은 측정하고자 하는 파장의 1/10 보다는 작아야 함.
그것보다 크면 파장이 지나가기 때문(Faraday cage 원리-관련이 크게 없음, https://www.physlink.com/education/askexperts/ae176.cfm)

-> 전자기파에 의해서 전도체의 전자들이 움직이게 되고, 이 움직임에 의해 전자기파가 발생되기 때문. 소리의 고유진동수의 전자파 버전으로 생각하면 될듯. 구멍이 뚫려 있기에 파장의 일부는 통과함 (그러나 빨리 약해짐). 그러나 반사파를 수집하기엔 충분.
(https://www.quora.com/Why-cant-radio-waves-pass-through-a-satellite-dish)




- 안테나는 어째서 측정하고자 하는 파장보다 커야 하는가?
-> di-ploe antenna 에서 설명하고 있음. 전파는 전자의 이동에 의해서 생성되는데, 이때 전파의 파장은 전자가 이동하는 거리에 의해서 결정됨. 특정 길이의 파장을 만들고 싶다면, 그 파장에 해당하는 길이만큼 전자가 이동할 수 있도록 전도체가 필요함. 송신기나 수신기나 같은 원리로 작동하기 때문에, 특정길이의 파장을 수신하고 싶다면, 마찬가지로 그 파장에 해당하는 만큼 전자가 움직일 수 있는 길이의 전도체가 필요함.

- 왜 빛의 파장보다 작은 물체는 가시광선으로 볼 수 없는가?
-> Rayleigh scattering 에 의해서 설명. 파장의 산란 확률은 물체의크기^6/파장의길이^4 에 비례하는데, 물체의 크기가 굉장히 작기 때문. 빛이 들어오긴하는데 너무 약하고 초점이 안맞아서 안보임. (좋은 현미경은 200nm 까지 볼 수 있음. 가시광선은 380nm ~ 740nm)
https://www.physicsforums.com/threads/why-cant-we-see-objects-smaller-than-wavelength-of-visible-light.680163/)


Refelector -> the gaps between the conductors are less than about 1/10 of the target wavelength
(https://en.wikipedia.org/wiki/Reflective_array_antenna)
(https://www.astronomynotes.com/telescop/s4.htm)

2018년 10월 31일 수요일

Covariance and Correlation coefficient note (공분산, 상관계수)

Covariance (공분산)

  • 두 개의 데이터 셋트의 상관관계를 나타내는 지표
  • 두 개의 데이터 셋트가 서로 동일하게 증가하는지 감소하는지 정도의 경향 정도는 유추할 수 있음.

Formula: 

  • 그러나 covariance 는 normalize 가 되어있지 않기 때문에 그 크기로써 의미를 찾아내기란 쉽지 않다.


Correlation coefficient (상관관계계수)

  • Covariance 를 단위와 무관하게 표준편차 (standard devition) 로 정규화 (Normalization) 시킨 것.
Formula: 

  • Correlation 은 -1 ~ +1 사이의 값을 가지며, +1 이나 -1 로 갈수록 선형적인 관계를 가지며, 0으로 갈수록 무관한 관계를 가짐. (Fig. 참고)

Fig. Several sets of (x,y) points with Pearson correlation coefficient of x and y for each set. (Source: en.wikipedia.org/wiki/Correlation_and_dependence)



2018년 4월 8일 일요일

ODROID-XU4 처음 사용기

 센서의 데이터를 별도의 MCU 로부터 전달 받은 후, 높은 수준의 연산 (Forward and Inverse kinematics 혹은 Dynamics) 를 수행하기 위해서, 소형 저가의 SBC (Single board computer)의 하나로 분류되는, 국내 hardkernel 사에서 개발한 ODROID-XU4 (이하 XU4) 를 사용해 보았다.

 현재 구성에서는 각 링크에 부착된 엔코더, IMU, FSR 의 값들을 STM 보드에서 취합한 후, 취합된 데이터 셋을 XU4 로 전달하도록 되어있다. XU4 에서는 전달받은 데이터 기반으로 각 모터의 제어입력을 생성하여 STM 보드로 전달한다. STM 보드는 전달받은 제어 입력을 각 모터 드라이버에 전달하여 모터를 제어하는 것으로 전체 로봇을 제어하고자 한다.

 굳이 이러한 구성을 꾸린 이유는, 상기 기재한 동작이 10ms 이하로 이루어지게 하기 위함이다. Matrix 연산 같은, 필연적으로 코드의 크기가 커지게 되는 라이브러리를 사용하게 되면 코드의 길이가 길어지고 연산이 늘어나기 때문에, STM 보드로 모든 연산을 수행하기엔 무리가 있다고 판단하였기 때문이다. (그보다도 STM 보드에 길이 제한없는 코딩을 위해서는 IDE를 사야하는데, 연구기관할인을 받더라도 천만원에 가까운 비용이 든다..)

 이 글에서는 XU4 를 처음 접하면서, ROS (Robot operating system) 를 사용하기 위한 환경을 구성하면서 진행해야 할 점 및 오해한 사실들을 기록하고자 한다.

 ROS 는 로봇 개발을 원할하게 하기 위해서 각 종 관련 라리브러리를 포함한 오픈소스 소프트웨어이다. 본래의 정의로는 Middleware 라고 해서 OS 가 하는 일을 일부 수행함과 동시에 소프트웨어 적인 패키지(프로그램)를 포함하는 것을 의미한다고 한다. 이 ROS는 필연적으로 OS를 필요하게 되는데, 일반적으로 Linux 기반의 OS 를 많이 사용한다고 한다. 막연하게 로봇 개발 관련 플랫폼이라는 단어에 혹하여 ROS를 활용하기로 결정하였지만, 로봇의 하드웨어를 개발하고, 단순히 제어하는 입장에서 ROS의 활용은 절대적이진 않은 것 같다. 손쉽게 GUI를 구성하여 각종 센서 데이터를 모니터링 하기엔 훌륭하다는 장점을 가지지만, 대부분의 라이브러리가 모바일 로봇의 SLAM 이나 비전에 기반한 로봇 제어를 위한 것이라는 느낌이 강하기 때문이다. 그러나 비전을 사용하기 않고 고전적인 엔코더, 힘 센서 등에 기반한 제어를 하는데 있어서 반드시 필요한가에는 의구심이 든다. (Real-time 시스템을 구현하기 위한 SBC 활용에는 전적으로 동의한다.)



 각설하고, XU4에 ROS를 설치하기 위해서는 OS를 올려야한다. 여기서는 Linux 계열의 Ubuntu 16.04 버전을 활용하였다. 필자처럼 Linux 에 익숙하지 못한 사람들은 Linux 와 Ubuntu 를 구분하는 것에서 조차 어려움이 있는데, Ubuntu 는 Linux 커널에 기반한 OS 중 한가지 정도로 이해하면 된다. Linux (정확히는 GNU/Linux) 많은 이들이 함께 개발하는 OS 이기 때문에 각자의 입맛에 맞추어 개발되는 경향이 크다. 때문에 엄청나게 다양한 Linux 커널 기반의 OS가 존재하며, 그 중 한가지가 Ubuntu 인 것일 뿐이다. (윈도우의 경우 MS 사가 전적으로 개발하고 소유하기 때문에, 그 종류가 많지 못한 것일 뿐이다. 윈도 NT, 윈도 98, 윈도 XP ... 등 모두 윈도우라고 생각하는 것과 같다.)

 Hardkernel 에서는 XU4 전용의 Ubuntu 이미지를 제공하고 있다. 일반적인 Desktop 이미지를 다운받아서 설치하여 사용하진 못한다고 한다. (아키텍쳐가 다르기 때문이라고 함.) 이를 숫자를 사용하여 순차적으로 기술하면,

1. XU4 용 Ubuntu 16.04-4.14-랙odroid-xu4 이미지를 업체 홈페이지에서 다운

2. OS를 올릴 eMMC 나 SDcard 를 포맷 (SD card formatter 라는 프로그램 추천)

3. Win32DiskImager 를 설치하여 위에서 다운받은 Ubuntu 이미지를 eMMC나 SDcard 에 올림. (Win32DiskImager-odroid-v1.3 이라는 별도 프로그램을 hardkernel에서 제공하긴 하나 같은 거라고 생각됨)

4. 작업이 완료되면 윈도우의 경우 포맷할 거냐는 메세지가 뜨는데 무시하고 eMMC 나 SDcard 를 PC에서 꺼냄.

5. XU4에 메모리를 부착하고 부팅 (이후 작업을 위한 디스플레이 장치, 키보드, 마우스, 유/무선 랜은 미리 연결 할 것)

6. 부팅하고 20초 정도 기다리면 로그인 화면이 뜸. Odroid 계정의 암호는 Odroid 임.

7. 아래의 명령어를 터미널에 순차적으로 입력 (터미널은 Ctrl+Shift+T 로 열 수 있음.)
sudo apt update,
sudo apt upgrade
sudo apt dist-upgrade
sudo apt install linux-image-xu3 
sudo reboot

 이 후 추가적인 커널 업데이트를 할 수 있는데, 자세한 건 제조사 홈페이지를 참고하기 바란다. 개인적으로 제품 자체가 숙련자들을 위한 것이어서 초보자들이 보기에 불편한 감이 없지 않다.

설치된 Ubuntu 16.04 는 Mate 버전으로, 기존 Ubuntu 와 다르게 어느정도 기본 요소를 포함하고 있다. 때문에 사용자 입장에서 추가적으로 설치해야 할 프로그램은 특별히 필요로 하지 않는 한 없다고 생각된다.

이외의 설정
고정IP 지정: 우측 상단의 인터넷 아이콘을 우클릭하여 IPv4 에 입력하면 됨.
한국시간 설정: http://ngee.tistory.com/643
한글입력 설정: http://androidtest.tistory.com/52

Linux 초보자인 경우 보면 좋은 기초 가이드 (1-2시간 소요): http://www.ee.surrey.ac.uk/Teaching/Unix/

(ROS 는 Ununtu 버전에 따라 다른 버전을 사용해야 하는데, Ubuntu 16.04의 경우 ROS Kinetic Kame 를 설치하면 된다. 솔직히 자세한 사항은 'ROS 로봇 프로그래밍, 표윤석 외 저' 를 추천한다.

여기서 필자가 몇일 뻘짓한 것이 있는데... XU4 환경에서 qtcreator 나 Rviz 등을 실행하면 OpenGL 관련 에러가 뜬다. 이로인해 프로그램이 실행은 되나 화면에 아무것도 나타나지 않는 현상도 발생한다. 모든 에러를 해결하진 못해도 아래와 같은 조치를 취하면 어느정도는 해결이 된다.
아래 명령 입력 후, Odroid-utility 설치 후 6번 Rebuild Xorg DDX 실행 후 reboot.

wget -O /usr/local/bin/odroid-utility.sh https://raw.githubusercontent.com/mdrjr/odroid-utility/master/odroid-utility.sh
chmod +x /usr/local/bin/odroid-utility.sh
odroid-utility.sh

위 작업을 한 뒤에는 Unable to find X11 visual which matches EGL config 9 에러가 사라짐을 확인할 수 있다.
그러나 여전히 libGL error 관련 메세지는 사라지지 않는다. 이는 XU4 같은 소형 시스템에서는 효율적인 운용을 위해서 OpenGL 이 아닌, OpenGL ES (Embedded System) 을 사용하기 때문이다. OpenGL ES는 OpenGL 에서 일부 기능을 제거하여 줄인 버전이라고 한다.
XU4 에서 3D 관련 작업을 수행하고자 한다면 위와 같은 에러가 뜨며 실행되지 않을 것이다. 이를 해결하기 위해서 glshim 이나 gl4es 같은 것을 사용하여 다시 컴파일 하면 된다고는 하는데.. 초보자 입장에서는 무슨 말인지도 어떻게 해야 할지도 모르겠다.
그걸 떠나서, XU4 를 이용하여 Rviz 같은 3차원 모니터링 패키지를 사용하려고 한 판단이 잘못되었다는 것을 깨달았다. 이유는 매우 비효율적이기 때문이다. 충분히 빠른 PC가 있는데 굳이 XU4로 모니터링하는 것은, atmega8 로 스타크래프트를 돌리려고 하는 것과 비슷할 것이다. 차라리 무선랜으로 PC와 XU4를 같은 네트워크로 묶어 버려서 Rviz 로 모니터링 하는 것이 효율적일 것이다.

------------------------------------------------------------------------------------------------
결론부터 말씀드리자면 비추천입니다. 그 이유는 아래와 같습니다.

1. 올해  9월 열렸던 ROSCon2014에서 "The current state of ROS and Ubuntu on ARM" 라는 주제로 ARM 기반의 보드에서 사용되는 ROS 에 대한 이야기가 있었습니다. 예전보다 환경은 좋아지고, 최근 보드들도 많이 보완되어 ROS 사용하기에 좋아진 것은 사실입니다. 다만, OpenGL 을 사용가능해야 하고, 바이너리 파일은 제공되지 않기때문에 의존성 관계를 다 고려해가며 소스들을 개별로 다운받고 컴파일 해야하겠죠. ARM  을 사용하시니 아래의 발표자료가 조금은 도움이 되겠네요.

http://roscon.ros.org/2014/wp-content/uploads/2014/07/ROS-on-ARM.pdf 

2. 다행히 사용하고 계시는 Odroid XU3의 경우에는 OpenGL ES 3.0/2.0/1.1 을 지원하는 제품이기에 속도는 둘째 치더라도 RViz 를 사용 가능합니다. 다만, 1번에서 말씀드렸듯이 컴파일에 신중히해야겠죠. 최근 자료는 아니지만 관련 내용으로 한국 ROS 유저 그룹 회원 한분이 진행한 내용이 있습니다. 혹시 보셨을수도 있지만 아래에 좌표 올릴께요. 저는 해보지 않았지만 이분은 성공하셨다고 하시네요.

http://www.ros.or.kr/index.php/Install_ros_on_embedded

3. 마지막으로 효용성문제입니다. 전 이부분을 제일 강조하고 싶은데, 아무리 ARM 기반의 SBC 계열이 발전을 하고는 있다지만, 데스크톱 보다는 성능면에서 떨어지기에 굳이  오드로이드에서 무언가를 RViz 에서 확인해야 하는가 입니다. SBC 는 휴대성이나 매우 작은 크기, 저전력에서 뛰어나기에 그 장점을 살릴 수 있는 면에서 사용하시고, 뷰어라고 볼 수 있는 RViz 는 데스크톱에서 보시는게 좋지 않을까 싶습니다.

이상입니다.

--------------------------------------------------------------------------------------------------

고로.. ODROID-XU4 를 이용하여 Rviz 등의 3D 패키지를 사용하려는 당신... 그만하고 다른 것을 하는 것을 추천한다.

2015년 12월 22일 화요일

MATLAB 메모리 고려한 코딩 법 (속도 향상)

http://iamaman.tistory.com/558

+ drawnow 함수 쓰면 엄청 느려짐...

사용될 데이터 크기를 염두하여 제로 매트릭스를 미리 생성시켜 놓으면 좋음.
매트릭스 형태로 연산하면 빨라짐.

+ 추가내용

- 연속적으로 움직이는 모습을 표현하고 싶은 경우, 미리 데이터를 계산해 두고, figure 의 handle 과 update 를 사용하여 표기하면 시간을 획기적으로 줄일 수 있음.

2015년 11월 30일 월요일

전기 모터 (Electric Motor)

(출처: wikipedia, 'electric motor')
전기 모터란, 전기적 에너지를 기계적 에너지로 변환시켜주는 에너지 컨버터로 볼 수 있다. 반대로 작용할 경우 발전기로 작동한다.

모터의 힘은 자기장과 전류의 작용에 의해서 발생한다. 운송장치와 같은 사례에서는 모터가 추진 역활 이외에 감속이나 발전 역할을 수행하기도 한다.

팬, 블로워, 펌프, 공작기계, 가전제품, 전기공구, 하드 디스크 그리고 일반적인 전기 모터는 배터리와 같은 DC 전류를 활용하고, 모터 vehicles 나 정류기, 파워 그리드, 인버터나 발전기는 AC 전류에 기반한다. 크기도 다양한데, 아주 작은 모터는 소형 시계에도 들어가고, 산업용으로 활용되는 모터는 크기와 특성이 규격화가 되어 있으며, 가장 큰 모터(100 메가와트 급)는 배의 추진, 파이프라인 압축, 저수 댐 등에 활용된다. 이러한 모터들은 전원의 종류, 내부 구조, 적용 분야, 출력 운동 형태 등에 따라서 분류되고 있다.

직선, 회전 운동을 발생 시키는지 여부에 따라, 솔레노이드나 스피커 처럼 사용가능한 기계에너지로 전환시키는 지에 따라서 구동기와 변환기로 분류하고도 있다.
모터의 구성

Rotor (회전자)
- 모터의 움직이는 부분(출력축). 일반적으로 conductor 을 포함하나, magnet을 포함하는 경우도 있음.

Stator (고정자)
- 모터의 고정된 부분(고정단). Conductor 나 magnet 로 이루어져 있음. Stator core 는 얇은 금속 판으로 이루어져 있는데, laminations 라고도 부름. Laminations 는 solid core에 비해서 에너지 소모를 줄이는 효과가 존재함.

Air gap (공극)
- Rotor 와 stator 사이의 간격. 큰 air gap는 모터의 효율을 떨어뜨리는 효과가 있기 때문에, 가능한 한 작게 만드는 것이 중요함. Air gap 은 magnetizing current 생성에 직접적인 영향을 줌. 그러나 너무 작은 air gap은 기계적인 노이즈와 손실을 야기함.

Windings (권선)
- 코일에 감겨져 있는 wires. Magnetic core 에 감겨 magnetic pole 을 만드는 역할을 함.

Commutator (정류자)
- 전류의 방향을 바꾸어주는 장치. 일반적으로 DC 모터에 사용되고 간혹 AC 모터에 적용된 경우도 있음.
모터의 효율
BLDC: 85-90% (96.5% 까지도 보고됨.), DC: 75-80%
모터의 종류

- Self-commutated motor (자체정류방식)
-- Brushed DC motor
: 일반적인 DC 모터. Brush 라는 물리적인 바가 회전축에 접촉하여 전류를 정류함. 이것때문에 생기는 문제가 매우 많음. 노이즈, 스파크, 수명, 유지보수문제. 그러나 싸고 구조가 간단. 코일로만 이루어진 Electrically excited DC motor와 영구자석을 이용한 Permanent magnet DC motor 로도 나누어짐.
Series-Wound DC 모터가 dc 중엔 가장 큰 토크를 낸다고 함. 이송수단용으로 많이 사용. 그러나 제어가 잘 안되고 속도도 5kRPM 까지 제한적임.

-- Electronic commutator (EC) motor (전자정류방식)
--- Brushless DC motor (BLDC)
: 위 BDCM 은 물리적인 정류자를 이용하였지만 BLDC 는 전자소자를 이용하여 해당 기능을 대체하였음. 일반적으로 U-V-W의 3상으로 이루어져있고(1, 2상도 존재한다고함), hall sensor를 이용하여 rotor의 위치를 검출하여 적절하게 전류를 흘려주는 방식임. 거의 모든 면에서 DC 모터보다 좋고, AC 모터 보다 효율도 좋음. 소형으로도 제작되어 적용분야가 넓고 소음이 거의 없어 장비용으로도 적합함. 현재 최대 100kW 급의 모터(전기 이동장치용)까지 나와있음. 그러나 아무래도 모터 자체의 가격이 비싸지는 단점이 존재함.

--- Switch reluctance motor (SRM)
 : 이건 stator에는 코일이 감겨 있는데, rotor에 코일도 안감고 자석도 안붙임. 다만 rotor가 돌출된 pole을 가진 형상인데, 자기장이 잘 흐를 수 있는 길의 역할을 할 수 있도록 생겼음. 때문에 코일에 전류를 흘려주면 자기장이 발생하고, 해당 변화가 rotor pole에 전달되면서 pole이 자화됨. 이걸 순차적으로 반복하여 회전운동을 발생시킴. 싸다는 장점?

-- Universal AC-DC motor
: 이 모터는 전자적 기계적 정류자를 모두 가지고 있어 AC, DC 전원에 대해서 모두 작동할 수 있는 모터라고 함. 그러나 일반적으로는 AC 전원을 사용하는 것으로 보임. 보통 1000W 아래로 만들어짐. 초기 발생 토크가 굉장히 높음. 그리고 고속기동이 가능함. 그러나 속도가 높아질수록 토크가 급격히 감소됨.


- Externally commutated AC machine (외부 정류 방식)
-- Induction motor
: 변압기 처럼 1, 2차 코일 반응과 비슷하게 작용함. Rotor와 stator 모두 코일이 감겨져 있고, rotor 에 감긴 코일이 bar 혹은 wire 형태인지에 SCIM, WRIM으로 분류됨. 비동기 모터라고도 불림. Rotor 와 stator 코일의 속도를 다르게하여 slip을 발생시켜 운동을 만듦.

-- Synchronous motor
: 간단하게 말하면 걸어준 자기장 변화 주파주와 동기된 속도로 작동하는 모터임. 이를 zero slip 라고도 부름. 입력 주파수와 동일하게 움직이기 때문에 속도 제어 등 정밀 제어에 용이하다고 함.

- Ironless or coreless rotor motor
: 보통 rotor는 금속재료에 코일을 감거나 자석을 붙여서 자기장을 발생시키는데, 이건 그러한 금속재료를 안쓰고 코일만 사용하는 방식. 때문에 rotor 의 질량을 줄일 수 있어 동특성을 월등히 좋게 할 수 있음. 또한 철심이 없어서 cogging이 없음. 하지만 고하중에 대해 취약할 수 밖에 없음.

- Pancake or axial rotor motor
: 납작하게 생긴 모터. 납작한 형상으로 여러 분야에 적용이 용이함. 동특성도 좋아보임.

- Servo motor
: Servo motor 은 새로운 방식의 모터라기 보다는 센서를 부착하여 위치나 속도 제어가 가능한 모터 모듈을 의미함.

- Stepper motor
: SRM과 거의 비슷한 듯 한데.. 장점은 open loop control 이 가능하다는 점? 방식이야 SRM하고 동일하다고 생각도미. 본래 cogging이 큰 문제가 되었지만 근래 microstepping 을 적용하여 부드러운 모션이 가능. Holding torque가 뛰어나고 위치제어에 용이하여 printer, scanniner 등의 머신에 많이 사용됨.

- Linear motor
: Linear motor 는 상기 언급한 모터들을 원형이 아닌 평면형태로 펼쳤다고 생각하면 간단함.

위키를 기준으로 살펴보았는데, 뭔가 설명이 부족하다고 느껴짐. 분류 기준도 불분명하고.. 참고할 만한 자료는 못됨. 부가적으로 참고할 만한 사이트 링크를 걸어둠.

암튼 DC는 효율이 높긴한데 출력을 올리는데 한계가 있고, AC는 효율도 낮고 제어하는 장비도 많이 필요하지만 아주 높은 출력용으로 적합함. 가격은 DC가 비싸다고 함.

http://www.ece.uah.edu/courses/material/EE410-Wms2/Electric%20motors.pdf

BLDC와 PMSM 전동기의 차이점
출처: http://www.ansys.kr/Support/QnA/qnaView.asp?uid=1846
PMDC(Permanent Manet DC) 모터는 브러쉬와 정류자를 사용한 일반적으로 많이 쓰이는 모터인데, BLDC는 이러한 PMDC모터의 브러쉬와 정류자를 제거하고 이의 역활을 Power Chip을 사용한 전자회로로 대치한 것을 말합니다. 정류자 역활만을 대신하는 회로를 만들어 주기 때문에 뒤에 설명하는 PMSM 보다는 훨씬 회로가 간단하지요. 반면에 정밀한 콘트롤은 대개 불가능합니다. PMDC처럼 그냥 주어진 전압을 가지고 상마다 On/Off를 통해 전류를 공급해줄뿐이지요.
이러한 이유로, 일반 DC모터의 공식에서 보듯이 BLDC는 전압이 주어지고 부하가 주어지면 전류와 RPM이 결정이 됩니다. 즉, 전압이 고정되어 있는 경우, 부하에 따라 천천히(부하가 클때) 돌기도 하고 빠르게 돌기도 하는 것이지요.
PMSM(Permanent Manet Synchronous Motor)는 정밀한(또는 의도하는) 콘트롤을 위해 위의 BLDC와 기계적으로는 비슷하나 전자회로는 달라지게 됩니다. 훨씬 더 복잡한 기능을 수행하게 되는 것이지요. 간단하게 얘기하면 입력되는 전압의 크기를 chopping(보통 PWM이라는 방식을 많이 사용합니다)을 통해 조정하는 것입니다.
이렇게 전압의 크기를 조절함으로서 어떠한 부하가 주어지건 간에 의도하는 RPM으로 콘트롤 할 수 있게 되는 것입니다. 이를 위해 PMSM은 대게 인코더나 리졸버 같은 위치와 속도를 정밀하게 센싱할 수 있는 장치를 축상에 덧붙이게 됩니다.