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.
Thursday, 26 December 2013
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.
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!
next
add some obstacles to the scene and see how the arm reacts
to be continued
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.
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!
next
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
http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment
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 robbiei.py”
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 robbie.py in the nodes directory if
festival is configured correctly you will also hear the response.
You can
change the name of the bot in robbie.py
This is
more of a hack than any thing else
regards
Peter
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
Driving
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.
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
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
Fails
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
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.
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
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
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
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
http://www.ros.org/wiki/face_recognition 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
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
http://www.ros.org/wiki/face_recognition 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
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
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
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
Next test will be with the new bearings
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
Head
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
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
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 http://www.thingiverse.com/thing:20177
Slowly starting to get the hang of CAD
A broken tooth this part in the shoulder lift joint has the most force applied
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 http://www.thingiverse.com/thing:20177
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
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
Subscribe to:
Posts (Atom)