반응형

자세한 건 아래 링크로~ ^^ (무단 재배포하면 저 잡혀가요~ >.<)


파트론, 3축 지자기센서 개발…양산 추진



이제서야 내가 개발하는 것이 시장에 판매되기 시작하는구나!

이제부터 긴장 바짝하고, 시장의 날카로운 트렌드에 부드럽게 깎일수 있도록 고객사의 만족을 위해 최선을 다해야지!

얍!!!!
반응형
반응형

David Veksle does an excellent job of describing them:

A programmer spends about 10-20% of his time writing code, and most programmers write about 10-12 lines of code per day that goes into the final product, regardless of their skill level. Good programmers spend much of the other 90% thinking, researching, and experimenting to find the best design. Bad programmers spend much of that 90% debugging code by randomly making changes and seeing if they work. [...]

Great programmers spend very little of their time writing code – at least code that ends up in the final product. Programmers who spend much of their time writing code are too lazy, too ignorant, or too arrogant to find existing solutions to old problems. Great programmers are masters at recognizing and reusing common patterns. Good programmers are not afraid to refactor (rewrite) their code constantly to reach the ideal design. Bad programmers write code which lacks conceptual integrity, non-redundancy, hierarchy, and patterns, and so is very difficult to refactor. It’s easier to throw away bad code and start over than to change it.

Yes, I realize this is one of the self-congratulatory articles that programmers write when they want to describe themselves. But it is still useful to know how good programmers do their work. On the other hand, it is perhaps more useful to understand how some programmers never manage to channel years of experience into writing good code.

There are many kinds of mistakes made by software developers, but the “jump directly into coding and stay coding” is perhaps one of the most common. The reason being that this method works extremely well for small problems, can work with some effort for a few non-trivial problems and totally breaks down for commercial software that requires multiple people on development staff and is used by users of different skills and personalities.

One way of thinking about this is that bad programmers do not care about quality and are only interested in paychecks. This gets us nowhere because there is no solution other than replacing those programmers. A better way of thinking is to assume that bad programmers do not “know” about quality and training can help. This is true for many programmers who can benefit from the knowledge of better tools and techniques. But it also doesn’t entirely really address the problem.

My observation has been that programmers who exhibit the trait of spending all their time in code is that they think they are doing work. They define work as churning out line after line of code. More lines of code, more functions, and more screens mean that they are doing work. Fixing bugs is also work. Another bug fixed means another piece of work accomplished.

To them, refactoring seems a strange thing to do. Why change the code when everything is working fine? Why not spend time working, i.e., getting some more functionality implemented? Especially since the refactoring usually consists of deleting code, i.e., reducing what was done before.

This may seem like sacrilege to good programmers, but there is a correspondence to a real world situation, namely, hoarding. Most people (including me) have a tendency to accumulate junk in our houses. We buy a book, read it and never touch it again, but it occupies a place on a bookshelf. A broken machine sits on a shelf in the kitchen. The basement or garage is full of memories from older days that we no longer care for. We spend little time clearing them out, but we spend extraordinary amounts of time and energy acquiring new things.

The culture at many software companies accentuate this behavior by the use of hard deadlines. For many programmers, it is a less risky proposition to release a low-quality product on time than it is to create a high-quality product that is two weeks late. Even when there are no apparent deadlines (such as an R&D projects), there are deadlines and you need to show something working, not just a design or prototype.

Now, for good programmers, lack of time is not an excuse for shoddy work. Most good programmers write good code and their lack of quality is usually at a higher level in terms of design that could have been better. For weaker programmers, they need an environment that can encourage them to work on improving their quality, in addition to mentoring, code reviews, pair programming and the like.

Finally, there will always be different levels of programmers (good, medium and bad) no matter what you do. It is not just about laziness or ignorance, but also related to innate skills, intelligence and aptitude for the job. Some people can visualize design concepts and create great systems. Others (who might be good in other areas) just don’t have the right engine for it. Some great programmers working in extremely complex code running system software can be very poor at user interface design and vice versa. Different people have different skills, and sometimes people are in the wrong profession.

This entry was posted in software development and tagged , . Bookmark the permalink.
반응형
반응형

Claims:

1. A method comprising:calibrating a magnetic sensor, the calibrating including:acquiring measurements from the magnetic sensor during a not pre-ordered movement;determining a plurality of sets of solutions for respective expected values of intensity of Earth's magnetic field, wherein each solution is defined by a plurality of parameters including at least one gain value for each detection axis of the magnetic sensor;determining a figure of merit, correlated to a calibration error, for each solution in the sets of solutions;selecting partial solutions in the sets of solutions, respectively, based on the figure of merit;defining a gain confidence interval; andselecting a calibration solution based on the figure of merit, from among the partial solutions having respective gain values all falling within the gain confidence interval.

2. The method according to claim 1, wherein acquiring the measurements comprises:receiving a new measurement from the magnetic sensor;defining distances between the new measurement and preceding measurements; anddeciding whether to store the new measurement based on the distances between the new measurement and the preceding measurements.

3. The method according to claim 2, wherein deciding whether to store the new measurement comprises storing the new measurement if the distances are all greater than a threshold distance and discarding the new measurement if at least one distance is smaller than the threshold distance.

4. The method according to claim 2, wherein the distance is defined byDIJ= {square root over ((MIX-MJX)2+(MIY-MJY)2+(MIZ-MJZ).- sup.2)}{square root over ((MIX-MJX)2+(MIY-MJY)2+(MIZ-MJZ).- sup.2)}{square root over ((MIX-MJX)2+(MIY-MJY)2+(MIZ-MJZ).- sup.2)}where MIX, MIY, MIZ are components of the new measurement corresponding to respective detection axes of the magnetic sensor and MJX, MJY, MJZ are components of the preceding measurements corresponding to respective detection axes of the magnetic sensor.

5. The method according to claim 2, wherein receiving the new measurement, defining the distances, and deciding whether to store the new measurement are repeated until a threshold number of measurements is stored.

6. The method according to claim 1, wherein determining the plurality of sets of solutions comprises:selecting an expected value;generating starting solutions, starting from the measurements acquired; updating a set of solutions; andselecting a further expected value.

7. The method according to claim 6, wherein generating the starting solutions comprises determining, for a plurality of solutions, respective first initial values of parameters around a unit value and respective second initial values of parameters around zero.

8. The method according to claim 6, wherein updating the set of solutions comprises:generating a new solution based on a combination of solutions of the set of solutions;determining a figure of merit of the new solution; anddeciding whether to include the new solution in the set of solutions based on the figure of merit of the new solution.

9. The method according to claim 8, wherein deciding whether to include the new solution comprises:determining a figure of merit of a least preferred solution in the set of solutions; andcomparing the figure of merit of the new solution with the figure of merit of the least preferred solution.

10. The method according to claim 9, wherein deciding whether to include the new solution further comprises including the new solution if the figure of merit of the new solution is in a pre-determined relationship with the figure of merit of the least preferred solution.

11. The method according to claim 10, wherein deciding whether to include the new solution further comprises:if the figure of merit of the new solution is not in the pre-determined relationship with the figure of merit of the least preferred solution, defining a replacement probability as a function of the figure of merit of the new solution and of the figure of merit of the least preferred solution;carrying out an extraction of a random variable;including the new solution based on a first outcome of the extraction of the random variable; andexcluding the new solution based on a second outcome of the extraction of the random variable.

12. The method according to claim 1, further comprising widening the gain confidence interval, if no partial solution has respective gain values all falling within the gain confidence interval.

13. The method according to claim 1, wherein determining the figure of merit comprises:applying a solution to the measurements for determining corrected measurements;determining errors between each corrected measurement and an expected value; andadding up the errors.

14. The method according to claim 1, wherein the parameters include at least one offset value for each detection axis of the magnetic sensor.

15. The method according to claim 1, further comprising:acquiring further measurements from the magnetic sensor;applying the calibration solution to the further measurements for determining further corrected measurements;determining a figure of merit of the calibration solution; anddeciding whether to perform safety measurements based on a comparison between the figure of merit of the calibration solution and a threshold figure of merit.

16. A device for calibrating a magnetic sensor, comprising:an acquisition module, configured to acquire measurements from a magnetic sensor during a non-pre-ordered movement;an optimization module configured to:determine a plurality of sets of solutions for respective expected values of intensity of Earth's magnetic field, wherein each solution is defined by a plurality of parameters including at least one gain value for each detection axis of the magnetic sensor;determine a figure of merit, correlated to a calibration error, for each solution in the sets of solutions; andselect partial solutions in the sets of solutions, respectively, based on the figure of merit; anda selection module, configured to:define a gain confidence interval; andselect a calibration solution based on the figure of merit, from among the partial solutions having respective gain values all falling within the gain confidence interval.

17. The device according to claim 16, wherein the acquisition module is further configured to:receive a new measurement from the magnetic sensor;define distances between the new measurement and preceding measurements; anddecide whether to store the new measurement based on the distances between the new measurement and the preceding measurements.

18. The device according to claim 16, wherein the optimization module is further configured to:select an expected value;generate starting solutions, starting from the measurements acquired;update a set of solutions; andselect a further expected value.

19. The device according to claim 18, wherein the optimization module is further configured to:generate a new solution based on a combination of solutions of the set of solutions;determine a figure of merit of the new solution; anddecide whether to include the new solution in the set of solutions based on the figure of merit of the new solution.

20. An electronic apparatus, comprising:a body;a magnetic sensor fixed to the body; anda device for calibrating the magnetic sensor, the device including:an acquisition module, configured to acquire measurements from the magnetic sensor during a non-pre-ordered movement;an optimization module configured to:determine a plurality of sets of solutions for respective expected values of intensity of Earth's magnetic field, wherein each solution is defined by a plurality of parameters including at least one gain value for each detection axis of the magnetic sensor;determine a figure of merit, correlated to a calibration error, for each solution in the sets of solutions; andselect partial solutions in the sets of solutions, respectively, based on the figure of merit; anda selection module, configured to:define a gain confidence interval; andselect a calibration solution based on the figure of merit, from among the partial solutions having respective gain values all falling within the gain confidence interval.

21. The electronic apparatus according to claim 20, further comprising:a control unit coupled to the magnetic sensor; andan interface coupled to the control unit.

22. A navigation system, comprising:a magnetic sensor configured to generate measurements indicative of a magnetic field; anda processing unit coupled to the magnetic sensor, the processing unit operable to calibrate the magnetic sensor by:acquiring the measurements from the magnetic sensor during movement of the magnetic sensor;determining a plurality of sets of solutions for respective expected values of intensity of Earth's magnetic field, wherein each solution is defined by a plurality of parameters including at least one gain value for each detection axis of the magnetic sensor;determining a figure of merit, correlated to a calibration error, for each solution in the sets of solutions;selecting partial solutions in the sets of solutions, respectively, based on the figure of merit;defining a gain confidence interval; andselecting a calibration solution based on the figure of merit, from among the partial solutions having respective gain values all falling within the gain confidence interval.

23. The navigation system according to claim 22, wherein the processing unit is further operable to:receive a new measurement from the magnetic sensor;define distances between the new measurement and preceding measurements; anddecide whether to store the new measurement based on the distances between the new measurement and the preceding measurements.

24. The navigation system according to claim 22, wherein the processing unit is further operable to:select an expected value;generate starting solutions, starting from the measurements acquired;update a set of solutions; andselect a further expected value.

25. The navigation system according to claim 24, wherein the processing unit is further operable to:generate a new solution based on a combination of solutions of the set of solutions;determine a figure of merit of the new solution; anddecide whether to include the new solution in the set of solutions based on the figure of merit of the new solution.

Read more: http://www.faqs.org/patents/app/20090070056#ixzz0x3135lOV




이제 마지막으로 개발하면 되는 여러 참조 자료들 중에 선정된 지자기센서 소프트웨어 알고리즘 프로젝트 자료.

8개월동안 기나긴 기간동안 연구&개발을 해왔던 프로젝트를 종지부를 지을 수 있는 계기가 되길-

처음에는 무엇을 할지 막막했는데, 이제는 익숙하고, 내가 다룰 수 있는 기술이 되어버렸다.

자~ 정상이 저기 앞에 보이기 시작 했으니, 조금만 더 노력하고, 최선을 다하자!

2010/08/19 16:07 2010/08/19 16:07


 

반응형
반응형

Claims

We claim:

1. A method for determining a distortion corrected magnetic heading comprising the steps: acquiring a first set of data from two or more magnetometers and a second set of data from oneor more means for gravity field strength sensing within a predetermined time period in a first orientation; processing the first set of data with a first digital filter; processing the second set of data with a second digital filter; compensating thefirst set of data with a first temperature compensation algorithm; compensating the second set of data with a second temperature compensation algorithm; generating a first filtered signal by processing the first filtered set of data with a firstnonlinear function whose coefficients are predetermined; generating a second filtered signal by processing the second filtered set of data with a second nonlinear function whose coefficients are predetermined; and calculating a heading orientation fromthe first and second filtered signals, wherein a multiplicity of the first and second data sets are acquired in a multiplicity of orientations for the determining, such that the accuracy of the distortion correction improves as additional first andsecond data sets are acquired and wherein the acquiring, the processing, the compensating, the generating, the calculating and the determining are continuously ongoing.

2. A method for determining a distortion corrected magnetic heading as in claim 1 further comprising the steps: calculating a pitch and roll orientation from said second filtered signal; generating a third data set by processing said firstfiltered signal and said second filtered signal; calculating a tilt compensated heading orientation from said third data set; and communicating the tilt compensated heading orientation and the pitch and roll orientation.

3. A method for determining a distortion corrected magnetic heading as in claim 1 wherein said multiplicity of first and second data sets and said multiplicity of orientations is at least five.

4. A method for determining a distortion corrected magnetic heading as in claim 1 wherein said predetermined time period is less than about one second.

5. A method for determining a distortion corrected magnetic heading comprising the steps: acquiring a first set of data from two or more magnetometers for magnetic field strength sensing and a second set of data from one or more means forgravity field strength sensing within a predetermined time period in a first orientation; generating a first filtered data set by processing the first set of data with a first digital filter, wherein the first digital filter comprises a Finite ImpulseResponse algorithm; generating a second filtered data set by processing the second set of data with a second digital filter, wherein the second digital filter comprises a Finite Impulse Response algorithm; compensating the first filtered data set witha first temperature compensation algorithm; compensating the second filtered data set with a second temperature compensation algorithm; calibrating the first set of data with a first nonlinear function whose coefficients are predetermined; calibratingthe second set of data with a second nonlinear function whose coefficients are predetermined; generating a third set of magnetometer data from the calibrated first and second set of data; wherein the generating a third set of magnetometer data stepcomprises the steps: filtering said calibrated first set of data with a stability filter; filtering said calibrated second set of data with a minimum tilt separation filter; processing the filtered first and second set of data with a median filter witha first-in-first-out buffer to define the third set of data; processing the third set of data with a recursive least squares soft-iron and hard-iron offset estimator comprising a first stage estimator and a second stage estimator; wherein saidfirst-stage estimator comprises calculating an upper-triangular soft-iron distortion matrix and a hard-iron offset vector to obtain a first-stage corrected geomagnetic field vector and wherein said second-stage estimator comprises calculating a rotationmatrix to obtain a second stage corrected geomagnetic field vector; calculating a pitch and roll orientation from the calibrated second set of data; calculating a heading orientation from the calibrated second set of data and the third set ofmagnetometer data, wherein a multiplicity of first and second data sets are acquired in at least five orientations for the determining such that the accuracy of the distortion correction improves with two or more first and second data sets acquired; andcommunicating the magnetic heading and the pitch and roll orientation.

6. A method for determining a distortion corrected magnetic heading as in claim 5 wherein said communicating comprises an interface device comprising at least one from a group comprising visual display, visual touch display, optical fiber,electronic, audible, printed, telephonic, wireless and digital symbols.

7. A method for determining a distortion corrected magnetic heading as in claim 5 wherein said predetermined time period is less than about one second.

8. A method for determining a distortion corrected magnetic heading as in claim 5 wherein said two or more means for gravity field strength sensing are chosen from a group comprising gyroscopes, inclinometers and accelerometers.

9. A magnetic compass apparatus comprising: two or more magnetometer sensors; one or more means for gravity field strength sensing; a magnetic distortion correction algorithm; means for signal conditioning for the sensors wherein said meansfor signal conditioning comprises a finite-impulse-response digital filter with user-selective taps; means for processing; wherein the means for processing comprises at least one processor configured to apply a fitting function with parametersdetermined using least squares to correct a calibration setting for converting sensor data to gravity field strength readings and/or magnetometer readings: and wherein the means for processing comprises at least one processor configured to processreceived magnetometer data with a stability filter, to process received gravity field strength data using a minimum-tilt-separation filter, and to process magnetometer data and gravity field strength data using a median filter with a first-in-first-outbuffer to define a third set of data; and wherein the means for processing comprises at least one processor configured to process the third set of data with a recursive least squares soft-iron and hard-iron offset estimator comprising a first stageestimator and a second stage estimator; and wherein said recursive least squares soft-iron and hard-iron offset estimator further comprises predetermined or user selectable initialization values; means for information storage storing at least a portionof the magnetic distortion correction algorithm; at least one temperature compensator wherein the at least one temperature compensator processes magnetic sensor data; a means for starting and stopping a calibration procedure; and means forcommunicating.

10. The magnetic compass apparatus of claim 9, wherein said magnetometer sensors comprise magneto-inductive sensors.

11. The magnetic compass apparatus of claim 9, wherein said one or more means for gravity field strength sensing are chosen from a group comprising gyroscopes, inclinometers and accelerometers.

12. The magnetic compass apparatus of claim 9, wherein said means for information storage comprises at least one from a group comprising volatile semiconductor, non-volatile semiconductor and hard disk memory wherein at least one from a groupcomprising gravity field strength reading, magnetometer reading, one or more sets of calibration settings, one or more sets of calculated pitch, roll, and tilt-compensated heading readings, initialization values, filtering algorithm, location code andidentity code are stored therein.

13. The magnetic compass apparatus of claim 9, wherein said means for communicating comprises at least one interface device chosen from a group comprising visual display, visual touch display, keyboard, signals via hard wire, Bluetooth™,video, voice, RF, optical fiber, telephonic, wireless and digital symbols.

14. The magnetic compass apparatus of claim 9, wherein said means for processing and said means for signal conditioning are one or more processors resident on one or more integrated circuit chips.

15. The magnetic compass apparatus of claim 9, wherein said means for processing and said means for signal conditioning comprise at least one software program.

16. The magnetic compass apparatus of claim 9, wherein said magnetometer sensors and said means for gravity field strength sensing may be sensing continuously.


이제 마지막으로 개발하면 되는 여러 참조 자료들 중에 선정된 지자기센서 소프트웨어 알고리즘 프로젝트 자료.

8개월동안 기나긴 기간동안 연구&개발을 해왔던 프로젝트를 종지부를 지을 수 있는 계기가 되길-

처음에는 무엇을 할지 막막했는데, 이제는 익숙하고, 내가 다룰 수 있는 기술이 되어버렸다.

자~ 정상이 저기 앞에 보이기 시작 했으니, 조금만 더 노력하고, 최선을 다하자!
반응형
반응형
요즘 다루고 있는 가속도 센서-

원래 우리팀 내부적으로 VTI 가속도 센서를 사용하고 있었는데,

지난 주에 상무님께서 갑자기 던져주신 가속도 센서-


처음에는 I2C Slave Address를 문제를 발견 못해서, 2일이나 까먹었다~ -.-;

진짜 별것도 아닌 문제를 가지고.. ㅜ.ㅜ

(Slave Address : 38h 에서 왼쪽으로 LSB 1bit만큼 Shift 해야한다는... ㅜ.ㅜ 그래서 결국 70h로 하니까 되더구만!)

내가 가지고 있는 STM32 Library 소스에서 다르게 받아 들여야 한다는 것을 체감했다는.. ^^;

아무튼 지금은 뭐,

BMA150 가속도 센서 그 자체의 데이터가 예쁘게 잘 나오고 있어서,

기분좋은 주말을 맞이하며 퇴근을 할 수가 있다는.. ㅋㅋ




다음주에는 Titl 보정을 통해서, 우리가 개발하고 있는 지자기 센서랑 융합하여 6축 센서를 구현해봐야겠다~

지금은 아무것도 모르지만, 하다보면 잘 되겠지??

아무튼 화이팅!!!




p.s. BOSCH BMA150 가속도 센서 데이트시트 첨부!

반응형

+ Recent posts