Been a while this the last update, I let aside the development of the Kinematic to work a bit on the Raspberry Pi. So far I could install everything I needed and tested one of the main feature of the robot: Face recognition and tracking.
I used the standard OpenCV library for face tracking and recognition (haar cascade). This work very well, I’m able to recognize different faces and track the x,y position regarding the center of the camera’s image. I also discovered the ArUco markers for augmented reality, I’m planning to use them for the docking station and some other features like cube toy for Animabot.
The framerate is not as high as expected but this will do for the moment. The next step is to transmit all relevant information to the motherboard via SPI to make Animabot act accordingly. Let’s see how it goes 😀
The assembly is finally coming to an end with the Top Cover. This part holds the Raspberry Pi and the Head of Anima. This was most certainly the most difficult to assemble and to fit all the components inside in a nice way.
The cables beneath the RasPi looks a bit messy for now because before fixing them definitely, I want to make sure the motherboard and the Pi are properly communicating. This method of soldering all directly on the Pi seemed to me the most practical one, I only have one cable to connect to the motherboard, the rest is connected just beneath the Pi.
I could have done a custom PCB to Plug the Pi into but it would have been too high for the Hood… But thinking about it now, I also could have used a PCB as base for the elevator instead and inverting the 40 header pin. If I have issue later with the hood mechanism, maybe I will think about it seriously.
The mechanism was not easy to integrate and to make it work nicely but after many tweaks (and a lot of patience) it is finally working. It is not as beautiful as I hoped for but it will be hidden and as long as it works, I’m happy with it. So basically, the hood mechanism consist of a small servo pushing or pulling a lever making the platform going up and down.
The bottom looks quite messy with all the cables but unfortunately, there is not much I can do because at some point, cables need to be connected to the motherboard. However, this architecture allows me to install and remove the Top Cover from the body without too much trouble (for maintenance or bug fix). Having the hood held with magnets is also very convenient to access the Raspberry Pi and plug the HDMI or USB cable.
Now it is time for the head assembly, as always, this is kind of a headache because of all the tiny parts and dimensions… I started by mounting the eyes (OLED PCB) with the 5Mpx camera (between the eyes). The PCB is screwed in place. Then I continued with the gesture sensor with is directly glued, I couldn’t used screws due to the thin thickness of the head and the lack of space !
Eyes and Gesture sensor
Head inner side
Then, followed the servos of the ears, this step was pretty straightforward. Place the motors and screw them 😉 As you can see, there is not so much space for adjustment…
The most complicated part was to install the neck servos, due again to the small space, it was quite hard to fit all together with screws, bearings and cables… I had to make custom horns and spacers to fit everything in place. The overall tolerance I had to place the servos was exactly 1mm, and it took me a complete morning to assemble the head properly but that is the price for compactness.
Pitch servo assembly
Neck, bottom view
Neck, Top view
After mounting the neck onto its head, it was time to test if all was working as expected (I2C for the eyes and camera) and thankfully, it does :D. All the cables passe through the back of the neck for a rotation of about +- 60°. However, I have some doubts about the head connection to the yaw servo, I find it a bit weak and wobbly… I guess I will have to find a way to make it more robust.
All good !
Ready to connect
Servo for Yaw movement
The last part to assemble is the Top Cover, containing the Raspberry Pi, audio amplifier, speakers, the Hood and the tactile switch…
It’s been a while since the last post… mostly because my new job is taking away most of my time…
But also because I had to fix several issues in Anima before mounting the legs and the upper body. First I had to fix the sound problem, curiously the IR sensor was generating noise which was propagated up to the audio amplifier, thus generating audible noise… To fix it I added to capacitors (100nF & 10µF) on the sensor’s power connection. Then I burned the Li-ion charger 😦 so I had to replace some mosfet and add some heatsinks.
Finally after 20 months of design, tests, doubts, bug fix, etc… Animabot is assembled and ready to walk !!!
Stay tuned 😉
Hello ! The assembly of Animabot is going well, I have almost finished 🙂 I’m mostly making cables and cables… Thinking about how I’m gonna put all of them into the body… But anyway, I’m also testing the electronic and everything is also fine up to now: Audio amp and speakers, IR telemeter, fan, Night LED, temperature sensor and power monitor and the ATX Raspi are working !!!
The Rapsi is also much thinner without all these big connectors 🙂 but I have some issues with the WIFI dongle and I need to test the webcam.
So I put all the parts together to see if all goes well, and for now it’s look like this :
Power ON baby !
I like it ! even if the parts are not perfect as I would like, and even if the design is full of errors, it doesn’t look so bad 🙂
More update soon 😉
The Raspberry is finally installed ! I just bought the model B+ because it has 4 USB ports, and as I will need 2 for the Wifi and the Webcam, I needed 2 more for the keyboard and mousse for programming the PI 🙂
The model B+ has also 4 mounting holes, which is perfect pour the fixations and it consumes less than the previous model (around 150mA). However I will need to replace the USB and Ethernet connectors which don’t fit in the hood by pin row connectors 😉
I also mounted the mini USB of the STM32 on the top, which is much more easier for programming…
Now I can continue with the final step : The head
This weekend I have been working on my Media Center with another Pi.
First I installed OpenElec, which is after some tests, much faster than Raspbmc. You can find here how to install it. Then I overclocked it a little to get Xbmc smoother (tutorial here). I choose the Medium overclocking configuration which runs perfectly well and is very stable on my Pi.
Concerning the integration, I wanted it hidden behind the Tv, but it had to look good (no cables everywhere…). I have looked for a long time for a proper case in aluminium but without success… So I finally decided to use an external hard drive case 3,5″‘. The internal dimensions are sufficient for installing the Pi and the cables. The case is also ventilated by may holes on the side panels, so the Pi will not get too hot inside.You can find it on amazon for 22 euros.
For powering all this I used a switch Mausberry Circuits to be able to power ON/OFF the Pi correctly. But the inconvenient is that you have to do it manually 😦
On others occasions, I noticed that the USB port on the Tv is ON when the Tv is ON and OFF when the Tv is in Standby (I have a Samsung UE55F6400). So I came up with the idea of replacing the original interrupter by a relay commanded by the USB port. I simply connected the coil to the 5V of the USB and put a diode (1N4007) to protect the USB Port. On the interrupter circuit I only added a small capacitor (4,7µF) for the relay bounces.
When I power ON the Tv, the Pi starts automatically and when I put the Tv in Standby, the relay goes OFF with the USB port and the script installed on the Pi send the shutdown request.
This works perfectly !!
Power supply with relay
Inside the box
Box installed uncovered
Box installed covered
I finally received my samples from Texas Instrument for the voltage regulation. I chose to use several switching regulators in order to clearly separate each feature.
- The little one on the top left is a PTN04050C, it will be used as 5v power supply of the RasPi, the STM32 and the class D ampli of the speaker.
- The two on the left are PTN78060WAH, I will used only one for the light LED for night vision.
- The tree on the right are PTN78020WAH , they will be used the the legs: One for 2 legs (front, middle, rear).
Modules characteristics :
- 3-A Output Current (PTN04050C and PTN78060W)
- 6-A Output Current (PTN78020WAH)
- Wide-Input Voltage (2.95 V to 5.5 V) : PTN04050C
- Wide-Input Voltage (7 V to 36 V) : PTN78060W and PTN78020WAH
- Wide-Output Voltage Adjust (5 V to 15 V) : PTN04050C
- Wide-Output Voltage Adjust (2.5 V to 12.6 V) : PTN78060W and PTN78020WAH
- High Efficiency (Up to 96%)
- On/Off Inhibit
- Under-Voltage Lockout
- Output Current Limit
- Over-temperature Shutdown
- Operating Temperature: -40°C to 85°C
Animabot will use 2 batteries :
- 3.7v, 2500mAh Li-Po with charger for the brain
- 7.4v, 3900mAh Ni-MH for the legs
Each battery will have its own charger integrated in the robot, with one input connector for both.
The charger of the 7.4v battery is a LTC40008 , but it is only the chip, so I will have to make the circuit on the mother board. I will see that later…
The two batteries will be monitored by a specific component : LTC2945 (one one each). Animabot will be able to check the voltage and current on each battery and when the batteries will be low, Animabot will put itself on power saving mode, or sleep mode.
For the moment I am using another DC-DC boost converter from dfrobot for testing purpose, but in the future I will replace it by the PTN04050C on the motherboard.
Brain Power Supply
Brain Power Supply
The Raspberry Pi is flashed with the Raspbian OS (quick start guide available here).
The STM32 is flashed with the RTOS ChibiOS. ChibiOS is compact, fast and open source OS : Perfect for me !
STM32F4 Discovery Board
I modified the power connector of the Pi in order to connect it with another connector. As you can see on the architecture document, I will use a small 3.7v Li-Po battery for the Pi and the STM32 with a special power supply (PTN04050C). So I soldered a JST connector with cables :
Brain Power Supply
The Raspberry Pi will will equipped with a “smart switch”. As you are running a Linux on it and a SD-Card, you can not unplug the Pi as you wish. If you shut off your Pi while it is writing on the SD-Card, you might corrupt this one… And you will have to flash it again… 😦
So to prevent this a found what I call a “smart switch” from Mausberry Circuits :
With this switch, you only have to install a small script on the Pi, and that’s it 😉 You can now power ON/OFF your Pi safely !
Concerning the STM32, I can directly use the 5v pin, so i don’t need do modify the board. The STM32 can be shut-down directly without special precaution, so no problem as for the Pi.