81. 소프트웨어 작성 방법론에 조언 부탁 드립니다.
34
33 câu hỏi đã được viết
얼마전에 면접보는데 로봇 소프트웨어 코딩을 어떻게 하겠냐고 물어 봤는데 대답을 잘 하지는 못했습니다. 많은걸 배우게 하는 면접이었던것 같습니다.
초기화, 그다음 센서나 모듈별 작동 순서 정의, 제어루프 실행 이라 말햇는데 너무도 부족한 대답이었던것 같습니다.
지금 수업에서 예로든 전동 킥보드라면 어떻게 적용해야 할까요 ?
첫번째, 운용조건(사람 1명 120kg까지 가정, 3시간 운전 가정) 설정 및 얼마안에 속도 피드백 루프를 돌아야 한다 라는 제한 조건(제어주가)을 설정.
두번째, 필요한 하드웨어 선정: 배터리 용량 결정, dc모터스펙 결정(요구되는 토크 크기 예측), stm32mcu 선택 (-->너무 고스펙 아니냐고 물어 볼수도 있을것 같습니다)
세번째, 소프트웨어 구상 : 엔코더의 회전속도 피드백을 통한 속도제어 PI컨트롤러 설계, 통신방식은 rs232/can,
대략 이렇게 대답 하면 될까요 ?
특히 소프트웨어 구조라는게 대체 어디 까지를 의미 하는지 모르겠습니다. 인터럽트로 처리한다. 아니면 상태머신으로 관리한다 등등이 대답이 될수 잇을까요 ?
그리고 서로다른 동작속도를 가진 시스템은 어떻게 관리 해야 하나요 ? 어디선가 본기억으로 ros2의 메세지 방식은 확장성에 좋지만 지연이나 놓침 현상이 있을 수 있다고 본것 같습니다. 하지만 안전이 매우 중요한 분야에서는 이런 방식이 적절치 않아 보입니다.
Câu trả lời 2
0
안녕하세요.
질문에서 말하는 “소프트웨어 구조”는 기능을 어떤 단위로 나누고, 각각을 언제 어떤 순서로 실행할지 설계하는 방법이라고 생각하시면 됩니다.
전동 킥보드를 예로 들면 먼저 운용조건을 정하고, 필요한 토크·속도·전압·전류를 기준으로 모터, 배터리, 인버터, MCU, 센서 등의 하드웨어를 선정합니다. 여기까지 작성하신 방향은 좋습니다.
그다음 소프트웨어는 크게
MCU/Clock, GPIO, ADC, PWM, Timer, UART/CAN 등의 초기화
Hall Sensor, 전류·전압 등의 센서값 취득
모터 구동 및 속도제어
과전류·과전압 등의 보호 로직
통신 및 모니터링
처럼 기능별로 나누어 구성하면 됩니다.
그리고 중요한 것이 실행 주기입니다. 예를 들어 모터 구동처럼 빠르고 일정한 주기가 필요한 연산은 Timer Interrupt에서 실행하고, 통신이나 모니터링처럼 상대적으로 느린 기능은 느린 loop에서 일정 주기마다 실행할 수 있습니다. 지금 강의 코드도 이러한 방식으로 구성되어 있습니다.
따라서 면접에서는
“요구사항을 먼저 정의하고 하드웨어를 선정한 뒤, 소프트웨어는 초기화, 센서 입력, 모터제어, 보호, 통신 등의 기능으로 모듈화합니다. 각 기능이 요구하는 실행 주기를 정하고, 빠른 제어는 Timer Interrupt, 상대적으로 느린 기능은 Main Loop에서 주기적으로 처리하는 구조로 설계하겠습니다.”
정도로 답변하시면 충분히 좋은 답변입니다.
서로 다른 동작속도를 가진 기능도 같은 방식입니다. 모든 기능을 동일한 속도로 실행시키는 것이 아니라 필요한 제어주기에 따라 100us, 1ms, 10ms, 100ms 등으로 실행주기를 나누어서 관리합니다.
ROS2는 현재 강의에서 다루는 MCU 내부의 저수준 모터제어 구조와는 범위가 조금 다르기 때문에, 해당 면접에서 ROS2를 직접 물어본 것이 아니라면 굳이 연결해서 답변하지 않으셔도 될 것 같습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 윤남경님.
로봇이나 전동 킥보드 소프트웨어를 설계할 때는 요구사항 정의 → 하드웨어 선정 → 소프트웨어 구조 설계 → 제어주기 및 태스크 정의 → 구현 및 검증 순서로 접근하면 좋습니다. 질문자님께서 말씀하신 배터리, 모터, MCU, 센서, 제어기, 통신 방식에 대한 고려 방향은 적절합니다.
특히 면접에서는 단순히 부품 목록을 나열하기보다 다음과 같이 설명하면 설계 의도를 더 명확하게 전달할 수 있습니다.
- 목표 속도, 최대 하중, 등판 능력, 주행 시간 등 요구사항 정의
- 요구 토크와 속도를 계산하여 모터 및 배터리 선정
- 엔코더, 전류 센서, 속도 센서 등 피드백 센서 결정
- 속도 제어 루프의 주기와 우선순위 결정
- 빠른 제어 루프와 통신·진단 등 느린 태스크 분리
- STM32는 필요한 PWM, 타이머, ADC, 엔코더 인터페이스, CAN 등의 주변장치와 성능을 기준으로 선정
- PI 제어기 구현 후 시뮬레이션 및 실제 모터 실험으로 검증
- 과전류, 과전압, 센서 오류, 통신 오류 등에 대한 예외 처리 추가
예를 들어 전동 킥보드라면 모터 전류 제어는 수십 kHz, 속도 제어는 수백 Hz 수준으로 구성할 수 있으며, 통신이나 상태 표시 태스크는 이보다 느린 주기로 실행하도록 설계할 수 있습니다. 다만 정확한 주기는 모터, 인버터, 센서, MCU 성능과 시스템 요구사항에 따라 결정해야 합니다.
이와 같이 시스템의 plant가 무엇인지, 어떤 입력을 주고 어떤 센서값을 피드백받는지, 제어 목표와 제어주기를 어떻게 정했는지를 함께 설명하면 설계 방법론을 잘 보여줄 수 있습니다.
유사하게 제어 대상인 plant를 정하고 제어 목표와 모델, 제어기, 실험 결과를 연결해 설명한 기존 답변도 참고해 보세요.
조언 부탁드립니다.
해당 답변에서는 모터 제어 시스템을 설계할 때 어떤 plant를 제어하는지, 제어 목표를 어떻게 설정하는지, 모델링과 제어기 구현 및 검증 경험을 어떻게 정리해야 하는지 설명하고 있습니다. 질문자님의 면접 답변을 구성할 때에도 “무엇을 제어하는가 → 어떤 센서로 측정하는가 → 어떤 주기로 제어하는가 → 어떻게 검증하는가”의 흐름으로 정리하면 도움이 됩니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
86, data bit순서가 바뀌어야 할것 같습니다.
0
18
1
85. pwm사용에 기본구조 이해가 같이 요구되네요
0
25
1
dc모터 회전원리
0
30
2
83. volatile로 선언한 이유가 이해 안됩니다.
0
25
1
82. 16:50초 설명에 대한 오해 및 adc mode비교 자료
0
36
2
00. stm32cubeIDE를 회사에서도 사용하나요 ?
0
29
1
상전류 읽는 타이밍 관련 문의
0
42
2
uart, tera term 실습이 잘 안됩니다.
0
49
3
80. 인터럽스와 일반함수 차이
0
35
1
79. int main(void)선언 없이 어떻게 동작하나요 ?
0
35
1
79. int main(void)선언 없이 어떻게 동작하나요 ?
0
23
1
74. 포인터 크기는얼마인가요 ?
0
34
1
73. 왜 hex를 사용하나요 ?
0
41
2
71. 40초쯤에 소리가 안납니다.
0
27
1
70. 강의에 사용되는 보드는 어떤것인가요 ?
0
43
2
00. 인버터 회로만 보고 소비전력을 예측 가능하나요 ?
0
46
1
58강, 유니폴라, 바이폴라 방식중 바이폴라가 대세라고 보면 되나요 ?
0
47
2
57강. 모터인데 왜 전압제어를 하나요 ?
0
47
2
57강. PWM은 sine을 만들어 내는 걸로 이해 하면 되나요 ?
0
43
2
49강. 제어이론의 구체적 다이어그램 설명 요청드립니다.
0
39
2
55강. dead time을 고려하면, 원래의 original신호와는 달라지지 않나요 ?
0
33
2
스위칭 주파수 설정
0
44
2
P6KE47CA 이 부품에 대해서 궁금합니다.
0
53
2
교육용 보드 쓰로틀 질문입니다.
0
75
3

