자세한 건 아래 링크로~ ^^ (무단 재배포하면 저 잡혀가요~ >.<)
파트론, 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.
STM32 ARM series 이클립스(Eclipse) 내 GCC 컴파일 개발 환경 구축 (0) | 2020.01.29 |
---|---|
[STM32F10x] printf() 사용에 따른 default define 및 이슈 (0) | 2020.01.02 |
Magnetic Sensor Evaluation Demo Program [MFC Version] (0) | 2011.03.08 |
Method and device for calibrating a magnetic sensor (0) | 2010.08.19 |
Automatic calibration of a three-axis magnetic compass (0) | 2010.08.19 |
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
STM32 ARM series 이클립스(Eclipse) 내 GCC 컴파일 개발 환경 구축 (0) | 2020.01.29 |
---|---|
[STM32F10x] printf() 사용에 따른 default define 및 이슈 (0) | 2020.01.02 |
Magnetic Sensor Evaluation Demo Program [MFC Version] (0) | 2011.03.08 |
Characteristics of Great Programmers (0) | 2010.10.01 |
Automatic calibration of a three-axis magnetic compass (0) | 2010.08.19 |
STM32 ARM series 이클립스(Eclipse) 내 GCC 컴파일 개발 환경 구축 (0) | 2020.01.29 |
---|---|
[STM32F10x] printf() 사용에 따른 default define 및 이슈 (0) | 2020.01.02 |
Magnetic Sensor Evaluation Demo Program [MFC Version] (0) | 2011.03.08 |
Characteristics of Great Programmers (0) | 2010.10.01 |
Method and device for calibrating a magnetic sensor (0) | 2010.08.19 |
[가속도 센서/ANALOG DEVICES INC] ADXL346 (0) | 2011.06.22 |
---|---|
소형 커넥터 [히로세, HRS_DF20_Series Connector] (0) | 2011.06.21 |
STM32F103시리즈 Board에 AT24C128/256 EEPROM 기능 개발 (0) | 2010.05.03 |