로봇제품을 사보니 크게 두가지로 나뉘더라고요 (실제로 산것은 로봇청소기이지만 이족보행을 상상해서 씁니다.)
기체 = 몸통 이랑 배터리나 모터나 기계적인 물체 와 센서
메인보드 = 어떻게 움직이라고 하는 프로그램이 입련된 장치,인공지능 같은거
기체는
1.기계부품은 재료들을 가공하여 만들어 조립한것이 이를 테면 사람의 뼈
이 기계가 움직였을때 충격에 견딜수 있는지 필요한 학문은 재료역학
충격으로 자세의 안정감이 있는지 필요한 학문은 동역학
가만히 있을때의 중심을 잡을수 있는지 필요한 정역학
2.관절들을 움직이게 해주는 모터는 이를테면 사람의 근육
모터의 구조와 동작원리는 이해하고 회전속도로 기체의 움직임의 민첩함을 이해하는 전기공학
3.적외선 센서는 이를테면 사람의 환경파악지능 같은것
센서의 구조와 동작원리는 이해하는 센서공학
4.기계를 움직이게 해주는 전기에너지 충전소 배터리 이를 테면 사람의 에너지
배터리의 구조와 동작원리 재료에 따라 달라지는 배터리 종류를 이해하는 전기화학
같은것의 공학이 필요할것 같고
로봇을 자세히 봤는데 기계로만 된 부품에는 포트라는것이 안 달려 있었는데 모터나 센서에는 달려있었습니다.
즉 실제 구동하는 모터나 센서로 기계를 끌어당기면서 움직이는 것처럼 보인다고 생각합니다.
메인보드는
1.소자의 종류를 파악하는것 이를테면 사람의 두뇌의 대뇌나,소뇌,전두엽같은
각 소자의 특성과 구조 종류와 용도의 대해 이해하는 전자공학
2.이런 소자들은 어떻게 나열할것인지 이를테면 뇌 퍼즐조각같은 보드게임
회로를 설계하는데 필요한 기초이론 회로이론
복잡한 연산이 가능하게 회로를 설계하는 고급이론 임베디드 시스템
3.설계하여 길이 열리면 전기(또는 전자)가 어떻게 동작하는것인지 이를테면 두뇌의 신경물질
전기의 전자 하나하나가 디지털 값으로 변환되는 것을 이해하는 디지털공학
지난 답변에서 MCU라는 메모리에 어떻게 프로그램을 넣는지에서 예물레이터를 이용한다고 들었습니다. 그래서 혹시해서 로봇이 아닌 컴퓨터에 넣는 프로그램 즉 운영체제 같은 것도 비슷하다고 생각합니다. 그런데 그 운영체제라는 프로그램은 회사마다 다르고 대표적 운영체제를 만드는 빌게이츠의 마이크로소프트에서 만든다고 생각에서 저는 MCU에 프로그램을 넣는 예물레이터를 이해하는 것을 나중으로 미루도록 했습니다. 옛날에 이 같은 질문을 교수님께 물어보니 회사에서 만든다라고 간단히 말했습니다. 처음에는 농담인줄 알았는데 사실 일반인이 이해하기에 기밀 같은것이라는 생각이 들더군요.
여기서 궁금증이 있다면 운영체제라는 프로그램이 입력된 MCU가 내장된 로봇의 인터페이스를 어떻게 구성하는건가요?
예를 들면 로봇뿐만아니라 일반적인 스마트 폰이나 갤럭시 폰의 스크린에 뜨는 바탕화면 같은 환경은 회사가 똑같아도 다르고 심지어 개인이 만들기도 하더라고요. 혹시 아트워크 같은건가요?
기체 = 몸통 이랑 배터리나 모터나 기계적인 물체 와 센서
메인보드 = 어떻게 움직이라고 하는 프로그램이 입련된 장치,인공지능 같은거
기체는
1.기계부품은 재료들을 가공하여 만들어 조립한것이 이를 테면 사람의 뼈
이 기계가 움직였을때 충격에 견딜수 있는지 필요한 학문은 재료역학
충격으로 자세의 안정감이 있는지 필요한 학문은 동역학
가만히 있을때의 중심을 잡을수 있는지 필요한 정역학
2.관절들을 움직이게 해주는 모터는 이를테면 사람의 근육
모터의 구조와 동작원리는 이해하고 회전속도로 기체의 움직임의 민첩함을 이해하는 전기공학
3.적외선 센서는 이를테면 사람의 환경파악지능 같은것
센서의 구조와 동작원리는 이해하는 센서공학
4.기계를 움직이게 해주는 전기에너지 충전소 배터리 이를 테면 사람의 에너지
배터리의 구조와 동작원리 재료에 따라 달라지는 배터리 종류를 이해하는 전기화학
같은것의 공학이 필요할것 같고
로봇을 자세히 봤는데 기계로만 된 부품에는 포트라는것이 안 달려 있었는데 모터나 센서에는 달려있었습니다.
즉 실제 구동하는 모터나 센서로 기계를 끌어당기면서 움직이는 것처럼 보인다고 생각합니다.
메인보드는
1.소자의 종류를 파악하는것 이를테면 사람의 두뇌의 대뇌나,소뇌,전두엽같은
각 소자의 특성과 구조 종류와 용도의 대해 이해하는 전자공학
2.이런 소자들은 어떻게 나열할것인지 이를테면 뇌 퍼즐조각같은 보드게임
회로를 설계하는데 필요한 기초이론 회로이론
복잡한 연산이 가능하게 회로를 설계하는 고급이론 임베디드 시스템
3.설계하여 길이 열리면 전기(또는 전자)가 어떻게 동작하는것인지 이를테면 두뇌의 신경물질
전기의 전자 하나하나가 디지털 값으로 변환되는 것을 이해하는 디지털공학
지난 답변에서 MCU라는 메모리에 어떻게 프로그램을 넣는지에서 예물레이터를 이용한다고 들었습니다. 그래서 혹시해서 로봇이 아닌 컴퓨터에 넣는 프로그램 즉 운영체제 같은 것도 비슷하다고 생각합니다. 그런데 그 운영체제라는 프로그램은 회사마다 다르고 대표적 운영체제를 만드는 빌게이츠의 마이크로소프트에서 만든다고 생각에서 저는 MCU에 프로그램을 넣는 예물레이터를 이해하는 것을 나중으로 미루도록 했습니다. 옛날에 이 같은 질문을 교수님께 물어보니 회사에서 만든다라고 간단히 말했습니다. 처음에는 농담인줄 알았는데 사실 일반인이 이해하기에 기밀 같은것이라는 생각이 들더군요.
여기서 궁금증이 있다면 운영체제라는 프로그램이 입력된 MCU가 내장된 로봇의 인터페이스를 어떻게 구성하는건가요?
예를 들면 로봇뿐만아니라 일반적인 스마트 폰이나 갤럭시 폰의 스크린에 뜨는 바탕화면 같은 환경은 회사가 똑같아도 다르고 심지어 개인이 만들기도 하더라고요. 혹시 아트워크 같은건가요?
운영체제라는 프로그램이 입력된 MCU가 내장된 로봇의 인터페이스를 어떻게 구성하는건가요?
--> 결론부터 말씀드리면 MCU로 로봇을 제어한다고 하였을 때 사용자(설계자)가 인터페이스를 구성하게 됩니다.
이것은 운영체제를 설계자가 만든다고 생각하시면 이해하시기 쉬울 듯 합니다.
일반적으로 사용하는 windows 계열 컴퓨터들은 범용목적의 DSP(MCU)라고 할 수 있습니다. 범용이라는 말은 사용 목적이 다양하다는 것으로 해석할 수 있겠죠. 하지만 특수 목적(예를 들어 공장에서 사용하게 될 IC를 기판에 부착하는 한가지 목적을 가진 로봇등..)의 제어계(기계나 전기 혹은 기계와 전기계를 모두 포함하는)를 구성하게 될 경우. 범용 CPU를 사용하기에는 비용의 측면의 문제가 발생하게 되죠, 물론 로봇의 팔을 제어하기 위해 Intel이나 AMD계열의 범용 CPU를 사용할 수도 있습니다. 두 가지의 경우에서, MCU를 이용하여 설계를 할 경우, 로봇의 팔(로봇의 기계관절을 움직이기 위한 모터에서 발생하는 위치 신호)에서 오는 신호를 MCU의 어느 포트를 이용하여 입력받을 것인가는 사용자(설계자)가 정해주는 것입니다. 보통 DSP 내에 입력되는 프로그램에서 이를 정해주게 되는 것이죠.
일반적인 OS(윈도우즈나 리눅스, 혹은 스마트 폰에들어가는 안드로이드나, 아이폰 오에스 등...)는 그 핸드폰에 있는 하드웨어를 사용할 수 있게끔 설정이 되어 있답니다. 이를 통해 만약 사용자가 아이폰의 가속도 센서(예)를 사용하기 위해서는 애플사에서 제공하는 데이터 규격을 이용하여 사용하면 되는 것이구요. 하지만 이것은 한가지 과정을 더 거치게 되겠죠, 가속도 센서에서 오에스로 무언지 모르지만(데이터 시트를 참조하기 전에는) 신호가 발생한다는 것을 의미하고, 이 신호를 사용하려면 애플사에서 제공하는 언어 함수 혹은 라이브러리를 사용하여 한번더 가공하여 프로그램에서 계산을 하고 다시 라이브러리나 함수를 이용하여 하드웨어(가속도 센서로) 신호를 가공하여 보내줘야 하는 반면, MCU에서는(가속도 센서를 이용한다고 하였을 때) 가속도 센서에서 오는 신호를 바로 가공하여(프로그램 상에서 원하는 계산을 거친뒤) 원하는 포트로 출력을 해주면 끝나게 됩니다. 물론 가속도 센서에서 오는 신호가 MCU의 어느 포트에 연결되어 있는지는 설계하면서 정해지는 것입니다.
MCU의 프로그램을 한다는 것은 MCU의 어떤 포트로 어떤 신호를 받을 것인가를 설계자가 정하여 이 것을 이용하면 되는 것이기 때문에 사용자가 인터페이스를 만들어 준다고 생각하면 되겠습니다.
마지막에 예을 들어주신 바탕화면에 다른 배경을 띄우는 것도, MCU와 스마트폰의 예를 들자면.
스마트폰
바탕화면 데이터를 준비합니다. --> 프로그램(각 스마트 폰의 운영체제에서 정해놓은 함수나 라이브러리)을 통하여 이 데이터를 LCD에 보내주는 신호 규격으로 변환합니다. --> 오에스는 이 함수에서 변환된 신호를 이용하여 LCD로 데이터를 보내게 됩니다. --> LCD에 출력이 됩니다.
MCU(MCU와 LCD를 어떻게 연결할 것인지 결정이 되었고, 회로가 구성되어 있다고 가정하면.)
바탕화면(LCD에 출력하고 싶은 데이터)를 준비합니다. --> 데이터를 설계한 인터페이스(다양한 종류의 LCD 패널이 있고 이에 맞는 데이터 전송 규격이 있습니다.)를 이용하여 LCD로 보내게 됩니다. --> LCD에 출력이 됩니다.
답변이 되었나 모르겠습니다. 그리고 제가 설명한 부분도 틀린점이 있을 것으로 보여집니다. (설명은 제가 알고 있는 내용을 기준으로 하였습니다.) MCU프로그램한다는 것은 시스템(하드웨어)에 직접 접근한다는 것으로도 설명할 수 있기 때문에 보통 시스템 프로그래밍이라고도 합니다.
틀린 부분이 있으면 답글로 수정 부탁드립니다.~ ^^;