原创文章,欢迎转载,转载请注明出处
MPU6050数据读取出来后,经过一个星期的努力,姿态解算和在matlab上的实时显示姿态终于完成了。
1:完成matlab的串口,并且实时通过波形显示数据
2:添加RTT查看CPU使用率的扩展功能,MPU6050读取数据的优化
3:四元素表示的坐标变化,四元素与欧拉角的关系和Madgwick的IMUupdate算法
4:飞控数据采集线程和数据处理线程的安排,类似于生产者与消费者的关系。
先放个效果视频。。。
如果看不了视频,请打开视屏网址:http://v.youku.com/v_show/id_XNzU3MTk0MTAw.html
1:matlab串口初始化还是比较简单的,网上的资料也很多,这里就直接贴初始化代码了。
1 % --- Executes on button press in pb_OpenSerialPort. 2 function pb_OpenSerialPort_Callback(hObject, eventdata, handles) 3 % hObject handle to pb_OpenSerialPort (see GCBO) 4 % eventdata reserved - to be defined in a future version of MATLAB 5 % handles structure with handles and user data (see GUIDATA) 6 % 7 global o_SerialPort; 8 %______________________________________________ 9 %GUI全局变量 10 11 12 %---------------------串口初始化----------------------- 13 %%%COM端口初始化 14 int_Index_COM=get(handles.pop_SerialPort,'Value'); 15 string_COM=get(handles.pop_SerialPort,'String'); 16 string_Select_COM=string_COM{int_Index_COM}; 17 o_SerialPort=serial(string_Select_COM); 18 %%%Baud初始化 19 int_Index_Baud=get(handles.pop_BaudRate,'Value'); 20 string_Baud=get(handles.pop_BaudRate,'String'); 21 string_Select_Baud=string_Baud{int_Index_Baud}; 22 double_Baud=str2double(string_Select_Baud); 23 set(o_SerialPort,'BaudRate',double_Baud); 24 %%%设置数据长度 25 int_Index_DataBit=get(handles.pop_DataBit,'Value');