I got the test leg re-attached to the robot body after validating the sensor wiring to the prop board and making up some new connectors. I had to make some 'adjustments' with a file on one encoder housing, the end of the shaft was rubbing against the bolt head and causing the linkage to rub against the housing. This required careful use of a file to get the parts to play nicely together without binding. Everything is now ready to calibrate each axis and start testing the programs. So there is still progress in a positive direction!
Apparently I miswired my encoders, got the CS and CLK wires switched around which explains why I haven't been able to get anything to work right on the leg. Got that sorted out now and when I started to run the calibration routines the wrong motor responses to the input commands. It's been very frustrating lately with the software, I may need to go back a software copy from a couple of versions ago where I know everything worked and start my mods for the magnetic encoder over again.
Unfortunately I haven't spent as much time lately on the robot due to preparations for my upcoming retirement. Hopefully once I get all this behind me I can concentrate more on the software and get some quality time in. In the meantime I'll get some more work done over the weekend and maybe iron out some of the new issues.
Hi Bob
While getting ready for retirement, please keep track of how many miles you are walking when doing your job.
Match that with some type of activity after you are retired.
Sometimes you will need to break away from your projects to clear your head.
Don't ask me how I know this.
..
Every time I see a DiverBob post, I jump immediately to read any new updates.
Thanks
Hi Bob
While getting ready for retirement, please keep track of how many miles you are walking when doing your job.
Match that with some type of activity after you are retired.
Sometimes you will need to break away from your projects to clear your head.
Don't ask me how I know this.
..
Every time I see a DiverBob post, I jump immediately to read any new updates.
Thanks
Thanks for the advice! I already have my scuba wreck diving, racquetball (3 times a week), bicycle riding.(20-30 miles daily once the weather warms up), a basement machine shop and a wife that likes to travel. I think we are rapidly filling up the event schedule so keeping busy shouldn't be a problem. The problem is having time to work in the basement on the robot, too many other activities all demanding time.
Tonight will be dedicated to figuring out the issues with the Coxa routines and get them sorted out first before I start on the other motors.
The Mantis is a cool project! I think I've watched most of the videos out there in this hexapod. Lots of engineering went into it. You are right that I haven't really heard anything new on it for a couple of years now. And Mantis is a great name, wish I could come up with a cool name for my project too!
I didn't back out of the current version of the program but spent some time going though the logic to familiarize myself with code that I haven't spent a lot of time with lately. With that accomplished I decided the best way to fix things was to first write down a list of the items that were going wrong and attack them individually rather than jumping all over the code. Using this method I got the calibration routine working, mostly. One small issue remains on calibration to track down but that isn't a major concern and is now on the list!
Once that was done I found that the coxa motor move routine is working once again, YEH! I see more backlash than expected showing up in the magnetic encoder output when reversing direction, looks to be around 100 counts or 0.8 degrees of motion. I'm contemplating methods that could remove/reduce the backlash, I like to physical location of the encoder and the connection to the leg using springs. I may try a miniature turnbuckle from model airplanes as a connecting rod, that could be adjusted to remove all slop in the connections.
I found that I could get 0.16 degree movements out of the coxa motor now with the PID. I reduced the PID deadband to 2 counts to get this. I'm not sure I can go to a 1 count for deadband, that is an experiment for another day.
Continuing work on setting up the magnetic encoders. I now have the coxa and tibia motors working properly to input commands. Got started on the femur routines and have a couple of more hours of coding/troubleshooting to go on it. The additional accuracy of the magnetic encoders has revealed that there is some backlash in the system, I don't know if its enough to cause issues with the overall leg movement yet.
Ran into some difficulty this weekend calibrating the encoders. I was getting different output values from the encoders at each end of motor travel which was perplexing. On closer examination I found that the shaft from the encoder was bending at the hole in the delrin 'nut'. I also found that the centerline of the encoder shaft was not lining up with the centerline of the pivot point so that was causing the bending motion. This misalignment was caused because the CAD file for the main leg support has a radius that is different than the radius machined on the encoder housing. This meant the encoder housing won't fit flush on the leg support which pushed the encoder housing down about 0.075 inches from the correct position. This causes the connecting rod from the encoder to the 'nut' to change its length as the leg moved which in turn caused the other end of the shaft to bind in the hole and bend the connecting rod.
So back to the drawing board and fixing the radius on the encoder housing to match the leg supports. I can fix a couple of other issues I noticed such as giving a bit more clearance between the encoder shaft and the bolt head on the main leg support which will help keep the two items from rubbing against each other.
Although I have some mods needed for the housing, I was able to get all three motors to operate using the encoders. Granted the motors didn't always go where I wanted but once the encoder issue is resolved the motors should move correctly.
I haven't been spending a lot of time lately on the robot, I was busy with getting everything ready for my retirement. Now that I'm 2 weeks past my last day at work I'm starting to see some time available to get back into the workshop.
I was able to use a dremel tool to 'modify' the existing encoder housing for the femur so that it is now properly centered on the main leg pivot point. I then ran the calibration routine and got consistent numbers from the program. Now that I know that this was the issue with the calibration, I modified the CAD files today with the changes needed. However I failed to run the simulation program so when I started cutting I found that the CAM program had renumbered my tools so I managed to ruin a block of delrin pretty quickly. I fixed the issue but will wait til tomorrow to setup another delrin block for the next round.
Hopefully I can start spending more time, at least an hour or two a day in the shop puttering around. I would like to have all leg modifications installed and calibrated before the end of the summer. That sets things up so that I can work on the step routines again. I am planning on adding a 60W laser cutter to the shop next, planning on a trip to go see it in action in June before the purchase. That will open up some new options for things I can make!
Finished up machining another encoder housing, this one seems to be correct. So I videoed the process and edited it down to a reasonable length of time. I skipped over several operations but you should be able to get the idea. Now I have to make 11 more of these, that is going to take some time!
Enjoy the session!
Hi Bob, Love that mill. And your dedication to a long term project.
I used to run a milling machine(manual), or two at the same time(NC), punched paper tape. So I don't have any CNC experience.
But you do nice work, and then you have to repeat it so many times for each part. Always happy to read an update on your progress.
I hang on your every word, when you help us envision a robot of this magnitude. I'm sure you got this encoder-housing thing licked, and begin some enjoyment from coding.
I hope all your dimensions fall within acceptable tolerances
Initial testing is going well. With the increased resolution I was able to find and fix several software issues that were covered up by the old system. I have a list of software and hardware changes/completions to work on now. The PID routine got some simple fixes yesterday, will work on tuning it more as time goes on. I would really like to develop a method to auto-tune the PID but that is a longer term item, in the meantime I will manually tune and test each motor.
I'm no machinist, just self-taught, but the Tormach mill helps out alot! I like the size machine that I have but if I were starting over they now have a desktop version, the 440, that would be a better fit in my basement with only a slight table size reduction. Since most of the parts I make are relatively small it wouldn't be a problem.No plans to get rid of the Tormach anytime soon! (I do have a CNC Sherline mill that is gathering dust and available if someone is interested).
I have a demo scheduled to see a 60 watt laser cutter in Florida, going to take some materials and files to have them cut out and see the results. Looking forward to the trip which includes a stopover at Skycraft Surplus, one of my favorite places to shop for hobby related stuff!
I remember the machines I worked with required specialized cutters, we had a cutter grinder, and that is all he did. Grind cutters on a special machine, out of hardened, pre-fluted stock. But the guys in the CNC department used expensive ready made cutters. There end result was usually flat surfaces and straight walls. We had radiuses and angles to worry about. So actually my job was a little more demanding than the CNC guys.
I recently assembled a Bob's CNC (not recommended), which is totally, except for hardware, made of laser cut plywood. And I was surprised at the beautiful edges that result from laser cutting. A little scorched, but very smooth, with no need of sanding.
I can't understand cutting metal on one though, you would think spatter would be a problem, like in welding. But they do a great job on thin stock that I've seen.
What do you plan on using it for? Do they cut thick material well? I'm sure it can never replace a mill, but help in quicker end results.
I assume the trip will include diving as well?
Jim
Actually this is the first trip to Florida that doesn't have diving or manatees as a objective. I'm still working on the wife to get her to change her mind for at least one day of diving! This trip's purpose was primarily to demo the laser cutter, visit family, and check out some possible retirement locations to live. I also have to get supplies from Skycraft Surplus, not only for the robot but for the next project, a underwater ROV.
The test leg is fully assembled again and running through its paces looking for issues in the code and movement. I've mentioned before that there are some combinations of Femur and Tibia positions that can cause mechanical interference due to the construction of the leg. I set out to determine the extent of the interference by creating a graph with the axis being the number of degrees of movement each axis can move through (Femur is 38 to 136 degrees, and the Tibia is 0 to 52 degrees). Starting with the Femur at its maximum location, 136, I then moved the Tibia through its full range of movement. I repeated this in 10 degree increments of the Femur (next location was 130 degrees). There was no interference until I got to 80 degrees on the Femur and 52 degrees on the Tibia. I plotted the point where mechanical interference occurs down to the femur at 50 degrees. Below 50 degrees the tibia can only be at 0 to avoid interference. The plot on the graph is fairly linear showing the line of inputs that can not be used.
I couldn't figure out how to change this information into code until this morning. I got the idea in the shower that I am moving two sides of a parallelogram. Therefore there is a minimum interior angle that the two sides can form. Since the femur and tibia 'angles' I am measuring against are using the same vertical base, I just need to subtract the angles and if a command is input that puts the angle less than the minimum, then the command can be rejected or limited to the point just before interference occurs. I have to translate this idea to spin but I think the hard part is done. Now to code and test the concept!
Man, I'm glad you are still chugging along. I'm so far into my rabbit-hole I wonder if I'll ever get back to my robot or not but It's fun to watch your progress still!
This has been the longest single project I have ever done. The majority of the mechanical parts went together pretty fast, only about 3 years to finish the legs and body. It's been the programming that has been tougher than I ever expected.
I thought that I could do some simple modifications to some of the existing hexapod code already out there and I would be good to go. Obviously that didn't happen since my design is quite a bit different and working with DC motors vs servos throws another wrinkle into the problem. I've managed to slowly work through the issues only then to be confronted with my last issue where the potentimeter feedback mechanism isn't accurate enough to give the required leg movement. So its taken time to identify that as an issue, determine how to solve it (magnetic encoders), test, program and test more. I'm sure there are more issues yet to be encountered!
In the meantime I got a great demo of the cutting/engraving laser. I decided to get the larger commercial version due to the available cutting bed size and larger laser tube. The laser will be a 100 watt tube that will be able to cut through most materials and thicknesses that I expect to encounter and still have enough power/size for the future. I'll be placing the order once I get back home.
Today is a Orlando Skycraft Surplus shopping day! Time to get 'stuff' that I can use in the workshop for this and future projects. This place is a robot enthusiast's candy store, its amazing what you can find here!
The cutting table size for the laser is 16"x30". It's overal dimensions are 65.5"L x 38"W x 44.5"H and 630 pounds. According to the staff it can be disassembled enough to fit through a doorway! I will have to wire up its own power circuit and provide a air path for the exhaust blower. It also has an air compressor input. The reason for getting this one is that I won't outgrow it too soon!
Who knew that retirement would be so busy! Of course now I'm doing things that myself and the wife want to instead of a boss telling what I'm going to do!
Haven't spent a lot of time on the robot but I have been doing minor tweaking of the code as I get the movements firmed up. Found and fixed several minor errors and improved some of the troubleshooting code so it was more consistant between each motor.
The femur motion seems to be the most stable but there is a little issue with mechanical inertia where when the PID loop stops because the motor is in the deadband however the motor coast down is still moving. On the femur this translates to about 10 ticks on the encoder which is 0.8 degrees. I've slowed the motor down considerably just before this point but don't want to go too slow as that will affect the overall speed when walking. I'm seeing a much larger issue on the tibia but I believe that is because I haven't fixed the encoder housing design issue on that one yet.
I've got a couple of ideas to try yet. The code design on my PID loop is that once the deadband is reached the PID loop is exited until the next movement command. I did this to prevent hunting around the set point so the motor isn't reversing itself. But since the leg movements from the gait program are for around 0.4 degrees, the amount of motor movement is very small. I may also need to work harder to tune the integral portion of the loop. My loop is primarily a PI loop, I haven't used the derivative since the motor would be making very short runs overall and my understanding of the derivative lead me to believe that it wouldn't be needed in this application.
Still keeping going on this project, got some 'stuff' from Skycraft Surplus to play with. I want to put a couple of white LEDs inside the main body and battery compartments since it is a little dark which makes it harder to follow wires inside there. I also got a neat Lascaux color programmable panel that can be set up to display custom current and voltage displays. Not sure how or if I will put that on the robot but it might make a good troubleshooting aid that I could plug into the robot when needed.
I bought myself a Chinese import with a 700mm x 500mm (27.5" x bed 19.5"). If I'm not mistaken, the driver DSP in mine is the same as what's in some of the Boss lasers (Ruida).
It's been getting a decent amount of use, and once we've settled into our new place I'll be back into working on the software for it again, and hopefully some new hardware projects too.
I bought myself a Chinese import with a 700mm x 500mm (27.5" x bed 19.5"). If I'm not mistaken, the driver DSP in mine is the same as what's in some of the Boss lasers (Ruida).
It's been getting a decent amount of use, and once we've settled into our new place I'll be back into working on the software for it again, and hopefully some new hardware projects too.
Nice price for a 100w laser. I didn't want to deal with import duties/shipping and want a US distributor for warranty and support. How was the process for you?
I didn't have to deal with that. There are a few sellers of these that have a warehouse in Oakland that they hold product in, and I live an hour from there in San Jose, so it was delivered with a lift-gate truck to my door as part of the $2500 price. I was expecting "75% completed kit" but it was pretty much plug & play. I've been happy with it.
I went and ordered the Boss Laser Cutter today. I ordered the LS1620 model but they upgraded me to the LS1630 model for the same price as the other unit. It seems they are phasing these out but haven't updated their website. They don't want to bring in any more of these so I agreed to take one. Now its a 2-4 week wait for delivery. In the meantime I have to figure out where to set this up in the basement and clear out a spot.
Comments
Unfortunately I haven't spent as much time lately on the robot due to preparations for my upcoming retirement. Hopefully once I get all this behind me I can concentrate more on the software and get some quality time in. In the meantime I'll get some more work done over the weekend and maybe iron out some of the new issues.
While getting ready for retirement, please keep track of how many miles you are walking when doing your job.
Match that with some type of activity after you are retired.
Sometimes you will need to break away from your projects to clear your head.
Don't ask me how I know this.
..
Every time I see a DiverBob post, I jump immediately to read any new updates.
Thanks
Tonight will be dedicated to figuring out the issues with the Coxa routines and get them sorted out first before I start on the other motors.
Bob
http://forums.parallax.com/discussion/166558/man-carrying-mantis-hexapod
You and that guy Matt can compare notes, although it doesn't look like he's done much recently.
Once that was done I found that the coxa motor move routine is working once again, YEH! I see more backlash than expected showing up in the magnetic encoder output when reversing direction, looks to be around 100 counts or 0.8 degrees of motion. I'm contemplating methods that could remove/reduce the backlash, I like to physical location of the encoder and the connection to the leg using springs. I may try a miniature turnbuckle from model airplanes as a connecting rod, that could be adjusted to remove all slop in the connections.
I found that I could get 0.16 degree movements out of the coxa motor now with the PID. I reduced the PID deadband to 2 counts to get this. I'm not sure I can go to a 1 count for deadband, that is an experiment for another day.
Bob
So back to the drawing board and fixing the radius on the encoder housing to match the leg supports. I can fix a couple of other issues I noticed such as giving a bit more clearance between the encoder shaft and the bolt head on the main leg support which will help keep the two items from rubbing against each other.
Although I have some mods needed for the housing, I was able to get all three motors to operate using the encoders. Granted the motors didn't always go where I wanted but once the encoder issue is resolved the motors should move correctly.
I was able to use a dremel tool to 'modify' the existing encoder housing for the femur so that it is now properly centered on the main leg pivot point. I then ran the calibration routine and got consistent numbers from the program. Now that I know that this was the issue with the calibration, I modified the CAD files today with the changes needed. However I failed to run the simulation program so when I started cutting I found that the CAM program had renumbered my tools so I managed to ruin a block of delrin pretty quickly. I fixed the issue but will wait til tomorrow to setup another delrin block for the next round.
Hopefully I can start spending more time, at least an hour or two a day in the shop puttering around. I would like to have all leg modifications installed and calibrated before the end of the summer. That sets things up so that I can work on the step routines again. I am planning on adding a 60W laser cutter to the shop next, planning on a trip to go see it in action in June before the purchase. That will open up some new options for things I can make!
Bob
Enjoy the session!
I used to run a milling machine(manual), or two at the same time(NC), punched paper tape. So I don't have any CNC experience.
But you do nice work, and then you have to repeat it so many times for each part. Always happy to read an update on your progress.
I hang on your every word, when you help us envision a robot of this magnitude. I'm sure you got this encoder-housing thing licked, and begin some enjoyment from coding.
I hope all your dimensions fall within acceptable tolerances
Mike
I'm no machinist, just self-taught, but the Tormach mill helps out alot! I like the size machine that I have but if I were starting over they now have a desktop version, the 440, that would be a better fit in my basement with only a slight table size reduction. Since most of the parts I make are relatively small it wouldn't be a problem.No plans to get rid of the Tormach anytime soon! (I do have a CNC Sherline mill that is gathering dust and available if someone is interested).
I have a demo scheduled to see a 60 watt laser cutter in Florida, going to take some materials and files to have them cut out and see the results. Looking forward to the trip which includes a stopover at Skycraft Surplus, one of my favorite places to shop for hobby related stuff!
Bob
Jim
I recently assembled a Bob's CNC (not recommended), which is totally, except for hardware, made of laser cut plywood. And I was surprised at the beautiful edges that result from laser cutting. A little scorched, but very smooth, with no need of sanding.
I can't understand cutting metal on one though, you would think spatter would be a problem, like in welding. But they do a great job on thin stock that I've seen.
What do you plan on using it for? Do they cut thick material well? I'm sure it can never replace a mill, but help in quicker end results.
The test leg is fully assembled again and running through its paces looking for issues in the code and movement. I've mentioned before that there are some combinations of Femur and Tibia positions that can cause mechanical interference due to the construction of the leg. I set out to determine the extent of the interference by creating a graph with the axis being the number of degrees of movement each axis can move through (Femur is 38 to 136 degrees, and the Tibia is 0 to 52 degrees). Starting with the Femur at its maximum location, 136, I then moved the Tibia through its full range of movement. I repeated this in 10 degree increments of the Femur (next location was 130 degrees). There was no interference until I got to 80 degrees on the Femur and 52 degrees on the Tibia. I plotted the point where mechanical interference occurs down to the femur at 50 degrees. Below 50 degrees the tibia can only be at 0 to avoid interference. The plot on the graph is fairly linear showing the line of inputs that can not be used.
I couldn't figure out how to change this information into code until this morning. I got the idea in the shower that I am moving two sides of a parallelogram. Therefore there is a minimum interior angle that the two sides can form. Since the femur and tibia 'angles' I am measuring against are using the same vertical base, I just need to subtract the angles and if a command is input that puts the angle less than the minimum, then the command can be rejected or limited to the point just before interference occurs. I have to translate this idea to spin but I think the hard part is done. Now to code and test the concept!
Bob
I thought that I could do some simple modifications to some of the existing hexapod code already out there and I would be good to go. Obviously that didn't happen since my design is quite a bit different and working with DC motors vs servos throws another wrinkle into the problem. I've managed to slowly work through the issues only then to be confronted with my last issue where the potentimeter feedback mechanism isn't accurate enough to give the required leg movement. So its taken time to identify that as an issue, determine how to solve it (magnetic encoders), test, program and test more. I'm sure there are more issues yet to be encountered!
In the meantime I got a great demo of the cutting/engraving laser. I decided to get the larger commercial version due to the available cutting bed size and larger laser tube. The laser will be a 100 watt tube that will be able to cut through most materials and thicknesses that I expect to encounter and still have enough power/size for the future. I'll be placing the order once I get back home.
Today is a Orlando Skycraft Surplus shopping day! Time to get 'stuff' that I can use in the workshop for this and future projects. This place is a robot enthusiast's candy store, its amazing what you can find here!
Bob
Jim
I remember seeing it a couple years ago, what he started with in November 2011, it may have something to do with it.
http://forums.parallax.com/discussion/comment/1053600/#Comment_1053600
Haven't spent a lot of time on the robot but I have been doing minor tweaking of the code as I get the movements firmed up. Found and fixed several minor errors and improved some of the troubleshooting code so it was more consistant between each motor.
The femur motion seems to be the most stable but there is a little issue with mechanical inertia where when the PID loop stops because the motor is in the deadband however the motor coast down is still moving. On the femur this translates to about 10 ticks on the encoder which is 0.8 degrees. I've slowed the motor down considerably just before this point but don't want to go too slow as that will affect the overall speed when walking. I'm seeing a much larger issue on the tibia but I believe that is because I haven't fixed the encoder housing design issue on that one yet.
I've got a couple of ideas to try yet. The code design on my PID loop is that once the deadband is reached the PID loop is exited until the next movement command. I did this to prevent hunting around the set point so the motor isn't reversing itself. But since the leg movements from the gait program are for around 0.4 degrees, the amount of motor movement is very small. I may also need to work harder to tune the integral portion of the loop. My loop is primarily a PI loop, I haven't used the derivative since the motor would be making very short runs overall and my understanding of the derivative lead me to believe that it wouldn't be needed in this application.
Still keeping going on this project, got some 'stuff' from Skycraft Surplus to play with. I want to put a couple of white LEDs inside the main body and battery compartments since it is a little dark which makes it harder to follow wires inside there. I also got a neat Lascaux color programmable panel that can be set up to display custom current and voltage displays. Not sure how or if I will put that on the robot but it might make a good troubleshooting aid that I could plug into the robot when needed.
Bob Sweeney
This is what mine looks like: http://www.ebay.com/itm/100W-CO2-7050-Laser-Engraving-Cutting-Machine-Engraver-Cutter-W-Rotary-500-700mm-/252428440548
It's been getting a decent amount of use, and once we've settled into our new place I'll be back into working on the software for it again, and hopefully some new hardware projects too.
Bob Sweeney
Bob Sweeney