Thursday, 26 December 2013

Elbow Mod Update

Since the last update I have fixed numerous bugs the navigation errors where due to a damaged encored disc and the arm jitter was due to mismatched names in the Joint state publisher. one of the requirement for ROS MoveIt is a follow joint action server this now works I was ready to start using MoveIt then the elbow worm broke again, the printer not working at this time so I incorporated the elbow mod into the robot.The original idea was to use a MXL belt but the weight and acceleration  cause the belt to slip, after a change to #25 chain and sprocket to operation was better. One side affect of this mod is the arm can droop down which on power on causes a sudden jerk as the arm moves to start position. A simple adjustment to the start position and to place the arm into the tuck position for driving will be required, maybe a spring to hold the weight   will also help.

Tuesday, 3 December 2013

Inmoov arm and ROS MoveIT

This is the start of my efforts to run the Inmoov arm with ROS MoveIT. I have had to make some changes to the inmoov arm. ROS requires feed back and the servos used don't have feed back I tried to attach a wire from the Potentiometer to the adruino but this proved unstable and the servos were weak I replaced the servos with gear motors and a controller board all position readings and angle requests are done via I2C thru a master arduino.

First task is a URDF model  I'm only using 1 arm with only 4 joint to start
launch the model in RVIZ and make sure the model moves as expected the adjust the real robot to match the model (or simulation wont work as expected)

 next task run moveit setup assistant
 " roslaunch moveit_setup_assistant setup_assistant.launch"
I had to run this on the robot not a remote session.  I follow the  tutorial just using the default settings. After saving the configuration file (don’t forget to add the directory to the package path) it's time to test in simulation.

I the launch files generated there is a demo mode launch that and maximize the rviz window. I the motion planning tab go to planning set a start position and a end position(random) then run the arm will move to the new position   cool!

add some obstacles to the scene and see how the arm reacts

to be continued 

Thursday, 28 November 2013

Using Howie Chatbot with ROS

Using Howie Chatbot with ROS

This is a bare minimum script to run Howie in ROS it wont use voice recognition yet and uses festival for text to speech. I use Ubuntu 12.4 with ROS groovy and rosbuild not catkin you need to Create a ROS Workspace using the tutorial from here
Install festival with your package manager

Install the supplied files in you ROS workspace do a rosmake in the top level of each 
directory. In a terminal window type “roslaunch howie_ros howie.launch” 
Change to the nodes directory and in a terminal window 
run“rosrun howie_ros”
If it all works in the terminal_input window type in “what is you name “ and in the other terminal you will see the response. If it doesn't understand the question make sure you run in the nodes directory if festival is configured correctly you will also hear the response.

You can change the name of the bot in
This is more of a hack than any thing else


Friday, 4 October 2013

Inmoov elbow

In a effort to get more out off the inmoov arm I have made some mod these mods are still experimental looking at the NASA robonaut the shoulders rotate back and give almost 270 degrees of rotation by pulling the shoulder back it makes it easer to drive around, tucking the arm up and being able to lock them in place which will help with the bounce when going over small gaps . Part 2 of the mod requires the elbow to move more than 90 degrees I was never a fan of the old thread design having broken a few also I need feed back using a motor and pulleys I'm able to get the required movement and using the same motor controller as the rest of the arm also helps keep it simple. Todo move the motor lower  to increase the up angle  and smaller motor this one is only at 1/3 power and speed.

Thursday, 3 October 2013


The improved base is now fitted and working well the rear castors will need to be replace as they don't turn freely. After generating a new map, Navigation works but I haven't tuned it yet out of the box localization is within 200mm after a 10meter loop
with a couple of loops. Encouraged by this I made a launch file to start all the systems
on Robbie with the plan to do a endurance test in the near future something involving a roving patrol and charging the batteries when required. Driving Robbie
around the lounge room and kitchen there is only 10 cm of gap between the walls
and the shoulders. Instead of controlling the motors using a RPM method I now use
distance per timing frame the main advantage is both wheels move the same distance making it easier for navigation. In the video Robbie is driving under remote control I need to work on the movie making skills. The next step is navigation runs.
After repeated test of the arm the original part are staring to fail some due to problems I had when I first started printing (poor quality ) and other while adjusting the new motors the plastic parts tend to break when the joint PID controller oscillates or travels too far to fast.

Monday, 9 September 2013

First arm test

Just a quick video of the right arm, testing the shoulder tilt and lift motors. The good news is it held up and nothing broke or burnt out the lift motor only goes up half way  at the moment I have to reset the pot zero and change the start point and adjust the PID controller for the weight of the arm but the speed of the lift is good and the tilt is a bit slow I have to change the gear ratio from 3:1 to 2:1 but that is for the next model actuator. Part of the test was to compare directions of the real robot to the model in RVIZ the tilt axis is reversed and lift is going the right way and the angles look close next test will be with all the servos and the lift with full travel.
The base is not very stable but the new base is almost finished and is shown in the model in RVIZ

Sunday, 1 September 2013


It's been a hard couple of weeks the new base needs a wider foot print it's not very stable when moving making the kinect laser scan is unreliable but the worst part was the new dog wanted to say hello by jumping up on him which resulted in Robbie falling over the good part was most of the upper torso was off so very little damage was done. With the battery charger on board and hooked to the battery all the time this discharges the battery when not in use for a while. So after a bit of a rethink I I'm rebuilding the drive base with bigger wheels a wider base and better weight distribution also added a charge bar so charging can be done from a docking station.
 Finally had so time to play with arms today  I was really happy with the moving the shoulder lift( the joint with the most strain) was moving nice and smooth through the full range of movement but when I tried a fast full range movement the drive coupling broke again if I could join the 2 STL file's (Freecad just crashes) I would print them in nylon

Sunday, 18 August 2013

Robbie finds his voice

One of the big things i have missed since we switched from LEAF to ROS is a voice and being able to talk with the robot. The LEAF program had only a few lines so it became boring very quickly and guests found it hard to strike up a conversation. I found a Python AIML Interpreter hacked it to work with ROS it listens for input on the speech_text topic and publishes the response on the speak_text topic. for testing
i don't use voice recognition just a keyboard it stops the family giveing me funny looks when i say the same thing over and over. Previously i found a blue tooth microphone works well but that is for another day. While the robot is talking it need more visual expression just having the jaw move up and down doesn’t work very well  flashing lights with this head design won't work because of the solid color.
What would look cool are animated eyes via a LCD screen and maybe a RGB LED matrix for the mouth.

While chatting is one function the rest of the time the robot just sits there it may as well be a chair using Markov chains i can generate random sentences  its jiberish but sort of makes sense. I want to have a control loop running that responds to activity and boredom like if nothing has happened for a while do a random move if the robot sees someone utter a Markov chain   if he recognise a face say hello.

Sunday, 4 August 2013

Harmonic Drive Update

I found some nylon weed wacker line in the shed so I tried it in the printer and surprise it worked it's very strong and flexible after a few prints I retried the flex spline of the Harmonic drive I had to adjust the perimeter size to get 3 perimeter lines . The print is a bit rough and the teeth are not so well formed but it is flexible and strong so far it's run for 2 hours before the PLA bushes in the wave generator failed (they should have been bearings) the flex spline shows no sign of wear

After a quick repair of the bushes the drive is running again if I can get 10 hours of operation before fail of the flex spline I will add it to a drive base and see how it holds up to regular use

Sunday, 21 July 2013

Drive Base Update

Robotics is a very expensive hobby both in time and money the holomonic base
is both the base needs matched motors and encoders and and some form of suspension to keep the load on the wheels even. So until I have spare time to redesign the base I have gone back to a differential drive base to get the Robbie moving again. The up side is that it frees up the controllers and 8 motors which is enough to get all the joints running


Monday, 17 June 2013

Remote Control

I have been using Rosbridge and a web browser to control the robot and face tracking but it only worked on the local browser not a remote browser I had to add
the computer address in the hppd.conf file for the apache web server the every thing worked the page rendered with the server set to local host on a remote browser but Rosbridge send no data it worked fine after the change. After a bit of experimentation i can send positions to the arms with sliders on and open and close the hand
On a later page i moved the sliders vertical it looks better but it need more work
to look good The remote control page is based on Pi-remote thanks to Patrick for releasing the package

Monday, 20 May 2013

Head Tracking

Pi_face_tracking is working at last the head tracks the target smoothly and stays locked on. The logitech camera i install didn't work very well the frame rate was
was way to low (6fps) I replaced the camera with a PS3 eye cam now my frame rate is 30 I'm using the 75 deg field of view some of the parameters need tuning but it works. The pan servo was running backwards but swapping the min and max values around solved the problem, the pan servo keeps going of line there is a service call to restart the dynamixel controller which I need to look into.

Face Recognition also works with face tracking the face recognition program is at it uses actionlib I would like to get the name of the face recognised and send it to the AI program the name of the face is published as a rostopic /face_recognition/feedback

Monday, 8 April 2013

I2C update

Finally got the I2c bus to work I had to disable the internal pull up resistors add external resistors
and make a PCB to act as a hub every thing was working then a few days later it stopped working
I traced this problem to the powered USB hub, I added a camera then everything started to go weird programmers not responding, garbage on the I2C and the arm going off the stops. I supplied 9Volts to the MCU's and everything started working as normal.(I just wish it was that simple it took me 3 days to figure it out)

I added a camera to Robbie's left eye its a stripped down logitech that's been hot glued in place it works well now when I find some free time I just need to get the head tracking working again

I sanded painted the head a mat white the parts looked really good then I left them outside to dry
BAD move the PLA warped due to the heat and I had to reprint the top part of the head. I glued the top together so it looks better from the front I'll repaint it at a later date

Monday, 1 April 2013

Robbie gets a head 2

Inmoov gave us all a Easter present normally it a chocolate egg but this year its a plastic head I think it really make Robbie look good. Now to dust off the head tracking, face recognition and the AI program he needs to speak.

we still have to do s bit more finishing and painting and find the right cameras for the eyes

Sunday, 10 March 2013

Fixing the rats nest

Tried to make some videos but Robbie was very unreliable the servo worked then they stopped if you rattle the wire then it worked then the lift motors stopped
clearly its a wiring problem and now is the time to fix it for good. So  i started making PCB's for the various systems each actuator will have its own controller and motor driver connected via I2C  so i need 4 motor controllers for the arms and 8 for the base.

The bottom board is dual sided and will be a combined arduino and l298 motor drive
delivering 6 amps peak. The top middle is just a motor controller it works i just need to add the diodes before it can been used.

The PCB's were manufactured using the toner transfer method the only real problem is the pot and bottom layers are not connected so parts need to be soldered on the top and the bottom this is a small problem with ic holders I just design the boards
with the IC's just having connections on the bottom

Wednesday, 6 March 2013

Robbie get a head

Well sort of it just the neck at the moment and the shoulders don’t look right  but the new shoulder joint will come later. The head pan and tilt servos have been replaced
with dynamixel AX12's

Sunday, 3 March 2013

Harmonic Drive

Well as expected the first version of the drive failed the flex spline cracked.
Reasons for failure are
  • the bearing race is unreliable and dosen't run true causing the drive to miss steps
  • Flex spline the blue ABS is brittle will try with the yellow (its more elastic )
  • wave generator bearing were in fact only PLA bushes  they worked fine but the need to be 1mm taller

Next test will be with the new bearings


Robbie is looking a little plain theses days the kinect as a head is not very interesting to look at so I started to print Inmoov's head to give him a more natural look . One of the changes i made is to replace the standard servos with Dynamixel servos so we can keep the head tracking  and general movements without rewriting a lot of code.
The gear on the bottom was just for holding but I think having the waist rotate will be a advantage Next step is integration

Monday, 25 February 2013

New Shoulder and Torso

While waiting for the bearings for the wave generator I tried out the harmonic joint in the new torso. The torso will be able to raise 30cm. The weight of the motor helps to balance the weight of the arm

now I just have to add the lift actuator there’s a lot of wasted space with the wood form work

Sunday, 24 February 2013

Harmonic Drive 2

After Robbies shoulder gear failed with a broken tooth I stepped up work on the harmonic drive I have a first draft model for engineering fits and clearance. The flex
spline proved the hardest part to print I had to change the print setting until i got a good print I'm still waiting for the bearings for the wave generator so i can start testing

 A mixture of files some mine and most from

 Slowly starting to get the hang of CAD

A broken tooth this part in the shoulder lift joint has the most force applied

Friday, 22 February 2013

Harmonic Drive

Well it's be a while since the last update after the holidays they a quick trip overseas
it time to get back to work. Robbies shoulder lift joint now works the PID controller works under load. The problem was the arduino was doing to much 2 PID controllers and 4 servos was to much so now I’m just going to use one arduino per joint and communication will be do with I2C. Using the toner transfer method I can make the PCB's required for a good price. That just leaves the gear box's going to try using a harmonic gearbox from thingiverse 16:1 reduction should give enough torque.

The ROS drive now publishes motor states and a Joint_state publisber now publishes all the joints and the dynamixels as well