Kelvin Cardona's profile

Industrial Project with Extended Reality

Industrial Project with Extended Reality Kelvin Cardona

Scrum Master
PROYECT DESCRIPTION
The objective is to develop a HoloLens application that communicates and visualizes telemetry data from the MXCHIP IoT DevKit using Microsoft Azure and Unity for deployment.
Application
The application is a holographic dashboard that displays telemetry data from the following sensors on a Hololens2 headset for a racing car driver:

   1. Motion sensor                                                       For speed visualization.
   2. Magnetometer sensor                                          For geographical position of the car.
   3. Pressure sensor                                                   For tires' pressure control.
   4. Temperature and humidity sensor                     For motor's temperature control.
TASKS / CONTRIBUTION
SPRINT 1
1. Set up ScrumFast​​​​​​​
I created a project called 'XP2' in ScrumFast to manage the project based on Scrum methodology principles. After that, I added the team members and the product owner of the project. I also created the entire project backlog and the required sprints. Finally, I contributed by generaly managing the project. This included adding tasks to each print during sprint planning meetings.
2. Selection of the scrum master​​​​​​​
I participated in a team task when the team member who would be the scrum master was selected. The team decided that I was the scrum master of the project.
SPRINT 2
1. Contributed with application ideas and determination​​​​​​​
When the team had to generate ideas for the application that we were going to build, I participated giving some of them. One of the ideas I contributed was to create an application for surgeons that would display the patient's data in a Hololens2 headset during surgery.

In the end the team decided to go with the application described above. I also had the chance to contribute with the comparison of the ideas to choose the one to be built.
2. Unity and MRTK installation and working with learning paths​​​​​​​
To build the application, the game engine Unity and the mixed reality and augmented SDK MRTK were required. Since there was no expertise in Unity nor in MRTK within the team members before the project started, one of us had to go through the learning paths. I had the opportunity to contribute by being the first to install it and working with it, so the rest of the team could focus on other important tasks.
Unity tutorial series for XR Immersive Analytics App Dev in UnityLinks to an external site.
The learning path completed was the tutorial "Unity tutorial series for XR Immersive Analytics App Dev in UnityLinks to an external site". The first goal of the tutorial was to set up the template scene for Universal Render Pipeline, as shown in the following image.
After this, the task was to build a custom scene where an game object represented abstract data visualization handled with a control panel with buttons to make it appear and disappear, make the object's handlers appear and disappear, and changing the form of the game object. 
The following image shows part of the script that handles this scene.
SPRINT 3-4
1. UnityWebRequest
During the third sprint I wrote the first team's script which was intended to get UnityWebRequest working. This was done to get the telemetry data from Blob Storage to Unity. In this first attempt the data was just printed out in the Unity Editor's console.

After a lot of work, this Script was finally used to get the data and successfuly parse the JSON file to get the temperature data to Unity. The data was also printed in the scene in a textmesh object which in the end, and with the team's pariticipation, became the pressure data display.
In the first finilized version the data appeared when clicking on one button of the panel develped in the second tutorial of the learning paths. This means that the application was developed upon this scene I built with the tutorial. With the team's work, the data was then gotten automatically to Unity, without the button of the tutorial being required to be clicked.
SPRINT 5
1. Building of the Temperature Gauge functionality of the application
During sprint number 5, the team worked a lot with Unity graphics, and I focused on two main functionalities of the application we developed. The first of these functionalities was the temperature gauge. The first attempt of the temperature gauge worked without being updated with the telemetry data. However, it was developed to be adjusted with the temperature data from the IoT DevKit. Some screenshots are shown below.
It's good to mention that the image above presents the initial position of the the temperature gauge, which might not coincide between the temperature label and the position of the arrow.
2. Building the Compass functionality of the application
The second functionality with which I contributed the team was the Compass functionality. This functionality was intended to use the magnetometer data from the IoT DevKit. In the end this functionality did work with telemetry data but some characteristics could not be confirmed, for which we didn't implement it in the final version. The version of this funcionality that worked correctly used the main camera to update the position of the compass. The following are some screenshots of the graphics and the script that handles it.
During the building of these two and the other two functionalities a lot of issues arose. This required the entire team's participation for problem-solving. I took a lot of responsibility on the functionalities I developed, testing them and proposing solutions for the problems faced.
3. First deployment test and final deployment attempt
Finally, during this last sprint, I contributed by leading the first deployment test and participated in the final deployment attempt.

The first deployment test was done with a scene set just for it. This scene is the same as the first tutorial done. It can be seen in the image above that it was named "Deploy" as a test application for trying the deployment in HoloLens 2.
Unfortunately, the final deployment attempt was not successful, for which there is no image to show. This final attempt included the final version of the entire application.
IMPACT AND SELF-ASSESMENT
SPRINTS 1-2
Impact
My biggest impact on the team during these first sprints has been the capacity to work independently. I took great deal on learning about Unity and C# so that the rest of the team could focus on the setting of the input section of the pipeline. I also took responsibility for the Scrum framework for the team, setting and updating Scrumfast as a Scrum master.
Self-assessment
What was good: I took the initiative on the setting up of the Scrum framework for the team. I also took the initiave on working independently to learn about Unity and C#, which helped the team focus on other important and time-demanding tasks.

What could have been better: I could have been more proactive in devoted more time to understand C#, to be prepared for future sprints. I also think I could have taken more initiave and leadership within the team for us to coordinate better, specially during sprint to.
SPRINTS 3-5
Impact
During these final sprints, my impact on the team's performance was a lot bigger than in the first sprints. During this sprint I helped the team understand the functioning of Unity and C#. I also provided a base scene to start working in Unity. I focused on two of the graphics developed, and one of them was part of the final version of the application. I also believe to have provided good ideas to solve problems. For example, I managed to make UnityWebRequest work for the first time in the team. I also took ownership for the deployment part of the application.
Self-assessment
What was good: The proactiveness of learning for the team to be prepared for future tasks. The ownership of the tasks to perform. The initiative of performing some tasks that needed to be done.

What could have been better: I think I could've coordinated better with the team. Also, as in the first sprints I didn't took the leadership to help the team coordinate and work more efficiently in timely manners.
Challenges
SPRINTS 1-2
The greatest challenge I faced during these first sprints was getting stuck with understanding C# as a programming language. Before this project I had just worked with Python only, and had been oblivious to other programming languages. This made it required that I spent a lot of time to understand it.
SPRINTS 3-5
During these final sprints, more challenges were facen. For example, the learning curve for UnityWebRequest was a bit too long. I faced issues of not making the data show up in Unity. In the end, I managed to solve the problem, and with the help of the professor, this issue was solved.

Another big challenge had to do with the Compass fucntionality. The team couldn't confirm if the north that the compass was pointing towards was the actual north. We couldn't figure out how to confirm this, which led us to not include the Compass functionality in the final version of the application. This means that, unfortunately, this challenge was not solved.

The final challenge I faced with the team during these sprints had to do with the deployment. When attempting to deploy the final version of the application, we couldn't figure out why the application didn't display the scene we developed. This issue, unfortunately, was also not solved.
Learnings
SPRINTS 1-2
1. Usage of Unity and MRTK
During this project I've had the chance to learn how to setup a Unity project using the Mixed Reality Toolkit to develop applications for Hololens2. I've also had the chance to learn how to create a general (for MR/AR or not) project in Unity. Finally, I've had the chance to learn how to add prefab game objects in a project, and move them using virtual hands.
SPRINTS 3-5
1. Use of Unity and coding in C#
During these sprints I developed myself even more in the use of Unity to build scenes for games and applications. I also learned a lot about coding in C#. I think that these final sprints helped me develop the most on this final coding ability. I even managed to transfer a lot of knowledge to the rest of the team. 

About the building of the scenes, I learned how to build graphics for this type of application, and how to connect backend to frontend.

Finally, I would say that I learned a lot about problem-solving in C#. This is not a minor aspect, since every project faces issues everytime.
2. Deployment in HoloLens 2
I also learned how to deploy applications from Unity to HoloLens 2. This includes the building and the debugging part. This was completely new for me, and even if we struggled to deploy, I believe I learned correctly how to do it, since I could lead the team in the final attempt.
3. Team coordination
Even if team coordination was not the best for our group, I believe we all learned the lesson. We now know that it is required that all team members take a huge amount of leadership, and that planning of working sessions and meetings should be done in advance.
GROUP FEEDBACK AND PEER REVIEW
SPRINTS 1-2
1. Group Feedback
Ifeoluwani's feedback:
"Kelvin is a great team player and enthusiastic about reaching the group's goals. He communicated effectively and shared ideas in developing an application for the group project. He was selected as the scrum master and immediately started fulfilling his roles. He took responsibility of the Unity application, installed it and started familiarizing with the learning paths earlier than the rest of us.His positive mindset also helped us scale through challenges as a group."
Ludvig's feedback:
"Is very involved in discussions and decisionmaking. But in terms of work done during this period, he was working on unity separetly from the rest who were working on the pipeline. Giving us not much to comment on."
2. Peer review
Ifeoluwani's review:
Kelvin has a proactive approach which is evident in taking early responsibility for installing Unity and MRTK. He listened to the ideas of others while he had his own opinions during the process of coming up with an application for the group. He is a good team player.
Ludvig's review:
"At this point in time there has been very little collaborative work done with Kelvin. He has actively been participating in discussions and the planning out the project. Actively comming up with ideas and brining up possible painpoints. But half of his work has been individual giving me not much insight at this point."
SPRINTS 3-5
1. Group feedback
Ifeoluwani's feedback:
"Kelvin has shown remarkable progress and commitment in the Unity learning paths, completing them effectively. He took the initiative into C# development and the created the first script utilizing Unity web requests. Notably, Kelvin took charge in building the compass without telemetry data. Additionally, his collaborative efforts in constructing the temperature gauge, with a focus on graphics and active participation in coding was impressive. Kelvin demonstrated thoroughness by testing functionalities in Unity game mode and actively engaging in problem-solving sessions related to coding challenges. His significant contributions were evident during both the initial and final deployments, where he played a pivotal role."
Ludvig's feedback:
"The most independent worker of the group. By the time I moved from working on the pipeline, the base of the project was already up and running. He was very good at getting me up to speed regarding what he had done and what needed to be done. For the rest of the project he was very active in any coding that was done."
2. Peer review
Ifeoluwani's review:
"It's worth acknowledging that Kelvin carried a substantial workload in Unity and that he has a solution oriented mind set which made a considerable impact on the project's success. His dedication and proficiency also make him a valuable asset to the team."
Ludvig's review:
"By now there has been a significant amount of collaborative work between us. Kelvin is the type to sit down and do his own work, but he is not the type that driver the group to work. He is, however, someone you can rely on getting his work done and one time, and is always willing to work if called upon."
ETHICS CONSIDERATIONS, BENEFITS, LIMITATIONS, AND SYSTEM REQUIREMENTS
ETHICS CONSIDERATIONS
1. The designers should consider not blocking the field of view of the driver.
2. It might be important to consider that driving with a headset could be a safety risk.
3. Not being that different from a dashcam might mean that you could record people on video, which not everybody would agree with.
BENEFITS AND LIMITATIONS
Benefits
1. Hands-free and heads-up display of critical car data.
2. Serves to a wide range of car drivers, including racing enthusiasts and everyday commuters.
3. Application's interface and functionality can be customized to suit individual driver preferences.
Limitations
1. Limited field of view of the HoloLens 2.
2. Accuracy and real-time nature of the telemetry data from the DevKit may be subject to latency or transmission delays.
3. Maintenance of the HoloLens 2 hardware and software components, as well as the integration with the DevKit, might be needed.
4. The limited battery life makes it unsuitable for prolonged driving.
SYSTEM REQUIREMENTS
1. A HoloLens 2 device.
2. An MXChip IoT DevKit.
3. Internet connection.
Industrial Project with Extended Reality
Published:

Owner

Industrial Project with Extended Reality

Published: