Post 8 - The boys are back in town!


Hi Folks.

It's been a while but now we're back! So, I thought I'd give an update on what we've been up to over the last few months. But first, some sad news. My mother, who had been in care for the last few years due to progressive Alzheimer's, sadly deteriorated over a few months and has passed away. She was the inspiration that led to the formation of this company, Phoenix Labs Ltd, with the goal of developing a robot which is sufficiently advanced to be able to provide a level of care to the elderly and disabled in their own homes. I and my family had supported her at her home for as long as possible before having to make the difficult decision for her to go into full time care. During that time we became aware of the strain this puts on a family, both in time and financially, to provide own home care for loved ones. Having experienced this I decided there must be something that could be done using today's technology to help others in the same situation, and indeed myself and family as I'm not getting any younger! To learn more about our goals and aims, follow this link : Robot World website . But now, on with the Blog!


If you've read my other posts you'll know that I like to work on an aspect of robotics to get it to a level, then move on to a different aspect for a while, and then return and do some more on each of them in turn. Whilst this may seem a bit random, I assure you that it isn't. In fact, it's all part of the plan. In the ideal world these aspects would be under development concurrently by a team of people. Unfortunately, for a while there was only me, so I could only do one aspect at a time. The different stages of each aspect were all mapped out early on and I was working my way through them. Fortunately, I have been joined by a business partner, Shane, who is now helping to push things along, so we should begin speeding up - at least that's the theory, lol!

So, in this post I'll describe where we are up to with the next stage of the sequence, robot arm control. In posts 5 & 6 I described how I'd modified an Owi robot arm to provide feedback, and then used this to develop software to position the arm. The next stage in the arm development, in my plan, was to come up with a way of building sequences of arm position information which can then be used to make the arm perform useful tasks, so that is what we set out to do.

Firstly we decided that the control of the Owi arm wasn't brilliant. This may be due to a number of factors, e.g. low quality of the feedback potentiometers (well, they were 5 for £1. I must stop being a cheapskate!), or the sloppiness of the arm gearboxes and motors. Whatever the reason, we decided that it would be quicker and easier to go with a servo controlled arm for now - I will have another go at the Owi arms when I have more time. So, we ordered an arm kit and servos from (you guessed it!) Ebay! This arrived as a collection of metal parts with no instructions whatsoever! However, Shane has done a sterling job of putting it together based on photo's we downloaded, although it took a few rebuilds and some words I won't repeat here, lol!


Figure 1 - Photo of the completed arm

Having got the arm together, we developed code to move it. As usual, this was written to live on an Arduino Nano, which Shane mounted in a small breadboard. Because of the power requirements of the servos, which are quite hefty, we needed an external power supply, and Shane also mounted some connectors onto stripboard to connect the servos up. This arm has six degrees of freedom, because it has a rotating wrist, so the power draw if several joints are moving is a few amps.




Figure 2 - The Arduino Nano with servo connections

For the Arduino code, we pass the joint position information for all 6 joints to the Arduino through the USB serial port. This is in the form of an angle between 0° and 180°, so it’s using forward kinematics only at the moment (inverse kinematics, i.e. giving the arm controller the x, y, z co-ordinates of the desired gripper position, will come later. One step at a time!). On receiving the postition information, the Arduino sets the outputs to the servo motors to the desired position, using the standard Servo library. In practice, we had to limit the range of each joint’s movement to slightly less than the full range, to allow for slight mis-alignments in the servo gears. The movement itself is performed in a number of small steps, with each step being timed to take a number of milli seconds. This does two things: firstly, it slows down the movement as the servos are capable of moving very quickly, which makes the arm unstable, or even dangerous if someone got in its way. Secondly, it allows us to know when the arm has reached position, so we can signal back to the GUI software that its ready for the next set of position information to be sent.
Moving on to the Gui code, this runs on a PC, which connects to the Arduino via a USB port. Here’s a screenshot of the main screen.

Figure 3 - Screenshot of main screen



As you can see, there are a number of features which provide control over the arm. The main ones are the sliders towards the top left, and the table on the right. In manual mode, moving the sliders causes the arm to move to the set position, with one slider for each joint. Once the arm is in the desired position, then clicking on the Store button copies the slider positions into the table on the right of the screen, building up a sequence of movements. Once a series of movements have been stored in the table, then putting the arm into Sequence mode, and clicking on the Run button, causes the sequence to be played from the table, making the arm go through the movements automatically. Sequences can be saved to files and re-loaded later, allowing a repertoire of sequences to be built up.
Figure 4 - Robot arm being controlled from the GUI

We are intending to release this GUI as a downloadable file which you can execute to control your own arm. Initially this will be through the Kickstarter site, and we hope to raise funds to allow us to continue with our developments. The cost we are aiming to release the software for is around the price of a high-end phone app, about £5.00, but we are planning to make it available for less for early bird orders. We are also planning to release multi user licences for schools and colleges. We are currently in the latter stages of testing, so are looking at a release date in September. The Arduino code will be made available to download, at no charge, on our website in case you don’t want to write your own.


If you don’t want the software, but you'd like to support us in our venture, please click on this link and: Buy Us A Coffee . All proceeds go towards our further development of robots for supporting people in their homes (although we do spend a little on actual coffee - just to keep us awake, lol).




Please feel free to share.

Steve
Phoenix Labs Ltd

Comments

Popular posts from this blog

Post 4 - Oh, I see!

Post 12 - Now Where Have I Been (2)

Post 10 - Kickstarter Project Release Date