OTvinta Cube Solver Application - Project Day 5 (success at last)
WIP -
Finally I am able to control the robot from the Maestro Control board. Ran the program I wrote for more than 15 minutes without any problem. - new power supply set at 6.5v 3A; grind out the tips of the grip to make it smooth in order to prevent it from catching the cube (I believe this was due to the 3D printed grip getting distorted slightly over time since it was printed more than a year ago)
With the mechanical portion of the robot working as it should, I’ve ordered the replacement camera as recommended by the OTvinta. The new camera supposedly eliminates most of the problem that the previous version of the camera had. ETA for the camera is Feb 2020.
I am closing this phase of the project until the camera arrives next month. On the mean time, we can print the new 3D parts to house the new camera. Also, I will be exploring the EZ Builder software with the Cube Solver plug in that is designed to work with our robot.
Status as of June 2020 - getting ready to continue with the project; some research items below (alternate control for the robot)
OTvinta Cube Solver Application - Project Day 4
WIP - Solved Servo power issue & continue learning Maestro script programming
Received variable power supply (1.5-12v, 3A) - Time to head over to the MakerSpace and test out the robot
12/29 - First tested with the old variable power supply I dug out in the garage (6v 3A) - nope, the problem is still there. Tried with the new one I just received, set it to 6v (5A) - the problem is almost gone as the servo shaking and half Turing happens later in the loop. Raised the voltage to 6.2v 5A (one of the EE mentor I have here at the MakerSpace suspected a possible power/voltage dip) - Boom, all the problem fixed related to the shaking and half turn.
Need Grip & Arm calibration - Although the servos are turning quickly with no half turns, I still have issue with the grip grabbing the cube wrong and twisting the cube as it tries to turn it. As it was recommended by the OT Vinta, I will need to 1) Mechanically tighten/straighten all grips and arms, 2) On the Maestro software, calibrate the servos to ensure all the grip & arms are holding the Rubik’s cube tightly.
Need to camera configuration or replace - To test the camera and ensure the robot can solve the cube, I helped the robot grab the cube correctly whenever it gets twisted. The cube solving loop moves on for a while and stops with the error code - Cube Grid Detection Error (this is what OT Vinta engineer warned me about). Rather than trouble shoot the camera that is known to have to issue, I pressed the Easy button by ordering a recommended web cam from Amazon ($8) - expected shipment is end of Jan 2020 - Feb 2020
Next Step - while we put the project on hold an wait for the camera we can 1) 3D print the replacement parts for the robot to house the new camera, 2) I can write the script directly to the Maestro controller board to run a demo of it moving the cube (as if it was solving it on the mean time)
After having some time playing around with the Pololu Maestro Servo Controller Board, I must say I was very impressed with the capability and programmability it offered. I had 10 micro 9g servos that was laying around. I hook up all 10 on the newly purchased 12Ch board to practice programming it. Awesome. I really like it & definitely will be using this board for my future electronics and robotics projects.
OTvinta Cube Solver Application - Project Day 3
WIP - OT Vinta’s response & Power issue
My analysis on the servos twitting - ruling out the problem to 1) Maestro controller board, 2) Configuration issue with the controller board, 3) Servo/power issue
12/16 - received response from OT Vinta - 1) Ensure power supplier is 12V and 3A, 2) Grip & Arm need to be configured to have a tighter hold of the Rubik’s Cube, 3) Recommend changing to the newer camera. which have far less configuration issues
12/19 - Received another Maestro 12 Channel board (for learning and testing). Tried the new board with the R.Cube Robot - problem still exist. Ruled out the possibility of the controller board being faulty. Strongest possibility is now 1) Power issues - ordered portable variable power supply (1.5-12V, 5A), 2) Maestro controller software - as I am not 100% on the software, there is still a small possibility that I may have configured it wrong somewhere.. However it is less likely as the issue gets better when I’ve tested it with the variable power supply at the MakerSpace.
Troubleshooting these types of problem is what engineers do - We should not get frustrated. These are like solving puzzle. In a way, I am solving this puzzle of fixing the CubeSolving Robot :)
Otvinta Cube Solver Application - Project Day 2
DAY2 APPROACH
This time I followed the instruction from the Otvinta site very closely http://www.rcr3d.com/hardware.html
I paid special attention to make sure all the servos are configured correctly (position numbering, calibration etc) and the configuration of the Pololu Maestro Control Center app (USB Duel Port, Acceleration for Servo 0, 2, 6, and 8). Also double checked the camera to ensure it is focused and can identify the colors correctly.
STILL FAILED TO RUN PROPERLY
After all the configuration was done and tested, I ran the robot again. I hoped for the best, but the issue with the side grip arms turning half way was still there. (WIP - Youtube video)
In order to isolate the problem, I tried different approach in running the program
Run several times in a row to see if the problem is happening at the same stop - In most cases, the problem happened at the same spot. In one occupation, the problem happened later time (WIP - Youtube video)
Run the app without the cube to see if the camera’s detection has anything to do with it - This did not have any impact
Swap out the Servo cables on the Servo Controller to see if it will move the problem to other servos - Swapped Left with Top & Right with Bottom. The half turning problem now happens to the Top & Bottom grip arms.
ASSUMPTIONS & NEXT STEP
WIP - Contact Otvinta for help!
Otvinta Cube Solver Application - Project Day 1
initial Approach
I have been on and off working on this robot using the Otvinta application. This is a demo app that solves the cube and does not allow me to make modification to the algorithm. However, I though this was the easiest way to get it up and running and validate the robot is functional.
As usual, there is no such thing as an easy project… especially when you are going at it half ass. I decided to give it a proper respect and approach it correctly. I blocked off about 5 hours at the HackerSpace to work on it. I referenced the instruction provided in the Youtube video below for calibrating the servos and camera.
https://www.youtube.com/watch?v=G8kEdBBw1aY&t=151s
It took me some time testing out the components and fixed some of the hardware installation problems. After calibrating the servos, I ran into the problem with getting the camera to focus. After burins about 30 minutes, finally was able to get it focus by removing the casing that holds the lens (it came off loose). Once the camera was focused, next problem was that the camera was too close to the cube and it did not show whole cube. After about an hour of messing with the camera (decided to get rid off the rear casing to gain a little more space) I managed to show all 6 cells of the cube on the camera.
failed to run properly
After about 4 hours in to the project, all the configuration was complete and it was time to test run. Robot seems to work as the arms move simultaneously closing and taking the picture of the cube. However, when I “run” the app, it starts to move, getting the images of the current cube position, but the side arms turn half way starting the crush the cube. I tried to reset all the components, did a bit of web search, consult with the experts with no clear answer.
This is one of those engineering moments where just keep banging my head into the wall is not going to get me further. No need to get frustrated, as these type of “stop and go” is a nature of engineering. Oh well.. time to step back & re-assess the situation and determine what needs to be changed
next step
As always, it is a good idea to conduct a proper “research” before beginning the execution (which I did not). After spending some time reading through the information I have previously gathered, I found that there were some instructions at the Otvinta site that needs to be followed closely.
http://www.rcr3d.com/hardware.html
https://www.pololu.com/category/102/maestro-usb-servo-controllers
There are some specific configuration required using the Pololu Maestro application which I was not aware (see below screenshot). Next step is to follow the instruction closely and give it a try again.
Lessons learned
Engineering is hard - Never underestimate the problem no matter how easy it seems
Conduct proper research & develop a gameplan (Plan of Attack & Possible outcomes)
Secret to Success: Prepare, Fight hard, and Learn
3D Printing Robot & Instruction
Information and instruction on building a 3D printed Robot start to finish
Intro to 3D Printed Rubik’s Cube solving Robot
http://www.rcr3d.com/intro.html
Hardware Assembly
http://www.rcr3d.com/hardware.html
OS & Software Setup
http://www.rcr3d.com/software.html
Servo calibration & Camera setup is known to be very tricky, please reference the links below to help you overcome the issues.
Pololu Maestro USB Servo Controllers
https://www.pololu.com/category/102/maestro-usb-servo-controllers
Download and Install Windows Driver software
Good instructions on calibrating Servos & Camera
PROJECT VISION & GOALS
VISION
Unlike the other projects, I did not start this one with a vision. It was more of an opportunistic approach to get a stalled project moving. However, I do think there might be an interesting pivot opportunity once the project is moving forward. We will see.
GOALS - 2020
Complete wire management and packaging for the robot
Calibrate servos and vision - ready for software and algorithm
Install OS, software platform, and solution algorithm
Run robot to solve cubes
Research options for future use case (additional algorithm, hardware variation etc)