I was assigned to A*STAR SCIENCE AND ENGINEERING INSTITUTE. The Agency for Science, Technology and Research (A*STAR) drives mission-oriented research that advances scientific discovery and technological innovation. They play a key role in nurturing and developing talent and leaders for their Research Institutes, the wider research community, and industry.
Their research creates economic growth and jobs for Singapore. As a Science and Technology Organisation, they bridge the gap between academia and industry in terms of research and development. In these endeavors, they seek to integrate the relevant capabilities of our research institutes and collaborate with the wider research community as well as other public sector agencies towards meaningful and impactful outcomes. Together with the other public sector entities, they develop industry sectors by:
Their research, in addition, also contributes to societal benefits such as improving outcomes in healthcare, urban living, and sustainability. These serve to enhance lives in Singapore and beyond.
They aim to be a global leader in science, technology and open innovation to bring benefit to the economy and society.
We were to create a computer program that would control the robotic arm that they have in the office to play an interactive game of our choosing. We were supposed to create a program that would have a simple enough user interface for any layperson to pick up and play. We would be creating a demonstration video and a poster of our project as our deliverable.
After our initial tour of the A*STAR office, we were given a couple of briefings to lay down the rules and brief us on our project. By the end of the first day, we were given a task to research on what robots are and to discuss on what game we would try to make the robot do. We were given 2 days to do this before our next meeting with our external mentors.
For our project, we first had to learn basic python and a few other prerequisite knowledge to begin coding the robot so we spent the remainder of the first week learning python, OpenCV and URX.
Using our newfound knowledge, we began to create a gameloop for connect4 which was our initial project.
By the end of week 2, we managed to create a digital graphical connect4 with a fully functioning "AI" player which had varying difficulty levels.
However, on Monday of week 3, our group realised that we could not continue with connect4 as our project as we did not have a connect4 board for the robot arm to play. That's when we decided to change our project to a claw machine.
We spent the rest of week 3 trying to research online and find sample joystick code to adapt to work with a keyboard. However, the online solutions were not useful as they could not be adapted to work with a keyboard. Seeing the lack of any solutions online, we decided to try and piece together our existing knowledge to try and create our own joystick code to work on a keyboard. We ended up making a keyboard joystick code and it had some flaws. After some discussion with our mentors, we found out a solution to the problems that our code was facing and we then did our playtesting and finished up our demonstration video which was our deliverable.
The learning objectives from this entire attachment were resilience and willingness to learn. We managed to achieve both our learning objectives as even though we were forced to cancel our initial project and had major flaws in our new project that we could not seem to fix, we were still able to push through and finish our project. We also were constantly learning from our peers from other groups who did not do the same project as us but they had knowledge that was useful to us and we tried our best to learn as much as we could when they taught us and implemented it in our project to improve it.
The steps to completing the project are to research and learn the prerequisite knowledge to start coding the project, such as python, OpenCV and URX. The next step is to create an outline for how the code will look like and then plan on how to fulfill each section of the code. The next step is to actually write out the code and execute the plan. After this is the most important step in the entire process which is testing and debugging. The reason that this step is so important is because it is the phase where you find out mistakes in the code and fix them, this step also requires a lot a of concentration and patience as this can be a frustrating experience especially when you repeatedly get errors for reasons that are seemingly trivial. The rationale for following such a process is so that the work gets done in an organised manner and makes it easier to coordinate with the other group members who are working on the same project as you.
1. How to code in Python, especially in OpenCV and URX, which I would not have normally been able to come across and discover on my own. These skills are useful so that I can now appreciate the services that I use daily such as a webcam
2. How to code a robot/ How the robot works. This is a good experience as I now know how robots are controlled and how precise the programmers have to be to control the robots perfectly and also how difficult it is. I have gained a deeper appreciation for the people who program robots.
3. How to plan and work with a group on a project. Coordinating a project with my groupmates was a new skill as I have never had to think of and plan a project from scratch on my own and this was definitely a first for me.
1. The implementation of our computer code to the robot. The code that we write on our computer is actually wrapped into another programming language called C++ and is sent over to the robot via a TCP/IP connection, basically over an ethernet cable.
2. The office environment and how it is designed to increase productivity in the people who work there. The conducive learning environment combined with the fact that we each get a separate cubicle allowed me to do my learning and my work more efficiently.
1. Programming is difficult but rewarding. I have gained a newfound respect for programmers as what they do is very mentally straining as it requires a high level of intellect and concentration at the more advanced levels of programming.
Demonstration videos of the robotic arm claw machine working