Its time for a quick update on Robbie the 2 RPIs are working as expected they both run ubuntu mate now. The problem with espeak stalling was resolved by doing an update. The RPI camera works well and moving it to the 2nd RPI (R2) has increased the frame rate. The autoboot is still causing problems upstart will boot the roscore RPI but using the machine feature to launch services on the second RPI only works with a display running. Robbie's head is not fully assembled in the photo I'm still in 2 minds if I'm going to change it or just reprint it. While launching Robbie's system over three computers is a pain at the moment it has some clear advantages only the core RPI needs to be running to navigate the second runs voice and cameras. The third is for moveit and the AI. Once the boot sequence is functioning as expected, the health monitoring side of the AI will move to R2. Power distribution is becoming an issue now the new system will be one button to start the computers and automatically turn off power after the RPIs have shutdown the other systems will be switched on and off as required with MOSFETs all systems will have a switch or a fuse to disable it if required.
Sunday, 7 May 2017
The wiring on Robbie has always been a problem and a big source of unreliability, the other issue was the I2C network not being able to put the motor drivers on the motor made the wiring a mess. The L298n motor drivers were bit under powered and standard servos in some of the joint it time for a rethink. I replace the I2C network with RS485 now the drivers are on the motors and the cables use JST XH connectors which makes for cleaner wiring VNH2SP30 and the TB6612FNG dual motor driver have replaced the servo drivers and the L298n. I replace the control board in the servo and used a magnetic encoder with the TB6612FNG but used the gearing this saved a lot of work redesigning the joint. The new network is working and the joint signal stability is better that before.
Thursday, 6 April 2017
Robbie is in the midst of a big update, with the CPU pegged at 100% it left no room for further development also a slight bug would crash the whole robot. My solution was to split up the computers on Robbie He now runs a raspberry pi 3 for low level programs and the main computer runs the higher level programs. The added advantage is Robbie now uses less power and now can run for 4 hours as opposed to 20 minutes before. Previously I used a kinect in the head to do face recognition now Robbie has a RPI camera. Face recognition was never 100% I tried openface and that works better, I just have to get it to run with ROS. Getting ROS to work was difficult using Ubuntu mate 16.4 and Ros kinetic worked but the TTS never worked reliably After switching to Raspbian Jessie and compiling ROS from source it seem to work OK Compiling works better when you increase the swap file size to 1024
Thursday, 14 July 2016
It's been a while since the last update I have redesigned the gearbox with 2 radial bearings and a thrust bearing. The worm is print in 2 parts this gives a better tooth profile and reduce backlash. The motor driver is now a VNH2SP30 on a custom pcb and still the arduino pro mini. Its now mounted on the gearbox to reduce wiring and make it more modular. After the redesign its not 100% compatible with Inmoov. Communication is now with RS485 each unit is daisy chained from the last again to reduce the wiring clutter. Using cheap motors causes a problem with the PID accuracy mainly due to the higher starting voltage and the resultant jerk on start of movement.
Saturday, 19 December 2015
Robbie is now fully functional again after his computer problems the reason the arms missed commands was due to the controllers resetting. after I supplied power to the USB hubs every thing worked as required.
To increase the accuracy of the arm I started replacing the potentiometers with magnetic encoders to fit the new encoders required a few modification to the gearbox, I incorporated a bearing in the top of the gearbox and a mount for the magnet in the drive gear plus a few extra tweaks to increase the strength of the assembly not all modification will be fitted at the same time some will wait until the next major rebuild
Robbie's moveit configuration is working again accuracy is 15 cm not very good but magnetic encoders will help plus a better calibration. Obstacle avoidance suffers because planning only just misses the obstacles. Robbie now has a point at node where he will point to a published target pose.
We are now running the COB face recognition package this works well in daylight but the garage is to dark Robbie makes a few errors, I need to add more lights. The AI will say Hello when he first recognises a face then after 5 minutes he will just say Hi. The name of the recognised face is returned to the chat bot so he knows who he is talking to
will recognise a pre programmed object but wont learn a new object because ECTO requires direct access to the kinect driver Freenect uses a different driver and Openni will not work under indigo
2d recognition, shift and surf and not included in the opencv package so its very flaky
Increasing the Global inflation will make Robbie plan further away from obstacles.
shutdown command will not work when Robbie is started using robot upstart also depth registered points from the top kinect will not always work unless something uses it straight away the lower kinect has the point cloud to laser scan and gives no trouble. I will start face recognition on start up and see if it remains stable. We haven't had any jitters or strange events since we started using the powered hubs for the arduinos. The current high temperatures are causing a few resets I need a bigger fan and more vents in the CPU bay
Robbie's Emotion system
has been turned off for the moment since he spent most of the time bored and kept quoting a markovian chain from Sun Tzu. It needs a lot more configuration and thought but its fun for a while
As the design of Robbie matures I'm starting to add covers to hide the wires and keep dust off electronics but this has induce a few extra problems
- Heat build upmore fans need to be included in the design
- striped out threadsprinted PLA and MDF wont hold a thread for very long so now I will add M3 threaded inserts and M4 rivnuts to the structure
Tuesday, 15 September 2015
Robbie's computer is still broken so I was able to catch up on some tasks I never had time for.
The potentiometer were never very accurate I have designed magnetic encoders as a replacement they are more accurate and and just plug in the the existing structure they will be fitted on the next rebuild.
The overall control was a very hard to maintain and expand natural language is not very good with robot control some verbs are shown as nouns thus wont be interpreted as commands. In NLTK you can define what words are verbs or nouns but maintaining the files is troublesome, I tried pattern_en but it suffers from the same limitations. I also tried WIT a online language processor the learning curve is too steep and I wanted a local solution. Robbie's chat engine on the other hand works well.
I never really looked into pyaiml's capabilities but it can run system programs with command line args. For testing I reduced the loaded aimls to two one for commands the other for general response.
Of course that just puts me back to where it was before but with a lot more potential. Pyaiml will throw a error message for a unknown command I made it so it will append the command to a aiml file I only have to add the meaning later I can automate this but for now I want control over it, this sort of gives me a learning robot.
One of the intriguing possibilities is to query Knowrob ontologies.
For now I can add the name of a person from the face recognition node.
Next task is to make a semantic map and name the objects so when asked his location Robbie will answer “near the desk in the garage” not x,y,z.
All of Robbie's physical task are now controlled through behaviour trees program with action servers any task can be pre empted and resumed if there is a fault or error condition. The behaviour tree also monitors and controls Robbie emotions tasks will give pleasure doing nothing will result in boredom, when boredom reaches a certain level Robbie will do a random task that varies from uttering a quip using a Markovian chains, moving his head or arms to driving around in circles.
Using simulators like Rviz and Gazebo has made these tasks much easier.
Thursday, 18 June 2015
The original base was causing some problems with arms in the relaxed and travel position the arms
would hit the lower body , I don't want the arms to make Robbie to wide he has enough trouble getting through door ways as it is also I didn't have the time for a total rebuild (moving the wheels further inboard) so I opted for some covers and a redesigned waist joint. I ripped the speakers apart
and put them in the space for the kinect. I have put the kinect back in the head so I can visualise the work space