제조공정
요즘 사람들은 필기 결과를 얻기 위해 정전식 터치 스크린, 스타일러스 펜 또는 기타 유사한 장치에 의존하는 경우가 많습니다. 기능적이고 정확하지만 항상 유연하지는 않습니다. 우리 프로젝트는 라즈베리 파이와 IMU를 결합하여 움직임을 계속 추적하고 매우 빠르게 궤적을 생성할 수 있는 제품을 구축합니다. 지원을 위해 특정 표면이나 기타 입력 도구가 필요하지 않은 시스템을 설계했으며 IMU 및 해당 센서에서만 응답합니다. IMU와 Raspberry Pi를 연결하면 IMU 장치가 움직일 때 센서 데이터가 IMU에서 Raspberry Pi로 전송됩니다. 그런 다음 프로그램과 알고리즘을 사용하여 IMU 움직임을 복원합니다. 움직임은 Raspberry Pi에 기록되고 저장됩니다. PyGame을 사용하면 라즈베리 파이의 TFT 화면에도 움직임을 표시할 수 있습니다. 작고 편리한 버튼으로 녹음 기능을 매우 유연하게 시작하고 종료할 수 있습니다. 사용자는 우리의 장치를 다른 물건에 부착하여 움직임을 추적할 수도 있습니다. 따라서 우리 장치는 필기 추적, 움직임 추적 등을 위한 실행 가능한 솔루션을 제공합니다.
프로젝트의 목표는 펜, 로봇 또는 사람에 장착하여 물체의 움직임을 추적하고 기록할 수 있는 별도의 모듈을 설계하는 것입니다. 사용자는 이 모듈을 사용하여 다른 장치에 부착할 수 있으므로 물체가 이동할 때 우리 장치는 궤적을 복원 및 추적하고 화면의 세계 프레임에서 수평면의 움직임을 표시할 수 있습니다. 매우 고전적인 응용 프로그램은 사용자가 펜으로 사용할 수 있으므로 글이 기록되고 이미지로 저장된다는 것입니다. 이 프로젝트의 특징은 추적이 특정 비행기에 응답하지 않고 모든 비행기에 적용할 수 있다는 것입니다. 심지어 공중에 있습니다. 기기의 배치나 기울기 또한 최종 결과에 영향을 미치지 않습니다.
우리는 Raspberry Pi와 관성 측정 장치를 프로젝트의 주요 구성 요소로 사용합니다. 또한 PyGame은 Raspberry Pi에서 궤적을 표시하는 데 사용됩니다.
제조 부정확성으로 인해 가속도계의 3축과 3축 자이로스코프는 일반적으로 오정렬되어 두 좌표의 오일러 각 사이에 오차가 발생합니다. 보정이 필요합니다. 6-pos 교정 기술을 사용하여 다음과 같이 6 교정 위치를 설정합니다.
자체 제작한 보정 테이블(그림 XX)을 사용하여 imu를 6개 위치로 고정하고 판독값을 기록합니다. 이 6개 위치에서 수집한 보정 데이터는 다음과 같습니다.
보정 후 가속도 데이터는 (Ax, Ay, Az는 보정 후 데이터이고 ax, ay, az는 원시 데이터입니다):
쿼터니언 계산:
쿼터니언은 객체의 방향과 회전을 나타내는 것으로 오일러 각보다 벡터의 회전을 계산하기 쉽습니다. 쿼터니언과 오일러 각 사이의 트랜잭션은 다음과 같습니다.
q=cosθ2+sinθ2cosα⋅i+sinθ2cosβ2⋅j+sinθ2cosγ⋅k
q=λ+P1i+P2j+P3k
쿼터니언 회전:
그림>
프레임 XYZ에서 조정된 고정 벡터 V의 경우 쿼터니언으로 나타낼 수 있습니다.
V=0+Vxi+Vyj+Vzk
프레임이 q에 대해 회전하면 X'Y'Z'가 되고 X'Y'Z'에서 좌표가 지정된 V는 다음과 같이 표시될 수 있습니다.
V′=0+V′xi′+V′yj′+V′zk′
그러면 V=q∘V′∘q−1
그러나 자이로스코프에서 생성된 원시 데이터를 사용하는 것만으로는 여전히 충분하지 않으며 보정 부분에서 언급한 오정렬로 인해 가속도계에서 얻은 중력 벡터를 고려해야 합니다. 'UpdateIMU' 함수는 자이로스코프가 계산한 중력 벡터와 가속도계로 측정한 중력 벡터 간의 오차를 계산하는 데 사용됩니다. 이 기능은 움직임도 회전도 없이 초기 정지 단계에서 2000번 실행되었고 오류를 계산하기 위해 피드백을 사용했습니다. 기능은 다음과 같습니다.
<표>123456789
def UpdateIMU(self, Gyr, Acc):if np.linalg.norm(Acc) ==0:warnings.warn("가속도계 크기가 0입니다. 알고리즘 업데이트가 중단되었습니다.") return else:Acc =np.array(Acc / np.linalg.norm(Acc)) v =np.array([[2*(self.q[1]*self.q[3] - self.q[0]*self.q) [2])], [2*(self.q[0]*self.q[1] + self.q[2]*self.q[3])], [self.q[0]**2 - self.q[1]**2 - self.q[2]**2 + self.q[3]**2]])
변수 "Acc"와 'v'는 모두 가속도계와 자이로스코프에 의해 계산된 정규화된 중력 벡터이며, 두 벡터 사이의 각도 편차(오차)는 외적을 사용하여 나타낼 수 있습니다.
<표>1
오류 =np.cross(v,np.transpose([Acc]),축 =0)
계산된 오류를 통합하여 PI 네거티브 피드백 루프를 사용하여 자이로스코프 판독값을 업데이트할 수도 있습니다(이 때문에 PI 루프가 수렴할 수 있도록 이 기능을 2000번 실행해야 함).
<표>12
self.IntError =self.IntError + errorRef =Gyr - np.transpose(self.Kp*error+self.Ki*self.IntError)
그런 다음 수정된 자이로스코프 데이터로 쿼터니언을 계산할 수 있습니다.
<표>1234
pDot =np.multiply(0.5 , self.quaternProd_single(self.q, [0, Ref[0,0], Ref[0,1], Ref[0,2]]))self. q =self.q + pDot * self.SamplePeriod; self.q =self.q / np.linalg.norm(self.q); self.Quaternion =self.quaternConj(self.q);
더 읽어보기:스마트 펜:ECE5725를 위한 최종 프로젝트
제조공정
정밀 CNC 가공에 대한 일반적인 질문은 특정 프로젝트에 적합한 프로세스인지 여부입니다. 대부분의 숙련된 기계 기술자는 CNC 밀링, CNC 터닝, 레이저 절단, 레이저 조각 등과 같은 정밀 CNC 가공 공정이 가능한 한 절대적으로 사용되어야 한다는 데 동의할 것입니다. 특정 프로젝트에 정밀 CNC 가공이 필요합니까? 다음 기사 시리즈에서는 바로 이 질문에 대해 알아볼 것입니다. 고려해야 할 몇 가지 요소를 살펴보겠습니다. 정확도가 중요합니까? 프로젝트 사양이 뛰어난 정확도를 요구하는 경우 정밀 CNC 머시닝이 고려해야 할 유일한
프로젝트 관리자는 회사 목표를 달성하기 위해 지속적으로 개선해야 한다는 만트라를 가지고 있습니다. 조직의 성공적인 일원이 되려면 이러한 인력 리더는 비즈니스가 서비스를 제공하는 고객의 요구 사항을 충족하면서 직원에게 동기를 부여해야 합니다. 산업 환경에서 비즈니스 성공의 대부분은 그들이 만드는 제품에 대한 주문을 충족하는 능력에 달려 있습니다. 인간 작업자에게 도움을 주기 위해 공장 내에서 로봇 시스템을 채택하는 것은 촉박한 일정을 맞추는 것과 마감 기한을 맞추는 것 사이의 차이를 의미할 수 있습니다. 이 환경에 자동화 시스템을 통