산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

스마트 펜:ECE5725의 최종 프로젝트

소개

요즘 사람들은 필기 결과를 얻기 위해 정전식 터치 스크린, 스타일러스 펜 또는 기타 유사한 장치에 의존하는 경우가 많습니다. 기능적이고 정확하지만 항상 유연하지는 않습니다. 우리 프로젝트는 라즈베리 파이와 IMU를 결합하여 움직임을 계속 추적하고 매우 빠르게 궤적을 생성할 수 있는 제품을 구축합니다. 지원을 위해 특정 표면이나 기타 입력 도구가 필요하지 않은 시스템을 설계했으며 IMU 및 해당 센서에서만 응답합니다. IMU와 Raspberry Pi를 연결하면 IMU 장치가 움직일 때 센서 데이터가 IMU에서 Raspberry Pi로 전송됩니다. 그런 다음 프로그램과 알고리즘을 사용하여 IMU 움직임을 복원합니다. 움직임은 Raspberry Pi에 기록되고 저장됩니다. PyGame을 사용하면 라즈베리 파이의 TFT 화면에도 움직임을 표시할 수 있습니다. 작고 편리한 버튼으로 녹음 기능을 매우 유연하게 시작하고 종료할 수 있습니다. 사용자는 우리의 장치를 다른 물건에 부착하여 움직임을 추적할 수도 있습니다. 따라서 우리 장치는 필기 추적, 움직임 추적 등을 위한 실행 가능한 솔루션을 제공합니다.

목표

프로젝트의 목표는 펜, 로봇 또는 사람에 장착하여 물체의 움직임을 추적하고 기록할 수 있는 별도의 모듈을 설계하는 것입니다. 사용자는 이 모듈을 사용하여 다른 장치에 부착할 수 있으므로 물체가 이동할 때 우리 장치는 궤적을 복원 및 추적하고 화면의 세계 프레임에서 수평면의 움직임을 표시할 수 있습니다. 매우 고전적인 응용 프로그램은 사용자가 펜으로 사용할 수 있으므로 글이 기록되고 이미지로 저장된다는 것입니다. 이 프로젝트의 특징은 추적이 특정 비행기에 응답하지 않고 모든 비행기에 적용할 수 있다는 것입니다. 심지어 공중에 있습니다. 기기의 배치나 기울기 또한 최종 결과에 영향을 미치지 않습니다.

우리는 Raspberry Pi와 관성 측정 장치를 프로젝트의 주요 구성 요소로 사용합니다. 또한 PyGame은 Raspberry Pi에서 궤적을 표시하는 데 사용됩니다.

IMU 보정

제조 부정확성으로 인해 가속도계의 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를 위한 최종 프로젝트


제조공정

  1. 공학 마지막 해 학생을 위한 센서 기반 프로젝트 아이디어
  2. 2021년 상위 10대 스마트 제조 트렌드
  3. 스마트 도시를 위한 기반으로서의 스마트 조명
  4. FirePick Delta, 오픈 소스 MicroFactory를 위한 프로젝트 로그
  5. 빨리 물러나십시오! 로봇 - 어린이를 위한 이지 스타터 프로젝트
  6. Health Band - 노인을 위한 스마트 도우미
  7. 현대 생활을 위한 스마트 홈 업그레이드
  8. 스마트 제조를 위한 투자 회수 찾기
  9. 스마트 콘택트 렌즈용 초박형 센서
  10. 자동화 프로젝트를 선택하는 방법