Requested — Edited

Proposed Plug In For Animation Score 2094

Hey Guys, I've had this idea that I thought might come to light with the upcoming update for plug in architecture. I think I may have posted way back before DJ released Auto Position but not with these photoshop pics and video. Basically its a UI with alot of visual information for creating and edit animations.

With this set up you could build up animations one block at a time. Creating key frames, moving those keyframes easily editing the duration and edit its location on the timeline. I do 3D animation so alot of ideas are from the animation motion panel found in most animation packages and a little borrowed from non linear video editing.

Take a look below here is how i see it working:

In the first illustration you see the master window.
Along the bottom we see the time line, running at 30 frames a second.
On the left side we see our digital port naming.

In the center is where all the fun happens. You create with animation blocks.
User-inserted image

User-inserted image

Its here we see the servo positions along the left side. In this example 0-180, but it might be 42-91 etc depending on your servo set up.There would be a time line again along the bottom of this window but not shown here.
User-inserted image

You create the keyframes for a servo position on the time line. These keyframe dots can be edited by simply moving them up and down to adjust servo position or could be move up and down the time line to alter when a servo makes it to a position.

Another idea I had was to create Belzier Spline control on the animation curve to smoothly adjust both position on time line and servo position.(as opposed to linear which is a hard in and out of position.

The next thing that could be done is by dragging one end or the other of the the animation block it would equally scale the animation for that block. So as an example, you could have an arm move up and it takes 30 frames or one second. By scaling the animation block in half the motion would be twice as fast or half a second. Handy for editing.

Another thing that could be done would have the animation blocks slide up and down the time line changing when an action takes place.Again fast editing.

Another would be to mirror an animation block. Choose an animation block click mirror and lets say the animation block moves the arm up, instead of animation it back to down position simply mirror that animation block and you have a full animation loop. Blocks should also be able to be copied and pasted anywhere on the time line.
User-inserted image

This kinda freedom allows things like ease in and out of a servo position possible, fine tuning a servo position easy and visual.

I can't code a lick but if someone could pull this off you could make EZ even EZ-ier?

Want to see this feature happen? Like it to increase the score.
Wow, this is a great visual tool for building up moves and possibly even seeing the animation moves in real time before being mapped into the robot / EZB.
I'm all for graphic interfaces. Before I found EZB I was going to use an Arduino and was cringing at having to learn the coding language needed to program it. I found a program called Minibloq that let you program Arduino using a graphic interface much like your idea shows. Doing a quick Google search shows me there are a number of other graphic programs for Arduino.

My point is that regular people like us don't have the time or sometimes even the passion needed to learn a coding language. I think that's why most of us have stuck with EZ Robot. It's EZ! @Will, a graphic plugin that would help see how frames are put together and work with each other would be an awesome tool. I've struggled with understanding the Auto Position Frame concept when others have said it's very easy and simple to use and understand. Different people understand and learn differently I guess. I'm a visual guy and that's the best way for me to understand things. Hopefully one of our coding wizards that we are so lucky to call forum members could take up your torch and implement your idea. :)
I totally agree with the concept and comments within this thread. Hopefully one of the EZB members that is comfortable with coding will kick this idea into reality.
When I think of programming something like a B9 arm with the Auto Positioner, makes me cringe. Not that there is anything wrong with it, I just want to have the ability to see the servos live and working together to do complex moves and the ability to easily edit those moves. Something like this would be a great help and extend the EZB abilities.

When I made the video way back in 2008 of my B9 Build, I used something called the RAPU, which is basically a programmable playback machine for servos. You build up your animations similar to my layout above, live so you can see each servo in action with the others and allows for simple edits, timing position, etc. You then download the animations to the compact flash card and can trigger them via TTL or using a wireless remote control. Their software was very graphical and simple and I feel its time for EZB to get a similar UI for animations.
The plug-in idea is great, but actually does require a steep learning curve, maybe not so much concerning how the plug-in system works, but for the C# and the NET framework upon which it relies. That's one thing I don't like abut the MS Visual Programming environment. It's married to the NET Framework these days. I'm just not motivated enough to climb that mountain. I'll bet a lot of other programmers are that way as well. They are comfortable with something else and don't want to bother.

I think that's why there will be little progress with the plug-in concept. Well, that and the fact they are just too busy or unmotivated to do it in the first place. We may see a few simple plug-ins made but not likely something as large scale as this suggestion would be. That's a lot of up front work and a lot of maintenance as time goes on. It's a big commitment. The maintenance can be the worst part of it. Not to mention safety considerations.

In that regard, I work toward making programs which can do whatever they do, then deliver the results to ARC in some manner. Currently, For me, that is placing whatever they output into a text file for ARC to bring in and use (or vice versa). Or a program which will actually insert the results into a .EZB file, making it appear as a script, or as data in something like the Speech Recognition control, when the .EZB file is loaded.

My point in all this? What would really be helpful for the programmers in the group would be a better interface to delivering data to and from ARC. Were I to build a plug-in it would be centered on doing just that. In addition, it would be able to place that data into a script so it can be run immediately. As well as, sending data from a script out to a file or shared memory location. Currently there is no way to do that.

Such things would allow programmers to program with whatever they are most comfortable and still use the things available within ARC.


My point in all this? What would really be helpful for the programmers in the group would be a better interface to delivering data to and from ARC. Were I to build a plug-in it would be centered on doing just that. In addition, it would be able to place that data into a script so it can be run immediately. As well as, sending data from a script out to a file or shared memory location. Currently there is no way to do that.

Is this at all anything that DJ is working on now at the cabin. Again not being a programmer, I get little bits and pieces about why it would be difficult in your post to build a UI like this. I guess since he is overhauling alot now it is the time to ask for certain things for programmers to build the plug ins he is hoping will be developed.

So if say an external program was written and ARC had an easier way to transfer data between the two, a person could build a UI like my suggestion and it would run outside ARC in the windows environment and pass data to ARC...that seems like a way around the limitations? Kinda like I have Roborealm doing with ARC?
Will, yes, ARC has numerous ways to pass data in and out to other applications. The two primary bidirectional ways are the SDK and the new plugin functionality, both of which require knowledge of dotnet programming.

Other methods include the Telnet (really tcp socket) interface to send data to ARC and execute script commands and various ways including exec, file read/write, calling web pages (although I would like to see the ability to call a soap web service) and others.
Great! Thanks Alan.

Oh dotnet programmers...where are yooooouuuuu? LOL
#10   — Edited
Your concept reminds me of Blockly, maybe be it can be added there, just a thought  :-)