The ninth week of my internship.
I have been focusing on the software portion of my product for the past two weeks. Finally i have been able to get the object to move in the Unity 3D with little or no drifting during the use of the MPU 9150. The past few weeks i have been researching on the equation however there is another way of doing so by filling the buffer of the MCU (micro controller unit) so that the stability of the object would increase. The directions of movements are also correct and i finally got a code working in the way that i want mine final product to do or act.
There has been a part that is missing from my progress which is the real actualization part of my product, i have been focusing on the software and mostly neglecting the hardware part. I spent the other half of the week getting my hands dirty to start doing my product. I started doing the soldering of the Blend Micro board on the strip board. I then carried on soldering the switch on the strip board and to ensure that the switch works. The information that i learned in Polytechnic really helped me alot but i had to practice more as i have not been doing any soldering since the last semester. I then planned how to solder on the remaining parts of the product.
On Friday, we also met up with the mentor of my Lean LaunchPad group, Mr Kang Choon Seng, the Senior VP/ Head, Services BU. Both my supervisor and i met up with him in the office and we discussed about our product. we discussed on the feasibility of our product and whether there is a need in the market for the product. We also discussed which field we should go into, entertainment or health and etc. and which market contains the most opportunities and has a middle to low barrier of entry. Since the LLP programme will not start till January, thus we decided to discuss further in depth when the official thing started. He encouraged us to continue working on the product as it has great potential and we should work on it. He also said that we could ask for his help or opinion if we needed any of it. He said he could help us with the communication of the sensor to the cloud or computer.
This sums up the ninth week of my internship.
Monday, 29 December 2014
Thursday, 18 December 2014
internship week 8
The eighth week of my internship here at NUS.
Last week, we used a code which was based on the basic Euler angles of the object in real space. By calculating the different accelerometer and gyroscope values on their respective x, y and z axis resulting in roll pitch yaw as mentioned last week. However the code was too unstable for my application thus i embarked on a journey to find another of such code which is more stable. Thus i saw a video online regarding a HMD head tracker device which was what i wanted with my device. They used another program named FREEPIE which was a programmable input emulator which was able to read the ahrs data from the 9dof( nine degree of freedom and it would act accordingly to the movement of a mouse on the computer. I then begin researching and found many codes online however i could not get most of it to work as due to many varying reasons such as different Arduino IDE versions to the lack of library resources, I then tried to get the algorithm in the codes as it may be very helpful to our super jittery code which we were using currently. I then recorded it down so that i could provide it as a reference to the undergraduate when he comes into the office on Wednesday.
I worked with him when he came into the office. We were both helpless on how to get the code going as we could not find any useful sources online. Most of it was either too jittery, too unstable or in some binary output values which we would not understandable to us. We both tried to understand the algorithm within but to no avail. We knew we ould not use Euler angles as it would result in a problem of Gimbal Lock, which is the locking of any two angles in the rotation axis and rendering the last available axis useless no matter where it turns. The original code that we use resulted in crashes when we turned too much too a certain degree example too much to the left. I was not too good with the programming portion as i really could not understand some of the codes online. We both decided that we would continue on with our individual research and would meet up again next week to discuss about any new finding in the code.
Thus i could not touch much of the software part, i then started developing the hardware portion of my project. My supervisor advised me to put an equal amount of effort and time on both the hardware and software portion as it was both equally important, he also told me to manage my time so that i do not put too much focus on a single portion. I then started designing and decorating my 3d printed casing, My supervisor provided me with a can of spray paint and i started using it. I found ot that once dried the spray paint would give a matte finishing which was not something i wanted, I wanted a more glossy finish to it. I also found out that spray paint would not spread out evenly on uneven surfaces thus i decide to hand paint it myself with acrylic paint. Without the materials, i went down on Friday to the Artfriend at Bras Besah to get the glossy finish and paint. i decided to leave the paining to next week s it would take time for the object to dry.
I believe the software problem would not be too huge of a a problem as many people are already doing it online thus i believe with the right code, i would be able to get mine working as well. The hardware portion was also easy as it was just the painting of the external case. I believe that my product is progressing well. I inten to start on the circuitry of the product next week. That sums up my eighth week here. Half of my internship is over and i look forward to the second half of it. I must complete my work before the end of my internship.
Last week, we used a code which was based on the basic Euler angles of the object in real space. By calculating the different accelerometer and gyroscope values on their respective x, y and z axis resulting in roll pitch yaw as mentioned last week. However the code was too unstable for my application thus i embarked on a journey to find another of such code which is more stable. Thus i saw a video online regarding a HMD head tracker device which was what i wanted with my device. They used another program named FREEPIE which was a programmable input emulator which was able to read the ahrs data from the 9dof( nine degree of freedom and it would act accordingly to the movement of a mouse on the computer. I then begin researching and found many codes online however i could not get most of it to work as due to many varying reasons such as different Arduino IDE versions to the lack of library resources, I then tried to get the algorithm in the codes as it may be very helpful to our super jittery code which we were using currently. I then recorded it down so that i could provide it as a reference to the undergraduate when he comes into the office on Wednesday.
I worked with him when he came into the office. We were both helpless on how to get the code going as we could not find any useful sources online. Most of it was either too jittery, too unstable or in some binary output values which we would not understandable to us. We both tried to understand the algorithm within but to no avail. We knew we ould not use Euler angles as it would result in a problem of Gimbal Lock, which is the locking of any two angles in the rotation axis and rendering the last available axis useless no matter where it turns. The original code that we use resulted in crashes when we turned too much too a certain degree example too much to the left. I was not too good with the programming portion as i really could not understand some of the codes online. We both decided that we would continue on with our individual research and would meet up again next week to discuss about any new finding in the code.
Thus i could not touch much of the software part, i then started developing the hardware portion of my project. My supervisor advised me to put an equal amount of effort and time on both the hardware and software portion as it was both equally important, he also told me to manage my time so that i do not put too much focus on a single portion. I then started designing and decorating my 3d printed casing, My supervisor provided me with a can of spray paint and i started using it. I found ot that once dried the spray paint would give a matte finishing which was not something i wanted, I wanted a more glossy finish to it. I also found out that spray paint would not spread out evenly on uneven surfaces thus i decide to hand paint it myself with acrylic paint. Without the materials, i went down on Friday to the Artfriend at Bras Besah to get the glossy finish and paint. i decided to leave the paining to next week s it would take time for the object to dry.
I believe the software problem would not be too huge of a a problem as many people are already doing it online thus i believe with the right code, i would be able to get mine working as well. The hardware portion was also easy as it was just the painting of the external case. I believe that my product is progressing well. I inten to start on the circuitry of the product next week. That sums up my eighth week here. Half of my internship is over and i look forward to the second half of it. I must complete my work before the end of my internship.
Thursday, 11 December 2014
Internship week 7
The seventh week of my internship here at NUS
I begin the software designing part for my product. What i had to do was to find some way to communicate between the arduino IDE and the Unity 3D application so that icould move a virtual object by moving my product.
The first few days i researched on the various ways to do so. Getting different codes from online sources such as Github and even the Arduino forum so that i could print raw data out from my MPU 9150 such as accelerometer, gyroscope and magnetometer data so that i could use it for further development and coding into the Unity 3D. I found out some things was not as simple as it seems as the user may be using a certain version or a certain library which was available at the moment thus for you to be able to get the same results, you would have to download all the separate libraries. I ended up with a whole lot of different libraries from various users on Github. Slowly but eventually, i found the right code to be able to print the raw datas.
i then carried on researching for the way unity 3D reads the information provided and found out that there were many methods but however transferring data serially was the best option forward as the information tend to be the most reliable as compared to sending it over the air via Bluetooth. I then started to research on how to compile a code which was able to fit my application. I was totally clueless as i really did not know how to start. Fortunately, there was an undergraduate which was also helping my supervisor at the same time and he was from the faculty of computer programming in NUS. M supervisor told me to work with him to come out with a code so that i could get the desired effect. His help was greatly appreciated i could finally get a start on the programming. By using simple equations we could calculate the roll, pitch and yaw which were values used to calculate the rotation of the object.
However after finally getting it to work, we found out that there was something wrong with the code such that when we tilt the MPU 9150 to the left and right, it would give different variation on the Unity 3D image. Also the image were quite unstable as the raw data keep changing irregularly. We then proceeded to solve the problem in the code. I found that there were errors in the code he used and we edited that specific line to get all the orientations working in the right directions. The other problem had to pushed to next week as he would only come to the office on Wednesdays and Thursdays.
This sums up my week at NUS as the coding really spend up a lot of my time, from researching on the different algorithms to troubleshooting the code so that it is accurate. It was also a new learning experience for me as we had very little exposure to cross platforms programming such as from Arduino to Unity 3D in our DEB modules. I dod not touch much of the hardware portion as i was kept busy in the office the whole week.
Slowly but steadily, the end product and its application is taking shape. This really encourages me to carry on to work hard so that the product would be a success.
Monday, 1 December 2014
Internship week 6
The sixth week of my internship here at NUS CUTE Center. Since the change of microcontroller board that i have mentioned last week, i have been busy downloading all the different libraries which is needed for the board and all the examples which will be needed for the sensors and screen to work. While downloading, i came across a website named codebender which is exactly like the Arduino IDE and it allows the user to program the microcontroller board however this website is unique such that the website downloads al the necessary drivers required for all the board that they support to work. They also support a wide variety of boards, from Arduino Uno and even the ATmega board. this greatly reduced the time which was required for me to download the installer and i was wondering why it took me so long to discover a website which was so useful. It also has its own existing library which contains the similar codes to the Arduino IDE. You may think i have to pay like a certain membership fee to be able to use this website however this website is also completely open source and free for all users, all you have to do is to have an account with them.
I also began soldering the header pins to the controller board but due to my lousy soldering skills, i accidentally damaged the board which my supervisor provided for me. That resulted in me going down to the local Singapore distributor of the board, Sgbotics. They provide a wide variety of microcontrollers to students and professionals who requires such technology. They even provide 3D printing machines. My supervisors were very understanding and did not reprimand me for my costly errors and told me they would cover the cost and i would be able to reimburse the costs of the board. I then heaved a sigh of relief as i thought i would have to pay for it myself as i was the person who damaged it.
By Thursday, i got the screen working and all the other sensors working as this board is an easier board as it is a more similar board compared to the Arduino. i was able to find codes and examples online which aid me greatly in doing the programming. I started to think of applications for my screen and the first thing that came to mind would obviously be a clock as this basically is a wearable technology. i started thinking of a way to get the time of the day however without using a RTC, real time clock module which would use up more ports and increase the size of the watch. Thus i started research and found out that it was able to get a serial timing to the Arduino as long as you connect it to a computer and thus i was able to get a digital clock to show the time of the day. In the following days, i will use it to display on the LCD screen.
As i was going back to Singapore Polytechnic for napfa on Friday evening, that basically concludes my sixth week of internship here. Hope that everything will turn out fine and i would have something to handover by the end of my internship here.
Subscribe to:
Comments (Atom)