LEGO-EV3-이미지 스캐너
LEGO Mindstorms EV3 Education 세트와 추가 바퀴를 사용하여 제작된 이미지 스캐너입니다. Mindstorms EV3 소프트웨어의 소스와 빌드 지침이 포함되어 있습니다. 8.5인치 너비의 용지를 스캔하지만 유사한 페이지 크기에 맞게 조정할 수 있습니다.
입력
- 브릭 버튼 – 구성 메뉴 제어
- 초음파 – 종이 삽입 시기 감지
- 터치 센서 – 충돌로 인한 컬러 센서 위치 재설정
- 광 센서 – 픽셀을 스캔하여 이미지 생성
산출
- 44 x 32 픽셀 8비트 회색조 이미지
- 그레이스케일 8비트 비트맵 데이터 값을 나타내는 CSV 파일
- 화면의 디더링된 이미지
부분품
이 빌드에는 LEGO MINDSTORMS EV3 세트의 부품과 추가 큰 바퀴가 필요하며, 이는 동일한 세트나 자동차 세트 중 다른 세트에서 얻을 수 있습니다.
빌드 및 센서 세부정보
- 이 로봇은 두 가지 힘 기어 구성을 구현합니다. 하나는 모노레일을 통해 수평 축의 광 센서를 이동시키는 것이고, 두 번째는 스캔할 이미지가 포함된 용지에 스풀링 메커니즘을 제공하는 것입니다.
- 스풀링 메커니즘과 모노레일 모두 대형 모터를 사용합니다.
- 균형추는 모노레일 표면에 가해지는 수직 힘에 맞춰 모노레일 바퀴를 정렬하는 데 사용됩니다.
- 스풀 근처에는 용지 삽입 시기를 감지할 수 있는 적외선 센서가 있습니다.
- 스캐너의 각 모서리에는 2개의 터치 센서가 배치되어 있습니다. 모노레일이 모퉁이에 도달했을 때 이를 감지하는 데 사용됩니다. 현재는 오른쪽 센서만 사용 중입니다.
소프트웨어 노트
프로그램은 UI, 스캔, 이미지 인쇄, 이미지 저장의 4단계로 구성됩니다. UI는 MVC 패러다임을 순차 브릭 프로그래밍에 적용하여 구축되었습니다. n개의 구성 화면이 가능하며 화면당 하나의 값을 구성할 수 있습니다. 프로그램에서 나중에 사용되는 변수는 각각의 설정에 해당합니다.
구성 화면
- uiPrintScreen : bool – true인 경우 디더링된 1비트 이미지가 RAM의 회색조 이미지와 비슷하게 EV3 화면에 인쇄됩니다.
- uiSaveState : bool – true인 경우 RAM의 데이터에서 CSV 파일이 생성됩니다. 이 파일은 비트맵 파일과 유사하며 A-VEKT Image CSV Converter와 같은 외부 프로그램을 사용하여 비트맵으로 변환할 수 있습니다.
- XStartPos : 숫자 – X축의 시작 위치를 인치 단위로 나타냅니다.
- YStartPos : 숫자 – Y축의 시작 위치를 인치 단위로 나타냅니다.
- width : 숫자 – 이미지의 너비를 인치 단위로 나타냅니다.
- height : 숫자 – 이미지의 높이를 인치 단위로 나타냅니다.
스캐닝 단계
- 스캔하기 전에 사용자에게 스캔할 용지를 삽입하라는 메시지가 표시되고 광 센서의 위치가 초기 위치로 재설정됩니다.
- 스캐닝은 모노레일을 가로질러 이미지 센서를 이동하고 스풀을 가로질러 용지를 이동하여 독립적으로 스캔된 도트 매트릭스를 만드는 것으로 구성됩니다.
- 스캔할 때 한 줄은 오른쪽에서 왼쪽으로 스캔되고 다음 줄은 왼쪽에서 오른쪽으로 스캔됩니다. 이렇게 하면 스캔 시간이 단축됩니다.
- 스캔이 완료되면 남은 용지는 스캐너 뒷면에 감겨져 있습니다.
인쇄 단계
- 이 단계는 선택 사항이며 기본적으로 활성화됩니다. 화면에 이미지를 인쇄하는 것으로 구성됩니다.
- 스캔한 이미지에는 회색조 데이터가 포함되어 있지만 EV3의 화면은 1비트 흑백입니다. 이를 보정하기 위해 스캔된 각 픽셀은 Ordered(Bayer) 디더링을 사용하여 4 x 4 픽셀 패턴으로 변환된 다음 화면에 인쇄됩니다.
저장 단계
- 이 단계는 선택 사항입니다.
- EV3의 파일 블록은 인쇄 가능한 문자만 저장하도록 제한되어 있으므로 비트맵 이미지를 프로그래밍 방식으로 생성할 수 없습니다. 대신 CSV 파일이 사용됩니다.
- 8비트 알파 채널 설정의 "A-VEKT 이미지 CSV 변환기"를 사용하여 CSV를 비트맵으로 변환할 수 있습니다.
- CSV를 생성할 때 역방향으로 스캔된 줄은 두 번째 배열로 재정렬됩니다.
개량
- 모노레일 대신 2개의 레일 X축을 생성하는 데 사용할 수 있는 두 번째 세트를 사용하면 스캐너 정밀도가 향상될 수 있습니다.
- 케이블에 의해 가해지는 힘으로 인해 모노레일은 때때로 불안정하여 일부 픽셀을 캡처할 때 초점이 가변적으로 발생합니다.
- 소프트웨어는 개선될 수 있습니다. 작업을 중단했을 때의 모습 그대로 공개합니다.
- 저는 LEGO가 Linux 운영 체제용 LEGO MINDSTORMS EV3 버전을 출시하거나 Mindstorms EV3 세트를 구매해야 할 또 다른 설득력 있는 이유를 찾을 때까지 이 프로젝트를 계속 개발할 계획이 없습니다.
라이센스 및 저작권
- 소스 파일은 GNU General Public License 2.0에 따라 공유됩니다.
- 지침 사진과 추가 콘텐츠는 Creative Commons License Attribution 4.0 International에 따라 공유됩니다.
- 저작권은 아레시보 푸에르토리코 대학교와 본인이 공유합니다.
면책조항
- 나는 아레시보에 있는 푸에르토리코 대학의 로봇 공학 입문 수업의 일환으로 이것을 재미로 개발했습니다.
- 이 스캐너는 "비공식 LEGO MINDSTORMS NXT 2.0 발명가 가이드"의 프린터를 대략적으로 기반으로 합니다.
- LEGO, MINDSTORMS, MINDSTORMS EV3, MINDSTORMS NXT는 LEGO 그룹의 상표 및/또는 저작권입니다. 이들의 사용은 이들과의 제휴나 보증을 의미하지 않습니다.