MarIOnette: Control Robots Inside Blender

Поделиться
HTML-код
  • Опубликовано: 10 апр 2023
  • Thank you so much for watching!
    Here is the official project page: github.com/knee-koh/MarIOnette
    Other projects featured in the video:
    Piro - tinyurl.com/yc88kujc
    Alpha Training Blue - • Jurassic World Alpha T...
    More of my work:
    www.nikovladimirov.com
    kneeekoh
    Special thanks to:
    Arduino - www.arduino.cc/
    Blender Foundation - www.blender.org
    Neil Boyer- www.linkedin.com/in/neal-boyer/
    IDEO - www.ideo.com
    Playlab - ideotoys
    Peter Slattery - greensleevless and www.peter-slattery.com
    Andrew Stewart - grundle_head
    Music Used:
    C2C - The Cell

Комментарии • 57

  • @Nekotico
    @Nekotico 9 месяцев назад +7

    This is exactly what I was looking for, if a sd card can play the animation, then I can program something on Arduino to run a specific animation with a controller, this has endless potential

    • @knee-koh
      @knee-koh  7 месяцев назад +5

      Hi, there's a new version of MarIOnette that supports local SD card playback! Check the github for the latest release, and be on the lookout in the coming weeks for another tutorial video that will cover this feature in more detail.

    • @mioszkolenda9777
      @mioszkolenda9777 3 месяца назад +1

      @@knee-koh I am looking forward next tutorials! :) You made awesome thing

  • @VesuviusAntaria
    @VesuviusAntaria Год назад +10

    Thank you very much for creating this add-on for Blender. 👍
    This offers new possibilities. In the past, this was easy to do in Blender. But then they changed the API, making it no longer possible.

  • @Najebanski
    @Najebanski Год назад +4

    That's super cool. I would have never thought this was possible

  • @victorespada_
    @victorespada_ Год назад +5

    This is extremely promising, thx for this

  • @adrianram5524
    @adrianram5524 Год назад +1

    I'm now....officially ....a blender addict ... that is WAY cool !

  • @BadPracticeAutomation
    @BadPracticeAutomation Год назад +1

    This video is exactly what I needed. Thank you for makin this.
    Also, your video quality is exceptional relative to your subscriber count. I have no doubt that you will surely rise to the top and I’d like to mark my spot as the 538th subscriber!

  • @purplepenguin2947
    @purplepenguin2947 Год назад +5

    OMG this is really cool!!🎉🎉🎉

  • @Brainwizard.2
    @Brainwizard.2 Год назад +2

    So it has started..
    I love it!!!!!

  • @chairulhalim4447
    @chairulhalim4447 Год назад +1

    Interesting one for robotic lab project

  • @badejoolatuiyi1365
    @badejoolatuiyi1365 Год назад +1

    amazing , thank you for this.

  • @martenj94
    @martenj94 7 месяцев назад

    I’ve been thinking about this stuff for years and how I could get blender and arduino to talk in a streamluned way. Can’t wait to test this out!

  • @dts_user1389
    @dts_user1389 2 месяца назад

    Man, I might be able to use this at my job. I work in robotic thermal spray application for gas turbine components...
    Currently, I have not been able to find any programming tool out there that has the set of features I need, so I am looking to build it myself.
    If this works out, I will get my company to drop some big money on you. 😁
    (I'm still trying to lay out the groundwork for this project, so it's only at the stage of lip service rn. But I'ma get there!!!)

  • @ckat609
    @ckat609 10 месяцев назад

    Woah! This is insane!

  • @davonraymond3274
    @davonraymond3274 7 месяцев назад

    Bro thanks alot this is awesome stuff

  • @Ducerobot
    @Ducerobot Год назад

    Dude this is cool . I'm definatly using it😁👍

  • @swannschilling474
    @swannschilling474 6 месяцев назад

    This is great!!!! 😍

  • @mech2159
    @mech2159 Год назад

    What i needed to see

  • @MUKHTAR_THE_DREEMER
    @MUKHTAR_THE_DREEMER 8 месяцев назад

    amazing

  • @yannhuang6996
    @yannhuang6996 Год назад +1

    wowww super useful

  • @anonymousyoutube7259
    @anonymousyoutube7259 Год назад

    Thank you.

  • @sethitsseth
    @sethitsseth Год назад

    Badass!

  • @simonjames732
    @simonjames732 4 месяца назад +1

    Hi would this be compatible with a pca9685 module so I could add many servos to that and not clutter the io of the Arduino? The drawing arm worked fine when I tested it and is great as I'm an avid blender user thanks for making it as I've been looking for a way to use blender for creating an animation over to my animatronic project and now I can it seems.
    Where you mention you can render out animation do you mean store it to be referred to by the loop?

  • @erreib
    @erreib Год назад +3

    Looks great! Are the design and instructions for the spider bot project project available online? Thanks

    • @knee-koh
      @knee-koh  Год назад +5

      Coming soon to the github!

    • @Brocknoviatch
      @Brocknoviatch Год назад +1

      @@knee-kohlook forward to it!

  • @jordanhenshaw
    @jordanhenshaw 7 месяцев назад +1

    I'm working on a similar add-on for technical theatre. Question: have you had any difficulty with jerkiness when the motors receive the f-curve data? Any unexpected vibrations, overheating, or other bizarre interpolation anomalies?

    • @knee-koh
      @knee-koh  7 месяцев назад

      I haven't noticed anything like this in my tests. Blender does start to slow down a little (depending on your machine) once you add in lots of motors and LEDs, but still within reasonable limits (I've tested ~60 unique values at 45fps on an M1 macbook pro).
      Things like USB bus speed can affect jerkiness if the receiving microcontroller doesn't have a large enough buffer to read in all the motor values quickly enough (so some might get dropped). Power requirements are also really important: making sure all your grounds are connected, and the motors are receiving enough power so they don't draw too much load that might brown-out your main controller. Finally, motor resolution can affect smoothness; I've used really cheap rc servos in the past that had a small range, so moving between two values (say 101 and 102) visually looked like the motor moved a few degrees.
      It's hard to say what's causing the anomalies without seeing how things are set up IRL, but hopefully some of the above can help!

  • @__yusuf__
    @__yusuf__ 7 месяцев назад +2

    This is awesome, good work, thanks a lot :) May I ask, how can we put animations to SD cart and trigger them in our own codes? Is there a tutorial? Because I want to create animations and trigger them in my custom codes. Thanks again! Best Add-on to Blender in my opinion.

    • @knee-koh
      @knee-koh  7 месяцев назад

      Tutorial coming soon! The 1.0.3 build of MarIOnette supports this feature. You save the animation to your hard drive, transfer to an SD card, and then trigger it in the Arduino code. The latest .ino Arduino file in the github has some commented code on lines 167-177 that shows an example of how to load in an animation.

    • @__yusuf__
      @__yusuf__ 7 месяцев назад

      @@knee-koh Thanks! I will look at arduino code. If I knew before I could understand how to do it without a tutorial lol :) One of the best features imo! Its good we will have an tutorial too! Good luck!

  • @hankb7725
    @hankb7725 3 месяца назад

    Are you planning to add support for saving the movement instructions from blender to the Arduino? It would be great if the animation created in blender can be triggered on demand directly from your robot with a button or some other trigger without having it to stay attached to the computer.

    • @DaniArkadia
      @DaniArkadia 27 дней назад

      That is covered in the video

  • @happyloper
    @happyloper Год назад

    great! I have a question. What is the difference with ros moveit?

    • @knee-koh
      @knee-koh  Год назад

      This runs inside Blender, so CG artists or people familiar with the software can leverage its many animation and other tools to drive animatronics. I have never used Ros Moveit, so I cannot speak to the exact differences, but it looks like it's more specifically oriented towards factory and industrial robotics.

  • @mikealbert728
    @mikealbert728 Год назад +1

    Very cool. I am curious. Can this work in reverse? Can it be setup to manipulate the real world device and make the 3d model move in Blender?

    • @VesuviusAntaria
      @VesuviusAntaria Год назад

      That is also possible that you can do that with Blender. ruclips.net/video/bS2h98qkiQQ/видео.html

    • @knee-koh
      @knee-koh  Год назад +1

      It does, but it's a feature that is still in development: github.com/knee-koh/MarIOnette/blob/main/Media/Gifs/ElmoInput1.gif. Currently the Blender viewport has some latency in regards to the input. I will likely store the inputs locally on the microcontroller and then push the animation frame-by-frame to Blender in order to get frame-perfect captures.

  • @klepto2902
    @klepto2902 9 месяцев назад +1

    Thank you for making this awesome add-on just what I needed!! We are using a Rpi 3B+ to control a humanoid with 17 servo motors.. Will let you know if this works... FingersCrossed.

  • @mysticalsoulqc
    @mysticalsoulqc 11 месяцев назад

    wow, you did it! Bravo, this is the future to create self-sustaining 3d printed houses and all the rest for the people by the people! I made open-source giants 3 printers 9 feet by 14 feet prints for less than 1000$ can you animate it? for the people? or how much would you charge?

    • @knee-koh
      @knee-koh  7 месяцев назад

      I think MarIOnette could animate it, assuming you are running stepper motors on the printer. If you want your machine to print real objects, a slicer that will output g-code will likely be more efficient and useful.

  • @reallemonboi7957
    @reallemonboi7957 Год назад

    in the vid u said it can save to microcontrollers, but can you export this into a python script to play it alongside other code on a RasPi?

    • @knee-koh
      @knee-koh  Год назад +2

      Yes, saving to the microcontroller means saving a file to the SD card. That file can be read by any filesystem, and I've run the files from a Raspberry Pi in python on past projects. I will try and post example code to the github for the next release.

    • @reallemonboi7957
      @reallemonboi7957 Год назад

      @@knee-koh oh I see, thank you!

    • @reallemonboi7957
      @reallemonboi7957 Год назад

      ps. this is such a cool tool for creators and engineers, thank you for all the great work that was put into this entire addon

  • @00budge
    @00budge Год назад

    no errors adding the add on apparently, but cant find it in there

    • @knee-koh
      @knee-koh  Год назад +1

      Can't find it in the viewport, or inside the addon window? I made a tutorial to walk through installation: ruclips.net/video/nJkThBeOZog/видео.html

    • @00budge
      @00budge Год назад

      It's not showing up in the add ons on windows. Does it work with blender 3.5

    • @knee-koh
      @knee-koh  Год назад +1

      @@00budge I have updated the github to a new version that should fix this issue. Please try the new version and post any issues to the github, where I can track them more quickly.

  • @benploughman4145
    @benploughman4145 7 месяцев назад +1

    When I export an animation, the file seems to not have any extension and the contents look like some kind of encryption. What am I doing wrong?

    • @knee-koh
      @knee-koh  7 месяцев назад +1

      Hi, this is normal behavior! I'm working on a tutorial to go over more features, but here's a short overview until then:
      - First, make sure the "Enable SD Card" box is ticked, so the Arduino knows what to read from. If you're using a standalone SD reader module, uncheck "use internal SD card" and select the CS pin number
      - I would definitely recommend checking the "write cache header line" box, because the Arduino uses that line to figure out the fps and number of frames in an animation
      - Cache the animation and save it to your computer, then transfer it to the SD card and insert it into your microcontroller
      - Sync the configuration (in MarIOnette sync panel) and update the code to the microcontroller so it loads in the SD library
      - To play back a file, you can uncomment lines 167-177 in the MarIonette_Template_V1.ino code to see how to begin playback. The animation will run (assuming it's found on the SD card) and end automatically. You can track progress by monitoring the microcontroller over Serial
      As for the encryption you mentioned, this is also normal. In order to save processing time and space, each value is stored as two bytes that get combined into a 16-bit integer. The bytes look like gibberish in plaintext because they are being stored as ASCII values. The only thing that is readable is the aforementioned header line, since it only gets read in at the beginning of playback. As for the extension, that's also normal to not have an extension. Since there are certain bytes that signal end of file for .txt filetypes, I chose to make the animation files extension-less, since all of the operating systems and microcontrollers I tested this on are able to open and read from them without the end of file byte problem.

    • @benploughman4145
      @benploughman4145 7 месяцев назад +1

      Thanks so much for the detailed reply and talking me through the procedure! I'm eagerly looking forward to your next tutorial.
      As for my other comment on the other video, thanks for following up on that as well. I ended up going another direction that got me to a place I needed to be. However, I am starting to work with Dynamixels and definitely want to shift back to Marionette for that.
      I updated from 1.0.2 to 1.0.3 yesterday after I sent this message and was glad to see the new SD card options. this is going to come in very handy. I did however have some trouble when I attempted to Cache the animation in the SpidahBahtV1 sample file. When I would press "Cache File" it would read that it's "Writing file" show the "Percentage done" hang on 0% with no file created. Could there be some conflict with that particular file? I also noticed that in the code for the add-on that Dynamixel was commented out for the dropdown selection. it seemed to default to LewanSoul for the actuator selection. was that intentional?

    • @knee-koh
      @knee-koh  7 месяцев назад

      @@benploughman4145 great catch on the SpidahBaht example! It looks like the mapping on that bone is a little off, causing it to output negative values. For that specific example, you can set Servo 2 in the Actuator Setup panel to have a Min bone angle of -180 and Max bone angle of 180, just to get the caching to work. I'll work on fixing this bug to make sure negative values get clamped to 0 to prevent this from happening in the future.
      A quick tip on debugging errors: if you go to the scripting tab in Blender, you should see a red error in the bottom left showing what MarIOnette is angry about. When I'm in a rush I just tweak values until the error go away XD
      Dynamixels are the last thing on my list of things to implement, since there's more options that can be implemented. If you need it to work right away, and have a board that converts 2pin serial/Uart from the Arduino to the 1 data pin of the Dynamixel, you can use the DynamixelSerial library on the github (Arduino Code > Libraries) and include it in the Arduino .h file. From there you'll need to setup the Dynamixels in the .h file (use the examples found in that library) and then replace any Servo.write() or Servo.writeMicroseconds() commands with the corresponding Dynamixel calls.
      Version 1.0.4 will include basic Dynamixel support, I just need a few days/weeks to test functionality.

    • @benploughman4145
      @benploughman4145 7 месяцев назад

      Brilliant. Thanks for the debugging tip and really all of the info you've shared. Super helpful. Looking forward to seeing all this evolves. You've made a really cool thing here.

    • @benploughman4145
      @benploughman4145 5 месяцев назад

      Im working on setting up Dynamixels and there's a section in the Marionette panel under the Dynamixel ID number for 'Select Serial Port for Dynamixel link' and the drop down lists 'Serial1, Serial2, Serial3, etc..' . I'm curious as to what differentiates this from the Serial Setup section at the top.