You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Our robot requires three servos, which each require a PWM (pulse width modulated) pin out for control.
While a Raspberry Pi has GP I/O and would be more capable of image processing (an eventual requirement for a self sufficient solver), it only has one hardware PWM. The other software PWM can be affected by the OS and other applications. As such, a micro-controller is the preferred way to move the servos.
The micro-controller application needs to accept serial commands to turn cube faces, and keep track of it's orientation. For parsing ease, we can use Singmaster Notation (U/D/L/R/F/B) to denote cube face, and then an second character to denote the number of 90 degree turns clockwise. So if the serial input is F3U1D2, it would turn the "front" face counter clockwise, the "up" face clockwise, and the "down" face 180 degrees.
Any time this would "reorient" the cube centers, the micro-controller code would take this new orientation into account when it gets the next move.
So each time it decoded the next instruction it would:
Identify "where" the face in question is.
Rotate the cube so that the face is pointing at or away from the claw
Update its internal orientation state based on this rotation
Make the face turn by a series of claw rotations and extensions
Update the internal orientation representation based on center changes.
The text was updated successfully, but these errors were encountered:
Our robot requires three servos, which each require a PWM (pulse width modulated) pin out for control.
While a Raspberry Pi has GP I/O and would be more capable of image processing (an eventual requirement for a self sufficient solver), it only has one hardware PWM. The other software PWM can be affected by the OS and other applications. As such, a micro-controller is the preferred way to move the servos.
The micro-controller application needs to accept serial commands to turn cube faces, and keep track of it's orientation. For parsing ease, we can use Singmaster Notation (U/D/L/R/F/B) to denote cube face, and then an second character to denote the number of 90 degree turns clockwise. So if the serial input is
F3U1D2
, it would turn the "front" face counter clockwise, the "up" face clockwise, and the "down" face 180 degrees.Any time this would "reorient" the cube centers, the micro-controller code would take this new orientation into account when it gets the next move.
So each time it decoded the next instruction it would:
The text was updated successfully, but these errors were encountered: