-
조향과 구동 조종을 위한 판넬을 만드는 법application 2025. 9. 18. 12:37
시작하기 전에
can2ado - CAN to Analog/ Digital Output :: hsl's tsmaster 사용기에서 무선조종자동차(무조차)의 무선 통신을 CAN 통신으로 대체하여 조향과 구동을 제어하는 데모 개발 과정을 설명하였다.
조향과 구동 제어를 위한 CAN 신호를 TSMaster의 Transmit 기능을 이용하여 만들었다. Transmit 기능은 CAN 메시지/ 신호를 만들 때 여러 모로 편리하다. 전용 GUI 만큼 편리할 수는 없다.
TSMaster의 Panel 기능을 이용하여 전용 GUI를 만들어 본다. DIFA (Daegu International Future Auto & Mobility Expo 대구 국제 미래 모빌리티 엑스포 포럼 2025 대한민국 미래모빌리티엑스포 컨퍼런스)에서 데모를 할 때, GUI가 있으면 더 좋을 것이다.
개요
- 판넬 구상
- 판넬 개발 - GUI 위젯과 CAN 신호 연결
- 동작 확인
판넬 구상
- 조향을 위한 아래 위젯들을 만든다.
- 스크롤바: Steer 스크롤바를 수평으로 배치한다. 스크롤바의 박스를 좌우로 움직이면 무조차의 앞바퀴들이 좌우로 조향되도록 한다.
- 라디오 버튼: Steer Left, Steer Center, Steer Right 라디오 버튼들을 배치한다. 버튼을 클릭하면 앞바퀴가 왼쪽, 가운데, 오른쪽으로 조향되도록 한다.
- 구동을 위한 아래 위젯들을 만든다.
- 스크롤바: Drive 스크롤바를 수직으로 배치한다. 스크롤바의 박스를 위아래로 움직이면 무조차의 바퀴들이 전후로 회전하도록 한다.
- 라디오 버튼: Drive Forward, Stop, Drive Backward 라디오 버튼들을 배치한다. 버튼을 클릭하면 바퀴들이 전진 방향, 정지, 후진 방향으로 회전하도록 한다.
판넬 개발
- 메인 메뉴/ Simulation/ Panel을 클릭하여 판넬 창을 새로 만들거나 기존 판넬 창을 연다.
Panel 버튼은 메인 메뉴/ Simulation에 있다. - 빈 판넬 창이 열린 경우, 아래 그림과 같다. Properties 탭에서 Title을 변경하면 창의 제목이 변경된다. Color, Hight, Width는 판넬이 실행될 때 화면에 표시되는 색, 높이 폭이다. Layout은 기본으로 Fit이 선택되어 있다. 창의 크기를 늘리고 줄임에 따라 판넬의 크기가 커지고 줄어든다. 나는 창의 크기와 무관하게 판넬 크기가 유지되도록 Normal을 선택하였다.
- Toolbox 탭에서 위젯을 더블클릭하면 캔버스에 추가된다. 파워포인트에서 도형으로 그림을 그릴 때 처럼, 위젯을 드래그&드롭하여 위치를 변경할 수 있다. 크기를 변경할 수도 있다.
스크롤바를 더블클릭하여 캔버스에 추가하였다. - 필요한 위젯들 캔버스에 추가하고 배치한다. 위젯들을 하나씩 아래 방법으로 설정한다. (위젯 하나를 추가하고 배치하고 설정한 후에 다음 위젯을 추가하기도 한다. 그때그때 다르다.)
- 위에서 추가한 스크롤바를 조향을 위해 사용한다. Properties 탭에서 아래와 같이 설정한다.
- ControlName: (위젯은 콘트롤이라고도 부른다.) 위젯을 식별하기 위한 이름이다. 디폴트 이름을 안 바꿔도 문제없다. 나는 내가 구분하기 쉽도록 이름을 바꿨다.
- Label Text: 스크롤바 왼편에 표시된 "Steer"라는 라벨의 텍스트이다.
- Max, Min: 스크롤바의 왼쪽 끝과 오른쪽 끝 (방향에 따라서 위쪽 끝과 아래쪽 끝)에 해당하는 연결된 신호의 값이다. 조향각을 연결할 것이라 90(도), -90(도)을 입력했다.
- RotationAngle: 스크롤바의 각도가 0일 때 수평이다. 그림의 Drive 스크롤바는 -90으로 설정한 상태이다.
- SmallChange: 스크롤바 양끝에 <, > 기호가 있다. 이 부분을 1회 클릭할 때 연결된 신호값이 얼마 단위로 변경될 것인지 설정한다. 1(도)씩 변경하도록 하기위해 1을 입력했다.
- VarType: 아래 그림과 같이 위젯에 연결할 수 있는 변수 타입들은 다양하다. CAN 신호를 연결할 것이라 pstCANSignal을 선택한다.
- VarLink: 오른쪽 끝에 "..." (삼점) 버튼을 클릭하면 CAN 데이터베이스 화면이 뜬다. 위젯에 연결한 CAN 신호를 선택한다.
tsm 제어기가 전송하는 PReq 메시지 안에 있는 steering_angle_req 신호를 선택하는 예이다. - CAN 신호를 선택하면 아래 그림의 알림창이 뜬다. 위젯으로 신호의 값을 (단순히 표시하는 것이 아니라) 변경을 하게된다. 신호 값을 변경하려면 RBS (Rest/Remaining Bus Simulation) 기능이 활성화 되어야 한다. 활성화 시킬지를 묻는다. '예(Y)'를 선택한다.
- 라디오 버튼의 설정도 스크롤바의 설정과 비슷하다. 라디오 버튼의 특성상 추가할 설정이 있다.
라디오 버튼은 예전 라디오에서 주파수 선택 버튼에서 왔다고 한다. 한 번에 한 주파수 밖에서 선택할 수없다.그래서 여러 버튼들 중에 어느 한 버튼을 on 하면 그룹에 속한 다른 버튼들은 off 된다. - GroupName: 라디오 버튼은 그룹 설정을 해야한다. Steer Left, Steer Center, Steer Right 라디오 버튼들은 Steer 그룹에 속한다. Drive Forward, Stop, Drive Backward 라디오 버튼들은 Drive 그룹에 속한다. 라디오 버튼의 GroupName을 그룹별로 동일하게 설정해야 한 버튼이 on 되었을 때, 다른 버튼들이 off된다.
- SwitchValue: 버튼을 선택하는 경우, 연결된 CAN 신호에 설정할 값을 입력한다. Steer Left = -90, Steer Center = 0, Steer Right = 90
- 위 방식으로 나머지 위젯들도 설정한다.
동작 확인
- 메인 메뉴/ Analysis에서 Start를 클릭하면, 판넬이 실행 모드로 변경된다.
Start 버튼은 메인 메뉴/ Analysis에 있다. 실행 모드의 판넬. 설정 영역이 없다. 캔버스의 그리드 포인트들도 표시되지 않는다. - RBS 창의 Auto start RBS가 On으로 설정되어 있는 경우, RBS가 자동으로 시작된다. 동그라미 안에 우측 화살표를 클릭하여 수동으로 실행할 수 있다.
- RBS는 메시지 단위로 on/off를 할 수 있다. 메시지를 시뮬레이션을 on 하려면, 메시지가 속한 제어기(노드)의 시뮬레이션을 on 해야한다. PReq 메시지의 경우, tsm 제어기이다. tsm 제어기는 can2ad_claude_4 네트워크(dbc 파일)에 속해있다. 이 네트워크를 on 해야 한다. 그리고 이 네트워크가 속해있는 CAN 채널, Channel 1,을 on 해야 한다. 이상의 설정을 하면 아래 그림과 같이 된다.
RBS 설정 창은 메인 메뉴/ Simulation/ CAN RBS Simulation 버튼을 클릭하여 열 수 있다. - 판넬을 이용하여 무조차를 조종하는 모습은 아래 비디오와 같다. PC 화면에 커서가 판넬의 위젯들을 클릭하는 것에 따라 조향과 구동 제어가 되는 것을 볼 수 있다. 클릭에 따라 해당 위젯에 있는 CAN 신호가 변경되고, 변경된 신호가 포함된 메시지가 RBS로 전송되기에 그렇게 된다.
결론
- 판넬을 이용하여 CAN 신호를 변경하는 방법을 설명하였다.
- RBS를 이용하여 CAN 메시지를 전송하는 방법을 설명하였다.
- 두 기능을 이용하여, 무조차의 조향과 구동을 조종하는 방법을 설명하였다.
- 목차 :: hsl's tsmaster 사용기
- 판넬로 출력하는 방법 - 관계도 :: hsl's tsmaster 사용기
- 판넬로 사용자 입력 받는 법 :: hsl's tsmaster 사용기
'application' 카테고리의 다른 글
TIO 측정 데이터 분석 - 디지털 입출력 (0) 2025.09.02 TIO 측정 데이터 분석 - mat 파일을 데이터프레임으로 변환하기 (mdf2df) (1) 2025.09.01 UDS 기반 제어기 프로그래머 개발 - libTSCAN (5) 2025.08.11 ts_can_flash_programmer 개발 - libTSCAN (3) 2025.07.26 claude.ai와 코드, 문서 분석 및 코드 작성 (3) 2025.07.26