MPU6050中資料輸出教程
阿新 • • 發佈:2018-11-04
硬體準備
- MPU6050模組
- Arduino UNO開發板
- 杜邦線若干
第一部分:通過串列埠除錯助手檢視IMU輸出值
第一步:接線
第二步:燒錄程式
- 從網上下載已有程式
- MPU6050程式:http://diyhacking.com/projects/MPU6050.zip
- I2Cdev程式: https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/
- 進入該檔案目錄,下載 I2Cdev資料夾。無法直接下載指定資料夾,需要下載整個zip壓縮包。
- 解壓縮
- 將第一個檔案解壓縮得到的資料夾和第2個資料夾,複製到Arduino安裝目錄的libraries資料夾內,重啟Arduino。
注意:在ubuntu16.04中,將上面兩個資料夾複製到~/sketchbook/libraries內
- 將第一個檔案解壓縮得到的資料夾和第2個資料夾,複製到Arduino安裝目錄的libraries資料夾內,重啟Arduino。
- 燒錄程式
- 通過 檔案 –> 示例 –> MPU6050 –> Examples –> MPU6050_DMP6 開啟程式,上傳。
- 通過 檔案 –> 示例 –> MPU6050 –> Examples –> MPU6050_DMP6 開啟程式,上傳。
- 遇到的一些問題總結:
- 上傳的時候找不到I2Cdev.h檔案。因為之前下載的I2Cdev沒有找對,下載下來的檔案失效,我已經給了正確的下載地址。
- 無法選擇串列埠
- win7系統下:重新安裝驅動。
- 控制面板–> 裝置管理器–> 埠(COM和LPT)–> Arduino UNO(COM3)–> 驅動程式–> 更新驅動程式–> 瀏覽我的計算機以查詢驅動程式軟體(R)–Arduino IDE安裝路徑/drives/x86(64位的作業系統選擇這個資料夾)
- ubuntu16.04系統下:解除安裝brltty程式,重啟電腦。
- 因為該程式與串列埠選擇衝突,解除安裝brltty即可解決問題。通過sudo apt-get remove brltty。
- win7系統下:重新安裝驅動。
- 開啟串列埠監控,設定波特率115200, 看到 “Send any character to begin DMP programming and demo: “ 時輸入任意一個字元,然後傳送。就能看到yaw, pitch 和roll的值,如下圖所示。
第二部分:使用ROS視覺化
第一步:燒錄程式
- 新建專案
在arduino中,新建一個專案,複製檔案 –> 示例 –> MPU6050 –> Examples –> MPU6050_DMP6的內容。
注意:是複製MOU6050_DMP6整個資料夾的內容。 - 修改程式
加註釋:”#define OUTPUT_READABLE_YAWPITCHROLL”
去註釋:“#define OUTPUT_TEAPOT” - 上傳程式
第二步:建立ROS工作空間
- 在ROS的工作目錄下,下載和編譯程式碼
預設環境:ubuntu16.04,且已經安裝了ROS-kinetic
sudo apt-get install ros-kinetic-serial
cd ~catkin_ws/src/
git clone https://github.com/fsteinhardt/mpu6050_serial_to_imu
git clone https://github.com/ccny-ros-pkg/imu_tools
cd ~catkin_ws/
catkin_make
source ~catkin_ws/devel/setup.bash
- 執行如下命令,就可以把mpu6050的值轉換為ROS的/imu 訊息,同時通過rviz看到mpu6050朝向的變化。
roslaunch mpu6050_serial_to_imu demo.launch
- 但是並不能夠在viz看到IMU實時的變化,有哪位大聲可以指點一下嗎?
參考資料:
https://maker.pro/arduino/tutorial/how-to-interface-arduino-and-the-mpu-6050-sensor https://blog.csdn.net/EAIBOT/article/details/51398074