28335_INS_1.0
所属分类:DSP编程
开发工具:C/C++
文件大小:1520KB
下载次数:143
上传日期:2013-09-01 00:40:29
上 传 者:
ex_true
说明: DSP 28335 GPS INS 组合导航,卡尔曼滤波,ADIS 陀螺 UBLOX
(DSP 28335 GPS INS integrated navigation system, including software and hardware)
文件列表:
DSP_INS_1.0\dsp\28335_FLASH_lnk_XINTF.cmd (9249, 2008-08-25)
DSP_INS_1.0\dsp\28335_RAM_lnk_XINTF.cmd (8184, 2008-08-25)
DSP_INS_1.0\dsp\Debug\ADIS16350.obj (127858, 2012-12-15)
DSP_INS_1.0\dsp\Debug\DSP2833x_ADC_cal.obj (1364, 2012-12-15)
DSP_INS_1.0\dsp\Debug\DSP2833x_CodeStartBranch.obj (1675, 2012-12-15)
DSP_INS_1.0\dsp\Debug\DSP2833x_CpuTimers.obj (126367, 2012-12-15)
DSP_INS_1.0\dsp\Debug\DSP2833x_DefaultIsr.obj (175775, 2012-12-15)
DSP_INS_1.0\dsp\Debug\DSP2833x_GlobalVariableDefs.obj (134677, 2012-12-15)
DSP_INS_1.0\dsp\Debug\DSP2833x_MemCopy.obj (124502, 2012-12-15)
DSP_INS_1.0\dsp\Debug\DSP2833x_PieCtrl.obj (125246, 2012-12-15)
DSP_INS_1.0\dsp\Debug\DSP2833x_PieVect.obj (132424, 2012-12-15)
DSP_INS_1.0\dsp\Debug\DSP2833x_SysCtrl.obj (130149, 2012-12-15)
DSP_INS_1.0\dsp\Debug\DSP2833x_usDelay.obj (1373, 2012-12-15)
DSP_INS_1.0\dsp\Debug\DSP_INS.obj (144994, 2012-12-15)
DSP_INS_1.0\dsp\Debug\EKFilter.obj (227960, 2012-12-15)
DSP_INS_1.0\dsp\Debug\GPS.obj (132124, 2012-12-15)
DSP_INS_1.0\dsp\Debug\IGRFWMM.obj (147696, 2012-12-15)
DSP_INS_1.0\dsp\Debug\INS_Func.obj (147565, 2012-12-15)
DSP_INS_1.0\dsp\Debug\INS_Init.obj (162747, 2012-12-15)
DSP_INS_1.0\dsp\Debug\matrix.obj (140229, 2012-12-15)
DSP_INS_1.0\dsp\Debug\McBSP_SPI.obj (128998, 2012-12-15)
DSP_INS_1.0\dsp\Debug\SCI_C.obj (127885, 2012-12-15)
DSP_INS_1.0\dsp\DSP_INS\.ccsproject (265, 2012-12-15)
DSP_INS_1.0\dsp\DSP_INS\.cdtbuild (13624, 2012-12-15)
DSP_INS_1.0\dsp\DSP_INS\.cdtproject (553, 2012-12-15)
DSP_INS_1.0\dsp\DSP_INS\.project (4147, 2012-12-15)
DSP_INS_1.0\dsp\DSP_INS\.settings\org.eclipse.cdt.managedbuilder.core.prefs (776, 2012-12-15)
DSP_INS_1.0\dsp\DSP_INS\Debug\ADIS16350.pp (4503, 2012-12-15)
DSP_INS_1.0\dsp\DSP_INS\Debug\ccsObjs.opt (1241, 2013-01-12)
DSP_INS_1.0\dsp\DSP_INS\Debug\ccsSrcs.opt (876, 2013-01-12)
DSP_INS_1.0\dsp\DSP_INS\Debug\DSP2833x_CpuTimers.pp (4423, 2012-12-15)
DSP_INS_1.0\dsp\DSP_INS\Debug\DSP2833x_DefaultIsr.pp (4451, 2012-12-15)
DSP_INS_1.0\dsp\DSP_INS\Debug\DSP2833x_GlobalVariableDefs.pp (3557, 2012-12-15)
DSP_INS_1.0\dsp\DSP_INS\Debug\DSP2833x_MemCopy.pp (3313, 2012-12-15)
DSP_INS_1.0\dsp\DSP_INS\Debug\DSP2833x_PieCtrl.pp (4367, 2012-12-15)
DSP_INS_1.0\dsp\DSP_INS\Debug\DSP2833x_PieVect.pp (4367, 2012-12-15)
DSP_INS_1.0\dsp\DSP_INS\Debug\DSP2833x_SysCtrl.pp (4367, 2012-12-15)
DSP_INS_1.0\dsp\DSP_INS\Debug\DSP_INS.pp (9507, 2012-12-15)
DSP_INS_1.0\dsp\DSP_INS\Debug\EKFilter.pp (7163, 2012-12-15)
DSP_INS_1.0\dsp\DSP_INS\Debug\GPS.pp (3649, 2012-12-15)
... ...
************************************************************************************
By VrilleUp, 2010/04/15
email: vrilleup.pu@gmail.com
This version of the project was completed in the year 2008.
************************************************************************************
=======================
Introduction to DSP_INS
=======================
The open source project DSP_INS is an inertial navigation system on the TI DSP
platform TMS320F28335 with MEMS inertial sensors and commercial GPS module. Inertial
sensors are actually used only for estimating attitude, heading and velocity.
Position information totally comes from GPS (see Q2 in FAQ part). Currently the
MEMS IMU (Inertial Measurement Unit) ADIS16355 and GPS module u-blox LEA-5H
are supported. DSP_INS also reads magnetic field data from HONEYWELL HMC1051/1052.
You can also use the latest IMU module ADIS1***05, which also contains magnetic field
sensors.
There is a 10-order extended Kalman filter in DSP_INS, which takes angular velocity,
acceleration, magnetic field, and GPS velocity as inputs. It provides outputs
including angular velocity, acceleration, attitude, heading, velocity, and position
(from GPS) every 10 milliseconds. DSP_INS is proved to be effective and reliable in
several robot and UAV projects.
The software part of DSP_INS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 3 as published by the
Free Software Foundation. The hardware PCB design files (Protel DXP 2004) are also
provided.
This project is distributed in the hope that others could easily integrate a small
INS platform to their robot or UAV projects. But we do NOT PROVIDE ANY WARRANTY of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
License for more details.
You should have received a copy of the GNU General Public License along with this
project; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
Suite 330, Boston, MA 02111-1307 USA
===================
How to Use DSP_INS?
===================
1. Copy f28335.gel to $CCSFOLDER\cc\gel\ and replace the original file (if exists).
Use this f28335.gel file in CCS, create a new project, and import the source in src.
Make sure to use FPU (--float_support=fpu32) and include rts2800_fpu32.lib
in the project (you can refer to the settings in DSP_INS.pjt).
2. Set the right path for the files in DSP2833x_common and DSP2833x_headers.
3. Run DSP_INS in RAM: use 28335_RAM_lnk_XINTF.cmd (in DSP2833x_common\cmd\);
comment out the second MemCopy function in INS_Init.c (containing "Xintf...");
rebuild; load .out file to TMS320F28335.
4. Write DSP_INS in FLASH: use 28335_FLASH_lnk_XINTF.cmd (in DSP2833x_common\cmd\);
uncomment the second MemCopy function in INS_Init.c (containing "Xintf...");
rebuild; write .out file to the FLASH in TMS320F28335.
5. Read data from the SCI output of TMS320F28335. Please refer to "INS_SendData2All"
function in INS_Func.c for the data format.
==================
About the Hardware
==================
There are 5 Protel DXP 2004 PCB projects in the hardware folder. You can open all of
them by opening the workspace file DSP_INS_Work.DsnWrk. DSP_INS.PrjPCB is the 4
layers DSP module. JTAG_PACK.PrjPCB contains the small PCB which converts standard
JTAG connector to a smaller connector on the DSP module. Magnet_NEW.PrjPCB is the
magnetic field sensor module. GPS_PCB.PrjPCB is the GPS module. INS_ALL.PrjPCB is the
big motherboard which hosts all the modules above.
Before using u-blox LEA-5H GPS with DSP_INS, you need to set some parameters in the
GPS module: RATE->Measurement = 4Hz, PRT->Protocol out = 0-UBX, MSG: output these
messages {NAV-SOLNAV-POSLLHNAV-VELNEDNAV-TIMEUTC}, CFG->Save current
configuration.
For more reliable DSP power-on reset, it is recommended to add pull-up resistors
for GPIO84, 85, 86, and 87 of TMS320F28335 (which does not exist in the current
DSP module).
==================
How to Contribute?
==================
As you see, the code of DSP_INS is not well organized. Variable and function names
are sometimes confusing and not in consistent formats. Different functionalities are
mixed in some source code files. This is partially because the original purpose of
this project is to implement a prototype INS system with MEMS sensors and evaluate
its feasibility. We are glad to see it works very well in many applications and
various environments. If you are interested in this project and have some time to
improve the code quality, please contact vrilleup.pu@gmail.com.
You can also contribute to this project by sending us some pictures or results of
your application which integrates DSP_INS.
==========================
Frequently Asked Questions
==========================
1. Why choose this DSP?
Several requirements need to be considered when choosing the processor. First the
processor should have enough float point power for the extended Kalman filter. We did
an experiment on AT91SAM9260 (ARM9) and TMS320F28335. AT91SAM9260 takes 52765ms for
30M addition operations and 68276ms for 30M multiplication operations. TMS320F28335
takes 4610ms for 30M addition operations and 4600ms for 30M multiplication operations
(all operations are with random float32 operands). TMS320F28335 could achieve at most
226Hz EKF output frequency with DSP_INS, which is 10 times faster than AT91SAM9260.
Secondly the INS module is usually a part of a bigger control system, so it is
desired to integrate some perpheral components in the processor. TMS320F28335 has
various features like PWM, CAP/QEP, ADC, McBSP, I2C, UART, SPI and CAN, which exactly
meets this requirement. If you use DSP_INS, usually you still have enough
computational resources on the DSP to implement additional functions.
2. Why not estimate position from accelerometers?
A similar question is why not include position in the states vector. MEMS
accelerometer suffers from large zero bias and thermal instability, and thus cannot
be used for positioning by integrating twice. Experiments results show that even with
temperature calibrated data the position error could go as high as 100 meters within
half a minute. On the other hand, data from GPS receiver are used for estimating long
term gyro bais in the extended Kalman filter. But the position data from commercial
GPS receivers usually have much higher delay and latency than the velocity data, so
only velocity is included in the observations.
3. What is the purpose of using IGRF/WMM model?
In DSP_INS two main magnetic field models are adopted: the International Association
of Geomagnetism and Aeronomy (IAGA) International Geomagnetic Reference Field (IGRF)
model and the Department of Defense (DoD) World Magnetic Model (WMM). With these
models at any given location one can compute the geomagnetic field which can be used
as the reference for attitude and heading estimation in DSP_INS. But these models
only provide geomagnetic field in a coarse granularity. One should notice that in
the urban terrain the true values could be very different from the models. For more
details and the latest version of these models, please visit the NGDC website
(http://www.ngdc.noaa.gov/geomag/models.shtml). In the presence of valid GPS readings,
GPS velocity vector usually offers a better reference for the heading estimation, so
the data from magnetic field sensors can be ignored in this case. Another solution
(not implemented in the current DSP_INS) could be a bimodular setting, where the
geomagnetic field vector is first estimated when GPS readings are valid and then
used as the heading reference when GPS signal is lost. The difficulty of this method
lies in the fact that one has to estimate geomagnetic field vector and magnetic
interferences simultaneously.
4. What is the state transition equation and observation equation for the extended
Kalman filter?
Please refer to the comments in the source file EKFilter.c.
近期下载者:
相关文件:
收藏者: