imu_6dof_iic.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/usr/bin/env python3
  2. # -*- coding: UTF-8 -*-
  3. # Copyright: 2016-2022 https://www.corvin.cn ROS小课堂
  4. # Description: 从IIC接口中读取6DOF IMU模块的三轴加速度、角度、四元数,
  5. # 然后将其打印输出.
  6. # Author: corvin
  7. # History:
  8. # 20220523:Initial this file.
  9. import math
  10. import time
  11. from imu_data_proc import MyIMUClass
  12. imu_iic_addr = 0x50
  13. degrees2rad = math.pi/180.0
  14. yaw = 0.0
  15. accel_factor = 9.806 #sensor accel g convert to m/s^2.
  16. myIMU = MyIMUClass(imu_iic_addr)
  17. print("Now 6DOF IMU Module is working ...")
  18. while True:
  19. myIMU.get_YPRAG()
  20. yaw_deg = float(myIMU.raw_yaw)
  21. if yaw_deg >= 180.0:
  22. yaw_deg -= 360.0
  23. yaw = yaw_deg*degrees2rad
  24. pitch = float(myIMU.raw_pitch)*degrees2rad
  25. roll = float(myIMU.raw_roll)*degrees2rad
  26. print("roll: ", roll, "pitch: ", pitch, "yaw: ", yaw)
  27. myIMU.get_quatern()
  28. print("q_x: ", myIMU.raw_q1, "q_y: ", myIMU.raw_q2, "q_z: ", myIMU.raw_q3, "q_w: ", myIMU.raw_q0)
  29. print("a_v_x: ", float(myIMU.raw_gx)*degrees2rad, "a_v_y: ", float(myIMU.raw_gy)*degrees2rad, "a_v_z: ", float(myIMU.raw_gz)*degrees2rad)
  30. print("l_acc_x: ", -float(myIMU.raw_ax)*accel_factor ,"l_acc_y: ", -float(myIMU.raw_ay)*accel_factor ,"l_acc_z: ", -float(myIMU.raw_az)*accel_factor)
  31. time.sleep(0.1)