Got some time to work on the code and worked on the motor done flags. I made some changes and that helped a lot. I got multiple motor movements at the same time, granted they still aren't moving to the right angles all the time but it's better than before! Tomorrow I'll try some other ideas I got from playing today. I want to see how much I can get done before next weekend as I can't do any work on the robot before disassembling it for the drive to Ohio.
This has actually been another good day for coding. Only stopped now to recharge the motor battery. I made some additional changes to the code that have improved the responsiveness of the legs to a move request. Since I have a spare cog again, I re-added the RGB control, seems to be some bugs in that part of the code so I'll play with that again in a bit.
The RGB code issues ended up being an issue with my ability to count! I had already used up all the cogs which explains the failure to respond. The plan for now is to run the RGB LEDs from the master computer now and come up with a method for the leg computers to provide that feedback. This means I need to solder the LEDs into a single string of 24 LEDs vs the 6 groups of 4 LEDs I have now. The control code allows individual LEDs to be controlled so I'll write up some code to interpret the incoming messages from the individual slave computers that will set values in an array. The array will then be cycled through to set the LED color.
Since I'm on the road next week for business, the robot gets disassembled this Sunday and packed in the car so this will be my last chance for setup before the Orrville get together. I hope to see some of you there and you can see the progress so far on the beast!
With it being a rainy day out yesterday, that meant a much shorter daily bike ride (only 5 miles!) which left much more time to play in the workshop. I disassembled the plugs from the RGB LED strips and soldered the strips into a single, 24 RGB LED strand. Using my test program I powered it up and everything worked! Reassembling the new stand into its slot took longer than expected, I didn't want to pull the plugs to the slave Prop board so I could only lift the computer base section up a couple of inches. I finally got everything wedged back into their places and verified that it still was working correctly.
Tonight I start on the feedback loop from slave to master so the individual RGB LEDs can be used as informational displays. Don't expect to have that done in time for the get together but it will be a work in progress!
I'm here in Wooster, Ohio for the Microcomputer Expo tomorrow in Orrville. The hexapod is disassembled in my car (first time since last year!) . Tonight is a get together for people to talk about projects etc. and the official show is tomorrow at the library. I'll be re-assembling the hexapod and if all goes right I'll be able to demonstrate one leg moving via the transmitter. It's not much but better than last years static display! There are both hardware and software improvements/changes to see since last years show. Fingers are crossed that next year this time it will be actively walking, and maybe climbing stairs.
Sounds like fun with a fair amount of work involved! I'm sure you will be the hit of the show. Enjoy the event and share some pics and or videos if you can.
Sitting in front of the Orrville library waiting for it to open so I can haul all my parts inside and attempt to re-assemble the hexapod. This will be a good practice run to see how well the modular design works. I do need to come up with some written instructions on the order of which parts have to be put on first, there are a few spots where the order matters but I've done this so infrequently that I haven't memorized all the steps!
Anyway, looking forward to meeting everyone that can come to the show. I'll attempt to get some photos to post of the other projects too.
I haven't done too much since the show in Orrville. It's been a time for getting all the end of summer stuff done and all the other chores that got neglected taken care of. Here is a short list of changes.
There is some progress on the computer power supply wiring, a little more soldering and that will be done. I managed to re-assemble the robot and make sure it survived the trip back from Orrville. Still have some software bugs to find, I noticed that I get some occasional random movements, I suspect the ADC filter may need a bit more fine tuning. That isn't a major concern but it seems the leg is not always moving to the requested position as requested by the transmitter. That is a bug that has to be squashed!
I did get some soldering done today, finished up 2 more RoboPi boards, only 2 more to go! These boards are working very nicely, lots of interface options and the 3 pin connectors on the outputs make interfacing easy.
It may be a bit again til my next update, we have started our refueling outage so I'll be working lots of hours for the next month, still have to have a way to pay for the toys!
Bob which filter do you think needs fine tuning? The controller or the bot?
The controller is fine, the filter I'm talking about is the one I'm using for the ADC filtering. I think some bad values are leaking thru occasionally. One idea is to ignore the ADC input until a new reposition request is received. I'll run some tests and figure out the best fix.
The outage at work is done, 12 hr days with only one day off can get brutal after a while! Anyway it's time to get started back on the Hexapod! (Still need to come up with a cool name for this thing sometime...).
I spent some time running power wires from the computer distribution center up to the computer level. I didn't like the first version so tore it out and now re-thinking this. The goal is to continue to keep this a modular assembly so the computer level wiring will plug into the battery level. I have some nice 2 pin plugs that will work, just have to figure out how to route everything.
On the software side, I fixed a couple of bugs that occasionally resulted in random motion of the leg without any input changes. Just started working on closing the feedback loop from the slave computers back to the master computer. This will be used to signal error conditions, sensor feedback and inform the master computer when the leg has completed a motion.
I want to get started soon on programing the IK routines into the master computer. This will be the acid test for leg movements! I have tried earlier and played around with it but the leg control software wasn't accurate enough to provide the expected motions. It's almost there now, I just have to have patience.
That's it for now, I'll be getting some more work in later today but it's time to go shipwreck diving now!
Finished up wiring the computer power supply for the leg controllers, lots of crimp terminals, soldering and heat shrink but the result looks pretty good now.
Today will be spent working on the feedback loop from the leg to the master controller and then back to the transmitter. Lots to do!
I also need to do a lot of tedious soldering for all the 3 pin connectors, got to be in the right frame of mind for that task! That will also determine when I can hook up more than one leg and start that experimenting.
Hard to show photos at this stage, most of the changes are pretty suble and not very noticeable, like wiring and software bug fixes. I did buy a wood stand to set the robot on top of for testing. I cut the size down so I don't need a step stool to look into the computer level anymore! That was helpful for me and the wife wanted her kitchen stool back!
Today was pretty good programming wise. Got the feedback loop from the slave to master figured out so data is being passed both from and to the master computer and slave computer. I'm only feeding back data that is being used to control the RGB LEDs that are located above the leg. Each leg has 4 LEDs used to provide troubleshooting data. Each motor has one LED, with the fourth LED used for miscellaneous data. The data is shown as a seperate color. Right now I'm using 7 colors that are easily identified to signify different conditions.
Tomorrow the job will be optimizing the code and making it work for all the legs instead of just one leg.
I was getting low voltage indications on the main motor battery so I hooked up my old trusty gel cell charger that I got back around 1984. It finally gave up the ghost so a quick run to the Battery Store and got a new charger. So I'm back in business.
Glad to see the forums are back up again! I was missing my daily fix.
After my last posting where I was charging the main battery, I decided to pull the computer deck off to do some work I'd been putting off. Once that was done and the battery still wasn't fully recharged, I decided to make some programming changes. The problem with that is I was only checking that the changes were compiling and not seeing how the leg reacted. So when I finished charging and reconnected the battery the leg refused to move.
I had to validate the wiring was still correct and then started to back out the program changes. Still no go, no signs of life other than the occasional twitch during startup. Finally I removed the radio interface entirely and tested using the manual serial input from the computer.
After a bit of time I got that function to work again. Next was putting the XBee back in place with a lot of debug statements to narrow the problem done. The holdup appears to be that either the XBee reciever on the master isn't recieving the transmissions correctly.
So today will be going back to some of my earlier test code to see what changed. I figured I'd be a bit further along by now but moving backwards wasn't in the plans. It's a wet, miserably cold day so working in the basement isn't such a bad idea.
Looking back at this forum I found some XBee code I posted shortly before the Orrville get together. Comparing it to the current code I was able to fix some of the coding differences enough so that the leg is moving once again. However I also removed some of the code earlier that fixed issues with that version of the code. So back to the drawing board and figure out what I did. Hopefully it will go faster this time since I've fixed it once before.
I really need to save older versions of the code more often since this has happened a couple of times before, however not this badly.
Still working to resolve coding issues. As long as I was trying to fix code, I completely changed the parsing routines to a much simpler setup based on some GPS parsing code I found. This version is easier to understand and troubleshoot! Still getting errors but they are easier to figure out now. I've got the parser breaking down the input from the transmitter into individual motor commands and the global variables that the motors use to base their movement on are being updated but I'm not getting the expected motor motio yet.
After a day of coding my mind is mush right now so I'll get back to it after work tomorrow. I haven't progressed as fast as hoped for, looking to build the motivation up again, been spending too many nights without much progress.
Working on a thread I posted in the Prop forum with the parsing code. My new and simplified parser is outputting not only the desired angle data but also a lot of angles that were not requested. Although it is interesting to see the leg moving all over the place, that isn't the goal of this experiment. Will hit it again tomorrow, hopefully with a good nights rest I'll see where the problem lies.
I'm out of town so haven't been able to do any further work on the robot but was able to test several variations of the parser routine. Most work well but it seems to 'lock up' occasionally. I'm working on improving the reliability of the routine next. I'll be home soon and plan on hitting it hard to get over this bump in the road. I really want to start testing multiple leg movements soon!
Merry Christmas to all and hope that Santa is good to you!
Now that I'm back from another Florida trip (with side trip to Skycraft Surplus in Orlando) and ready to get back to work.
Today I used parser code from Jon M. over on the Propellor forum and got that running. Most of the issues I was seeing before have disappeared. I found that adding a 5 msec delay on the master computer routine when it outputs the serial output has almost totally eliminated some of the bad inputs to the leg controller.
One test was to move the leg to a specific position and just let it sit there and see if it generates any random movements. This test went very well with some new instructions that specifically bypass the leg movement routines unless the command comes in correctly.
Now that I've got stable code again it is time to work on that feedback loop again. This time I'm making multiple copies of the code as I go along so it will be easier to return to a valid working code base.
DiverBob: Great to see you're back on the case. Once again, your patience and persistence are exemplary.
But please note that zappman's FrankenBot is stealing all the headlines in the forum. He's made lots of progress in just a few hours. If it's not asking too much, could you please finish your robot tonight and have it walk a figure 8 pattern? Time's a-wasting! :):)
DiverBob: Great to see you're back on the case. Once again, your patience and persistence are exemplary.
But please note that zappman's FrankenBot is stealing all the headlines in the forum. He's made lots of progress in just a few hours. If it's not asking too much, could you please finish your robot tonight and have it walk a figure 8 pattern? Time's a-wasting! :):)
I'm going to spend a few hours this weekend, does that count? The best I think I could do is have a leg tip move in a figure 8 pattern, does that meet the requirement?
Tougher time than expected, had to take a time out before I break something. Was able to get the feedback loop started and sending back valid data for one motor that was then used to control the RGB LEDS. However once I added to other 2 motor data, I started picking up bad data in the string that stops the leg from responding. I've been inserting all kinds of debugging statements to try to narrow down the issue and everytime I think I have the solution it results in another dead end. With that in mind, I'm stopping to write this up and hope that I can come up with another idea. In the mean time I've backed out of the changes and will try again later.
Another thing that just showed up is that when there is a long movement by a motor, it will stop moving after 3-4 sec for less than a second and then resume movement. I think this has something to do with the HB-25 controllers but I don't know what changed to have them start acting like this. I need to read the controller manual again, I tend to remember seeing this discussed in there.
Tougher time than expected, had to take a time out before I break something.
I haven't actually build a robot that can break or destroy itself yet. What a great goal for 2015!
Continued good luck on your project. Every part is clearly a labor of love and I'm sure the final product (are robots ever totally finished?) will be worth all the work and head scratching.
Went and put the feedback loop onto its own cog which improved things but am still running into some issues. I've posted a detailed coding item on the Prop 1 forum, will have to wait now and see if anyone can see what I'm missing.
In regards to stopping before I break something, I was referring to myself! However, I have had a robot attempt to self-destruct mechanically once or twice when I was working with high powered DC gearmotors and stop limit switches failed. Ended up bending aluminum before I could hit the kill switch.
Got the answer to my feedback parser issues, turns out in the course of testing and modifying code, I was trying to push a Long return value into a Byte variable while reading the serial transmission. Changing that command fixed the feedback routine so right now I'm getting the RGB LEDS to display the leg movement data correctly. I did notice that my color schema isn't the same across all 3 motors so I need to clean that up a bit also. I also am seeing occasional red lights (mainly on the tibia motor) which indicate an error was encountered so will need to check that out also. There is a 4th LED available for the master computer display, I need to figure out what I want to use that one for. Maybe hold it in reserve for future leg sensor data display.
Next item on the list is tweeting the response on the leg when a command is input from the radio. Under some circumstances it's taking several seconds to make the physical move, other times it's almost instant. The preferred response is instant gratification so I need to see what is hanging things up. Time for more troubleshooting, a never ending process!
Comments
Since I'm on the road next week for business, the robot gets disassembled this Sunday and packed in the car so this will be my last chance for setup before the Orrville get together. I hope to see some of you there and you can see the progress so far on the beast!
Bob
Tonight I start on the feedback loop from slave to master so the individual RGB LEDs can be used as informational displays. Don't expect to have that done in time for the get together but it will be a work in progress!
Hope to see some of you tonight or tomorrow!
Bob Sweeney
Anyway, looking forward to meeting everyone that can come to the show. I'll attempt to get some photos to post of the other projects too.
There is some progress on the computer power supply wiring, a little more soldering and that will be done. I managed to re-assemble the robot and make sure it survived the trip back from Orrville. Still have some software bugs to find, I noticed that I get some occasional random movements, I suspect the ADC filter may need a bit more fine tuning. That isn't a major concern but it seems the leg is not always moving to the requested position as requested by the transmitter. That is a bug that has to be squashed!
I did get some soldering done today, finished up 2 more RoboPi boards, only 2 more to go! These boards are working very nicely, lots of interface options and the 3 pin connectors on the outputs make interfacing easy.
It may be a bit again til my next update, we have started our refueling outage so I'll be working lots of hours for the next month, still have to have a way to pay for the toys!
I spent some time running power wires from the computer distribution center up to the computer level. I didn't like the first version so tore it out and now re-thinking this. The goal is to continue to keep this a modular assembly so the computer level wiring will plug into the battery level. I have some nice 2 pin plugs that will work, just have to figure out how to route everything.
On the software side, I fixed a couple of bugs that occasionally resulted in random motion of the leg without any input changes. Just started working on closing the feedback loop from the slave computers back to the master computer. This will be used to signal error conditions, sensor feedback and inform the master computer when the leg has completed a motion.
I want to get started soon on programing the IK routines into the master computer. This will be the acid test for leg movements! I have tried earlier and played around with it but the leg control software wasn't accurate enough to provide the expected motions. It's almost there now, I just have to have patience.
That's it for now, I'll be getting some more work in later today but it's time to go shipwreck diving now!
Bob
Today will be spent working on the feedback loop from the leg to the master controller and then back to the transmitter. Lots to do!
I also need to do a lot of tedious soldering for all the 3 pin connectors, got to be in the right frame of mind for that task! That will also determine when I can hook up more than one leg and start that experimenting.
Hard to show photos at this stage, most of the changes are pretty suble and not very noticeable, like wiring and software bug fixes. I did buy a wood stand to set the robot on top of for testing. I cut the size down so I don't need a step stool to look into the computer level anymore! That was helpful for me and the wife wanted her kitchen stool back!
Tomorrow the job will be optimizing the code and making it work for all the legs instead of just one leg.
I was getting low voltage indications on the main motor battery so I hooked up my old trusty gel cell charger that I got back around 1984. It finally gave up the ghost so a quick run to the Battery Store and got a new charger. So I'm back in business.
After my last posting where I was charging the main battery, I decided to pull the computer deck off to do some work I'd been putting off. Once that was done and the battery still wasn't fully recharged, I decided to make some programming changes. The problem with that is I was only checking that the changes were compiling and not seeing how the leg reacted. So when I finished charging and reconnected the battery the leg refused to move.
I had to validate the wiring was still correct and then started to back out the program changes. Still no go, no signs of life other than the occasional twitch during startup. Finally I removed the radio interface entirely and tested using the manual serial input from the computer.
After a bit of time I got that function to work again. Next was putting the XBee back in place with a lot of debug statements to narrow the problem done. The holdup appears to be that either the XBee reciever on the master isn't recieving the transmissions correctly.
So today will be going back to some of my earlier test code to see what changed. I figured I'd be a bit further along by now but moving backwards wasn't in the plans. It's a wet, miserably cold day so working in the basement isn't such a bad idea.
Thanks for all the updates, I read them all. Anxiously awaiting some new videos.
Jim
I really need to save older versions of the code more often since this has happened a couple of times before, however not this badly.
After a day of coding my mind is mush right now so I'll get back to it after work tomorrow. I haven't progressed as fast as hoped for, looking to build the motivation up again, been spending too many nights without much progress.
Merry Christmas to all and hope that Santa is good to you!
Today I used parser code from Jon M. over on the Propellor forum and got that running. Most of the issues I was seeing before have disappeared. I found that adding a 5 msec delay on the master computer routine when it outputs the serial output has almost totally eliminated some of the bad inputs to the leg controller.
One test was to move the leg to a specific position and just let it sit there and see if it generates any random movements. This test went very well with some new instructions that specifically bypass the leg movement routines unless the command comes in correctly.
Now that I've got stable code again it is time to work on that feedback loop again. This time I'm making multiple copies of the code as I go along so it will be easier to return to a valid working code base.
But please note that zappman's FrankenBot is stealing all the headlines in the forum. He's made lots of progress in just a few hours. If it's not asking too much, could you please finish your robot tonight and have it walk a figure 8 pattern? Time's a-wasting! :):)
http://forums.parallax.com/showthread.php/138125-Erco-s-Figure-Eight-Challenge?p=1168501&viewfull=1#post1168501
Another thing that just showed up is that when there is a long movement by a motor, it will stop moving after 3-4 sec for less than a second and then resume movement. I think this has something to do with the HB-25 controllers but I don't know what changed to have them start acting like this. I need to read the controller manual again, I tend to remember seeing this discussed in there.
I haven't actually build a robot that can break or destroy itself yet. What a great goal for 2015!
Continued good luck on your project. Every part is clearly a labor of love and I'm sure the final product (are robots ever totally finished?) will be worth all the work and head scratching.
In regards to stopping before I break something, I was referring to myself! However, I have had a robot attempt to self-destruct mechanically once or twice when I was working with high powered DC gearmotors and stop limit switches failed. Ended up bending aluminum before I could hit the kill switch.
Next item on the list is tweeting the response on the leg when a command is input from the radio. Under some circumstances it's taking several seconds to make the physical move, other times it's almost instant. The preferred response is instant gratification so I need to see what is hanging things up. Time for more troubleshooting, a never ending process!