DiPinto Da BRACCIO - Idea & Plan
Hi! This will be my first blog for the PiCasso Design Challenge. First of all I would like to thank all of the judges for picking me as one of the challengers, I'm really excited for this design challenge, and would also like to congratulate all the other challengers and wish the best of luck with their projects to anyone participating. This will be a fun design challenge! Now it's time to slowly get into my idea and how I plan to realize it over the next 15 weeks for this challenge. There's a lot of time for working on the project, but there is also gonna be a lot of work!
I'll begin by explaining the name of the project "DiPinto Da BRACCIO" which is Italian for "Painted by arm". The reason for this name is quite simple, my whole project will be based upon 2 main components, one being the Raspberry Pi 3 Model B+ and the other one being the BRACCIO robotic arm.
With name explained, I'll now explain how I imagine making this into a home decoration. While some people stand behind the phrase "Art for art's sake" (I also love this kind of art), I love "Functional art". Functional art refers to aesthetic objects that serve utilitarian purposes. My idea with this is having braccio draw for me all kinds of stuff from weather & news, to pictures, I'll get into that a bit later in this blog. I don't envision the "art" in this project to be just the end result of braccio painting, but also the process of painting itself while the arm moves around trying to follow specific lines. I've played with braccio for a couple of months now and even started making a basic GUI which I'll cover in one of my upcoming blogs, to me, it's incredibly fun and interesting just watching this mechanical system move about and do tasks.
2. How I envision this project working
First off all I had to find a place for this project and it will be on my computer desk in my bedroom. How I want to make this is by having braccio on small stand, which will house in all of the electronics, on the table close to the wall and on the wall I will mount a small whiteboard for braccio to draw on. There will be only one cable going out of this contraption and it will be the power cable for the whole thing. Braccio will be able to hold a marker and be able to clear out the board.
As I've already said, I want this to be a functional art piece, so my plan is enabling it to display useful everyday information like the forecast for the day, current temperature in the room, some important tasks that are coming up soon and so on. There are a couple of ways to do this, my plan is asking for this stuff by talking to it, using either SOPARE or Google Assistant which I found out can be set up on the Raspberry Pi or a combination of both. My goal is having it completely autonomous and not needing to set up stuff around it a lot, but I plan on doing an interface for tweaking stuff by attaching a screen to the Raspberry as well as an Android app (enable braccio to inform me of a notification like a mail/message). So to summarize it all here is the list of things I would like it to do with some additional ideas:
- Daily Forecast
- I don't envision this by just writing a word cloudy/sunny I would like it to draw doodle style weather art. For example if it's going to rain that day to draw clouds with rain and thunder or if it's sunny draw a palm and sun or something like that while also providing useful information like the temperature for the day as well as precipitation.
- To Do list
- Grabbing the most important tasks off of my to do list, for example, reminding me on a Sunday what tests I have during that week or something like that.
- I doesn't all have to be visual. This part would connect with the Android app and when I set up the alarm, the braccio would try and wake me up by hitting the board with a marker, or I will add a small bell besides it which it can ring!
- Already talked about this one, informing me of a new message/mail or something similar.
- Morning Routine
- This would be a combination of some of the previous things, setting up routines where in the morning for example, the braccio would go into alarm mode trying to wake me up and after that go on and start on presenting me with the forecast for the day!
Art for Art's sake
It doesn't have to display only useful information, why not get some nice pictures involved as well. The "functional art" part is a more of a straight forward thing where I know what I gotta do in case of if it's going to rain that day, if it's going to be sunny and so on. This part will be a little more "free". I would like to experiment with OpenCV and convert random images into something the braccio can draw whether that being vector based or dot based art. This part will be a lot of fun playing around with OpenCV seeing how I can convert ordinary images into line art pretty much. Here are a few ideas I have for this part.
- Daily painting rotation
- Having a daily rotation (or more regular) of an art piece, where the system would get one of the preloaded images on the Pi and draw it at a certain time.
- This can also be improved by enabling the system to get pictures from a certain subreddit and attempting to draw them.
- Or connect it somewhere where anyone could send it an image so the braccio can go on and draw it
- Analog clock
- This is close to functional art, but it's highly impractical, though I think it would look cool. My idea is drawing a big analog clock on the board and having braccio move the hands every 5-10 minutes around.
While that would cover how everything would function, I'll explain how I would like for all this to look. I am still working on some additional sensors for the braccio but want to make all of the wiring as tidy as possible, the enclosure for the electronics itself will be out of wood and laser cut. I want to keep it all compact, simple and clean as much as possible, with as little wires going everywhere as possible. The only cable going to it as I've mentioned before will be the power cord, which I'll try hiding underneath the desk so it can't be seen at all.
With my idea now explained, I will get into some details around hardware, software I plan on using as well as what will be my next steps.
3. What I'll be using
I'll begin with listing the hardware and software I'll be using and how I plan on modifying it to work for this project. While braccio itself is amazing, there are some things I will need to add and modify they make it all a but easier at least while testing everything. I'll start with hardware and then go to software I plan on using for this project.
The hardware side of this project won't be to hard since I already have braccio as a working unit, so besides it I will be doing either a PCB or on a small perfboard some soldering to add some electronics that I'll need and enclosures for the rest of the things for the most part. One thing that I may end up doing to enable braccio to do larger images is making the whiteboard move up & down which would also mean the whiteboard could lift up when the painting is done. If I decide to take this approach I will probably go with a stepper motor underneath the table mounted to a threaded rod, but all in due time.
List of hardware
- Raspberry Pi 3 Model B+
- Of course as the main brain of the whole project.
- BRACCIO Robotic arm
- The second fundamental part of this project
- I'll be using an Arduino between the Raspberry and braccio, probably a Nano, because of the many pwm pins as well as analog inputs which I'll explain why I need in the next section
- Whiteboard and markers
- This is of course the main art supply for this project
- Speakers and a microphone
- Since I plan on using voice commands I will need both speakers and a microphone.
- While the speakers themselves probably won't be needed I would like this to be like an overly engineered smart home speaker in the end!
- Additional electronics
- I want to design some circuitry to help me connect everything together easily
- Got a few ideas like sleep mode for the servos as well as some hardware that will help me configure stuff while testing & playing around with everything
- There are 2 main modifications I plan on doing here
- First one is designing a new claw which will work with the marker, in the beginning for testing purposes I'll be using the standard claw but will be upgrading to the new one somewhere in the middle
- Second one being adding potentiometers to all of the joints
- While maybe I could avoid this by working cleverly around it, I find this will help me a lot at least for testing purposes
- With this I'll be able to track position of all of the servos in time, while I've seen people hack into the servos themselves to get the position, I really don't want to risk damaging one of the servos and delaying the whole project because of it
- The plan is designing special brackets which would house the potentiometers and hold them over the joints
That would wrap it up for the most part when it comes to hardware, as I've said there is a possibility of maybe motorizing the whiteboard, but I'll see if there is need for that as I continue on with the project. Until then the main work on hardware I have is the modifications on the braccio as well as deciding what I want exactly out of the additional circuitry and then making that. With that done it's time to get into the software I will be looking at and using for this project.
This part I don't have figured out completely yet, but there are some things I know for sure I will be doing. To start I will be using Python for the most part on the Raspberry because I have some previous experience with OpenCV there, I'm looking at a few different options and looking at things for doing some 3D simulations for the arm. If I decide to continue with the Anrdroid app, I will be using Android Studio, maybe a little bit of MIT App Inventor to test some stuff out along the way. As I've already mentioned for the voice interaction with the device I'll be trying out Google Assistant as well as SOPARE (SOund PAttern REcognition) because I like that it can function in offline mode.
4. What's Coming Up
The plan for this will not be linear, there will be a lot of going one way returning back, going the other way and so on. I plan on starting with doing 2 different things in the beginning
- BRACCIO disassembly and 3D model
- Connecting Raspbbery over an ethernet cable over my laptop and testing out Google Assistant
BRACCIO disassembly and 3D model
To get all of the measurements for controlling the braccio I will have to disassemble it, measure out all of the pieces and recreate them in 3D models. I tried finding if there are any 3D models available online for it but I couldn't find anything. Besides getting me the exact dimensions between the joints which I will most certainly need It will also make my life easier for designing the marker claw as well as the brackets for the potentiometers. While I am already doing a 3D model of the arm, I might as well do a 3D model of the rest of the stuff, the circuitry underneath, so I can pack it all up later on more easily.
Raspberry Over Ethernet and Google Assistant
I tried already but had a few ups and down with connecting a Raspberry to my laptop over an ethernet cable. Later saw that I was using a bad ethernet cable but there is some more stuff that I need to here. This will be an essential part for me because it will enable me to work on the project wherever I am. Besides that, I would like to try out setting up Google Assistant on the Raspberry and playing around with it to see how it works and how I can use it with my project. I will also be trying SOPARE because It can be used offline and that it can be trained for other languages as well, so in the end, I might end up using a combination of these 2, but I'll see as the project progresses.
This will be an incredibly fun challenge, but there will be a lot of work go to with it. I like the fact that it's 15 weeks which will give me a lot of time to work on it, as well as leave time for other responsibilities I have. Thank you for reading the blog. Hope you liked it!