Skip to content

[로보메이션] 하드웨어Lite 햄스터S 추가 및 햄스터 연결 안정화 - #3094

Closed
RoboidStudioLAB wants to merge 3 commits into
entrylabs:develop-hwfrom
RoboidStudioLAB:feature/hamster-s-entry
Closed

[로보메이션] 하드웨어Lite 햄스터S 추가 및 햄스터 연결 안정화#3094
RoboidStudioLAB wants to merge 3 commits into
entrylabs:develop-hwfrom
RoboidStudioLAB:feature/hamster-s-entry

Conversation

@RoboidStudioLAB

@RoboidStudioLAB RoboidStudioLAB commented Aug 27, 2026

Copy link
Copy Markdown

어떤 하드웨어 인가요?

햄스터S / (주)로보메이션. 브라우저 연결(하드웨어Lite), Web Serial + 전용 동글

변경 사항

  • 브라우저 연결 하드웨어 목록에 햄스터S(020E01) 항목 추가. 설치형 엔트리와 entry-hw는 이미 두 항목으로 나뉘어 있어 구조를 맞췄습니다.
  • 대기 블록이 취소될 때 완료 신호를 전달하도록 수정. 햄스터S와 무관하게 현재 출고본에서도 재현됩니다(블록 두 개가 동시에 로봇을 움직일 때).
  • 연결 안정화 3건: 이름에 의존하지 않는 정체 파싱 / 핸드셰이크 타임아웃과 실패 시 포트 정리 / 연결 유지 중 로봇 교체 감지.

파일 3개(block_hamster_lite.js, metadata_hamster_s_lite.json, hamsterslite.png)만 바뀌고 공용 파일은 건드리지 않았습니다.

참고사항

기준(develop-hw) 대비 무엇이 달라지는지 함께 적었습니다.

  • 인스턴스 둘을 한 파일에서 내보냅니다. 하드웨어 목록이 모듈 번호로 키를 잡으므로 항목을 둘로 보이게 하려면 인스턴스가 둘이어야 합니다(핑퐁 모듈과 같은 방식). 블록 정의는 한 벌을 공유하고, 블록 함수 32곳이 호출 시점에 연결된 인스턴스를 찾습니다.
  • 기존 "햄스터" 항목은 두 기종을 계속 받습니다. 저장된 작품에 기종 정보가 없어 대칭으로 분리하면 그 항목으로 햄스터S를 쓰던 작품이 전부 연결 불가가 됩니다. 같은 이유로, 번호가 둘 저장된 작품에서는 내보내는 배열 순서로 기존 항목이 이기게 했습니다.
  • 핸드셰이크: 기준은 while (true)로 무한 대기했습니다. 5초 후 실패하고 포트를 정리합니다.
  • 로봇 교체: 기준은 재식별이 없어 새 로봇이 이전 모터값을 무한히 유지했습니다. 같은 정체를 2회 확인한 뒤 전환하므로 약 0.75초 이어받은 뒤 정지합니다. 첫 확인에서 곧바로 0을 쓰는 방식은 쓸 수 없습니다. 시간형 이동 블록은 모터값을 한 번만 설정하므로 노이즈 한 줄에 주행이 영구히 멈춥니다.
  • 거부와 교체 감지는 햄스터 계열(모델 04/0E) 안에서만 동작합니다. 다른 계열은 정체가 파싱되지 않아 대상이 되지 않습니다. 기존 동작과 같습니다.
  • 센서 모니터 좌표는 항목별로 줍니다. 햄스터S 사진은 구형과 좌우가 반대여서, 설치형이 같은 사진에 쓰는 값을 그대로 가져왔습니다(hardware/block_hamster_s.js).
  • 거부될 때 안내 토스트가 두 개 겹칩니다(모듈 사유 + 코어 일반 실패). 그리고 연결된 상태에서 다른 항목을 고를 때의 포트 미정리 실패가 기종 거부와 문구가 같아 원인을 구별할 수 없습니다.
  • 같은 정지 결함이 설치형 block_robomation.js에도 있습니다. 함께 고칠지는 제품 판단이 필요해 이번 범위에 넣지 않았습니다.

- 정체 파싱을 이름 대신 필드 위치 기준으로 바꾼다. 주소는 16진수 12자리만 받는다.
- 핸드셰이크에 5초 타임아웃을 두고, 실패하면 모듈이 직접 포트를 정리한다.
- 연결 유지 중 동글의 페어링 로봇이 바뀌면 같은 정체를 두 번 확인한 뒤 전환한다.
- 연결 시 모듈 번호를 '0204' + 변형바이트로 덮어쓰던 대입을 제거한다. 변형 바이트는
  로봇마다 달라(실측 05, 00, 01) 등록되지 않은 번호가 만들어지고, 햄스터S도 0204가
  되어 기종 구분이 안 된다.
- 검증 실패 프레임이 연속되면 정체를 다시 요청한다.
설치형 엔트리와 entry-hw는 이미 두 항목으로 나뉘어 있어 그 구조를 맞춘다.

- 한 파일에서 인스턴스 둘을 내보낸다(020401 햄스터, 020E01 햄스터S). 블록 정의는
  한 벌을 공유하고, 블록 함수 32곳이 호출 시점에 인스턴스를 찾는다.
- 햄스터S 항목은 다른 기종을 거부한다. 문구는 로케일 넷(ko, en, jp, vn).
- 기존 햄스터 항목은 두 기종을 계속 받는다. 저장된 작품에 기종 정보가 없다.
- 센서 모니터 좌표는 항목별로 준다. 햄스터S 사진은 구형과 좌우가 반대다.
타이머를 지울 때 완료 콜백을 함께 버려서, 대기 블록이 완료 표시를 기다리며 영원히
폴링했다. 햄스터S와 무관하게 현재 출고본에서도 재현된다.

대기 계열 5개(이동, 음표, 출력, 라인트레이서, 보드)를 모두 덮는다. 벤더 모듈에서
스레드를 중단시킬 수단이 없어, 취소된 대기 블록은 완료로 처리해 다음 블록으로 넘긴다.
@RoboidStudioLAB
RoboidStudioLAB force-pushed the feature/hamster-s-entry branch 2 times, most recently from c42861d to 0b9dae7 Compare August 27, 2026 09:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants