Whoa. Germany really is a land of geniuses. From a hardcore animatronic fan, KUDOS to you and best wishes for your career, which promises to be very bright!
dud, I was searching a way to animate servos, I saw one guy who mad it on tiktok ask him multiple times but he never answered, ANS I finally found you ! THANK YOU !
For those who have a problem where the variable remains the same int the .h file (example : 90.0, 90.0, 90.0, 90.0, 90.0, 90.0, 90.0 ...), it's probably because in the rotation settings, the type of rotation is selected to quaternion, I had this problem but now it's settled !
THANK YOU SO MUCH I have been tearing my hair out!! I just selected each option and exported it until I saw different numbers. Interestingly although I animated on the Z axis, the values were showing up on the Y axis when I played the animation in Blender so I had to select that option.
What you're doing here is absolutely incredible! I'm a long-time Blender user and one of my current projects involves me making the Tiki Drummer from the Tiki Room. Using a model online I've modified it and designed the mechanics in Blender and started to program it in Arduino. However, I couldn't figure out how to do acceleration so I'm sure this plugin will really help me there, and I look forward to what I can do with it in the future!
Thanks so much! I realy love this Add-on. Finaly we have something for work with two diciplines that i love (Animation and Mecatronic). Long life for you and your work! Gretting from México.
This is amazing! I have been looking for an easier way to control my projects, and this seems a really great solution. However, I will be a grump and gripe one thing: you could subvert the memory issue if you were to use Blender itself to store the animation, and use Serial to update the Arduino with it's target positions. This would also allow you to "trim" the servos, and edit the animation real-time. The drawback is you would have to always keep the Arduino connected to the computer during the show.
My thoughts exactly, or maybe similarly. Rather than baking the performance into the program itself, it would seem more flexible to read the data from a stream while developing the animation and then from a stored file for the final export. This is something easily stored on an SD card which comes standard on many Teensy boards. Seems like that's maybe what's being done for the O.J. Punctuel animatronic? Anyway, this is very cool, Tim, and I I'm going to dive into the code you wrote for the plugin. I'd actually like to see a breakdown video of that if you ever got around to it.
This is pretty cool. I was on the search for something else animatronic related and while this didn't give me the answer I was looking for, it's still a great demonstration of that plug in.
Wow, now this is inspiring! I have sculpted many things, Disney characters and others, and I have always wanted to somehow give them motion. Your video got me so excited! Thank you! Subscribed!
This is, in a word, brilliant. I'm looking forward to future vids on the subject. I'd specifically be interested in your process for using Blender to create the physical rig, ensuring that the servos can be mounted into the design at the necessary angles to do their job. I began working on an animatronic dragon head, to be controlled live with an RC remote, but quickly got discouraged when trying to crobar the servos and their horns into everything just to get the mouth and eyes to move. Having no engineering background myself, I have to rely on videos like yours to learn the mechanics, so it's very much appreciated.
Thank you so much! I'll definitely try to cover this in the future. In general I start with a base model (e.g. a generic human) and try to place the servos freely inside of that model. The servos themselves are also 3D models which need to be as accurate as possible when it comes to their size and also the position of the mounting holes for the screws. At this point I don't have to care about the rig just yet. Once every servo is in place for the desired movements, I build the rig around the servos and make sure to not block other moving parts. This can of course be tested in 3D once every part is properly connected to a Blender armature and can be moved in 3D. Hope that helps for now and wish you good luck with your project! 😊👍
@@timhendriks93 Quite informative thanks. I don't suppose you'd be willing to share the .blend files for any and all servos you have in your library :) Those'd be good candidates for my personal content library
@@ckjedi Actually I am :D www.tim-hendriks.com/files/servo-models.zip The blend files also contain some drafts for simple mounting mechanisms, but as I said before, I normally start with just placing the servo itself. But of course you can also copy the servo and the mount to your project if that makes more sense ;)
Well done Tim ! What a great job !! And THANKS for sharing !! I hope for other details and tutorials on animatronics (with Blender) .. (maybe a little on the skeleton part? and other mechatronic parts ;) ) Thank you for these shares .... I subscribe !!! Salutations de France ;)
Great job, I've been working on a Unity system that will allow you to see your servo and led the movement in real-time. this is going to be very helpful.
That would be awesome! I'm just getting into electronics with some mediocre projects here and there, but I'd definitely like to keep tabs on that for later on if it is still in development. Keep us updated!
This is amazing! Love it and great job! I just returned from a family trip to Disney World and began looking up DIY animatronics and ran across this. I already know Blende and animation. I understand servos from RC flying. I just don't know enough about the micro controller side. Any recommendations on tutorials to follow to set one up for what you show. or would you be willing to put out a step by step tutorial?
OK, I've found some tutorial on setting up the nano and also using a PCA9585. Pretty straight forward. I already have an Arduino Uno. Would everything here work on that? or would there need to be some changes due to different pins?
@@sherwynlamer3770 Hi and great to hear that you like the add-on. Using and Arduino and a PCA9685 is what I usually do for my own projects. I also wrote a compatible Arduino library which should make it easier to get started. There are even example projects including one for using a PCA9685: github.com/timhendriks93/blender-servo-animation-arduino/tree/v1.2.0/examples/AdafruitPCA9685 However, I'm almost ready to release a new version which introduces some breaking changes. On the other hand, this will even simplify a lot of things and then also supports storing animations on an SD card. Feel free to start with the currently available library as it's still a good way to get familiar with how to use the exported animation data.
@@timhendriks93 Looking forward to seeing the new release. I'm wondering if you would be open to releasing any blender files. I'm working on the mechanical setup and I think I'm overcomplicating things. I rewatched your videos on the updated phantom and Jack Sparrow and are way different than what I have been working on.
@@sherwynlamer3770I shared the following files via the comments in the past: www.tim-hendriks.com/files/OJAnimatronic.blend www.tim-hendriks.com/files/PhantomAnimatronic.blend www.tim-hendriks.com/files/JackSparrowAnimatronic.blend (for Jack, you also need the following files in the same directory: www.tim-hendriks.com/files/Jack.blend and www.tim-hendriks.com/files/JackChair.blend)
I have thought of doing this with Maya many years ago but never had the time. Thanks for all the effort you put into this. My hats off to you for accomplishing what I wanted to do. I guess now I need to go work on other things. ;)
Congratulations, this is awesome, finding I have looking out for a longtime, any possibility of sharing the 3d print files, I would sure love to replicate this project, Thanks, subscribed 👍👍
Thanks, I've actually shared the .blend file for my Phantom Animatronic here and there, but keep in mind that it's basically a prototype and isn't optimized for easy recreation. I still hope this helps: www.tim-hendriks.com/files/PhantomAnimatronic.blend
This is brilliant. However, I'm wanting to do something similar, but in real time. I'd like to puppet my animatronic directly from Blender. I've written an Arduino script that takes serial communications and parses that into movement. But I can't figure out how to send it from Blender in real time. That may be outside the scope of this project, but I'm wondering if you have any ideas?
Thanks, this is actually very much in scope of this project and something I already developed as part of a newer version of this add-on 😊 This is a reminder again that I should make a new video showing all new features, but for now I would recommend checking out this section of the Add-On Readme on GitHub regarding the live mode feature: github.com/timhendriks93/blender-servo-animation/tree/v1.4.0?tab=readme-ov-file#live-mode I also developed a matching Arduino library which provides an easy way to make use of the serial data which is sent via the Blender add-on: github.com/timhendriks93/blender-servo-animation-arduino/blob/v1.2.0/examples/SerialLiveMode/SerialLiveMode.ino Keep in mind though that I'm also about to release a new version of these 2 projects which will introduce breaking changes. On the other hand this will simplify a lot of things and for example add support for reading animation data from SD cards.
Hi Tim Nice video! I tried using your add-on with this 1 bone as in this video but it only outputs 90 degrees. Do you know if there could be some setting in blender that is off?
This is such an amazing project! Quick question - have you ever interfaced/connected your system to a Pololu Mini Maestro 24-Channel USB Servo Controller? If you have would you recommend this controller?
Thank you so much, unfortunately I have no experience with Pololu controllers. But since my Add-on simply exports position values for each animation frame, it's possible to convert those and use them in a Pololu script (based on what I can see here: www.pololu.com/docs/0J40/6.c). For my projects I think I prefer an ESP32 micro controller in combination with a PCA9685 PWM board. The controller offers 4MB flash storage compared to 8KB internal script memory of the Pololu controllers, which allows me to export longer animations with higher frame rates. A PCA9685 can control 16 servos, but you can combine multiple of them to increase the amount of servos.
Hey Tim, your work is amazing! I grew up near Disney World Orlando and loved the animatronics... I have a question on code in Arduino. Most of your sample code is for one servo, I'm having difficulty writing code for two servos or more servos. It has been a while since I've programmed in C and using objects. Any help would be appreciated and I can't wait to see what you're working on next!
Hi Jack, thank you so much 😊 I would definitely recommend to check out my new Arduino library which also includes an example of a neck mechanism (based on at least 2 servos): github.com/timhendriks93/blender-servo-animation-arduino/blob/main/examples/AdafruitPCA9685/AdafruitPCA9685.ino The comments should hopefully indicate where you would have to add more lines / objects in order to use even more servos. Hope this helps 👍
thanks al lot for the video i was looking for for 2 years now haha. i am building "animatronics" for 3 years now (only got a litle bird at home and a big talking tree at my work(a small amusementpark)) but those are pretty strait forward. the bird is moving 1 servo at a time using a pololu meastro and the big tree is moving and talking using pnuematic cilinders driven by an eaton PLC. just like you i saw how disney is programming their animatronics and was mind blown haha. i do have 1 big issue wich is a huge speedbump for me and that is: writing code. i understant the basics of it but thats it. i just cant get it right and working the way i want. so my question is: when using blender and your add-on, is it generating code by itself or do you have to write all the code by yourself? i started a new project at my work and this add-on with blender is the perfect way to program and animate the movements of the (life-size)animaronic i am building. i hope you can help me
Glad to hear that my add-on is helpful to you! It currently 'only' exports the servo positions for each frame, so you still need some code to read the values and send them to the servos at the right time. However, I also added some Arduino examples with working code: github.com/timhendriks93/blender-servo-animation/tree/develop/examples For advanced applications I would recommend to go with a dedicated servo controller like the PCA9685. There is also an example project for this setup, although you will have to adjust and add some lines based on the amount of servos your animation supports (this is highlighted by some comments in the code). I currently have no examples for the Pololu Maestro, as I've never used one before. I'm planning to make a video on how to use the exported values in more detail once I've used the add-on a bit more myself and made some improvements.
Hi! I'm not sure if you still reply to any comments so late after the original release of this video, but I am wondering if you are willing to help answer a question that I have in regards to my project, using the addons here. I have the PCA9685 module example setup right now, but I am wondering if I can control each servo from blender in live mode, similarly to the live mode example, but with the PCA9685 module. Right now I am unfortunately stumped on how to achieve this. Any help is appreciated! Thank you
Hi and yes that is absolutely possible as I was already able to successfully use the live mode in combination with a PCA9685 module controlling multiple servos at the same time. In general, you'd have to use the PCA9685 as a basis, but initiate the live mode instead of the loop mode. In other words: use animation.live(Serial); instead of animation.loop(); Also initiate the Serial interface as shown in the Serial Live Mode example via Serial.begin(115200); Hope this helps ;)
@@timhendriks93 Thank you so much! I followed your advice, and discovered an issue with my PCA9685 module, so I had to change the wiring up a little to get everything working ^^ For anyone else having issues of the module not working (as in, the power light turns on, but the servos don't move or anything, they don't even try to maintain their position when you manually twist them), I connected v+ of the module to my arduino nano's 5v, and also connected the 5v to an external power source. The ground on the nano is also connected to the external power source's ground. Meanwhile the arduino board is also connected to the PC. I'm not sure why this works over the schematic, and I'm not sure if this has any long term issues (like burning up the board), but this method I've found worked and I thought I should share it. Thank you again, @timhendriks93! It was a pleasure receiving your reply and I hope to see more content from you and that you have a wonderful day/night. Again, thank you 🙂
It sounds like you might have configured a wrong rotation axis. I would try to change the axis value (X, Y or Z) within the servo settings and test the export again.
Really cool! I'm incorporating a PCA9585 into my project with an 11 servo animatronic so how would the code look for that? I've seen you link some example code for it in the comments but that just turns up a 404 page.
Thanks, you can find an up to date code example as part of my Arduino library here: github.com/timhendriks93/blender-servo-animation-arduino/tree/v1.2.0/examples/AdafruitPCA9685
@@timhendriks93 What did you use to power the PCA9685 individually? i understand the power draw of many servos is too much for just the arduino. it requires some two pin cable.
@@ChungoMonko I power my bigger / more powerful servos directly via my power supply and not via the PCA9685. You can still connect the PWM signal cable to the board as long as the servo and the board have a common ground connection (e.g. by ensuring the board's ground cable is also connected to the ground of the power supply).
Did you already have a look at the example Arduino project files within the GitHub repo? There you can find a simple example which contains a comment on what to do when having multiple servos: github.com/timhendriks93/blender-servo-animation/blob/main/examples/ArduinoServoLibrary/ArduinoServoLibrary.ino However, an even better solution would be to use a PCA9685 module which can control up to 16 servos simultaneously. There is also an example file for this scenario: github.com/timhendriks93/blender-servo-animation/blob/main/examples/ArduinoPCA9685/ArduinoPCA9685.ino
Excellent work! Is there any chance you could produce a video showing how you perform (puppeteer) the animation in blender...in real time? That is control the bones, assess, and tweak the performance. I'm familiar with Moho Pro 2D animation along with keyframes and it's a very tedious process. I would really like to see how it's done in blender step-by-step for a 3D model. Update: 2-20-22: I successfully created a single bone in Blender and replicated your example with my own sequence! I used your add on and followed your instructions to the "T" with Blender 3.01. All worked great with an Arduino Nano (clone)! Thanks a million! Update 2/21/22: I'm having trouble exporting armatures with more than one bone as a parent-child relationship. I can't seem to get the child bone to export. It only exports the parent bone. I'm using Blender 3.01. Any ideas of what I might be doing wrong? ( I created a separate post explaining this problem)
I just came across this, and I am thoroughly impressed! You said in your video "I already have a blender model that I am going to 3D Print." Do you have your models available for download anywhere?
Thanks a lot, I did actually share my Phantom Animatronic model earlier: www.tim-hendriks.com/files/PhantomAnimatronic.blend It is however important to note, that I did not refine the model in any way for an easy recreation. I'm currently also working on an upgraded version with a new neck mechanism and new arms 😉
Can I use this add-on with Lego Mindstorms Robot Inventor? Also, I downloaded the add-on and installing it to blender, but the file doesn't appear in the add-on library. I followed your instructions and Blender manual.
This reminds me of daz studio. It would be cool to get this do things like daz studio with dancing and music and stuff. Is he connecting the microcontroller directly or is he just copying blender code to arduino afterwards?
Since I recorded this video, there has actually been a lot of development regarding the Add-on. It is possible to do both 😊 You can either use a live mode via serial or a web socket, as well as storing the animation data on a micro controller via PROGMEM. I'm also about to release a new version which allows you to export the animation data as a binary file which can then be read from an SD card.
Thanks, the models were created with Blender in the first place. The approach shown in the video is always based on a 3D version of an animatronic, so you either have to start with a 3D model or create one that matches an existing animatronic.
That was very impressive! Thanks for sharing. I am familiar with blender but quite new to Arduino. To control multiple servos, using PCA9685 for instance, how can I assign a set of rotation data to a corresponding servo?
Thanks for your feedback! I would recommend to check out this video about the PCA9685 as it explains how to wire everything up and how to control individual servos via code: ua-cam.com/video/y8X9X10Tn1k/v-deo.html In my code example, you would simply have multiple arrays with position values, one for each servo. You then add a line to write the current position (like shown in the linked video) for each of your servos.
@@timhendriks93 After watching the PCA9685 video and using the giving example code, I am now able to achieve multiple servos control with blender. Thank again.
Do you build the 3D models for your figures in blender as well? Then export it scaled and 3D print it? If so it would be so awesome if you could make a video of that as well or link in the comment another creator that has made something similar.
That's exactly what I did, although I currently have no plans to make a video about modelling in Blender. I'm not sure if there is a video specifically about animatronics, but you should find plenty of videos explaining the general process of modelling in Blender. But as a starting point, I can recommend to use a base mesh that you find online (e.g. a basic human mesh if you want to create a human-like animatronic) and place models of servos where you need them. I then add some inner structure (mostly simple rectangular beams), use a modifier to create a shell out of the base model and slice the shell into individual parts to allow movement. Regarding 3D printing, there are also videos about how to prepare and export models in Blender to 3D print them, e.g.: ua-cam.com/video/-OynHqYd_1I/v-deo.html
Amazing, super cool!! Do you have any idea if this can be done in reveresed somehow? I mean like mooving a puppet and converting that movement into a corresponding animation in blender instead :P
Thanks, I think you would need an Arduino which reads values from potentiometers. Those would act as joints of your puppet and should turn according to your performance. The values could then be transferred and read by Blender via a serial connection. Then it's just a matter of changing the rotation of individual bones. I don't know if there already are add-ons that might help you with this, but I think it will definitely require quite some time and code to get this working.
@@timhendriks93 can you make a tutorialon how to see it up manually and how to properly rig a model like this? i cant find any other info quite like this online and this would help A LOT. Reply
You can have a look at the following example code: github.com/timhendriks93/blender-servo-animation/blob/develop/examples/ArduinoPCA9685/ArduinoPCA9685.ino
I use a simple DFPlayer Mini MP3 module for Arduino to play the audio. So far I was able to sync it by starting the exported animation with a short delay after starting the audio playback. The delay differs depending on the actual hardware and needs to be adjusted individually.
Wow.. great work, I appreciate your effort... I tried on one servo motor and it worked perfectly!! .. But I face a problem, which is that when I add another servo and I add another bone and give it its own animation.. and when I export the file.. it shows me the angles of the servo for one bone and does not show the second.. How can I add more than one servo? Can you help me? Thank you.
Thanks a lot 😊 The add-on currently works in a way that you always have to select a specific armature before you will be able to export the animation. The export will then contain the positions of all bones in that armature which have active servo settings. In your case you would either have to export the animation data for both armatures individually or combine both bones into a single armature.
This is great stuff and I really would like to be able to do this but every time I try to export to a .h file I always get this error code or something very similar "Calculated position 180.22 for bone Bone is out of range (0 - 180) at frame 44." . I made sure that the constraints were set to -90 to 90 but everything I try doesn't change anything. Does anyone know how to fix this?
hey,bro. Your addon is amazing, but i have a work on how to send real time rotation data to arduino, like when i move a bone in blender, and in the same time, the will accept the data from blender, and then control the servo rotate. Could you give me some suggestions? THANKS A LOT!!!!!!
Hi there, you can find a detailed description about this feature in the Readme on GitHub: github.com/timhendriks93/blender-servo-animation/tree/v1.3.0#live-mode-via-serial-connection
Without having tested it: I would think you can just use different min and max values in your bone / servo configuration that represent steps of your stepper motor. E.g. if you have a stepper which has 200 steps per revolution, you could define min = 0, max = 200 and set the rotation range to 360°.
Hi! All of my positions read "375" I thought maybe I had the wrong axis but no matter what parameter I change the .h file just has 375 over and over again. When I manually change the numbers the servo moves so I feel I'm very close to getting this to work!
Do you have any recommendations when it comes to audio synchronization or storing sound, do you just play externally and adjust the milis for audio to kick in to sync? Also, does the code have a position reset section in case of power failures or shut offs?
To handle audio synchronization in a more sophisticated way you would need to have an audio player providing the current playback time. I used a Raspberry Pi for my first animatronic and was therefore able to use the pygame library audio mixer to play the audio and et the current position: www.pygame.org/docs/ref/music.html#pygame.mixer.music.get_pos Since I used an Arduino for my second animatronic, I needed a separate audio player module and decided to go with the commonly used DFPlayer Mini. This module however does not provide any information about the current playback time and can only inform you whether the playback is currently running or not. I therefore had to rely on the audio and animation to be synchronous after triggering both at the same time. This is something that might be improved with better hardware, but so far I haven't had any noticeable sync problems with this method. A loss of power wouldn't be ideal since the hobby servos I use aren't capable of providing data about there current position. You simply tell them where to go and also have to rely on them actually getting there as fast as they can. You could try to write the current positions to the eprom of the micro controller, but the amount of write operations is limited and would most likely be reached in a very short time. I used a button to start and stop the 'show' in normal circumstances while stopping gracefully moves the servos to their neutral positions. Of course you could also use encoders to determine the current position of each servo, but in my case there simply wasn't enough space. Hope this helps to answer your questions :)
@@timhendriks93 I have seen another post referencing pygame as well. I will look into it. It is interesting how far, yet how archaic off the shelf solutions have stagnated. This is one of the best projects I have seen. I have followed a few other blender > serial data > arduino projects but this one combines Disney and arduino, so this has been quite the project. Understood regarding the playback on a specific command. I am always concerned about moving out of sync, but as long as it isn't continuous it probably will not do that. I wonder if position reset limiter wires on the servos would be easily implemented in your case. I have also been to disneyland paris twice and believe phantom manor is one of the best attractions Disney has done. I have not had the chance to visit since they had done the refurb, however, it appears to have been tamed down. The scene that this one is depicting seems to have a less dramatic effect now. Keep up the great work and I would love an audio sync video!
hello so i want to get into animatronics and have been studying a long time but i keep failing bhut this add on might do the trick but i do have a question how do you make blender know what servo is what and how do you make the Arduino know as well or do you have to do each animation blindly
As shown in my video, you specify servo settings per armature bone and can name them, too. You will then get named arrays which you can use in your Arduino code. I suggest to start with a very simple setup and expand your project step by step. Have another look at the video and the description. You will even find an Arduino project file to get started.
Despite the name of the Add-on (Blender Servo Animation), it is generally capable to export animation data based on whatever value set up a user has applied. A rotational value of a Blender bone will be mapped to a value based on a provided min, max and rotation range value. So in the end, it depends on how the exported data is interpreted which could also be done in a way that you move hydraulic cylinders with it. That again is specific to how exactly you plan to control them. I've not planned to do a specific tutorial on that, but would be interested to see if someone would try this out 😊
I'm having trouble exporting armatures with more than one bone as a parent-child relationship. I can't seem to get the child bone to export. It only exports the parent bone. I'm using Blender 3.01 on a Windows 10 Surface Pro laptop. I created a very simple 2 Bone rig with one parent and one child. Any ideas of what I might be doing wrong? I can export the parent bone ok..., but no matter how I select the child bone, independently or as a pair, I can never get the servo commands to export for that child bone.
The export is based on the currently selected armature and the add-on should then consider all bones of that armature with active servo settings (regardless of their relation in terms of parent - child). So the first thing to check would be if both bones have active servo settings and I guess they already belong to the same armature. You could also have a look at the inverse kinematics example in which the export also considers more than one bone / servo: github.com/timhendriks93/blender-servo-animation/tree/main/examples/IK
@@timhendriks93 Thanks Tim....That was it!... I had not set the servo settings for the child. It works now. I then created a third child to make sure I have it correct, and it exported 3 servo command arrays (parent, child1 and child2) in the header file. I then created a mutually exclusive new armature (new armature not linked to the original parent)...I animated it and was successful in exporting those servo commands to a header file. I then selected the two armatures (Parent with 2 childs and the new armature) and exported the servo commands... however it only exported one of the armatures....the parent and 2 child. I guess the export needs to be done for each mutually exclusive armature.
@@timhendriks93 1. can the bone be moved to max rotation with one click and saved while the music is playing? 2. how do I get those keyframes into the Arduino program? 3. how should I turn on the Arduino and the servo at the same time so that it fits with the music?... explanation 1. questions I have an arm / ➡️ press the button And arm get here __ ➡️ i release the button And arm go back here / .. But I would like to do it while the music is playing so that it is recorded in the program at the same time (I want to make a mouth that will sing "Break my stride,, for my animatronics") I will be very grateful if you can explain it to me. Thanks
@@jakubmalicki4643 I'm not sure whether I understood 1., but I think for 2. and 3. it could be helpful to point you to my new Arduino library which is specifically designed to use the exported values from my Blender add-on: github.com/timhendriks93/blender-servo-animation-arduino There is also an example called 'SwitchModeButton' which contains some comments indicating how to trigger the audio so that it matches the animation / servo movement. Hope this helps 😉
Sure, it's more about which motor types you can can control with this technique. The frame by frame approach is based on PWM controlled servo motors and you could use some stronger ones to build a life size version.
would it be possible to store the sequence data on an SD card instead of the arduino's built-in memory? in theory that could allow for longer sequences, plus if you needed to make changes you could just swap out the card
I thought about this too and think it should be possible. I haven't tried it yet as there are also controllers with more storage like the Arduino mega. But at some point I agree that an SD card could be the better option.
It's possible, but it still requires an external power supply and enough pins which support PWM to work properly: how2electronics.com/how-to-control-multiple-servo-motors-with-arduino/#How_to_Control_Multiple_Servo_Motors_with_Arduino
my servo keeps moving backward completly till the arm is lined up the opposite way of the direction of the animation in blender. Ive reversed it but it keeps going back to a position i do not want it at
If enabling the reverse option does not help, there might be some other issues with your servo configuration. Have you double checked your min/max position values? Are you using degrees or pulse width lengths?
Can i make it like a sequence? I basically want to make a story-telling animatronic. It tells a story for 3 minutes and then it closes its eyes. Is this possible using your method?
I think that shouldn't be a problem, as it's totally up to you how you use the exported animation. You could export multiple sequences (they would currently need to be stored in individual Blender files though) and program them to be played in whatever fashion you like. I also used this approach to build my O.J. Punctuel animatronic which can also be controlled via a mobile device. In 'auto' mode, he will simply play one sequence after another in a random order. Still all of the animation was done in Blender using my add-on.
So far I've only used the very basic approach of starting the audio playback at the same time as starting my animation which has the exact same duration as the audio track. I also import the audio directly into Blender so I can see and hear the result of my animation in combination with the audio.
I didn't do anything special but built a pretty basic armature with basic parent-child relations between the bones. Not sure what you exactly mean by 'bendy', but I would recommend this official tutorial about armatures: ua-cam.com/video/cZ3o5tjO51s/v-deo.html
This would be a topic for another video, but I kept it simple and just triggered a cheap MP3 module (DFPlayerMini) to play an MP3 at the beginning of the animation cycle within my Arduino code. There are already many videos which cover the basic usage of such a module.
@@timhendriks93 you should make that video I’m sure there are people like me that don’t truly understand every aspect or at least a whole video or a link to your full code to see how to write it
This is what I've wanted for a long time. Thank you very much for making an add-on. keep up the good work!
Whoa. Germany really is a land of geniuses. From a hardcore animatronic fan, KUDOS to you and best wishes for your career, which promises to be very bright!
this add-on alone makes me want to learn blender! amazing stuff!
dud, I was searching a way to animate servos, I saw one guy who mad it on tiktok ask him multiple times but he never answered, ANS I finally found you ! THANK YOU !
Nice! This takes the possibilities of animating to a whole new level
I have been trying to create this myself. Can't wait to try this out! Thank you for your work, Tim!
For those who have a problem where the variable remains the same int the .h file (example : 90.0, 90.0, 90.0, 90.0, 90.0, 90.0, 90.0 ...), it's probably because in the rotation settings, the type of rotation is selected to quaternion, I had this problem but now it's settled !
THANK YOU SO MUCH I have been tearing my hair out!! I just selected each option and exported it until I saw different numbers. Interestingly although I animated on the Z axis, the values were showing up on the Y axis when I played the animation in Blender so I had to select that option.
what should I have selected?
@@trash8830 xyz Euler
What you're doing here is absolutely incredible! I'm a long-time Blender user and one of my current projects involves me making the Tiki Drummer from the Tiki Room. Using a model online I've modified it and designed the mechanics in Blender and started to program it in Arduino. However, I couldn't figure out how to do acceleration so I'm sure this plugin will really help me there, and I look forward to what I can do with it in the future!
Thanks so much! I realy love this Add-on. Finaly we have something for work with two diciplines that i love (Animation and Mecatronic). Long life for you and your work! Gretting from México.
This is amazing! I have been looking for an easier way to control my projects, and this seems a really great solution.
However, I will be a grump and gripe one thing: you could subvert the memory issue if you were to use Blender itself to store the animation, and use Serial to update the Arduino with it's target positions. This would also allow you to "trim" the servos, and edit the animation real-time. The drawback is you would have to always keep the Arduino connected to the computer during the show.
My thoughts exactly, or maybe similarly. Rather than baking the performance into the program itself, it would seem more flexible to read the data from a stream while developing the animation and then from a stored file for the final export. This is something easily stored on an SD card which comes standard on many Teensy boards. Seems like that's maybe what's being done for the O.J. Punctuel animatronic?
Anyway, this is very cool, Tim, and I I'm going to dive into the code you wrote for the plugin. I'd actually like to see a breakdown video of that if you ever got around to it.
You are a saint. This will help me so much with my robotics projects
This is pretty cool. I was on the search for something else animatronic related and while this didn't give me the answer I was looking for, it's still a great demonstration of that plug in.
Wow, now this is inspiring! I have sculpted many things, Disney characters and others, and I have always wanted to somehow give them motion. Your video got me so excited! Thank you! Subscribed!
Very creative use of the application and great video. Hope to see more in the future
This is, in a word, brilliant. I'm looking forward to future vids on the subject. I'd specifically be interested in your process for using Blender to create the physical rig, ensuring that the servos can be mounted into the design at the necessary angles to do their job. I began working on an animatronic dragon head, to be controlled live with an RC remote, but quickly got discouraged when trying to crobar the servos and their horns into everything just to get the mouth and eyes to move. Having no engineering background myself, I have to rely on videos like yours to learn the mechanics, so it's very much appreciated.
Thank you so much! I'll definitely try to cover this in the future. In general I start with a base model (e.g. a generic human) and try to place the servos freely inside of that model. The servos themselves are also 3D models which need to be as accurate as possible when it comes to their size and also the position of the mounting holes for the screws. At this point I don't have to care about the rig just yet. Once every servo is in place for the desired movements, I build the rig around the servos and make sure to not block other moving parts. This can of course be tested in 3D once every part is properly connected to a Blender armature and can be moved in 3D. Hope that helps for now and wish you good luck with your project! 😊👍
@@timhendriks93 Quite informative thanks. I don't suppose you'd be willing to share the .blend files for any and all servos you have in your library :) Those'd be good candidates for my personal content library
@@ckjedi Actually I am :D www.tim-hendriks.com/files/servo-models.zip
The blend files also contain some drafts for simple mounting mechanisms, but as I said before, I normally start with just placing the servo itself. But of course you can also copy the servo and the mount to your project if that makes more sense ;)
@@timhendriks93 I say again: brilliant. I know what I'm doing this weekend!
Thanks for Sharing With us. Great Project.
Well done Tim ! What a great job !! And THANKS for sharing !! I hope for other details and tutorials on animatronics (with Blender) .. (maybe a little on the skeleton part? and other mechatronic parts ;) ) Thank you for these shares .... I subscribe !!! Salutations de France ;)
That was an awesome well paced perfectly detailed walk thru. And thank you for the add-on.
Great job, I've been working on a Unity system that will allow you to see your servo and led the movement in real-time. this is going to be very helpful.
That would be awesome! I'm just getting into electronics with some mediocre projects here and there, but I'd definitely like to keep tabs on that for later on if it is still in development. Keep us updated!
Very cool indeed. Interested in doing this myself now! Darn it another project!
This is wicked awesome Tim! I will certainly be downloading the add in soon. Cheers
This is amazing!!!! Man, don’t stop to upload videos. This content is gold!!!!
THANKS ! The video looks very professional!
Well done !
YES! Thank you! Thank you for uploading this! I have been looking for a method of doing this for ages!
Amazing addon. I will try.
This is incredible! Thank you so much!
Wowo! Amazing job, this looks so cool. Can't wait to get started :D
I need this.
Wow thanks!
This is brilliant :) Thanks for releasing your blender add-on
Thank you for sharing this!
Amazing work
This is amazing! Love it and great job! I just returned from a family trip to Disney World and began looking up DIY animatronics and ran across this. I already know Blende and animation. I understand servos from RC flying. I just don't know enough about the micro controller side. Any recommendations on tutorials to follow to set one up for what you show. or would you be willing to put out a step by step tutorial?
OK, I've found some tutorial on setting up the nano and also using a PCA9585. Pretty straight forward.
I already have an Arduino Uno. Would everything here work on that? or would there need to be some changes due to different pins?
@@sherwynlamer3770 Hi and great to hear that you like the add-on. Using and Arduino and a PCA9685 is what I usually do for my own projects. I also wrote a compatible Arduino library which should make it easier to get started. There are even example projects including one for using a PCA9685: github.com/timhendriks93/blender-servo-animation-arduino/tree/v1.2.0/examples/AdafruitPCA9685
However, I'm almost ready to release a new version which introduces some breaking changes. On the other hand, this will even simplify a lot of things and then also supports storing animations on an SD card. Feel free to start with the currently available library as it's still a good way to get familiar with how to use the exported animation data.
@@timhendriks93 Thanks, I've been going through the github and plan to purchases the nano and PCA985 to get started.
@@timhendriks93 Looking forward to seeing the new release. I'm wondering if you would be open to releasing any blender files. I'm working on the mechanical setup and I think I'm overcomplicating things. I rewatched your videos on the updated phantom and Jack Sparrow and are way different than what I have been working on.
@@sherwynlamer3770I shared the following files via the comments in the past:
www.tim-hendriks.com/files/OJAnimatronic.blend
www.tim-hendriks.com/files/PhantomAnimatronic.blend
www.tim-hendriks.com/files/JackSparrowAnimatronic.blend
(for Jack, you also need the following files in the same directory: www.tim-hendriks.com/files/Jack.blend and www.tim-hendriks.com/files/JackChair.blend)
I have thought of doing this with Maya many years ago but never had the time. Thanks for all the effort you put into this. My hats off to you for accomplishing what I wanted to do. I guess now I need to go work on other things. ;)
this is amazing!!
Great work. You should consider Patreon or a complete animatronics course. I would be interested in design and build from start to finish.
Simply amazing
This is increíble. Very good job
This is brilliant! Exactly what I was looking for!
This is beautiful!! ❤
This is amazing, great work!
I'm amazed with this creative idea,i hope you could also balance robot walk using blender 3d someday in the future.
The hero we need
Amazing job!!, Thanks you!
Incredible... I wish I had the resources and knowledge to do this.
Wowww Guy. Thank you for this add-on and for sharing with all us.👍😊🇧🇷
Amazing, exactly what I've been looking for!
Thanks man! will check this out!
we need more tuts man this is great!
ohhh!! Fantastic!!! Instant sub!
Congratulations, this is awesome, finding I have looking out for a longtime, any possibility of sharing the 3d print files, I would sure love to replicate this project, Thanks, subscribed 👍👍
Thanks, I've actually shared the .blend file for my Phantom Animatronic here and there, but keep in mind that it's basically a prototype and isn't optimized for easy recreation. I still hope this helps: www.tim-hendriks.com/files/PhantomAnimatronic.blend
Thank you very much sir ❤️❤️❤️
You are incredible!! Thank you!
This is brilliant.
However, I'm wanting to do something similar, but in real time. I'd like to puppet my animatronic directly from Blender. I've written an Arduino script that takes serial communications and parses that into movement. But I can't figure out how to send it from Blender in real time. That may be outside the scope of this project, but I'm wondering if you have any ideas?
Thanks, this is actually very much in scope of this project and something I already developed as part of a newer version of this add-on 😊 This is a reminder again that I should make a new video showing all new features, but for now I would recommend checking out this section of the Add-On Readme on GitHub regarding the live mode feature: github.com/timhendriks93/blender-servo-animation/tree/v1.4.0?tab=readme-ov-file#live-mode
I also developed a matching Arduino library which provides an easy way to make use of the serial data which is sent via the Blender add-on: github.com/timhendriks93/blender-servo-animation-arduino/blob/v1.2.0/examples/SerialLiveMode/SerialLiveMode.ino
Keep in mind though that I'm also about to release a new version of these 2 projects which will introduce breaking changes. On the other hand this will simplify a lot of things and for example add support for reading animation data from SD cards.
Wow, very cool! Now I'll have to teach myself to use Blender!
This is mega weird. I've been looking for something like this for ages and you upload this THIS MONTH. super weird.
Hi Tim
Nice video!
I tried using your add-on with this 1 bone as in this video but it only outputs 90 degrees. Do you know if there could be some setting in blender that is off?
Hi Nicky, that sounds a lot like you need to change the rotation axis in the bone / servo properties (it can either be X, Y or Z). Hope this helps 😊
This is such an amazing project! Quick question - have you ever interfaced/connected your system to a Pololu Mini Maestro 24-Channel USB Servo Controller? If you have would you recommend this controller?
Thank you so much, unfortunately I have no experience with Pololu controllers. But since my Add-on simply exports position values for each animation frame, it's possible to convert those and use them in a Pololu script (based on what I can see here: www.pololu.com/docs/0J40/6.c). For my projects I think I prefer an ESP32 micro controller in combination with a PCA9685 PWM board. The controller offers 4MB flash storage compared to 8KB internal script memory of the Pololu controllers, which allows me to export longer animations with higher frame rates. A PCA9685 can control 16 servos, but you can combine multiple of them to increase the amount of servos.
@@timhendriks93 This was helpful thank you!
Thanks for this tuto 😍😍
You're very welcome :)
Hey Tim, your work is amazing! I grew up near Disney World Orlando and loved the animatronics... I have a question on code in Arduino. Most of your sample code is for one servo, I'm having difficulty writing code for two servos or more servos. It has been a while since I've programmed in C and using objects. Any help would be appreciated and I can't wait to see what you're working on next!
Hi Jack, thank you so much 😊 I would definitely recommend to check out my new Arduino library which also includes an example of a neck mechanism (based on at least 2 servos): github.com/timhendriks93/blender-servo-animation-arduino/blob/main/examples/AdafruitPCA9685/AdafruitPCA9685.ino
The comments should hopefully indicate where you would have to add more lines / objects in order to use even more servos. Hope this helps 👍
@@timhendriks93 Hi Tim, thank so much. I've have the PCA9685 on order and that should do the trick. Have a great weekend!
This looks amazing, and something I was looking for! Is there a particular version of Blender needed to run the add-on?
Thanks, the minimum Blender version to run the add-on is 2.80.
thanks al lot for the video i was looking for for 2 years now haha.
i am building "animatronics" for 3 years now (only got a litle bird at home and a big talking tree at my work(a small amusementpark)) but those are pretty strait forward. the bird is moving 1 servo at a time using a pololu meastro and the big tree is moving and talking using pnuematic cilinders driven by an eaton PLC.
just like you i saw how disney is programming their animatronics and was mind blown haha.
i do have 1 big issue wich is a huge speedbump for me and that is: writing code. i understant the basics of it but thats it. i just cant get it right and working the way i want.
so my question is: when using blender and your add-on, is it generating code by itself or do you have to write all the code by yourself?
i started a new project at my work and this add-on with blender is the perfect way to program and animate the movements of the (life-size)animaronic i am building.
i hope you can help me
Glad to hear that my add-on is helpful to you! It currently 'only' exports the servo positions for each frame, so you still need some code to read the values and send them to the servos at the right time. However, I also added some Arduino examples with working code: github.com/timhendriks93/blender-servo-animation/tree/develop/examples
For advanced applications I would recommend to go with a dedicated servo controller like the PCA9685. There is also an example project for this setup, although you will have to adjust and add some lines based on the amount of servos your animation supports (this is highlighted by some comments in the code).
I currently have no examples for the Pololu Maestro, as I've never used one before. I'm planning to make a video on how to use the exported values in more detail once I've used the add-on a bit more myself and made some improvements.
Hi! I'm not sure if you still reply to any comments so late after the original release of this video, but I am wondering if you are willing to help answer a question that I have in regards to my project, using the addons here. I have the PCA9685 module example setup right now, but I am wondering if I can control each servo from blender in live mode, similarly to the live mode example, but with the PCA9685 module. Right now I am unfortunately stumped on how to achieve this. Any help is appreciated! Thank you
Hi and yes that is absolutely possible as I was already able to successfully use the live mode in combination with a PCA9685 module controlling multiple servos at the same time. In general, you'd have to use the PCA9685 as a basis, but initiate the live mode instead of the loop mode. In other words:
use animation.live(Serial);
instead of animation.loop();
Also initiate the Serial interface as shown in the Serial Live Mode example via Serial.begin(115200);
Hope this helps ;)
@@timhendriks93 Thank you so much! I followed your advice, and discovered an issue with my PCA9685 module, so I had to change the wiring up a little to get everything working ^^
For anyone else having issues of the module not working (as in, the power light turns on, but the servos don't move or anything, they don't even try to maintain their position when you manually twist them), I connected v+ of the module to my arduino nano's 5v, and also connected the 5v to an external power source. The ground on the nano is also connected to the external power source's ground. Meanwhile the arduino board is also connected to the PC.
I'm not sure why this works over the schematic, and I'm not sure if this has any long term issues (like burning up the board), but this method I've found worked and I thought I should share it.
Thank you again, @timhendriks93! It was a pleasure receiving your reply and I hope to see more content from you and that you have a wonderful day/night. Again, thank you 🙂
When i exported the .h file it didn’t put my exact numbers in for each animation it kinda just put 90s how do i fix this
I’m having that problem too let me know if you figure it out hopefully he responds
It sounds like you might have configured a wrong rotation axis. I would try to change the axis value (X, Y or Z) within the servo settings and test the export again.
Really cool! I'm incorporating a PCA9585 into my project with an 11 servo animatronic so how would the code look for that? I've seen you link some example code for it in the comments but that just turns up a 404 page.
Thanks, you can find an up to date code example as part of my Arduino library here: github.com/timhendriks93/blender-servo-animation-arduino/tree/v1.2.0/examples/AdafruitPCA9685
@@timhendriks93 Thank you
@@timhendriks93 What did you use to power the PCA9685 individually? i understand the power draw of many servos is too much for just the arduino. it requires some two pin cable.
@@ChungoMonko I power my bigger / more powerful servos directly via my power supply and not via the PCA9685. You can still connect the PWM signal cable to the board as long as the servo and the board have a common ground connection (e.g. by ensuring the board's ground cable is also connected to the ground of the power supply).
I have a question regarding on how I would apply the code to multiple servos in different pins?
Did you already have a look at the example Arduino project files within the GitHub repo? There you can find a simple example which contains a comment on what to do when having multiple servos: github.com/timhendriks93/blender-servo-animation/blob/main/examples/ArduinoServoLibrary/ArduinoServoLibrary.ino
However, an even better solution would be to use a PCA9685 module which can control up to 16 servos simultaneously. There is also an example file for this scenario: github.com/timhendriks93/blender-servo-animation/blob/main/examples/ArduinoPCA9685/ArduinoPCA9685.ino
Thank you so much for your help! 😊
Excellent work! Is there any chance you could produce a video showing how you perform (puppeteer) the animation in blender...in real time? That is control the bones, assess, and tweak the performance. I'm familiar with Moho Pro 2D animation along with keyframes and it's a very tedious process. I would really like to see how it's done in blender step-by-step for a 3D model.
Update: 2-20-22: I successfully created a single bone in Blender and replicated your example with my own sequence! I used your add on and followed your instructions to the "T" with Blender 3.01. All worked great with an Arduino Nano (clone)! Thanks a million!
Update 2/21/22: I'm having trouble exporting armatures with more than one bone as a parent-child relationship. I can't seem to get the child bone to export. It only exports the parent bone. I'm using Blender 3.01.
Any ideas of what I might be doing wrong?
( I created a separate post explaining this problem)
I just came across this, and I am thoroughly impressed! You said in your video "I already have a blender model that I am going to 3D Print." Do you have your models available for download anywhere?
Thanks a lot, I did actually share my Phantom Animatronic model earlier: www.tim-hendriks.com/files/PhantomAnimatronic.blend
It is however important to note, that I did not refine the model in any way for an easy recreation. I'm currently also working on an upgraded version with a new neck mechanism and new arms 😉
@@timhendriks93 that's great!! I'm following. I can't wait to see what you do next!!
Can I use this add-on with Lego Mindstorms Robot Inventor?
Also, I downloaded the add-on and installing it to blender, but the file doesn't appear in the add-on library. I followed your instructions and Blender manual.
This reminds me of daz studio. It would be cool to get this do things like daz studio with dancing and music and stuff. Is he connecting the microcontroller directly or is he just copying blender code to arduino afterwards?
Since I recorded this video, there has actually been a lot of development regarding the Add-on. It is possible to do both 😊 You can either use a live mode via serial or a web socket, as well as storing the animation data on a micro controller via PROGMEM. I'm also about to release a new version which allows you to export the animation data as a binary file which can then be read from an SD card.
WOW i love this video🤩 but how to do get the model of your animatronic to blender?
Thanks, the models were created with Blender in the first place. The approach shown in the video is always based on a 3D version of an animatronic, so you either have to start with a 3D model or create one that matches an existing animatronic.
@@timhendriks93 alright thanks
@@timhendriks93 Though is it ok that i don't use a model? and only use the bones
Sure, forgot to be more precise about this, but having an armature with bones would be sufficient ;)
That was very impressive! Thanks for sharing. I am familiar with blender but quite new to Arduino. To control multiple servos, using PCA9685 for instance, how can I assign a set of rotation data to a corresponding servo?
Thanks for your feedback! I would recommend to check out this video about the PCA9685 as it explains how to wire everything up and how to control individual servos via code:
ua-cam.com/video/y8X9X10Tn1k/v-deo.html
In my code example, you would simply have multiple arrays with position values, one for each servo. You then add a line to write the current position (like shown in the linked video) for each of your servos.
@@timhendriks93 Thank you very much sir!
@@timhendriks93 After watching the PCA9685 video and using the giving example code, I am now able to achieve multiple servos control with blender. Thank again.
@@alvinmickey2515 You're welcome, great to hear that it worked!
Can this work with an Arduino Uno with a PCA9585?
Do you build the 3D models for your figures in blender as well? Then export it scaled and 3D print it? If so it would be so awesome if you could make a video of that as well or link in the comment another creator that has made something similar.
That's exactly what I did, although I currently have no plans to make a video about modelling in Blender. I'm not sure if there is a video specifically about animatronics, but you should find plenty of videos explaining the general process of modelling in Blender. But as a starting point, I can recommend to use a base mesh that you find online (e.g. a basic human mesh if you want to create a human-like animatronic) and place models of servos where you need them. I then add some inner structure (mostly simple rectangular beams), use a modifier to create a shell out of the base model and slice the shell into individual parts to allow movement.
Regarding 3D printing, there are also videos about how to prepare and export models in Blender to 3D print them, e.g.: ua-cam.com/video/-OynHqYd_1I/v-deo.html
Amazing, super cool!! Do you have any idea if this can be done in reveresed somehow? I mean like mooving a puppet and converting that movement into a corresponding animation in blender instead :P
Thanks, I think you would need an Arduino which reads values from potentiometers. Those would act as joints of your puppet and should turn according to your performance. The values could then be transferred and read by Blender via a serial connection. Then it's just a matter of changing the rotation of individual bones. I don't know if there already are add-ons that might help you with this, but I think it will definitely require quite some time and code to get this working.
@@timhendriks93 can you make a tutorialon how to see it up manually and how to properly rig a model like this? i cant find any other info quite like this online and this would help A LOT.
Reply
@@timhendriks93 can you make a video on how to set up multiple arduenos all being controlled seperetly?
plz make a video on how to rig it like you did
After compiling and looking at the .h files, all the position values are 375? Did something go wrong and if so, how do I fix it?
how can you include the pca9685??
You can have a look at the following example code: github.com/timhendriks93/blender-servo-animation/blob/develop/examples/ArduinoPCA9685/ArduinoPCA9685.ino
@@timhendriks93 thanks!!
how did you get the soundtrack to sync to your animation ? and did you mp3 addon for the arduino ?
I use a simple DFPlayer Mini MP3 module for Arduino to play the audio. So far I was able to sync it by starting the exported animation with a short delay after starting the audio playback. The delay differs depending on the actual hardware and needs to be adjusted individually.
Without a doubt, THIS is the beginnning of Skynet
i tried the servo example but the addon glitches out i require help please!
Wow.. great work, I appreciate your effort... I tried on one servo motor and it worked perfectly!! .. But I face a problem, which is that when I add another servo and I add another bone and give it its own animation.. and when I export the file.. it shows me the angles of the servo for one bone and does not show the second.. How can I add more than one servo? Can you help me? Thank you.
Thanks a lot 😊 The add-on currently works in a way that you always have to select a specific armature before you will be able to export the animation. The export will then contain the positions of all bones in that armature which have active servo settings. In your case you would either have to export the animation data for both armatures individually or combine both bones into a single armature.
This is great stuff and I really would like to be able to do this but every time I try to export to a .h file I always get this error code or something very similar "Calculated position 180.22 for bone Bone is out of range (0 - 180) at frame 44." . I made sure that the constraints were set to -90 to 90 but everything I try doesn't change anything. Does anyone know how to fix this?
I had the same and fixed it by making the "neutral angle" under servo settings 0 rather than 90
Actually scratch that. I'm still struggling with the same error!@@GlennMelenhorst
hey,bro. Your addon is amazing, but i have a work on how to send real time rotation data to arduino, like when i move a bone in blender, and in the same time, the will accept the data from blender, and then control the servo rotate. Could you give me some suggestions? THANKS A LOT!!!!!!
Hi there, you can find a detailed description about this feature in the Readme on GitHub: github.com/timhendriks93/blender-servo-animation/tree/v1.3.0#live-mode-via-serial-connection
Would this amazing addon work for stepped motors as well?
Without having tested it: I would think you can just use different min and max values in your bone / servo configuration that represent steps of your stepper motor. E.g. if you have a stepper which has 200 steps per revolution, you could define min = 0, max = 200 and set the rotation range to 360°.
@@timhendriks93 thank you my brother
@@filipelucciano Did you ever give it a try?
@@TheChromePoet no bro, I didn't go on with my proj unfortunately :(
@@filipelucciano Well thanks for the update 👍
Hi!
All of my positions read "375" I thought maybe I had the wrong axis but no matter what parameter I change the .h file just has 375 over and over again. When I manually change the numbers the servo moves so I feel I'm very close to getting this to work!
Can you make a video on how to rig and animate the models? I’m assuming it’s different when animating. I’m not very talented and rigging models.
Do you have any recommendations when it comes to audio synchronization or storing sound, do you just play externally and adjust the milis for audio to kick in to sync?
Also, does the code have a position reset section in case of power failures or shut offs?
To handle audio synchronization in a more sophisticated way you would need to have an audio player providing the current playback time. I used a Raspberry Pi for my first animatronic and was therefore able to use the pygame library audio mixer to play the audio and et the current position: www.pygame.org/docs/ref/music.html#pygame.mixer.music.get_pos
Since I used an Arduino for my second animatronic, I needed a separate audio player module and decided to go with the commonly used DFPlayer Mini. This module however does not provide any information about the current playback time and can only inform you whether the playback is currently running or not. I therefore had to rely on the audio and animation to be synchronous after triggering both at the same time. This is something that might be improved with better hardware, but so far I haven't had any noticeable sync problems with this method.
A loss of power wouldn't be ideal since the hobby servos I use aren't capable of providing data about there current position. You simply tell them where to go and also have to rely on them actually getting there as fast as they can. You could try to write the current positions to the eprom of the micro controller, but the amount of write operations is limited and would most likely be reached in a very short time. I used a button to start and stop the 'show' in normal circumstances while stopping gracefully moves the servos to their neutral positions. Of course you could also use encoders to determine the current position of each servo, but in my case there simply wasn't enough space.
Hope this helps to answer your questions :)
@@timhendriks93 I have seen another post referencing pygame as well. I will look into it. It is interesting how far, yet how archaic off the shelf solutions have stagnated. This is one of the best projects I have seen. I have followed a few other blender > serial data > arduino projects but this one combines Disney and arduino, so this has been quite the project. Understood regarding the playback on a specific command. I am always concerned about moving out of sync, but as long as it isn't continuous it probably will not do that.
I wonder if position reset limiter wires on the servos would be easily implemented in your case.
I have also been to disneyland paris twice and believe phantom manor is one of the best attractions Disney has done. I have not had the chance to visit since they had done the refurb, however, it appears to have been tamed down. The scene that this one is depicting seems to have a less dramatic effect now.
Keep up the great work and I would love an audio sync video!
hello so i want to get into animatronics and have been studying a long time but i keep failing bhut this add on might do the trick but i do have a question how do you make blender know what servo is what and how do you make the Arduino know as well or do you have to do each animation blindly
As shown in my video, you specify servo settings per armature bone and can name them, too. You will then get named arrays which you can use in your Arduino code. I suggest to start with a very simple setup and expand your project step by step. Have another look at the video and the description. You will even find an Arduino project file to get started.
Does it only work with servos? Let's say I got a heavy robot and I need to use Hydraulic cylinders, Could you make a tutorial on how to use them?
Despite the name of the Add-on (Blender Servo Animation), it is generally capable to export animation data based on whatever value set up a user has applied. A rotational value of a Blender bone will be mapped to a value based on a provided min, max and rotation range value. So in the end, it depends on how the exported data is interpreted which could also be done in a way that you move hydraulic cylinders with it. That again is specific to how exactly you plan to control them. I've not planned to do a specific tutorial on that, but would be interested to see if someone would try this out 😊
I'm having trouble exporting armatures with more than one bone as a parent-child relationship. I can't seem to get the child bone to export. It only exports the parent bone. I'm using Blender 3.01 on a Windows 10 Surface Pro laptop.
I created a very simple 2 Bone rig with one parent and one child.
Any ideas of what I might be doing wrong?
I can export the parent bone ok..., but no matter how I select the child bone, independently or as a pair, I can never get the servo commands to export for that child bone.
The export is based on the currently selected armature and the add-on should then consider all bones of that armature with active servo settings (regardless of their relation in terms of parent - child). So the first thing to check would be if both bones have active servo settings and I guess they already belong to the same armature. You could also have a look at the inverse kinematics example in which the export also considers more than one bone / servo: github.com/timhendriks93/blender-servo-animation/tree/main/examples/IK
@@timhendriks93 Thanks Tim....That was it!... I had not set the servo settings for the child. It works now. I then created a third child to make sure I have it correct, and it exported 3 servo command arrays (parent, child1 and child2) in the header file.
I then created a mutually exclusive new armature (new armature not linked to the original parent)...I animated it and was successful in exporting those servo commands to a header file. I then selected the two armatures (Parent with 2 childs and the new armature) and exported the servo commands... however it only exported one of the armatures....the parent and 2 child. I guess the export needs to be done for each mutually exclusive armature.
one thing I found out from this video was how to set movement limits, but I didn't find out the important things I need
So what exactly were you missing then? Maybe I can cover it in a future video 😊
@@timhendriks93 1. can the bone be moved to max rotation with one click and saved while the music is playing? 2. how do I get those keyframes into the Arduino program? 3. how should I turn on the Arduino and the servo at the same time so that it fits with the music?... explanation 1. questions I have an arm / ➡️ press the button And arm get here __ ➡️ i release the button And arm go back here / .. But I would like to do it while the music is playing so that it is recorded in the program at the same time (I want to make a mouth that will sing "Break my stride,, for my animatronics") I will be very grateful if you can explain it to me. Thanks
@@jakubmalicki4643 I'm not sure whether I understood 1., but I think for 2. and 3. it could be helpful to point you to my new Arduino library which is specifically designed to use the exported values from my Blender add-on: github.com/timhendriks93/blender-servo-animation-arduino
There is also an example called 'SwitchModeButton' which contains some comments indicating how to trigger the audio so that it matches the animation / servo movement. Hope this helps 😉
Is it possible to use this same technique to make a life size version?
Sure, it's more about which motor types you can can control with this technique. The frame by frame approach is based on PWM controlled servo motors and you could use some stronger ones to build a life size version.
I've been wanting to do this but I got lost after the intro. 😢
would it be possible to store the sequence data on an SD card instead of the arduino's built-in memory? in theory that could allow for longer sequences, plus if you needed to make changes you could just swap out the card
I thought about this too and think it should be possible. I haven't tried it yet as there are also controllers with more storage like the Arduino mega. But at some point I agree that an SD card could be the better option.
Is there a way to control multiple different servos without a PCA9685?
It's possible, but it still requires an external power supply and enough pins which support PWM to work properly: how2electronics.com/how-to-control-multiple-servo-motors-with-arduino/#How_to_Control_Multiple_Servo_Motors_with_Arduino
i cant seem to get the 2.93 version or 2.92 version to load the python file , any sugggestions
Do you get any error messages? And were you able to install other extensions before?
@@timhendriks93 I finally got it to load I had to delete a blender a few times but I did get it to load finally this morning woohoo
That's great to hear 😊👍
my servo keeps moving backward completly till the arm is lined up the opposite way of the direction of the animation in blender. Ive reversed it but it keeps going back to a position i do not want it at
If enabling the reverse option does not help, there might be some other issues with your servo configuration. Have you double checked your min/max position values? Are you using degrees or pulse width lengths?
Can i make it like a sequence? I basically want to make a story-telling animatronic. It tells a story for 3 minutes and then it closes its eyes. Is this possible using your method?
I think that shouldn't be a problem, as it's totally up to you how you use the exported animation. You could export multiple sequences (they would currently need to be stored in individual Blender files though) and program them to be played in whatever fashion you like. I also used this approach to build my O.J. Punctuel animatronic which can also be controlled via a mobile device. In 'auto' mode, he will simply play one sequence after another in a random order. Still all of the animation was done in Blender using my add-on.
Do you have any suggestions for syncing computer audio up with animated figures?
So far I've only used the very basic approach of starting the audio playback at the same time as starting my animation which has the exact same duration as the audio track. I also import the audio directly into Blender so I can see and hear the result of my animation in combination with the audio.
Hey! how did you make those bones not bendy in blender? when i do it it bends and streches the whole figure can u link me a tutorial in blender?
I didn't do anything special but built a pretty basic armature with basic parent-child relations between the bones. Not sure what you exactly mean by 'bendy', but I would recommend this official tutorial about armatures: ua-cam.com/video/cZ3o5tjO51s/v-deo.html
Also how do you hook it up to sound
This would be a topic for another video, but I kept it simple and just triggered a cheap MP3 module (DFPlayerMini) to play an MP3 at the beginning of the animation cycle within my Arduino code. There are already many videos which cover the basic usage of such a module.
@@timhendriks93 you should make that video I’m sure there are people like me that don’t truly understand every aspect or at least a whole video or a link to your full code to see how to write it