Jump to content
Sign in to follow this  

Recommended Posts

Hey guys,

wanted to share this project with you, and deeply thank GallenWolf (alvin)
for this thread : houdini-arduino-robotic-claw
thanks for sharing your work in that thread, that was the key! It made it all possible.

So the project is a SCARABEE, a robot "singing" and moving, made by Bots Conspiracy

It's all 3d printed and laser cut + servo motors and arduino board.

until now it was controlled by pure data, but the animation possibilities were... frustrating.
So now, thanks to this forum and Houdini, we might have a way better solution to control that beast.

 

oh and thanks you Luke, for your help with Linux ;)

Edited by 6ril
  • Like 2

Share this post


Link to post
Share on other sites

So far I've only tried with 3 servos, so the next step will be to try this rig on the actual robot with the 16 servos !
Will the arduino hold up to the task with the .pde I'm using ???

Also, I foresee a difficulty : the angular speed restrictions of the servos ! I've got to find a way to somehow let me know if I'm animating to fast. I haven't thought about it much yet...
Maybe measuring the slope of the roation anim curve? But that wouldn't be ideal, as it's a post anim check only. The best would be an angular speed threshold that would limit (or warn) me while animating, but I fail to see how it could be implemented with the keyframe work flow.

 

Share this post


Link to post
Share on other sites
On 6/30/2016 at 3:48 AM, 6ril said:

vos ! I've got to find a way to somehow let me know if I'm animating to fast. I haven't thought about it much yet...
Maybe measuring the slope of the roation anim curve? But that wouldn't be ideal, as it's a post anim check only. The best would be an angular speed threshold that would limit (or warn) me while animating, but I fail to see how it could be implemented with the keyframe work flow.

 

Cool stuff!

 

Measuring the angular velocity is just the job for CHOPs, see the attached for inspiration. If you are editing a keyframe, CHOPs can get you the maximum of the slope of the channel, live.

 

 

ee_chop_angvel.hip

  • Like 1

Share this post


Link to post
Share on other sites

eetu thank you, thank you !

that will be soooo helpful.

and I'm proud to say I understand it all :D

Share this post


Link to post
Share on other sites

that is so cool. TO use Houdini for stuff like that. All the best of making it work, man. Looks great!

Share this post


Link to post
Share on other sites

Hey guys,

something pretty basic I guess, but I've never played with .otl before.

I'm using servo.otl, which contain the python link to a USB port, and now I need to use 2 USB port (as I need to control 2 arduino boards), so I would need another version of servo.otl (servo1.otl)

But each time I modify the python code inside the "type properties" windows, and save, somehow! .. well it modify all the servo nodes. The ones in place, as well as any new servo node.

 

Basically, I'm asking how to create a different version of an .otl (without affecting the original) in order to use both.

 

Sorry for the confusing explanation : /

 

Share this post


Link to post
Share on other sites

hey pezetko,

your suggestion would be great, but I don't know how to do it as the parameter would need to modify some string in the python code.

So I think my best option for now is to create a new asset.

I'm looking into it now, thanks ;)

Edited by 6ril

Share this post


Link to post
Share on other sites

got the 2 otl setup, but now it seems like I can't send to 2 arduino boards like this.

got on node (servo_0) set on USB0
and another (servo_1) set on USB1

maybe this code isn't set for houdini to send different data through different usb... like one node is controlling the serial connection (opening and closing it) so the second node can't control it too ?

import serial

def openSerialConnection():
    if not hasattr(hou.session, "serial_connection"):
        hou.session.serial_connection = serial.Serial("/dev/ttyUSB1", 9600, timeout=1)
        pass


def closeSerialConnection():
    if hasattr(hou.session, "serial_connection"):
        if hou.session.serial_connection.isOpen():
            hou.session.serial_connection.close()

        del hou.session.serial_connection

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×