Possibilities of optimising the Rubik s Cube solver

Size: px
Start display at page:

Download "Possibilities of optimising the Rubik s Cube solver"

Transcription

1 Possibilities of optimising the Rubik s Cube solver Matura paper Kantonsschule Sargans Kevin Jörg, 4bNPW Supervisor Thomas Büsser Submitted at: 6th January 2014

2 Index II Index 1 Introduction Motivation and topic choice Questions and target of the matura paper Structure of the matura paper Rubik s Cube About God s number Solving Methods Two-Phase-Algorithm About The robot Analysis Hardware Software Building the own robot The solving algorithm The program The robot Conclusion Bibliography... V 7 List of figures... VI Appendices Source code of the program Declaration of authenticity... 14

3 Introduction 1 1 Introduction 1.1 Motivation and topic choice In the beginning of 2013 I got a Rubik s Cube into my hands. I tried to solve it, but it didn t take a long time until I gave up. Because I really like physics I was always thinking about doing my matura paper in the field of it. But then because I was unable to solve the Rubik s Cube I had the idea to build a robot that could do it. I was always interested in robots so it would be a quiet interesting matura paper. I decided to ask Mr Büsser who teaches informatics to be my supervisor. He also found the idea interesting and gave me the ok. After I knew my topic for this matura paper I started researching. It didn t take a long time until I found Hans Andersson s homepage and the model Tilted Twister 2.0. I started straight away rebuilding this robot according to the manual I found on this page. When I ended building it I gave it a twisted Rubik s Cube and started the robot. It started reading in the first face, turned the cube around and read in the second face. But when it tried to turn it the second time it failed. I started again, but again it failed to turn the cube properly. Furthermore in version 1 of the Tilted Twister robot only a light sensor is used and in version 2.0 a colour sensor. According to Hans Andersson it s possible to read in the colours with a light sensor by changing some of the stickers. Is it possible to read in the colours with the light sensor without changing the stickers of the cube? Because my Rubik s Cube was still unsolved I decided to optimise the Rubik s Cube solver. 1.2 Questions and target of the matura paper In the beginning of the matura paper I had the following questions: Is it possible to program a Lego Mindstorms robot in Java and have a fluent interaction with a Java program running on a computer? Is it possible to identify colours correctly with only a brightness sensor? Is it possible to optimise the construction of the Rubik s cube solver? The target of this matura paper was: A Lego Mindstorms robot that is able to solve a standard Rubik s cube should be generated. The algorithm to solve the cube should be written by myself in Java. The robot should read in the cube automated, calculate the solution and solve it. Parts of the robot should be optimised.

4 Introduction Structure of the matura paper Rubik's Cube Two-Phase- Algorithm Analysis Software Hardware Building the own robot The algorithm The program The hardware

5 Rubik s Cube 3 2 Rubik s Cube 2.1 About The Rubik s Cube was invented in 1974 by Professor Ernö Rubik. It s a three dimensional puzzle made out of plastic and sometimes also just called cube. Like its name says it s a cube consisting of six faces. Each face consists of nine so called facelets and can be twisted independently, which mixes up the colours. The cube is considered as solved when each face has a solid colour. The cube appears to consist of 27 smaller cubes called cubies. One cubie is invisible because it s in the middle. The other cubies have one, two or three visible sides, the facelets. There are 54 visible facelets. With twisting one side, the facelets get rearranged. All six sides can be turned 90, 180 or minus 90 degrees. The notifications for the twist of the sides are: U, L, F, R, B and D and stand for up, left, front, right, back and down. Just the capital letter stands for a 90 degrees clockwise twist. For 180 and minus 90 degree twists there are modifiers. A 2 after the capital letter stands for a 180 degree twist. For example U2 means twist the upper side by 180 degrees. The modifier for minus 90 degree is a (apostrophe). For example R means twist the right side 90 degree counter clockwise. (Ullah, 2012, S. 45/46) 2.2 God s number It doesn t matter how a Rubik s Cube is twisted, in any case it can be solved with maximum 20 manoeuvres. This was only proven in July 2010, 36 years after the cube was introduced. Because it took so long to proof what the maximum number of manoeuvres really is, it s called God s number. It was proven by calculating the solution to all positions of the cube with about 35 CPU years. (Kociemba, 2013) 2.3 Solving Methods There are a lot of different methods to solve a Rubik s Cube, versions for human and for computers. Let s start with the ones for human. Basically the faster Figure 1: Solved Rubik's Cube Figure 2: Average number of faceturns to solve the Rubik's Cube they are the more algorithms have to be learned by heart. Most of the professionals use the so called Fridrich method. There are about 78 algorithms which have to be learned

6 Rubik s Cube 4 by heart. (König, 2013) The methods used by computers are completely different. One aspect is the length of the solution. The Two-Phase-Algorithm finds usually a solution that is only one to two moves longer than the optimal solution (Kociemba, 2013). Other algorithms like Corners First Method give a solution that is two to three times as long (Andersson, 2011). The other aspect is the required computation power. While it s possible to run a simple algorithm such as the Corners First Method on a Lego Mindstorms, it s impossible to run the Two-Phase algorithm on it. (Andersson, 2011)

7 Two-Phase-Algorithm 5 3 Two-Phase-Algorithm 3.1 About It was introduced by Herbert Kociemba in 1992 and is the algorithm that gives the shortest solution so far. It solves the cube in two steps. If you only apply the moves U, D, R2, L2, F2 and B2 the orientation of the corners and edges cannot be changed. Step one of the algorithm is to search for manoeuvres so that they can be solved by only applying U, D, R2, L2 and F2 in step two. It s done by iterating through all possible manoeuvres with increasing length. In phase two the same is done by only iterating through the moves U, D, R2, L2, F2 and B2. (Kociemba, 2013)

8 The robot 6 4 The robot 4.1 Analysis Before I started optimising my robot, I analysed what could be optimised. I split it up into soft- and hardware Hardware What does a robot need to solve a Rubik s Cube? First it should be able to recognise how the cube is twisted. Therefore it has to know the colour of every single facelet. To find the colour of a facelet a sensor is needed. One option is a colour sensor, there are two different ones available. One from Lego itself and one from a company called Hitechnic. Another option is a light sensor, which gives you the level of brightness. After knowing how the cube is twisted, it s possible to calculate a solution. When the solution is known, the sides have to be turned accordingly. And that s the difficult part. A Lego Mindstorms robot has only three motors and there are six sides that have to be turned. This leads to only Figure 3: Hitechnic Colour Sensor limited possibilities to build the robot. The colour sensor has also to be moved over the different facelets of one face, therefore one motor is already used for this. So the cube has to be moved and twisted by only two motors Software An important part of the software is the solving algorithm. There are a few possibilities that you can choose. Either you take one that gives a pretty long solution like an implementation of Corners First Method, but is able to calculate the solution on the Mindstorms itself or you take an algorithm like the Two-Phase-Algorithm which requires a better processor and more memory and therefore has to run on a normal computer. Another part of the software is controlling the robot. There are different programming languages the software can be written in. The graphical ones are not really suitable for bigger programs because they get not even remotely comprehensible. There is one called NXC, which stands for not exactly c, and there is Java.

9 The robot Building the own robot The solving algorithm I first wanted to write my own solving algorithm. After I did a lot of research on this topic I found out that the Two-Phase-Algorithm is the one that gives by far the best result. I tried to understand the mathematics behind it, but I soon had to give up, because it was just too difficult. Then I found that Herbert Kociemba provided a Java package with just a simple implementation of the Two-Phase- Algorithm on his homepage for download. I decided to use it. The way the cube is twisted has to be entered in a defined way. The faces have to be read in in the order U, R, F, D, L and B and the facelets according to figure 4. Also not the colour of a facelet is important, but the side it belongs to. Usually the algorithm keeps searching a solution that is shorter than a clearly defined number which is usually 21. If the cube is now twisted only a little and solvable with only for example 12 moves, the algorithm will still stop searching if he has a solution that is 21 moves long. So I put the method to search the solution into a loop to let the algorithm keep searching a shorter solution until there is no shorter solution possible or until a maximum time for which he is already searching is reached The program After I had built the Tilted Twister 2.0 and it didn t really work, I knew I had to change the arm that turns the cube and therefore would have to write my own program. When I had the Java package from Herbert Kociemba it was clear that I would have to write my program in Java. I took the option to just let the program run on the computer and control the robot via USB or Bluetooth. It works well and so one of the questions is answered. In the end the writing of the program was the biggest part of my matura paper. I decided to split up my program into three different parts. First the reading in of the cube, then calculation the solution and finally solve it. Figure 4: The facelets have to be read in according to this scheme I began to write very simple methods to move the cube. There are methods to rotate the cube on the turntable 90, 180 and minus 90 degrees and there is a method to turn the cube with the arm. With those procedures it s already possible to move the cube in every possible position. The next step was to read in the cube. I started with reading in one facelet. First I tried using only the standard light sensor. To distinguish between blue, red and green worked quiet well, but the difference between white, yellow and orange was just not big enough. Also if there is just one facelet read in wrong, the mistake is fatal, it s impossible to calculate a solution and the robot has to start from

10 The robot 8 the beginning again. If the chance to read in a simple facelet wrong is only 1 per cent, with 54 facelets the chance to have an error rises to 54 per cent. So I took the decision to use a colour sensor. My choice fell on the colour sensor from Hitechnic and not the one from lego because it has much more possibilities. The only negative aspect is that it needs more time until a colour is detected, so the cube always has to be stopped and it s not possible to just keep it rotating. The sensor is able to give out a number between one and 16, which represent different colours. This works well with the colours of the Rubik s Cube. The only problem was with red and orange, there was the same number for both of them. But also this could be fixed easily. The sensor has the possibility to give out the red, green and blue values separately. There is a significant difference in the green value between the red and orange facelet. So if the sensor gives out the colour number of red and orange, it checks the green value to decide what it is. The next method is to read in one face of the cube. The motor of the sensor and the motor of the turntable line up the cube with the faclets. Important to mind is in which order the facelets are read. After the face is read in, the sides of the facelets are added to a string. A string is a kind of variable which is able to store any characters and not just numbers. The next step is to read in the whole cube. The Two-Phase-Algorithm needs the sides of the facelets in a clearly defined order. First the top face is read in, then the right, front, bottom, left and finally the back. After the cube is turned, the next face might be read in from the wrong side and not according to the scheme. The way I turn the cube, one face is read in from the right side and two from a wrong side. So there are three different cases. I programed the robot to read in all the faces the same way but then the sides of the facelets are added to the string in a different order for the three different cases through three different methods. After all the sides of the facelets are known they are handed over to the solving method from Herbert Kociembas Two-Phase-Algorithm. The Two-Phase-Algorithm returns the solution in a string. I split up the solving of the cube into the moves that are applied on the cube. To solve the cube it s important to know how the cube is standing. Therefore I made a variable for every side and gave them a number from 1 to 6. When the cube is rotated or turned, the variables get the value of the variable where this side was before. When a move gets applied, first the move itself is checked on modifiers. Then it s checked where the face, which has to get twisted, is located right now. If the right side has to get twisted and is located in the front, the robot just acts like it would twist the front. With this the cube doesn t has to be moved unnecessarily always back to a standard position after a face was twisted. This procedure is repeated until the cube is solved.

11 The robot The robot I found out in the analysis that there are only limited possibilities to build a Rubik s Cube solver due to the limitations of Lego Mindstorms. After I had built the Tilted Twister 2.0 and it didn t manage to turn the cube, I tried different angles how the robot was standing. Also I noticed differences with different battery voltage. I never got it to work well, so I decided to change the arm. I had already seen pictures of a robot called Mindcuber and found a manual how to build it. Its basic concept was the same like the concept of the Tilted Twister 2.0. There is a turntable, the colour sensor and the arm. But this arm is different than the arm of the Tilted Twister 2.0. I build just the arm according to the manual and mounted it on my robot. It was difficult to find the correct position, but after I found it, it worked well. I added a hook in front of the arm to always catch the cube when trying to turn it, reduced the play when twisting the cube with two half Lego unit wide parts and added two posts outside the arm to have a better side guidance. This minimises mistakes. Also now the robot doesn t need to be tilted anymore, therefore I could remove the legs and replace the brick. Now the robot consist of parts of the Tilted Twister 2.0 and the Mindcuber, but there are also parts I added to optimise the robot. Figure 5: A part to reduce play by half a Lego unit

12 Conclusion 10 5 Conclusion I managed to optimise the Rubik s Cube solver. From the hardware side my robot is a mixture between the Tilted Twister 2.0 and the Mindcuber. The important part, the arm, is like the one from the Mindcuber just with some additional parts to decrease play and minimise mistakes. From the software side my robot is different. My program runs fully on a computer and just controls the robot. I use the Two-Phase-Algorithm. The Tilted Twister 2.0 has the possibility to hand over the calculation to a computer and also use the Two-Phase-Algorithm, the Mindcuber doesn t have this option and calculates a longer solution on the brick. So my robot has parts in common with the Tilted Twister 2.0 and the Mindcuber, but there are also new parts. The result is a robot that is able to solve the Rubik s Cube with an only minimal rate of errors.

13 Bibliography V 6 Bibliography Andersson, H. (2011, Oktober 12). Tilted Twister. Retrieved from Kociemba, H. (2013, April 28). Kociemba. Retrieved from König, F. (2013, August 24). Speedcube.de. Retrieved from Ullah, S. A. (2012). Consequence of Schreier-Sims Algorithm in Solving Rubik's Cube. Saarbrücken: LAP LAMBERT Academic Publishing GmbH & Co. KG.

14 List of figures VI 7 List of figures Figure 1: Solved Rubik's Cube... 3 Figure 2: Average number of faceturns to solve the Rubik's Cube... 3 Figure 3: Hitechnic Colour Sensor... 6 Figure 4: The facelets have to be read in according to this scheme... 7 Figure 5: A part to reduce play by half a Lego unit All the figures have been created by myself.

15 Appendices 1 Appendices 1 Source code of the program ///// Rubik's Cube Solver \\\\\ // Matura paper Kantonschule Sargans // Author: Kevin Jörg // Supervisor: Thomas Büsser package com.mydomain; // Required from Lejos import org.kociemba.twophase.*; Herbert Kociemba, kociemba.org import lejos.nxt.motor; import lejos.nxt.sensorport; import lejos.util.*; import lejos.nxt.addon.colorhtsensor; public class RCS //// Defining Variables \\\\ int maxdepth = 22; // Sets the maximum amount of manoeuvre to start with. long timetosearch = 15; // Sets the maximum time to find a solution in seconds. // Variables for sides. They are used to know in which position the Cube is. int U = 1; int R = 2; int F = 3; int D = 4; int L = 5; int B = 6; int X = 0; // X is used to store the value of a side when it's reassigned. // Variables for facelets. They are used to save the colors of the facelets. String f1 = ""; String f2 = ""; String f3 = ""; String f4 = ""; String f5 = ""; String f6 = ""; String f7 = ""; String f8 = ""; String f9 = ""; /* * The first digit equals the color on top, the second digit equals the color in right. Used to assign the side which has to be turned to the proper cube position. * 1 = white U * 2 = red R * 3 = green F * 4 = yellow D * 5 = orange L * 6 = blue B

16 Source code of the program 2 */ String side = ""; // other Variables String side1 = ""; String cubestring = ""; String result = ""; String fresult = ""; String move = ""; String movemodifier = ""; boolean useseparator = false; long timesearching = 0; long timestart = 0; long timeend = 0; int maxtime = 15; int substringstart = 0; int substringend = 1; int substringstart2 = substringstart +1; int substringend2 = substringend +1; int lightvalue = 0; int red = 0; int blue = 0; int green = 0; //// Constructor \\\\ RCS() ReadInCube();// First the cube is read in. Calculate();// The solution is calculated with Herbert Kociembas two phase algorithm. SolveCube();// The cube is getting solved. //// Basic movements of the robot \\\\ void Rotate5() // Rotates the turntable by 5 degrees. Used to twist the Cube. Motor.A.setPower(30); Motor.A.rotate(-5); void Rotateb5() // Rotates the turntable by minus 5 degrees. Used to twist the Cube. The b in the name stands for back. Motor.A.setPower(30); Motor.A.rotate(5); void Rotate90() // Rotates the turntable by 90 degrees. X = F; // Reassigning the variables of the position of the cube. X is used to store the value of F. F = R; R = B; B = L; L = X; Motor.A.setPower(40); Motor.A.rotate(-90);

17 Source code of the program 3 void Rotateb90() // Rotates the turntable by minus 90 degrees. The b in the name stands for back. X = F; // Reassigning the variables of the position of the cube. X is used to store the value of F. F = L; L = B; B = R; R = X; Motor.A.setPower(40); Motor.A.rotate(90); void Rotate180() // Rotates the turntable by 180 degrees by applying twice Rotate90(). Rotate90(); Rotate90(); void Rotateb180() // Rotates the turntable by minus 180 degrees by applying twice Rotateb90(). Rotateb90(); Rotateb90(); void Rotate270() Rotate90(); Rotate90(); Rotate90(); void Rotateb270() Rotateb90(); Rotateb90(); Rotateb90(); void Turn() // Turns the cube with the arm. X = F; // Reassigning the variables. X is used to store the value of F. F = D; D = B; B = U; U = X; Motor.C.setPower(30); Motor.C.rotate(-245); // Rotates the arm from standard position to the opposite. The cube is half turned through this. Delay.msDelay(200); // Wait 200 ms to make sure the cube is settled. Motor.C.rotate(165); // Rotates the arm about 2/3 back. The cube is pushed back in the turntable and completely turned. Delay.msDelay(100); // Wait 100 ms to make sure the cube is settled. Motor.C.rotate(-68); // Pushes the cube on the front side of the cube down into the turntable. Delay.msDelay(200);

18 Source code of the program 4 Motor.C.rotate(148); // Rotates the arm back to standard position. Delay.msDelay(100); void Twist90() // Turns the turntable minus 95 degrees and then 5 degrees back. Does not change cube position variables. 95 degrees because of play in the arm. Motor.A.setPower(30); Motor.A.rotate(95); Rotate5(); void Twistb90() // Turns the turntable 95 degrees and then 5 degrees back. Does not change cube position variables. 95 degrees because of play in the arm. Motor.A.setPower(30); Motor.A.rotate(-95); Rotateb5(); void Hold() // Rotates the arm from standard position to the position to hold the cube in top and middle layer. Motor.C.setPower(30); Motor.C.rotateTo(-135); Motor.C.stop(); void Release() // Rotates the arm from standard position to the position to hold the cube in top and middle layer. Motor.C.setPower(30); Motor.C.rotateTo(0); //// Method to assign a color to a side public String LighttoSide() // Returns the side which the facelet belongs to in a string. Delay.msDelay(600); // Wait 500 ms to make sure that the sensor is not moving. ColorHTSensor color = new ColorHTSensor(SensorPort.S1); lightvalue = color.getcolorid(); // The method getcolortid() returns a number between 0 and 16 for different colors. green = color.getrgbcomponent(color.green); // The green value is used to distinguish between orange and red, because it's not possible to differentiate red and orange with getcolorid(). String side = ""; // Assign the color sensor values to the according side. if (lightvalue == 6) //Up, white side = "U"; if (lightvalue == 1) //Front, green side = "F";

19 Source code of the program 5 if (lightvalue == 4) //Back, blue "magenta" side = "B"; if (lightvalue == 3) //Down, yellow side = "D"; if (lightvalue == 0) if(green <= 45) side = "R"; // Because getcolorid() returns the same number for red and orange, the green value is checked to distinguish between them. else side = "L"; return side; // Returns the side. //// Method to read in one face \\\\ void ReadInFace() String testface = ""; // Variable to check if every facelet was detected. while (testface.length()!= 9) // Loop to check if every facelet was detected. testface = ""; /* The facelet variables have the following order on a face: f1*f2*f3 f4*f5*f6 f7*f8*f9 */ Motor.B.setPower(40); Motor.A.setPower(40); Motor.B.rotateTo(68); // Rotate to the middle facelet and get it's according side. f5 = LighttoSide(); Motor.A.rotateTo(-23); // Rotate the cube and the light sensor to the top right faclet and get it's according side. Motor.B.rotateTo(42); f3 = LighttoSide(); Motor.A.rotateTo(-113); // Rotate the cube degrees to get side of top left facelet. f1 = LighttoSide(); Motor.A.rotateTo(-200); // Rotate the cube degrees to get side of bottom left facelet. f7 = LighttoSide(); Motor.A.rotateTo(-62); // Rotate the cube and the light sensor to the bottom right faclet and get it's according side. Motor.B.rotateTo(98); f9 = LighttoSide(); Motor.A.rotateTo(-19); // Rotate the cube and the light sensor to the bottom middle faclet and get it's according side. Motor.B.rotateTo(88); f8 = LighttoSide(); Motor.A.rotateTo(-105); // Rotate the cube degrees to get side of middle right facelet. f6 = LighttoSide();

20 Source code of the program 6 Motor.A.rotateTo(-195); // Rotate the cube degrees to get side of top middle facelet. f2 = LighttoSide(); Motor.A.rotateTo(-157); // Rotate the cube and the light sensor to middle left faclet and get it's according side. Motor.B.rotateTo(51); f4 = LighttoSide(); Motor.A.rotateTo(0); // Rotate cube and light sensor back to standard position. Motor.B.rotateTo(0); testface += f5; testface += f3; testface += f1; testface += f7; testface += f9; testface += f8; testface += f6; testface += f2; testface += f4; System.out.println(testface); //// The following three methods add the facelet variables properly to cubestring. \\\\ void CubeStringC1() // Case 1. Used for side U. cubestring += f1; cubestring += f2; cubestring += f3; cubestring += f4; cubestring += "U"; // For the facelet with the Rubik's Cube Logo. cubestring += f6; cubestring += f7; cubestring += f8; cubestring += f9; void CubeStringC2() // Case 2. Used for side R, F and D. cubestring += f7; cubestring += f4; cubestring += f1; cubestring += f8; cubestring += f5; cubestring += f2; cubestring += f9; cubestring += f6; cubestring += f3; void CubeStringC3() // Case 3. Used for side L and B. cubestring += f9; cubestring += f8; cubestring += f7; cubestring += f6; cubestring += f5; cubestring += f4; cubestring += f3;

21 Source code of the program 7 cubestring += f2; cubestring += f1; //// Method to read in the whole cube. \\\\ void ReadInCube() ReadInFace();// Read in side U. CubeStringC1();// Add the read in facelets to cubestring. Rotate90();// Move the cube to get side R on top. Rotateb90(); ReadInFace();// Read in side R. CubeStringC2();// Add the read in facelets to cubestring. // Move the cube to get side F on top. ReadInFace();// Read in side F. CubeStringC2();// Add the read in facelets to cubestring. Rotate90();// Move the cube to get side D on top. Rotateb90(); ReadInFace();// Read in side D. CubeStringC2();// Add the read in facelets to cubestring. // Move the cube to get side L on top. ReadInFace();// Read in side L. CubeStringC3();// Add the read in facelets to cubestring. Rotate90();// Move the cube to get side B on top. Rotateb90(); ReadInFace();// Read in side B. CubeStringC3();// Add the read in facelets to cubestring. //// Calculate the Solution with Kociembas Two Phase Algorithm. \\\\ void Calculate() timestart = System.currentTimeMillis(); // Get the time when calculation is started. while (timesearching < timetosearch*1000) // The program will keep searching for a shorter solution after a solution is found for 30 seconds. fresult = result; //fresult is the final solution result = Search.solution(cubeString, maxdepth, maxtime, useseparator); // Get the solution by handing over the calculation to Herbert Kociebas Two Phase Algorithm. timeend = System.currentTimeMillis(); // Get the current time. timesearching = timeend - timestart; // Calculate for how long the solution is already beeing searched. if (result == "Error 7") // Stops the loop if the program runs into a Error 7. Error 7 means there is no better solution than already found. timesearching = timetosearch*1000; // Jump out of the while loop. if (result == "Error 8") // Stops the loop if the program runs into Error 8. Error 8 means timeout, no better solution found within the maximum time to search.

22 Source code of the program 8 while loop. timesearching =timetosearch*1000; // Jump out of the maxdepth = maxdepth -1; // Decrease search depth by one. //// Read out the next move from fresult. \\\\ String Getmove() move = fresult.substring(substringstart, substringend); // Read out one character from fresult. // Check if it's just a 90 degree clockwise turn or if there is a modifier that belongs to the move. if (fresult.substring(substringstart2, substringend2).equals("2")) // Checks if the next character is a two and therefore belongs to the same move. move += "2"; // The two is added to move. substringstart++; // All variables are increased by one. substringend++; substringstart2++; substringend2++; else if (fresult.substring(substringstart2, substringend2).equals("'")) // Checks if the next character is a dash and therefore belongs to the same move. move += "'"; // The dash is added to move. substringstart++; // All variables are increased by one. substringend++; substringstart2++; substringend2++; substringstart++; // All variables are increased by one. substringend++; substringstart2++; substringend2++; return move; // Returns move. //// Apply one move on the cube. \\\\ String Solve() int side2 = 0; // Local variable side2. Used to get assign a number to the side which has to be turned. int i = 0; // Local variable to check if there was not jet a move applied. Necessary because after a move is applied the side could equal the value of a new face variable. String m = Getmove(); // String m is a string for the move. Get the move with Getmove().

23 Source code of the program 9 if (m.length() == 1) // If the length of the move is one, the according side has to get twisted 90 degrees. // Assign the string of the sides to a number to be able to check it easily. if (m.equals("u")) side2 = 1; if (m.equals("f")) side2 = 3; if (m.equals("r")) side2 = 2; if (m.equals("b")) side2 = 6; if (m.equals("l")) side2 = 5; if (m.equals("d")) side2 = 4; if (side2 == F && i == 0) // Checks if the side which has to be turned is now positioned in the front. Rotate180(); // Turn the cube to have the side in the bottom. Twist90(); // Twist the side by 90 degrees. if (side2 == U && i == 0) // Checks if the side which has to be turned is now positioned on top. // Turn the cube to have the side in the bottom. Twist90(); // Twist the side by 90 degrees. if (side2 == D && i == 0) // Checks if the side which has to be turned is now positioned on the bottom. Twist90(); // Twist the side by 90 degrees. if (side2 == R && i == 0) // Checks if the side which has to be turned is now positioned in the right. Rotateb90(); // Turn the cube to have the side in the bottom. Twist90(); // Twist the side by 90 degrees. if (side2 == B && i == 0) // Checks if the side which has to be turned is now positioned in the back. // Turn the cube to have the side in the bottom.

24 Source code of the program 10 Twist90(); // Twist the side by 90 degrees. if (side2 == L && i == 0) // Checks if the side which has to be turned is now positioned in the left. Rotate90(); // Turn the cube to have the side in the bottom. Twist90(); // Twist the side by 90 degrees. else // If the length of m was not one. // Check if the modifier is two. If the modifier is two, the according side has to get twisted 180 degrees. if (m.substring(1, 2).equals("2")) // Assign the string of the sides to a number to be able to check it easily. if (m.equals("u2")) side2 = 1; if (m.equals("f2")) side2 = 3; if (m.equals("r2")) side2 = 2; if (m.equals("b2")) side2 = 6; if (m.equals("l2")) side2 = 5; if (m.equals("d2")) side2 = 4; if (side2 == F && i == 0) // Checks if the side which has to be turned is now positioned in the front. Rotate180(); // Turn the cube to have the side in the bottom. Twist90(); // Twist the side by 180 degrees. Twist90(); if (side2 == U && i == 0) // Checks if the side which has to be turned is now positioned on top. // Turn the cube to have the side in the bottom. Twist90(); // Twist the side by 180 degrees. Twist90(); if (side2 == D && i == 0) // Checks if the side which has to be turned is now positioned on bottom.

25 Source code of the program 11 Twist90(); // Twist the side by 180 degrees. Twist90(); if (side2 == R && i == 0) // Checks if the side which has to be turned is now positioned on the right. Rotateb90(); // Turn the cube to have the side in the bottom. Twist90(); // Twist the side by 180 degrees. Twist90(); if (side2 == B && i == 0) // Checks if the side which has to be turned is now positioned in the back. // Turn the cube to have the side in the bottom. Twist90(); // Twist the side by 180 degrees. Twist90(); if (side2 == L && i == 0) // Checks if the side which has to be turned is now positioned on the left. Rotate90(); // Turn the cube to have the side in the bottom. Twist90(); // Twist the side by 180 degrees. Twist90(); // Check if the modifier is a dash. If the modifier is a dash, the according side has to get twisted minus 90 degrees. if (m.substring(1, 2).equals("'")) // Assign the string of the sides to a number to be able to check it easily. if (m.equals("u'")) side2 = 1; if (m.equals("f'")) side2 = 3; if (m.equals("r'")) side2 = 2; if (m.equals("b'")) side2 = 6; if (m.equals("l'")) side2 = 5; if (m.equals("d'")) side2 = 4; if (side2 == F && i == 0) // Checks if the side which has to be turned is now positioned in front. Rotate180(); // Turn the cube to have the side in the bottom.

26 Source code of the program 12 Twistb90(); // Twist the side by minus 90 degrees. if (side2 == U && i == 0) // Checks if the side which has to be turned is now positioned on top. // Turn the cube to have the side in the bottom. Twistb90(); // Twist the side by minus 90 degrees. if (side2 == D && i == 0) // Checks if the side which has to be turned is now positioned on the bottom. Twistb90(); // Twist the side by minus 90 degrees. if (side2 == R && i == 0) // Checks if the side which has to be turned is now positioned on the right. Rotateb90(); // Turn the cube to have the side in the bottom. Twistb90(); // Twist the side by minus 90 degrees. if (side2 == B && i == 0) // Checks if the side which has to be turned is now positioned in the back. // Turn the cube to have the side in the bottom. Twistb90(); // Twist the side by minus 90 degrees. if (side2 == L && i == 0) // Checks if the side which has to be turned is now positioned on the left. Rotate90(); // Turn the cube to have the side in the bottom. Twistb90(); // Twist the side by minus 90 degrees.

27 Source code of the program 13 return m; // Return m to be able to count how far the robot is in fresult. Used in SolveCube(). //// Method to finally solve the cube \\\\ void SolveCube() int s1 = 0; // Local variable to control while loop. int s2 = 1; fresult += " "; // Add a space to solution string in the end. while (fresult.substring(s1, s2)!= " ") // The method solve is applied until the space which was added is reached. if (Solve().length() == 2)// Checks the length of the variable m. If it's two the local variables have to be increased by another one. s1++; s2++; s1++; s2++; //// Main method \\\\ public static void main(string[] args) new RCS();

28 Declaration of authenticity 14 2 Declaration of authenticity I hereby declare that the work submitted is my own and that all passages and ideas that are not mine have been fully and properly acknowledged. Weesen,

A Rubik s Cube Solving Robot Using Basic Lego Mindstorms NXT kit

A Rubik s Cube Solving Robot Using Basic Lego Mindstorms NXT kit A Rubik s Cube Solving Robot Using Basic Lego Mindstorms NXT kit Khushboo Tomar Department of Electronics and Communication Engineering, Amity University, Sector-125, Noida 201313 (U.P.) India tomar2khushboo@gmail.com

More information

Solving the Rubik s Cube

Solving the Rubik s Cube Solving the Rubik s Cube The Math Behind the Cube: How many different combinations are possible on a 3x3 cube? There are 6 sides each with 9 squares giving 54 squares. Thus there will be 54 53 52 51 50

More information

Solving the Rubik s Cube

Solving the Rubik s Cube the network Solving the Rubik s Cube Introduction Hungarian sculptor and professor of architecture Ernö Rubik invented the Rubik s Cube in 1974. When solved, each side of the Rubik s Cube is a different

More information

Further Mathematics Support Programme

Further Mathematics Support Programme Stage 1 making a cross Solving the Rubik s cube The first stage is to make a cross so that all the edges line up over the correct centre pieces in the middle layer. Figure 1 Find a white edge piece (in

More information

Rubik's Cube Solver William Pitt c Professor Rosin Dr Mumford Bsc Computer Science School of Computer Science and Informatics 03/05/2013

Rubik's Cube Solver William Pitt c Professor Rosin Dr Mumford Bsc Computer Science School of Computer Science and Informatics 03/05/2013 Rubik's Cube Solver William Pitt c1015111 Professor Rosin Dr Mumford Bsc Computer Science School of Computer Science and Informatics 03/05/2013 1 Abstract The Rubik's cube solver consisted three main parts

More information

RUBIK S CUBE SOLUTION

RUBIK S CUBE SOLUTION RUBIK S CUBE SOLUTION INVESTIGATION Topic: Algebra (Probability) The Seven-Step Guide to Solving a Rubik s cube To begin the solution, we must first prime the cube. To do so, simply pick a corner cubie

More information

A benchmark of algorithms for the Professor s Cube

A benchmark of algorithms for the Professor s Cube DEGREE PROJECT, IN COMPUTER SCIENCE, FIRST LEVEL STOCKHOLM, SWEDEN 2015 A benchmark of algorithms for the Professor s Cube MATTIAS DANIELSSON KTH ROYAL INSTITUTE OF TECHNOLOGY SCHOOL OF COMPUTER SCIENCE

More information

Mindstorms NXT. mindstorms.lego.com

Mindstorms NXT. mindstorms.lego.com Mindstorms NXT mindstorms.lego.com A3B99RO Robots: course organization At the beginning of the semester the students are divided into small teams (2 to 3 students). Each team uses the basic set of the

More information

Rubik s Cube. 1.1 History and background Random Moves

Rubik s Cube. 1.1 History and background Random Moves Rubik s Cube The Cube is an imitation of life itself or even an improvement on life. The problems of puzzles are very near the problems of life, our whole life is solving puzzles. If you are hungry, you

More information

Your EdVenture into Robotics 10 Lesson plans

Your EdVenture into Robotics 10 Lesson plans Your EdVenture into Robotics 10 Lesson plans Activity sheets and Worksheets Find Edison Robot @ Search: Edison Robot Call 800.962.4463 or email custserv@ Lesson 1 Worksheet 1.1 Meet Edison Edison is a

More information

Artificial Intelligence Planning and Decision Making

Artificial Intelligence Planning and Decision Making Artificial Intelligence Planning and Decision Making NXT robots co-operating in problem solving authors: Lior Russo, Nir Schwartz, Yakov Levy Introduction: On today s reality the subject of artificial

More information

Billions of Combinations, One Solution Meet Your Cube Twisting Hints RUBIK S Cube Sequences RUBIK S Cube Games...

Billions of Combinations, One Solution Meet Your Cube Twisting Hints RUBIK S Cube Sequences RUBIK S Cube Games... SOLUTION BOOKLET Billions of Combinations, One Solution...... 2 Meet Your Cube.................... 3 Twisting Hints..................... 6 RUBIK S Cube Sequences............... 9 RUBIK S Cube Games.................

More information

How to Solve the Rubik s Cube Blindfolded

How to Solve the Rubik s Cube Blindfolded How to Solve the Rubik s Cube Blindfolded The purpose of this guide is to help you achieve your first blindfolded solve. There are multiple methods to choose from when solving a cube blindfolded. For this

More information

After Performance Report Of the Robot

After Performance Report Of the Robot After Performance Report Of the Robot Engineering 112 Spring 2007 Instructor: Dr. Ghada Salama By Mahmudul Alam Tareq Al Maaita Ismail El Ebiary Section- 502 Date: May 2, 2007 Introduction: The report

More information

Rubik s Revenge Solution Hints Booklet. Revenge - The Ultimate Challenge 2. Meet Your Revenge 3. Twisting Hints 5. General Hints 8. Notation System 12

Rubik s Revenge Solution Hints Booklet. Revenge - The Ultimate Challenge 2. Meet Your Revenge 3. Twisting Hints 5. General Hints 8. Notation System 12 Rubik s Revenge Solution Hints Booklet Revenge - The Ultimate Challenge 2 Meet Your Revenge 3 Twisting Hints 5 General Hints 8 Notation System 12 Revenge Sequences 19 Solving Rubik s Revenge 28 More Revenge

More information

All Levels. Solving the Rubik s Cube

All Levels. Solving the Rubik s Cube Solving the Rubik s Cube All Levels Common Core: Objectives: Mathematical Practice Standards: 1. Make sense of problems and persevere in solving them. 2. Reason abstractly and quantitatively. 3. Construct

More information

Ibero Rubik 3x3x3 cube Easy method

Ibero Rubik 3x3x3 cube Easy method Ibero Rubik 3x3x3 cube Easy method Version 2. Updated on 21 st April 2016. Contents Introduction 3 1 Cross of the top face 4 1.1 Edge piece located on the top of the cube....................................

More information

Learning serious knowledge while "playing"with robots

Learning serious knowledge while playingwith robots 6 th International Conference on Applied Informatics Eger, Hungary, January 27 31, 2004. Learning serious knowledge while "playing"with robots Zoltán Istenes Department of Software Technology and Methodology,

More information

Computers and the Cube. Tomas Rokicki () Computer Cubing 3 November / 71

Computers and the Cube. Tomas Rokicki () Computer Cubing 3 November / 71 Computers and the Cube Tomas Rokicki rokicki@gmail.com () Computer Cubing 3 November 2009 1 / 71 Computer Cubing Solving cube problems through programming: Graphical utilities Timers and practice software

More information

An Introduction to Programming using the NXT Robot:

An Introduction to Programming using the NXT Robot: An Introduction to Programming using the NXT Robot: exploring the LEGO MINDSTORMS Common palette. Student Workbook for independent learners and small groups The following tasks have been completed by:

More information

understanding sensors

understanding sensors The LEGO MINDSTORMS EV3 set includes three types of sensors: Touch, Color, and Infrared. You can use these sensors to make your robot respond to its environment. For example, you can program your robot

More information

THE 15-PUZZLE (AND RUBIK S CUBE)

THE 15-PUZZLE (AND RUBIK S CUBE) THE 15-PUZZLE (AND RUBIK S CUBE) KEITH CONRAD 1. Introduction A permutation puzzle is a toy where the pieces can be moved around and the object is to reassemble the pieces into their beginning state We

More information

Rubik's Magic Main Page

Rubik's Magic Main Page Rubik's Magic Main Page Main Page General description of Rubik's Magic Links to other sites How the tiles hinge The number of flat positions Getting back to the starting position Flat shapes Making your

More information

Rubik s Cube: the one-minute solution

Rubik s Cube: the one-minute solution Rubik s Cube: the one-minute solution Abstract. This paper will teach the reader a quick, easy to learn method for solving Rubik s Cube. The reader will learn simple combinations that will place each cube

More information

Lesson 4 The Middle Layer

Lesson 4 The Middle Layer 4 How To Solve The Rubik's Cube Instructional Curriculum Standards & Skills: 4 (For complete details, see Standards & Skills Book) Kindergarten Common Core K.G.1 - Names of shapes K.OA.5 - Add and subtract

More information

Lab book. Exploring Robotics (CORC3303)

Lab book. Exploring Robotics (CORC3303) Lab book Exploring Robotics (CORC3303) Dept of Computer and Information Science Brooklyn College of the City University of New York updated: Fall 2011 / Professor Elizabeth Sklar UNIT A Lab, part 1 : Robot

More information

1 Running the Program

1 Running the Program GNUbik Copyright c 1998,2003 John Darrington 2004 John Darrington, Dale Mellor Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission

More information

Chapter 14. using data wires

Chapter 14. using data wires Chapter 14. using data wires In this fifth part of the book, you ll learn how to use data wires (this chapter), Data Operations blocks (Chapter 15), and variables (Chapter 16) to create more advanced programs

More information

The Robot Olympics: A competition for Tribot s and their humans

The Robot Olympics: A competition for Tribot s and their humans The Robot Olympics: A Competition for Tribot s and their humans 1 The Robot Olympics: A competition for Tribot s and their humans Xinjian Mo Faculty of Computer Science Dalhousie University, Canada xmo@cs.dal.ca

More information

Modeling a Rubik s Cube in 3D

Modeling a Rubik s Cube in 3D Modeling a Rubik s Cube in 3D Robert Kaucic Math 198, Fall 2015 1 Abstract Rubik s Cubes are a classic example of a three dimensional puzzle thoroughly based in mathematics. In the trigonometry and geometry

More information

Rubik's 3x3x3 Cube. Patent filed by Erno Rubik 1975, sold by Ideal Toys in the 1980's. (plastic with colored stickers, 2.2"; keychain 1.

Rubik's 3x3x3 Cube. Patent filed by Erno Rubik 1975, sold by Ideal Toys in the 1980's. (plastic with colored stickers, 2.2; keychain 1. Rubik's 3x3x3 Cube Patent filed by Erno Rubik 1975, sold by Ideal Toys in the 1980's. (plastic with colored stickers, 2.2"; keychain 1.2") The original twisty cube. Difficult, but fun to play with. One

More information

Lego Nxt in Physical Etoys

Lego Nxt in Physical Etoys Lego Nxt in Physical Etoys Physical Etoys is a software Project which let us control, in real time, Lego Mindstorms Nxt s Robots using a Bluetooth connection. SqueakNxt is a module of the Physical Etoys

More information

Problem of the Month. Cubism. Describe the cubes he used in terms of position and color. How do you know you are correct, explain your reasoning.

Problem of the Month. Cubism. Describe the cubes he used in terms of position and color. How do you know you are correct, explain your reasoning. Problem of the Month Cubism Level A Pablo built the figure below using cubes. How many cubes did Pablo use? Describe the cubes he used in terms of position and color. How do you know you are correct, explain

More information

Robotics will be very important for the humanity in the next 10 years and this ebook is an effort to help in this way.

Robotics will be very important for the humanity in the next 10 years and this ebook is an effort to help in this way. 1.- Introduction 1.1.- Goals Many developers around the world choose lejos, Java for Lego Mindstorm, as the main platform to develop robots with NXT Lego Mindstorm. I consider that this ebook will help

More information

Grade 7/8 Math Circles. Visual Group Theory

Grade 7/8 Math Circles. Visual Group Theory Faculty of Mathematics Waterloo, Ontario N2L 3G1 Centre for Education in Mathematics and Computing Grade 7/8 Math Circles October 25 th /26 th Visual Group Theory Grouping Concepts Together We will start

More information

Grade 7/8 Math Circles. Visual Group Theory

Grade 7/8 Math Circles. Visual Group Theory Faculty of Mathematics Waterloo, Ontario N2L 3G1 Centre for Education in Mathematics and Computing Grade 7/8 Math Circles October 25 th /26 th Visual Group Theory Grouping Concepts Together We will start

More information

Figure 1. Overall Picture

Figure 1. Overall Picture Jormungand, an Autonomous Robotic Snake Charles W. Eno, Dr. A. Antonio Arroyo Machine Intelligence Laboratory University of Florida Department of Electrical Engineering 1. Introduction In the Intelligent

More information

God's Number in the Simultaneously-Possible Turn Metric

God's Number in the Simultaneously-Possible Turn Metric University of Wisconsin Milwaukee UWM Digital Commons Theses and Dissertations 12-1-2017 God's Number in the Simultaneously-Possible Turn Metric Andrew James Gould University of Wisconsin-Milwaukee Follow

More information

Computational Crafting with Arduino. Christopher Michaud Marist School ECEP Programs, Georgia Tech

Computational Crafting with Arduino. Christopher Michaud Marist School ECEP Programs, Georgia Tech Computational Crafting with Arduino Christopher Michaud Marist School ECEP Programs, Georgia Tech Introduction What do you want to learn and do today? Goals with Arduino / Computational Crafting Purpose

More information

Micro USB Lamp Kit TEACHING RESOURCES. Version 2.1 DESIGN A STYLISH LAMP WITH THIS

Micro USB Lamp Kit TEACHING RESOURCES. Version 2.1 DESIGN A STYLISH LAMP WITH THIS TEACHING RESOURCES SCHEMES OF WORK DEVELOPING A SPECIFICATION COMPONENT FACTSHEETS HOW TO SOLDER GUIDE DESIGN A STYLISH LAMP WITH THIS Micro USB Lamp Kit Version 2.1 Index of Sheets TEACHING RESOURCES

More information

INTRODUCTION TO COMPUTER SCIENCE I PROJECT 6 Sudoku! Revision 2 [2010-May-04] 1

INTRODUCTION TO COMPUTER SCIENCE I PROJECT 6 Sudoku! Revision 2 [2010-May-04] 1 INTRODUCTION TO COMPUTER SCIENCE I PROJECT 6 Sudoku! Revision 2 [2010-May-04] 1 1 The game of Sudoku Sudoku is a game that is currently quite popular and giving crossword puzzles a run for their money

More information

Robotics using Lego Mindstorms EV3 (Intermediate)

Robotics using Lego Mindstorms EV3 (Intermediate) Robotics using Lego Mindstorms EV3 (Intermediate) Facebook.com/roboticsgateway @roboticsgateway Robotics using EV3 Are we ready to go Roboticists? Does each group have at least one laptop? Do you have

More information

Robotics 2a. What Have We Got to Work With?

Robotics 2a. What Have We Got to Work With? Robotics 2a Introduction to the Lego Mindstorm EV3 What we re going to do in the session. Introduce you to the Lego Mindstorm Kits The Design Process Design Our Robot s Chassis What Have We Got to Work

More information

Speed Cubing. Solving the Rubik s Cube. By humans and robots What are the limits? Gift from Rik van Grol Article also submitted for the souvenir book

Speed Cubing. Solving the Rubik s Cube. By humans and robots What are the limits? Gift from Rik van Grol Article also submitted for the souvenir book Speed Cubing Solving the Rubik s Cube By humans and robots What are the limits? Gift from Rik van Grol Article also submitted for the souvenir book For G4G12 March 30 - April 3, 2016 Speed solving the

More information

The puzzle (also called the "Twisting Tri-Side Puzzle" in the UK) consists of intersecting discs of 6 (rounded) triangular tiles each which can rotate. There are two versions. The "Handy" and the "Challenge".

More information

Square 1. Transform the Puzzle into a Cube

Square 1. Transform the Puzzle into a Cube http://www.geocities.com/abcmcfarren/math/sq1/sq1xf.htm 05/29/2007 12:41 AM Square 1 A Rubik's Cube on Acid "Ohhh... I'm sooooo wasted!" Transform the Puzzle into a Cube Step I: Get the puzzle into 3 distinct

More information

ShillerMath Book 1 Test Answers

ShillerMath Book 1 Test Answers LESSON 1-56 REVIEW TEST #1-1 Now we will have a test to see what you have learned. This will help me understand what I need to do to make our math work more fun. You may take as much time and use whatever

More information

USER S MANUAL. This manual must be considered an integral part of the projector. The user must read this manual before using the projector

USER S MANUAL. This manual must be considered an integral part of the projector. The user must read this manual before using the projector 575W HMI Scan light ZIPPER 575 USER S MANUAL This manual must be considered an integral part of the projector. The user must read this manual before using the projector AUTHORISED AND QUALIFIED PERSONNEL

More information

Solving All 164,604,041,664 Symmetric Positions of the Rubik s Cube in the Quarter Turn Metric

Solving All 164,604,041,664 Symmetric Positions of the Rubik s Cube in the Quarter Turn Metric Solving All 164,604,041,664 Symmetric Positions of the Rubik s Cube in the Quarter Turn Metric Tomas Rokicki March 18, 2014 Abstract A difficult problem in computer cubing is to find positions that are

More information

The Seeds That Seymour Sowed. Mitchel Resnick Professor of Learning Research MIT Media Lab

The Seeds That Seymour Sowed. Mitchel Resnick Professor of Learning Research MIT Media Lab The Seeds That Seymour Sowed Mitchel Resnick Professor of Learning Research MIT Media Lab In writing about Seymour Papert, I want to look forward, not backwards. How can we make sure that Seymour s ideas

More information

Experiment #3: Micro-controlled Movement

Experiment #3: Micro-controlled Movement Experiment #3: Micro-controlled Movement So we re already on Experiment #3 and all we ve done is blinked a few LED s on and off. Hang in there, something is about to move! As you know, an LED is an output

More information

Ev3 Robotics Programming 101

Ev3 Robotics Programming 101 Ev3 Robotics Programming 101 1. EV3 main components and use 2. Programming environment overview 3. Connecting your Robot wirelessly via bluetooth 4. Starting and understanding the EV3 programming environment

More information

Automata Depository Model with Autonomous Robots

Automata Depository Model with Autonomous Robots Acta Cybernetica 19 (2010) 655 660. Automata Depository Model with Autonomous Robots Zoltán Szabó, Balázs Lájer, and Ágnes Werner-Stark Abstract One of the actual topics on robotis research in the recent

More information

Embedded Control Project -Iterative learning control for

Embedded Control Project -Iterative learning control for Embedded Control Project -Iterative learning control for Author : Axel Andersson Hariprasad Govindharajan Shahrzad Khodayari Project Guide : Alexander Medvedev Program : Embedded Systems and Engineering

More information

Computer Science COMP-250 Homework #4 v4.0 Due Friday April 1 st, 2016

Computer Science COMP-250 Homework #4 v4.0 Due Friday April 1 st, 2016 Computer Science COMP-250 Homework #4 v4.0 Due Friday April 1 st, 2016 A (pronounced higher-i.q.) puzzle is an array of 33 black or white pixels (bits), organized in 7 rows, 4 of which contain 3 pixels

More information

Pyraminx Crystal. The number of positions: Links to other useful pages: Notation:

Pyraminx Crystal. The number of positions: Links to other useful pages: Notation: The is a dodecahedron shaped puzzle by Uwe Mèffert. It is similar to the megaminx in that it has twelve pentagonal faces that can turn, but the cuts lie slightly deeper. The cut of a face cuts go through

More information

An External Command Reading White line Follower Robot

An External Command Reading White line Follower Robot EE-712 Embedded System Design: Course Project Report An External Command Reading White line Follower Robot 09405009 Mayank Mishra (mayank@cse.iitb.ac.in) 09307903 Badri Narayan Patro (badripatro@ee.iitb.ac.in)

More information

CE215 - Assignment 1 : Dead Reckoning Reg NO:

CE215 - Assignment 1 : Dead Reckoning Reg NO: CE215 - Assignment 1 : Dead Reckoning Reg NO: 1001348 Abstract: The report aims to determine whether or not a robot can be constructed and controlled in such a way to make it move in a 1*1 meter square.

More information

Pre-Activity Quiz. 2 feet forward in a straight line? 1. What is a design challenge? 2. How do you program a robot to move

Pre-Activity Quiz. 2 feet forward in a straight line? 1. What is a design challenge? 2. How do you program a robot to move Maze Challenge Pre-Activity Quiz 1. What is a design challenge? 2. How do you program a robot to move 2 feet forward in a straight line? 2 Pre-Activity Quiz Answers 1. What is a design challenge? A design

More information

EASY BUILD TIMER KIT TEACHING RESOURCES. Version 2.0 LEARN ABOUT SIMPLE TIMING CIRCUITS WITH THIS

EASY BUILD TIMER KIT TEACHING RESOURCES. Version 2.0 LEARN ABOUT SIMPLE TIMING CIRCUITS WITH THIS TEACHING RESOURCES SCHEMES OF WORK DEVELOPING A SPECIFICATION COMPONENT FACTSHEETS HOW TO SOLDER GUIDE LEARN ABOUT SIMPLE TIMING CIRCUITS WITH THIS EASY BUILD TIMER KIT Version 2.0 Index of Sheets TEACHING

More information

Closed-Loop Transportation Simulation. Outlines

Closed-Loop Transportation Simulation. Outlines Closed-Loop Transportation Simulation Deyang Zhao Mentor: Unnati Ojha PI: Dr. Mo-Yuen Chow Aug. 4, 2010 Outlines 1 Project Backgrounds 2 Objectives 3 Hardware & Software 4 5 Conclusions 1 Project Background

More information

The Kubrick Handbook. Ian Wadham

The Kubrick Handbook. Ian Wadham Ian Wadham 2 Contents 1 Introduction 5 2 How to Play 6 2.1 Making Moves........................................ 6 2.2 Using the Mouse to Move................................. 6 2.3 Using the Keyboard to

More information

MazeBot. Our Urban City. Challenge Manual

MazeBot. Our Urban City. Challenge Manual MazeBot Our Urban City Challenge Manual Updated as of 27 th February 2017 Eligibility Participants must be between the ages of 7 and 12 (inclusive) as of 31 December 2017. The minimum number of participants

More information

Solving the 4 x 4 Cube

Solving the 4 x 4 Cube Solving the 4 x 4 Cube How to Reference and Talk About the Cube: Like the 3 x 3 cube, we will refer to three main types of pieces centers (4 per side), edges (2 per edge) and corners. The main approach

More information

Adventures with Rubik s UFO. Bill Higgins Wittenberg University

Adventures with Rubik s UFO. Bill Higgins Wittenberg University Adventures with Rubik s UFO Bill Higgins Wittenberg University Introduction Enro Rubik invented the puzzle which is now known as Rubik s Cube in the 1970's. More than 100 million cubes have been sold worldwide.

More information

Free Cell Solver. Copyright 2001 Kevin Atkinson Shari Holstege December 11, 2001

Free Cell Solver. Copyright 2001 Kevin Atkinson Shari Holstege December 11, 2001 Free Cell Solver Copyright 2001 Kevin Atkinson Shari Holstege December 11, 2001 Abstract We created an agent that plays the Free Cell version of Solitaire by searching through the space of possible sequences

More information

Studuino Icon Programming Environment Guide

Studuino Icon Programming Environment Guide Studuino Icon Programming Environment Guide Ver 0.9.6 4/17/2014 This manual introduces the Studuino Software environment. As the Studuino programming environment develops, these instructions may be edited

More information

DARK ACTIVATED COLOUR CHANGING NIGHT LIGHT KIT

DARK ACTIVATED COLOUR CHANGING NIGHT LIGHT KIT TEACHING RESOURCES SCHEMES OF WORK DEVELOPING A SPECIFICATION COMPONENT FACTSHEETS HOW TO SOLDER GUIDE CREATE SOOTHING LIGHTING EFFECTS WITH THIS DARK ACTIVATED COLOUR CHANGING NIGHT LIGHT KIT Version

More information

E Technology: A. Innovations Activity: Introduction to Robotics

E Technology: A. Innovations Activity: Introduction to Robotics Science as Inquiry: As a result of their activities in grades 5 8, all students should develop Understanding about scientific inquiry. Abilities necessary to do scientific inquiry: identify questions,

More information

Rubik 4x4x4 "Revenge"

Rubik 4x4x4 Revenge Rubik 4x4x4 "Revenge" a.k.a. Rubik's Master Cube "Rubik's Revenge"; Patented by P. Sebesteny 1983. (plastic, 2.5 inches) D-FantiX 4x4x4 Stickerless; purchased from Amazon.com, 2017. (plastic, 2.3 inches)

More information

LEGO BASED CHALLENGE. 1. Material

LEGO BASED CHALLENGE. 1. Material LEGO BASED CHALLENGE 1. Material 1. The controller, motors and sensors used to assemble robots must be from LEGO MINDSTORMS sets (NXT or EV3). 2. Only LEGO branded elements may be used to construct the

More information

Brick Challenge. Have fun doing the experiments!

Brick Challenge. Have fun doing the experiments! Brick Challenge Now you have the chance to get to know our bricks a little better. We have gathered information on each brick that you can use when doing the brick challenge: in case you don t know the

More information

TCSS 372 Laboratory Project 2 RS 232 Serial I/O Interface

TCSS 372 Laboratory Project 2 RS 232 Serial I/O Interface 11/20/06 TCSS 372 Laboratory Project 2 RS 232 Serial I/O Interface BACKGROUND In the early 1960s, a standards committee, known as the Electronic Industries Association (EIA), developed a common serial

More information

AGENT PLATFORM FOR ROBOT CONTROL IN REAL-TIME DYNAMIC ENVIRONMENTS. Nuno Sousa Eugénio Oliveira

AGENT PLATFORM FOR ROBOT CONTROL IN REAL-TIME DYNAMIC ENVIRONMENTS. Nuno Sousa Eugénio Oliveira AGENT PLATFORM FOR ROBOT CONTROL IN REAL-TIME DYNAMIC ENVIRONMENTS Nuno Sousa Eugénio Oliveira Faculdade de Egenharia da Universidade do Porto, Portugal Abstract: This paper describes a platform that enables

More information

2015 Maryland State 4-H LEGO Robotic Challenge

2015 Maryland State 4-H LEGO Robotic Challenge Trash Talk Utilizing Trash to Power the World 2015 Maryland State 4-H LEGO Robotic Challenge Through Trash Talk, 4-H members involved in robotics will create LEGO robots that complete tasks related to

More information

Programmable Timer Teaching Notes Issue 1.2

Programmable Timer Teaching Notes Issue 1.2 Teaching Notes Issue 1.2 Product information: www.kitronik.co.uk/quicklinks/2121/ TEACHER Programmable Timer Index of sheets Introduction Schemes of work Answers The Design Process The Design Brief Investigation

More information

Implementing an intelligent version of the classical sliding-puzzle game. for unix terminals using Golang's concurrency primitives

Implementing an intelligent version of the classical sliding-puzzle game. for unix terminals using Golang's concurrency primitives Implementing an intelligent version of the classical sliding-puzzle game for unix terminals using Golang's concurrency primitives Pravendra Singh Department of Computer Science and Engineering Indian Institute

More information

Erik Von Burg Mesa Public Schools Gifted and Talented Program Johnson Elementary School

Erik Von Burg Mesa Public Schools Gifted and Talented Program Johnson Elementary School Erik Von Burg Mesa Public Schools Gifted and Talented Program Johnson Elementary School elvonbur@mpsaz.org Water Sabers (2008)* High Heelers (2009)* Helmeteers (2009)* Cyber Sleuths (2009)* LEGO All Stars

More information

Lesson 1 Meeting the Cube

Lesson 1 Meeting the Cube Lesson 1 Meeting the Cube How To Solve The Rubik's Cube Instructional Curriculum Meeting the Cube Standards & Skills: Lesson 1 (For complete details, see Standards & Skills Book) Kindergarten Grade 1 Common

More information

Spare Parts. Contents. Contents Contents

Spare Parts. Contents. Contents Contents Spare Parts 2013 Spare Parts Contents Contents Contents LEGO Education StoryStarter 3 LEGO Education WeDo 4 Machines and Mechanisms 5 LEGO MINDSTORMS Education 6-8 TETRIX by Pitsco 9-16 LEGOeducation.us

More information

Scratch Coding And Geometry

Scratch Coding And Geometry Scratch Coding And Geometry by Alex Reyes Digitalmaestro.org Digital Maestro Magazine Table of Contents Table of Contents... 2 Basic Geometric Shapes... 3 Moving Sprites... 3 Drawing A Square... 7 Drawing

More information

The use of programmable robots in the education of programming

The use of programmable robots in the education of programming Proceedings of the 7 th International Conference on Applied Informatics Eger, Hungary, January 28 31, 2007. Vol. 2. pp. 29 36. The use of programmable robots in the education of programming Zoltán Istenes

More information

STEM in Practice AISWA SAMPLE. with KodeKLIX. Def ine Plan Model Test Ref lect Improve NAME: STUDENT WORKBOOK

STEM in Practice AISWA SAMPLE. with KodeKLIX. Def ine Plan Model Test Ref lect Improve NAME: STUDENT WORKBOOK STUDENT WORKBOOK STEM in Practice with KodeKLIX NAME: Def ine Plan Model Test Ref lect Improve www.ais.wa.edu.au Peter Crosbie kodeklix.com Jan Clarke STUDENT WORKBOOK TABLE OF CONTENTS W W SECTION 1:

More information

BEYOND TOYS. Wireless sensor extension pack. Tom Frissen s

BEYOND TOYS. Wireless sensor extension pack. Tom Frissen s LEGO BEYOND TOYS Wireless sensor extension pack Tom Frissen s040915 t.e.l.n.frissen@student.tue.nl December 2008 Faculty of Industrial Design Eindhoven University of Technology 1 2 TABLE OF CONTENT CLASS

More information

arxiv: v1 [cs.cc] 21 Jun 2017

arxiv: v1 [cs.cc] 21 Jun 2017 Solving the Rubik s Cube Optimally is NP-complete Erik D. Demaine Sarah Eisenstat Mikhail Rudoy arxiv:1706.06708v1 [cs.cc] 21 Jun 2017 Abstract In this paper, we prove that optimally solving an n n n Rubik

More information

Robotic teaching for Malaysian gifted enrichment program

Robotic teaching for Malaysian gifted enrichment program Available online at www.sciencedirect.com Procedia Social and Behavioral Sciences 15 (2011) 2528 2532 WCES-2011 Robotic teaching for Malaysian gifted enrichment program Rizauddin Ramli a *, Melor Md Yunus

More information

Counts up unreliably; still counting the smaller number to get one too many in the answer

Counts up unreliably; still counting the smaller number to get one too many in the answer Counts up unreliably; still counting the smaller number to get one too many in the answer Opportunity for: developing mathematical language 3 Y2 / Resources Number lines or tracks, or a game board such

More information

COMPSCI 765 FC Advanced Artificial Intelligence 2001

COMPSCI 765 FC Advanced Artificial Intelligence 2001 COMPSCI 765 FC Advanced Artificial Intelligence 2001 Towards Optimal Solutions for the Rubik s Cube Problem Aaron Cheeseman, Jonathan Teutenberg Being able to solve Rubik s cube very fast is a near useless

More information

A New Simulator for Botball Robots

A New Simulator for Botball Robots A New Simulator for Botball Robots Stephen Carlson Montgomery Blair High School (Lockheed Martin Exploring Post 10-0162) 1 Introduction A New Simulator for Botball Robots Simulation is important when designing

More information

Testing of the FE Walking Robot

Testing of the FE Walking Robot TESTING OF THE FE WALKING ROBOT MAY 2006 1 Testing of the FE Walking Robot Elianna R Weyer, May 2006 for MAE 429, fall 2005, 3 credits erw26@cornell.edu I. ABSTRACT This paper documents the method and

More information

Abstraction Heuristics for Rubik s Cube

Abstraction Heuristics for Rubik s Cube Abstraction Heuristics for Rubik s Cube Bachelor Thesis Natural Science Faculty of the University of Basel Department of Mathematics and Computer Science Artificial Intelligence http://ai.cs.unibas.ch

More information

Designing Toys That Come Alive: Curious Robots for Creative Play

Designing Toys That Come Alive: Curious Robots for Creative Play Designing Toys That Come Alive: Curious Robots for Creative Play Kathryn Merrick School of Information Technologies and Electrical Engineering University of New South Wales, Australian Defence Force Academy

More information

SMART CITIES SMART NETWORK

SMART CITIES SMART NETWORK World Robot Olympiad 2019 Regular Category Senior SMART CITIES SMART NETWORK Version: January 15 th WRO International Premium Partners Table of Contents 1. Introduction... 2 2. Game Field... 3 3. Game

More information

A - Debris on the Track

A - Debris on the Track A - Debris on the Track Rocks have fallen onto the line for the robot to follow, blocking its path. We need to make the program clever enough to not get stuck! Step 1 2017 courses.techcamp.org.uk/ Page

More information

The Beauty and Joy of Computing Lab Exercise 10: Shall we play a game? Objectives. Background (Pre-Lab Reading)

The Beauty and Joy of Computing Lab Exercise 10: Shall we play a game? Objectives. Background (Pre-Lab Reading) The Beauty and Joy of Computing Lab Exercise 10: Shall we play a game? [Note: This lab isn t as complete as the others we have done in this class. There are no self-assessment questions and no post-lab

More information

Solving a Rubik s Cube with IDA* Search and Neural Networks

Solving a Rubik s Cube with IDA* Search and Neural Networks Solving a Rubik s Cube with IDA* Search and Neural Networks Justin Schneider CS 539 Yu Hen Hu Fall 2017 1 Introduction: A Rubik s Cube is a style of tactile puzzle, wherein 26 external cubes referred to

More information

Robotics Workshop. for Parents and Teachers. September 27, 2014 Wichita State University College of Engineering. Karen Reynolds

Robotics Workshop. for Parents and Teachers. September 27, 2014 Wichita State University College of Engineering. Karen Reynolds Robotics Workshop for Parents and Teachers September 27, 2014 Wichita State University College of Engineering Steve Smith Christa McAuliffe Academy ssmith3@usd259.net Karen Reynolds Wichita State University

More information

MultiSensor 6 (User Guide)

MultiSensor 6 (User Guide) MultiSensor 6 (User Guide) Modified on: Wed, 26 Oct, 2016 at 7:24 PM 6 sensors. 1 impossibly small device. The corner of your room just got 6 times smarter. Aeotec by Aeon Labs' MultiSensor 6 looks like

More information

arxiv: v1 [cs.sc] 24 Mar 2008

arxiv: v1 [cs.sc] 24 Mar 2008 Twenty-Five Moves Suffice for Rubik s Cube Tomas Rokicki arxiv:0803.3435v1 [cs.sc] 24 Mar 2008 Abstract How many moves does it take to solve Rubik s Cube? Positions are known that require 20 moves, and

More information

2018 First Responders 4-H Robotics Challenge Page 1

2018 First Responders 4-H Robotics Challenge Page 1 2018 First Responders 4-H Robotics Challenge Page 1 Contents 2018 First Responders 4-H Robotics Challenge... 3 1 Teams... 3 2 The Game... 3 2.1 Competition kit... 3 2.2 Field Mat... 3 2.3 Playing Field...

More information