두 대의 카메라를 갖춘 3D 스캐너. DIY D 스캐너

다시 한 번 매장에서는 검토를 위해 무언가를 가져오겠다고 제안했습니다. 저는 오랫동안 장식용 3D 프린팅에 필요한 이 물건을 사용하는 것에 관심이 있었기 때문에 스캐너를 선택했습니다.

따라서 스캐너 자체는 스페인 회사 BQ에 의해 개발되었으며 현재 지원을 중단했습니다 (중국 위조로 인해 의심 스럽지만 이제이 스캐너는 미국 CowTech에서도 판매됩니다. 스캐너 부품의 3D 프린팅 소스는 다음과 같습니다. (소프트웨어 및 전자 제품에 대한 링크가 있음)에서 무료로 사용할 수 있습니다.

키트에는 다음과 같은 "느슨한" 항목이 있습니다.

조립은 간단하지만 몇 가지 사항이 있습니다.
1. 모든 너트를 조이기 위해 서두를 필요가 없습니다. 또한 기하학적 치수, 즉 사이트 중앙의 레이저 수렴, 턴테이블까지의 거리를 조정해야 합니다.
2. 내 스탠드에서는 카메라가 1밀리미터 단위로 약간 "흔들렸지만" 이는 사진을 왜곡시키기에 충분했습니다. 폼 소재를 추가하여 제거했습니다.
4. 턴테이블은 투명했고 코팅이 되어 있지 않았습니다. (원본과 동일) - 플라스티딥으로 칠했습니다.
5. 교정 체커보드 패턴을 확인합니다. 내 세트의 사진을 어떻게 인쇄했는지는 모르겠지만 사각형의 비율이 잘못되었습니다. 인터넷에서 가져와서 직접 재인쇄했습니다.
6. 카메라 초점이 플랫폼까지의 거리에 맞춰 조정되지 않습니다. 커버를 떼어내고 초점을 제자리에 맞췄습니다.











보시다시피, 스캐너의 "두뇌"는 ZUM 스캔 쉴드 및 A4988 스테퍼 모터 드라이버와 결합된 일반 Arduino Uno입니다. 농장은 BQ의 기본 Horus 소프트웨어로 관리됩니다.

조립 후 스캐너는 기본 Horus 소프트웨어에서 보정 절차를 거쳤습니다.

이때까지 저는 스캐닝 품질이 조명 품질(안정성, 확산도, 색온도)에 따라 크게 좌우된다는 것을 이미 알고 있었기 때문에 최소한 비슷한 조건을 제공하기 위해 작은 라이트박스를 미리 준비했습니다. 시험용.

오디션 "후보"를 선택하고 준비했습니다.

개체에 대한 요구 사항은 다음과 같습니다.
1. 물체의 크기는 5x5cm보다 크고 20x20cm보다 작아야 합니다.
2. 물체는 불투명하고 움직이지 않아야 합니다.
3. 물건의 무게는 3kg을 넘지 않아야 합니다.

스캔하기 어려움:
1. 빛나고 빛나는 물체
2. 물체가 너무 어둡다
3. 표면이 흐릿한 물체(동물 인형 등)

스캔 결과는 PLY 형식의 점 구름입니다(이를 표면으로 변환해야 함). 여기서 STL 파일을 준비합니다.

스캔본을 읽은 후 간단한 원통형 물체로 시도해 보기로 결정했습니다.
여러 번 시도한 끝에 나는 공통적인 문제가 있다는 것을 확신하게 되었습니다. 오른쪽과 왼쪽 레이저의 포인트 클라우드가 일치하지 않고 비율에 문제가 있다는 것입니다.



웹캠 설정을 보정하는 것 외에는 이 문제에 대해 유용한 것을 찾을 수 없습니다(보정 마법사가 실행 중일 때 보정되지 않음)(BQ 지원팀의 Jesus라는 사람이 오랫동안 질문에 답변하지 않았습니다). 이렇게 하려면 교정 테이블의 다양한 위치에서 여러 장의 사진을 찍어야 합니다. 그랬어요. 상황은 개선되었지만 완전히는 아닙니다.
구름이 일치하는지 확인하기 위해 교정 파일(Horus-a 폴더의 calibration.json)을 수동으로 편집하고 시행착오를 거쳐 원통형 개체를 스캔해야 했습니다.
그리고 모든 것이 괜찮은 것 같습니다.



하지만 아니요. 복잡한 개체에서는 구름 조각이 여전히 일치하지 않고 많은 "맹인" 영역이 형성됩니다.





또한 적어도 표준 레이저로는 밝은 빨간색 물체를 스캔하는 것이 불가능하다는 것이 분명합니다.

물론 별도의 레이저를 사용하여 스캐닝하는 실험을 계속하고 이 모든 것을 타사 소프트웨어에서 결합한 다음 STL에 실행 가능한 형식으로 가져오려고 시도할 수 있습니다.

이 모든 것은 나에게 병에 담긴 배에 관한 농담 하나를 생각나게 합니다.

병으로 보트를 만드는 방법은 무엇입니까?
-병에 모래, 규산풀, 스틱을 넣고 흔들어 줍니다.
그것은 모든 종류의 똥, 때로는 보트로 밝혀졌습니다.


일반적으로 나는 이런 종류의 창의성을 고수하지 않는다는 것을 깨달았고 스캐너의 힘 안에 있는 물체를 처음부터 모델링하는 것이 더 쉽다는 의구심을 가지고 있습니다.

그리고 복잡한 것-스캐너는 일반 모드에서 복잡한 것을 처리할 수 없으며 두 개의 레이저로는 충분하지 않습니다. 이 문제를 해결하려면 다른 위치에서 스캔한 다음 다시 클라우드를 결합하는 데 어려움을 겪어야 합니다. 고맙지 만 사양 할게.

결과적으로 이 장치는 레이저 스캐닝의 기본을 연구하는 데에만 적합하며 그 이상은 전혀 쓸모가 없습니다. 아니요, 물론 원래 모델과 개요가 비슷한 것을 얻을 수 있지만 그게 전부입니다(클라우드 처리가 적용된 모든 탬버린을 고려한 것입니다). 스페인 사람들이 이 문제를 포기한 것은 아무것도 아닙니다.
가게는 안전하게 플레이했습니다. 설명에는 결과가 행성의 위치와 3층에 있는 소냐 이모의 기분에 따라 다르다고 솔직하게 명시되어 있습니다. 오픈 소스와 그 모든 것, 함께 춤추자. 고맙지 만 사양 할게.

결론은 가져가는 것이 아니라 극한의 사냥을 원한다면 농담 속 친구가 보트를 만드는 것과 같은 것으로 직접 조립하십시오.

해당 매장으로부터 리뷰 작성을 위해 제품을 제공받았습니다. 리뷰는 사이트 규칙 18항에 따라 게시되었습니다.

+9를 살 예정이에요 즐겨 찾기에 추가 리뷰가 마음에 들었습니다 +101 +156

FabScan은 오픈 소스 DIY 레이저 3D 스캐너입니다. 나는 MDF 시트와 다양한 사용 가능한 재료로 광산을 조립했으며 예를 들어 생성 과정을 설명하기로 결정했습니다.

1단계: 필요한 것




공식 FabScan 스캐너의 경우 다음이 필요합니다.

  • 아두이노 우노
  • 스테퍼 모터 A4988
  • Arduino용 FabScan-Shield 3D 레이저 스캐너 모듈
  • 5mW 적색 레이저 모듈
  • 전원 공급 장치 12V - 1A
  • 로지텍 C270 웹캠

상자를 만들려면 600*300*5mm 크기의 MDF 4장이 필요합니다.

내 프로젝트에서는 다음을 사용했습니다.

  • 아두이노 우노
  • 바이폴라 스테퍼 ​​모터 - NEMA 17(200단계)
  • 스테퍼 모터 A4988
  • 5mW 적색 레이저 모듈
  • 전원 공급 장치 12V - 2A
  • 로지텍 C270 웹캠

우리는 FabScan 소프트웨어를 사용할 것이기 때문에 해당 부품 목록을 참고하는 것이 좋습니다. 인터넷에서 FabScan 참조 3D 스캐너에 대한 모든 문서를 쉽게 찾을 수 있습니다.

2단계: 3D 스캐너용 갤러리 상자 조립




이미지 4개 더 표시





나는 Dremel과 상상력을 사용하여 스캐너 상자를 조립했습니다. 올바른 3D 이미지를 얻으려면 카메라, 레이저 및 스테퍼 모터가 올바른 위치에 있어야 하기 때문에 이는 그리 간단하지 않습니다. 귀찮게하고 싶지 않으면 기성품을 구입할 수 있지만 저렴하지는 않습니다.

3단계: 모듈 연결


하드웨어 조립은 매우 간단합니다.
FabScan 모듈을 Arduino에 연결하고 A4988 모터를 첫 번째 단계 위치로 설정합니다. 모터를 출력 핀에 연결하고 레이저 모듈을 아날로그 핀 A4에 연결합니다. 마지막으로 전원공급장치와 USB 케이블을 연결합니다.

내 부품 목록에 따라 스캐너를 조립하기로 결정한 경우:
그런 다음 A4988 모터를 Arduino의 핀 10, 11, 9, 8에 연결하고(원하는 경우 핀을 변경할 수 있음) 레이저 모듈을 핀 A4에 연결해야 합니다. 마지막에는 전원 공급 장치와 USB 케이블도 연결합니다.

4단계: Arduino용 코드

FabScan의 공식 코드를 사용하겠습니다. Arduino에 업로드하면 완료됩니다.

Codebender 플러그인이 설치되어 있는 경우 이 링크를 따라 Arduino에 코드를 업로드할 수 있습니다.

내 부품 목록에 따라 스캐너를 조립하는 경우 편집 버튼을 클릭하고 다음을 수행하십시오.

  • #include 줄 추가 const int stepsPerRevolution = 200;//엔진의 단계 수로 변경 Stepper myStepper(stepsPerRevolution, 10, 11,8,9);
  • step() 함수를 다음으로 바꿉니다. void step() ( myStepper.setSpeed(1); myStepper.step(1); )

5단계: 컴퓨터 소프트웨어






"FabScan Ubuntu Live DVD" 이미지를 사용하겠습니다. 다운로드할 수 있습니다. 이 이미지에는 FabScan 소프트웨어가 이미 사전 설치되어 있습니다. 이미지는 플래시 드라이브에 기록할 수 있으며, 이를 수행하는 방법은 인터넷에서 찾을 수 있습니다.

중요 사항: "Ubuntu 사용해 보기" 옵션을 선택한 경우 컴퓨터를 끄기 전에 파일을 저장하세요!

첨부된 사진을 보고 다음 단계를 따르세요.

  • SerialPort에서 포트를 선택하십시오.
  • 카메라에서 카메라를 선택하세요
  • 파일 - 제어판
  • 레이저 감지를 클릭하고(이 단계에서는 스캐너에 아무것도 넣지 마십시오) '활성화'를 선택하십시오.
  • "프레임 가져오기"를 클릭하고 파란색 수평선이 턴테이블 상단에 닿고 노란색 수평선이 하단에 닿는지 확인하세요. 노란색 수직선이 턴테이블 중앙을 통과해야 합니다. 느슨한 카메라는 왜곡된 스캔을 유발할 수 있습니다!

설정 후 제어판 창을 닫고 스캐너에 개체를 넣은 다음 스캔 시작 버튼을 클릭하십시오.

3D 이미지 저장:
스캔 프로세스가 완료되면 3D 개체를 .pcd 또는 .ply 형식의 파일에 저장할 수 있습니다. stl 형식으로 저장할 수도 있지만 모든 플랫폼에서 지원되는 것은 아닙니다. 파일 - OpenPointCloud를 선택하여 이전에 스캔한 항목을 열 수도 있습니다.

3D 파일로 무엇을 해야 하나요?
MeshLab에서 열어서 3D 프린터로 인쇄할 수 있습니다.
MeshLab에서 개체를 인쇄하려면:

  • 개체를 .ply 형식으로 저장
  • MeshLab에서 파일 열기
  • MeshLab에서 법선 계산(필터/점 집합/점 집합에 대한 법선 계산)
  • 포아송 재구성을 사용하여 표면 재구성(필터/점 세트/표면 재구성: 포아송)
  • 준비가 된

FabScan은 오픈 소스 DIY 3D 레이저 스캐너입니다.

이 프로젝트는 Francis Engelmann의 학사 프로젝트 개발 중에 시작되었습니다. 공식 프로젝트 페이지가 있습니다.

이 프로젝트를 기반으로 아날로그가 개발되었으며 이에 대해 기사에서 설명합니다. MDF는 복싱에 사용됩니다. 전자 충전재도 다소 다릅니다.

Arduino 프로그램은 원래 프로젝트에서 가져왔습니다. 뛰어난 오픈 소스 3D 스캐너를 제공한 FabScan 팀에게 감사드립니다!

그럼 시작해 보겠습니다.

필수 구성요소

원래 FabScan 프로젝트의 부품 및 구성 요소:

  • A4988 스테퍼 모터 드라이버;
  • 쉴드 FabScan;
  • NEMA 17 바이폴라 스테퍼 ​​모터(200단계);
  • 전원 공급 장치 12V - 1A;
  • 로지텍 C270 웹캠.

본체에는 MDF 4장이 필요합니다. 크기 - 600mm x 300mm. 두께 - 5mm. 더 자세한 정보.

이 설명서에 사용된 부품 및 어셈블리:

  • (200단계);
  • 스테퍼 모터 드라이버 L298N;
  • 5mW 레이저 모듈 - 제조업체 레드 라인;
  • 전원 공급 장치 12V - 2A;
  • 로지텍 C270 웹캠.

즉, FabScan 실드를 사용하지 않고 다른 스테퍼 모터 드라이버 모듈을 사용합니다.

3D 스캐너용 하우징 개발

당사의 3D스캐너 본체를 개발한 과정과 결과를 사진으로 보여드리겠습니다. 가장 큰 어려움은 카메라, 레이저 모듈 및 스테퍼 모터를 가장 정확하게 설치하는 것입니다. 삶을 더 편하게 만들고 싶다면 이 부품을 35유로에 주문할 수 있습니다.

3D 스캐너 조립







1. 방패로.

Arduino에 FabScan 쉴드를 설치합니다. A4988 스테퍼 모터 드라이버는 제공된 레일에 설치됩니다. 스테퍼 모터는 명판의 해당 접점에 연결됩니다. 레이저 모듈은 아날로그 핀 A4에 연결됩니다. 그런 다음 전원과 USB 케이블을 연결하면 됩니다. 더 자세한 지침이 제공됩니다.

2. 방패 없이.

실드를 사용하지 않고 스캐너를 제작하기로 결정한 경우 L298 스테퍼 모터 드라이버를 Arduino의 핀 10, 11, 9, 8에 연결합니다(원칙적으로 이러한 핀은 스케치에서 적절하게 편집하여 변경할 수 있음). 레이저 모듈은 Arduino의 핀 A4에 연결됩니다. 모두. 전원과 USB 케이블을 연결할 수 있습니다.


Arduino용 스케치

중요 사항! "Try Ubuntu" 옵션을 사용하는 경우, 개인용 컴퓨터를 끄기 전에 파일을 저장했는지 확인하세요!

아래에 사진이 나와 있는 지침을 따르십시오.

  • 직렬 포트를 선택하십시오.
  • 카메라를 선택하세요.
  • 파일 - 제어판;
  • 레이저 감지(지금은 스캐너 앞에 어떤 물체도 놓지 마십시오)를 클릭하고 "활성화"를 선택하십시오.
  • "프레임 가져오기"를 클릭하고 파란색 수평선이 턴테이블 상단에 닿고 노란색 수평선이 턴테이블 하단에 닿는지 확인하세요. 또한, 노란색 수직선은 턴테이블의 중앙과 일치해야 합니다. 카메라가 올바르게 설치되지 않으면 스캔 결과가 명확하지 않습니다!

설정 후 창을 닫고 개체를 3D 스캐너에 놓은 후 스캔 시작 버튼을 클릭하세요.

참고: 이 가이드에는 Configuration.xml 파일 설정에 대한 추가 자료가 제공됩니다.

3D 이미지 저장

3D 스캐닝 프로세스가 완료되면 스캔한 3D 개체를 .pcd 또는 .ply 확장자로 저장할 수 있습니다. 3D stl 파일로 저장할 수도 있지만 일부 플랫폼에서는 이 기능을 사용할 수 없습니다. 파일 - OpenPointCloud를 선택하면 이전에 스캔하고 저장한 개체를 열 수 있습니다.

무엇 향후 계획?

MeshLab을 사용하여 3D 스캔한 개체를 처리하고 3D 프린터로 인쇄할 수 있습니다!

MeshLab에서 파일을 처리하는 경우:

1. 개체를 .ply 파일로 저장했는지 확인하세요.

2. MeshLab을 사용하여 파일을 엽니다.

3. MeshLab에서 법선(필터/점 집합/법선 계산)을 계산합니다.

4. 그 후 포아송 재구성(Filters/Point Set/Surface Reconstruction: Poisson)을 사용하여 표면을 재구성합니다.

최종 조립된 구조는 아래 사진과 같습니다.


작동 중인 원래 FabScan 3-D 스캐너의 비디오:

Arduino의 놀라운 오픈 소스 스캐너를 제공한 FabScan 팀에 많은 감사를 드립니다!!!

의견, 질문을 남기고 공유하세요. 개인적인 경험아래에. 새로운 아이디어와 프로젝트는 종종 토론을 통해 탄생합니다!

Francis Engelmann이 개발한 유명한 FabScan 레이저 스캐너와 유사합니다. 저자는 이러한 스캐너의 상자로 MDF를 사용했으며 채우기도 원본과 약간 다릅니다.

원본 프로그램은 Arduino용이며 원본 프로젝트에서 가져왔습니다.

스캐너 제작을 위한 재료 및 도구:

MDV 600X300mm 4장, 두께 5mm(케이스를 만드는 데 필요함)
- 스테퍼 모터(200단계용 NEMA 17)
- 스테퍼 모터 L298N용 드라이버;
- 5mW 레이저 모듈(제조업체 Red Line에서 사용)
- 장치에 전원을 공급하려면 12V - 2A의 소스가 필요합니다.
- 웹캠 모델 Logiteck C270.






원래 수제 제품은 A4988 스테퍼 모터 드라이버를 사용하고 스테퍼 모터도 NEMA 17입니다. 그렇지 않으면 수제 제품의 요소는 원래 버전과 정확히 동일합니다.

스캐너 제조 공정:

1단계. 몸 만들기
스캐너 하우징을 만드는 전체 과정을 사진에서 볼 수 있습니다. 이 문제에서 가장 중요한 것은 정확성입니다. 레이저 모듈, 스테퍼 모터 및 웹캠은 프로젝트에 따라 올바른 위치에 명확하게 배치되어야 합니다.













2단계. 우리는 전기 장비를 연결합니다


장비를 연결하는 방법에는 실드가 있는 것과 없는 것 두 가지가 있습니다. 각 옵션을 자세히 살펴보겠습니다.

실드 없이 연결
실드를 사용하지 않고 장치를 조립하기로 결정한 경우 L298 스테퍼 모터의 리드는 Arduino 핀 번호 10, 11, 9, 8에 연결됩니다. 원칙적으로 다른 접점을 사용할 수 있지만 스케치가 변경됩니다.
레이저 모듈은 Arduino 컨트롤러의 A4 핀에 연결해야 합니다. 그런 다음 USB 케이블과 전원을 연결하면 됩니다.

쉴드와 연결
Arduino에 FabScan 쉴드를 설치해야 합니다. 스테퍼 모터 드라이버의 경우 이를 위해 제공된 레일에 설치해야 합니다. 스테퍼 모터 접점은 명판의 해당 접점에 연결됩니다.
레이저 모듈은 Arduino의 핀 A4에 연결되어야 합니다. 그게 다입니다. 그 후 전원과 USB 케이블을 연결하십시오.

3단계. 스케치 설치
이제 FabScan의 공식 스케치를 다운로드하여 설치해야 합니다. Arduino를 플래시하려면 Codebender 플러그인을 다운로드한 다음 "Arduino에서 실행" 버튼을 클릭해야 합니다. 이 경우 공식 홈페이지에서 브라우저를 통해 직접 스케치를 설치할 수 있습니다.


쉴드를 사용하지 않은 경우 편집 버튼을 클릭한 후 다음 줄을 추가해야 합니다.

const int stepsPerRevolution = 200; // 스테퍼 모터 샤프트의 회전당 단계 수를 조정하려면 이 매개변수를 변경합니다.

스테퍼 myStepper(stepsPerRevolution, 10, 11,8,9);
step() 함수를 교체합니다.

myStepper.setSpeed(1);

myStepper.step(1);

4단계. 스캐너 소프트웨어
프로그램을 설치하려면 "FabScan Ubuntu Live DVD" 이미지를 다운로드해야 합니다. 설치 후 해당 이미지가 나타납니다. 소프트웨어 FabScan.

프로그램에서 몇 가지 설정을 지정해야 합니다.

먼저 SerialPort를 선택해야 합니다.
- 그런 다음 카메라를 선택합니다.
- 그 파일 이후 - 제어판;
- 그런 다음 레이저 감지를 클릭하고 "활성화"를 선택합니다(레이저 앞에 물체를 놓을 필요가 없습니다).
- 이제 "프레임 가져오기"를 클릭하면 파란색 수평선이 회전 테이블의 하단에 닿아야 합니다. 노란색 선은 테이블 중앙에 있어야 합니다. 카메라가 올바르게 설치되지 않으면 이미지가 품질이 좋지 않음.












그게 전부입니다. 프로그램이 구성되었습니다. 이제 스캐너에 물건을 넣은 다음 스캔 시작 버튼을 누르십시오.

5단계. 이미지 저장
개체 스캔이 완료된 후 이미지를 .pcd 또는 .ply 형식으로 저장할 수 있습니다. stl 형식으로 저장할 수도 있지만 이는 사용하는 플랫폼에 따라 다릅니다.
이전에 저장한 개체를 열려면 파일 - OpenPointCloud를 선택해야 합니다.

) 우리는 그것을 조립해보고 가능하다면 디자인을 개선하기로 결정했습니다. 우리는 그것이 어떻게 될지 상상조차 할 수 없었고, 그것으로 여러 과학 및 공학 전시회에서 우승할 것이라고는 상상조차 할 수 없었습니다. 그러나 순서대로. 결과를 알고 싶으신 분은 고양이에 오신 것을 환영합니다(사진이 많습니다).

첫 번째 프로토타입

먼저 우리는 수집하기로 결정했습니다 레이저 거리 측정기. 아마추어 라디오 포럼의 글을 바탕으로 제작되었습니다. 레이저 포인터와 카메라만 있으면 됩니다. 이미지를 처리하기 위해 Java로 프로그램이 작성되었습니다. 한 번의 측정을 위해 레이저를 사용하거나 사용하지 않고 두 개의 사진을 촬영했습니다. 비교해 본 결과 레이저 포인트를 확실히 찾을 수 있었습니다. 이것이 작동하자 거리 측정기는 두 평면에서 회전할 수 있는 플랫폼에 장착되었습니다. 내가 얻은 것을 보여주기 전에 먼저 경고해야 합니다. 여름 학교에는 자료가 많지 않기 때문에 우리가 가지고 있는 프로토타입을 만들었습니다.

카메라는 즉시 눈에 보이고 레이저는 그 위에 있는 황동 원통입니다. 플랫폼을 회전시키기 위해 우리는 Atmega32 마이크로 컨트롤러의 제어 보드에 연결된 두 개의 스테퍼 모터를 사용했습니다. 레이저가 연결되었습니다. 보드 자체는 USB->UART 어댑터를 통해 컴퓨터에 연결되었습니다. 컴퓨터의 프로그램은 사진을 찍어 처리하고 얻은 지점의 좌표를 파일에 입력하고 제어 보드에 명령을 보냈습니다.

결과는 흥미로웠습니다. 네, 거리를 찾았습니다. 그렇습니다. 스캐너 위 반구의 어느 지점이든 "타겟팅"할 수 있습니다. 그리고 우리의 기쁨은 끝이 없었습니다. 하지만 이 반구에 대한 스캔 시간을 평가해 보니 48시간으로 나타났습니다. 그리고 그것은 카메라에 관한 것이 아닙니다. 그리고 Java에서도 마찬가지입니다. 문제는 설치가 너무 허술해서 한 바퀴 돌 때마다 5초씩 흔들렸다는 점이었습니다. 나는 측정을 하고 뒤돌아서 그것이 흔들리지 않을 때까지 5초를 기다려야 했습니다. 또한 카메라 라이브러리는 각 촬영 전에 카메라를 켰다가 껐습니다. 1~2초 정도 걸렸습니다. 그러나 여름 학교가 끝나가고 있었고 다시 시작할 시간이 없었습니다. 이미 프로젝트 마감일 전날 밤이었습니다. 아니면 오히려 아침. 다음날 우리는 과학 심사위원단 앞에서 우리 프로젝트를 발표했고 예상치 못하게 우승했습니다. 아마도 우리가 이 프로젝트에 대한 작업을 계속하기로 결정한 것은 아마도 이 승리 때문이었을 것입니다.

버전 2

드디어 여름이 지나고 새 학년이 시작되었습니다. 일하고 싶은 욕구가 사라졌습니다. 설치는 한 달 앞으로 다가온 다음 대회까지 완료될 예정이었습니다. 월. 그러다가 갑자기 3일. 그러나 한 달 안에 우리는 설정을 변경하기로 결정했습니다. 단단히 조립하고 레이저 포인터에 렌즈를 설치하면 레이저 라인이 생성됩니다. 이렇게 하면 한 번에 720개 지점을 스캔할 수 있습니다(스캐너에는 HD 카메라가 있음). 단 3일 만에 자체 조정이 이루어졌습니다.

두 번째 스캐너는 플라스틱 자, 접착제, 마스킹 테이프로 조립되며 파란색 전기 테이프로만 고정됩니다. 렌즈 대신 시험관이 있습니다. 이 시험관에는 녹색 레이저가 빛납니다. 반사된 광선은 화면에 다소 균일한 레이저 줄무늬를 생성합니다. 거리계는 하나의 모터에만 부착되어 수평면에서 회전합니다. 제어보드는 STM32VLDiscovery로 교체되었습니다. 나는 STM32를 더 잘 알고 있으며 게다가 Atmega는 소진되었고 프로그래머는 오래 전에 사라졌습니다. 별로 좋아 보이지는 않지만 작동합니다! 진동이 감소하고 그에 따라 속도가 증가했습니다. 하지만 많지는 않습니다. 여기서 매우 흥미로운 점을 발견했습니다. 중국 레이저 포인터는 즉시 켜지지 않았지만 1초에 걸쳐 점차적으로 출력이 증가했습니다. 따라서 두 번째는 진동하고, 두 번째는 레이저를 예열하고, 두 번째는 사진을 찍는 데 두 가지가 있습니다. 그래서 우리는 4초를 얻습니다. 하지만 한 번 측정하면 최대 720개 지점의 거리를 찾을 수 있습니다! 스캔 프로세스는 다음과 같습니다.

결과는 다음과 같습니다.

사진은 별로 흥미롭지 않은데, 프로그램에서 머그잔이 엄청 컸어요. 다양한 각도에서 볼 수 있었습니다.

실제 경쟁은 무엇입니까? 하지만 아무것도 아니야! 우리는 오전 4시에 모든 스캔을 마쳤고 오전 9시에 스탠드에서 레이저가 다 타버린 것을 발견했습니다. 알고 보니 호텔에서 스탠드로 옮기는 동안 비가 들어가서 전원을 켰을 때 타 버렸습니다. 그리고 작동하지 않을 때에는 “5시간 전에는 작동했다”는 말을 믿기 힘들 정도로 상태가 안 좋습니다. 우리는 화를 냈습니다. 계속하려는 욕구는 레이저에서 나오는 연기와 함께 사라졌습니다. 그래도 모아놨으니...

세 번째 버전

그리고 대회를 위해 다시 조립했습니다. 게다가 우리는 오랫동안 철저하게 준비했습니다. 일주일 이상. 결과는 다음과 같습니다.

가장 먼저 눈에 띄는 것은 이제 스캐너 주변 영역이 아니라 플랫폼에서 회전하는 물체를 스캔하고 있다는 것입니다. 또한 필요한 렌즈를 구하고 모든 것을 올바르게 조립하고 프로그램을 다시 작성했으며 디버그 보드를 직접 만든 것으로 교체했습니다. 이제는 측정당 사진 한 장만 찍습니다. 레이저는 충분히 강력하며 렌즈는 사진에서 레이저의 위치를 ​​고유하게 찾을 수 있을 만큼 좋습니다. 덕분에 우리는 레이저가 예열될 때까지 기다리지 않고 항상 켜져 있습니다. 이제 카메라를 한 번만 켭니다. 즉, 플랫폼을 회전시키고 이미지를 처리하는 데 대부분의 시간이 소요된다. 프로그램에 정확도 선택 메뉴가 추가되었습니다. 스캔 시간은 2~10분입니다. 선택한 정확도에 따라 다릅니다. 최대 정확도로 플랫폼은 단계당 0.5도 회전하고 거리는 0.33mm의 정확도로 결정됩니다. 플랫폼은 기어박스를 통해 스테퍼 모터로 구동됩니다. 플랫폼 자체는 큰 디스크이고 모터 샤프트의 고무 롤러는 작습니다. 모터와 레이저는 STM32F050F4 마이크로컨트롤러를 통해 제어되었습니다. 전계 효과 트랜지스터. 기사의 시작 부분에는 이 스캐너를 사용하여 얻은 장난감의 스캔이 나와 있습니다. 스캐너는 .obj 형식의 포인트 클라우드를 생성하므로 삼각 측량 후 동일한 사진에서 볼 수 있듯이 스캔한 개체를 3D 프린터로 인쇄할 수 있습니다. 화면에서 삼각 측량 후 모델을 볼 수 있습니다. 모델에 대한 수동 작업은 수행되지 않았습니다.

우리는 경쟁에서 승리했습니다. 그리고 그는 Intel ISEF 국제 대회에 참가했습니다. 그래서 우리는 다음 스캐너 작업을 시작했습니다.

네 번째 버전

~에 이 순간이것 최신 버전우리가 조립한 스캐너. 비교를 위해 플랫폼에 두 번째 버전이 있습니다. 우리는 네 번째 스캐너 개발에 최대한 철저하게 접근하려고 노력했습니다. 설치물은 CAD로 그려졌고, 부품은 레이저로 절단되었으며, 모든 것이 도색되었으며, 불필요한 것은 외부에 튀어나와 있지 않았습니다. 변경 사항: 이제 플랫폼은 실제로 기어입니다. 플렉시글라스로 절단되었으며 가장자리를 따라 652개의 이빨이 있습니다. 이는 이전 스캐너의 스캔이 심각하게 손상되었던 문제를 해결합니다. 고무 롤러가 약간 미끄러져 플랫폼이 360도 회전하지 않는 경우가 많았습니다. 스캔이 "잘려졌거나" 겹쳐졌습니다. 여기서 우리는 플랫폼이 얼마나 회전했는지 항상 정확히 알고 있었습니다. 레이저 출력은 소프트웨어로 조정 가능했습니다. 덕분에 저조도 조건에서 불필요한 부분의 조명을 피하면서 레이저 출력을 즉석에서 변경할 수 있었습니다. 모든 전자제품을 제어하기 위해 분리하지 않기로 했습니다. 새 보드, 그러나 단순히 디버그 F401RE-Nucleo를 사용하십시오. 디버거 및 USB->UART 어댑터로 작동하는 ST-LinkV2.1이 설치되어 있습니다.

정확도는 놀라웠습니다. 각도 분해능은 0.14도입니다. 0.125mm 거리에서. 스캐닝 영역은 높이 20cm, 직경 30cm의 원통형이며 제작 당시(2014년 5월) 모든 부품 가격과 레이저 절단 가격은 4,000루블 미만이었습니다.

사용 중에는 최대 정확도로 한 번만 설정합니다. 스캔은 15~20분 동안 지속되었습니다. 거의 200만 포인트를 받았습니다. 노트북은 포인트 클라우드에서 모델 계산을 거부했습니다. 실험은 반복되지 않았습니다.

결론

가까운 시일 내에 프로젝트 작업을 재개할 계획이므로 프로그램과 설치를 모두 마무리할 것입니다. 우리가 곧 그것에 대해 쓸 수 있기를 바라요 단계별 조립, 도면, 프로그램 및 기타 모든 것을 게시합니다. 이 내용은 더 이상 이 기사에 맞지 않습니다.

끝까지 읽어주신 모든 분들께 감사드립니다!

UPD:
동료는 우리가 ISEF에서 촬영한 스캐너 작동에 관한 비디오를 발견했습니다.

예, 대부분의 비디오는 흥미롭지 않지만 마지막에는 노트북에 모델이 있습니다.

다음은 스캔된 개체의 예입니다. 그러나 그들은 모두 스캐너의 세 번째 버전에 속합니다.
드롭 박스
model.obj 파일에서 이 고무 롤러가 모터 위에서 미끄러질 때 무슨 일이 일어나는지 명확하게 볼 수 있습니다. 개에게는 세 개의 눈이 있습니다. 스캔이 중지되어 컷아웃이 발생했습니다. 모든 파일은 포인트 클라우드입니다. MeshLab을 사용하여 열 수 있습니다. 모델은 손으로 처리되지 않았습니다. 완전히 원시 데이터입니다. 위에서 보면 점이 없는 영역인 "흰 반점"을 볼 수 있습니다. 카메라는 그들을 보지 못합니다. 흰 반점은 다른 곳에서도 볼 수 있습니다. 너무 어두운 영역이나 표면이 겹칠 때 나타납니다. 예를 들어 stn_10.obj 파일에서는 염소의 뿔이 서로 겹쳐서 뿔의 내부 표면이 스캔되지 않았습니다.




맨 위