Bittle is a open source programmable quadruped robot kit suitable for STEM, new develoopments, AI-experimentation and in general multi-DOF robot design and control applications development. Explanations, instruction are continually updated as well as new application details: a starting page to deep into understanding the versatility of this smart dog can be found at www.petoi.com/
It is worth to remark that it is the second most successful project in Arduino over the last 3 years, being Arduino Uno board the first one. https://create.arduino.cc/projecthub/petoi/opencat-845129?ref=platform&ref_id=424_popular___&offset=8
After Arduino Uno board, Bittle follows on Arduino platform ranking and it is not by chance.
I bumped into Bittle after long searching for a sophisticated robot open source, fairly priced with more than 6 degrees of freedom, ideally working on Arduino platform and ready to implement python scripts. My final goal is to I aim at controlling it through ROS2.
As for today I could successfully go through the rocky and bumpy road of having it under control in terms of software understanding and hardware design. Of course due to Petoi team design continuous improvements and extensions, it is quite challenging to keep pace with all new features emerging. The last outstanding one being the User Interface (UI) to adjust each single motor and toggle various features, e.g. gyro. Of course coupling Bittle with a Raspberry Pi is also something which stretches creativity limits a step further: I already scheduled few projects joining the two magic tools.
A smart phone app allows to control Bittle also from a mobile phone with instruction available at:
https://docs.petoi.com/app-guide
OpenCat.ino is the main control module and can be found at following link:
https://github.com/PetoiCamp/OpenCat/tree/main
This essay focuses on showing the implementation of ‘Bittle climbing’ in which Bittle climb a structure, while turning himself upside down. Additionally the smart dog carries out checks and change postures while staying in this odd posture. Hereafter the video showing the outcome after few failed attempts:
The code related to this essay, including drawings, pictures and useful details are accessible in my public repository: https://github.com/GabriIT/bittle/tree/ui
Bittle specifications, multiple sensors, hardware and software basics can be found in the instructions manual and further details at Petoi github address https://github.com/PetoiCamp/OpenCat
The learning curve is slightly steep in the early stage, but the available forum and timely replies by petoi team helped a lot in making it a viable solution.
Few months after purchaising the kit I felt that for STEM education purposes it is likely to be indeed the pioneer platform. The only draw-back I could find is the material selection for body and legs: it is common PC-ABS, quite sufficient for simple toys, but not enough in my opinion for impact, stiffness requiring challenging applications like Bittle is. For a more industrial use a more sophisticated material choice is required. I already addressed the issue with the development team and new solutions are under investigation.
Operating the Arduino IDE, after opening the main Opencat.ino, you have also access to the src folder and find various modules. One of them is InstictBittle.h
Fig. 1 Modules in src folder including InstictBittle.h
It contains many postures and behaviours already developed by Petoi team. You can play them or modify them. The challenge I am addressing is already in the list under code ‘cc’ as for Fig. 2. However there are many factors involved which prevent it from working as desired and a re-making or fine-tuning is required. The steel structure dimension at first, the friction of the floor, the magnets added at each leg toe: all these elements lead to a new design of the full behavior frame by frame. A frame is the single posture Bittle has at each outgoing signal from the PCB. In total there are 16 signals though the DOF are 8 plus the head. 9 servo-motors to control in total.
Fig.2 InstictBittle.h – many behaviours and postures are already developed ready for use
As for hardware preparation there are two important steps:
1 - print out the 4 toes to to be able to mount a magnet:
each toe is made of two identic parts: in total you need to 3D print 8 pieces, 10 for safety sake if something goes wrong.
You need 8 magnets diameter 8 mm, thickness 3 mm and internal hole 3 mm to fit Bittle design as I did (thanks to Petoi team for the drawings arrangement)
2 - mounting the magnet on each toe and set strong adhesive to assure good bonding
after mounting the two toe parts you set adhesive on the resulting seat where the magnet can be set. I use quick-bonding 602 class adhesive, after failing with 502. Please make sure that mounted toes are still free to rotate against the Bittle leg. It is important to assure Bittle can adapt effectively when magnet-bonding toes to the steel platform plane
Fig. 3- The newly developed user-friendly UI for optimization of single frames and signle servo-motors
Fig. 4 - Gyro is set ON as default. Other switches are available and can be easily toggled
Fig. 5 - Gyro is set off – to prevent Bittle to follow the instinct procedure of turning up when laying on the back
While optimizing the frame sequence it is necessary to toggle 'gyro' off. Otherwise the instinct behavior will be set in action. As you can test freely when you upload OpenCat.ino this behavior allows Bittle to turn himself upside down and stand-up every time you turn him on his back or when he falls down.
Fig. 6 - After clicking Import on UI this windows opens and allow to set the each motors and each desired frame
Fig. 7 - Frames are imported on UI for further optimization
Fig. 8 - Servo motors 0, head and 13, knee positions are adjusted through User Interface (UI)
Fig. 9 - After importing a frame sequence, a number of loops repeating the sequence itself can be set. In the above example is set to 3.
After optimizing the frame sequence, that is each motor position for each posture step, pushing button ‘Export’ allows to export the setting into a file text. From there you can play as you like: loading it on python and re-play or adding it into InstinctBittle.h
Being the toes free to rotate it is key to assure that they are flat, parallel to the steel platform before each leg stretches out and bind with the platform itself through the mounted magnet. After repeated failures, I improved my code by adding few frames to force the toe to slightly touch the platform surface and lead it smoothly to be parallel to the plane before the toe gets full in contact with the platform plane. I think this is the most challenging step to adjust.
The rest of coding is quite sequential, based on the desired postures you like during the process.
Fig. 10 - The final code for climbing in python (PyCharm IDE)
You can view the repeated attempts and result on YouTube at the same link:
Finally a tip: the lively forum is a very useful place to look for problems people faced in the past or for asking questions in case of new unexpected troubles, explanations or insufficient understanding
The next challenge will be integrating into a ROS2 environment and enabling ML functions. I look forward to forthcoming development by petoi team as well as ML edging features.
Did you find this article useful? Let me know what you think by leaving a comment.
Links list:-Bittle, my repository: https://github.com/GabriIT/bittle/tree/ui
-App instructions : https://docs.petoi.com/app-guide
-Bittle, User manual: https://bittle.petoi.com/
-Petoi repository Opencat: https://github.com/PetoiCamp/OpenCat
-Petoi repository Opencat 2.0: https://github.com/PetoiCamp/OpenCat/tree/main
-Youtube video: https://youtu.be/vl9BTNeSmMg
Comments