Animatronic Wolf Tail

BeanieBots

Moderator
Fun project. Nice to see an 08M wagging its tail!
Looks like it might suffer a little with resonant pundulum effect but a 'fluffy' covering and stronger servos might fix that.
Where did you get the flex sensors from?
 

Marcwolf

Senior Member
Hi Beaniebots

The flex sensors are from www.littlebirdelectronics (look at the credits in the demo movie and I have it there :>)

They have a lot of interesting sensors.

The servos are definately strong enough - and they have been modified so that they are over ranged - (about 150 degree rotation). They could literally pull the tail apart.

The pendulum effect will be muted by the fur fabric which is why I mentioned that the final programming will still need to be done. I wanted to show the internals before I put the inner spendex sheath on, and then the outer furry sheath so that others would have a better idea of how it works.

Take care and thanks for the comments

Dave
 

MPep

Senior Member
Fantastic looking tail. Well done. Looks like a lot of work has gone into this design and project in general. :D
 

lbenson

Senior Member
Very elegant design, and a very nice youtube exposition. Amazing that it can all be controlled with a couple of 08Ms, and that just two "tendons" and two servo "muscles" can get that range of effects. Many kudos for your efforts. I look forward to seeing it with the fur on.
 

slimplynth

Senior Member
It looks really cool, i want one for every day use just so people will know to stay out of my way or to emphasise my being startled :D
 

Marcwolf

Senior Member
Very elegant design, and a very nice youtube exposition. Amazing that it can all be controlled with a couple of 08Ms, and that just two "tendons" and two servo "muscles" can get that range of effects. Many kudos for your efforts. I look forward to seeing it with the fur on.
Many thanks for the coments. It is surprizing how many seemingly complex biological motions can be repicates with a mechanical design.

The easiest is that Nature has no wheels or pully's so we can benifit there
The hardest is that linear actuators like muscles are very difficult to do.

I am currenly working on 2 other animatronic systems. A muzzle with emotive capabilites, and a ear with 3 axis of movement.

I'll post the code for the tail and keypad up in a day or so as I am flat out trying to complete the coverings for a convention in a couple of days.
 

danielsaul

New Member
Wow! Well done. This is amazing, I can't wait to see it with the fur on and love how you've used the flex sensors on your legs so it wags in time with your walking.

I want one :)
 

Marcwolf

Senior Member
Keypad Code

Here is the code for the Keypad
There is a LED that will light when a key is pressed for 5ooms, and will light longer when a command is being sent.
It using the resister array style keypad


Code:
; *******************************
; ***** Sample Header File  *****
; *******************************
;    Filename: 		
;    Date: 			
;    File Version: 	
;    Written by: 		
;    Function:		
;    Last Revision:
;    Target PICAXE:	
; ******************************* 
#picaxe 08M

symbol LED = 4
symbol Keypad = 1
symbol master = 0

start:


' b2 holds value

' loop to read
b1 = 0
do while b1 < 45
	readadc Keypad,b1
	pause 100
loop

' Keyess - set LED on
high LED

' Decode
If b1 > 52 and b1 < 56 then
	b2 = 1 ' Key 1
end if
If b1 > 56 and b1 < 60 then
	b2 = 2 ' Key 2
end if
If b1 > 61 and b1 < 66 then
	b2 = 3 ' Key 3
end if
If b1 > 66 and b1 < 72 then
	b2 = 4 ' Key 4
end if
If b1 > 72 and b1 < 78 then
	b2 = 5 ' Key 5
end if
If b1 > 78 and b1 < 90 then
	b2 = 6 ' Key 6
end if
If b1 > 90 and b1 < 100 then
	b2 = 7 ' Key 7
end if
If b1 > 100 and b1 < 115 then
	b2 = 8 ' Key 8
end if
If b1 > 115 and b1 < 135 then
	b2 = 9 ' Key 9
end if
If b1 > 170 and b1 < 220 then
	b2 = 10 ' Key 0
end if

' Turn Keypress LED off
low LED

' Function 1 Button Pressed
If b1 >135 and b1 <170 then
	if b2 => 0 then
		if b2 = 10 then
			b2 = 0
		end if
	   ' Debug Value
		'sertxd("A",#b2,13,10)
		
		' Valid Command
		high LED
		
		' Force Master into interrupt and send value
		high master
		pause 20
		serout master,t2400,(1,b2)
		low master
		
	
	end if
	' set key value back to 0
	b2 =0
end if

'Function 2 Button Pressed
If b1 >220  then
	if b2 > 0 then
	   ' Debug Value
		'sertxd("B",#b2,13,10)
		
		' Valid Command
		high LED
		
		' Force Master into interrupt and send value
		high master
		pause 20
		serout master,t2400,(2,b2)
		low master
		
	

	end if
	' set key value back to 0
	b2 =0
end if


pause 500

low 4
goto start
 

Marcwolf

Senior Member
Tail Wag code

Here is the code for the tail wag

Code:
; *******************************
; ***** Sample Header File  *****
; *******************************
;    Filename: tailwag2		
;    Date: 			
;    File Version: 5	
;    Written by: 	DJB	
;    Function:		Animatronic Tail Wagger
;    Last Revision:
;    Target PICAXE:	
; ******************************* 


symbol listen = 3
symbol servoV = 1
symbol servoH = 4
symbol vhappy = 200
symbol vsad = 80
symbol hdrop = 150
symbol vdrop = 150
symbol hright = 200
symbol hleft = 80

setint %00001000, %00001000

' initalise loop
b6  =0


start:
	
   
	b3 = 0
	branch b6,(wag0,wag1,wag2,wag3,wag4,wag5)
'-----------------------------------------	
wag0:
	servopos servoh, hdrop
	servopos servov, vdrop
	pause 250
	high servoH
	high servoV
	wag01:
	pause 250
	if b3=1 then 
		servo servoH, hdrop
		servo servoV, vdrop
		goto start
	end if
	goto wag01:

wag1:

	b4 = 170
	b5 = 90
	b6 = 8
	gosub swing
	if b3=1 then goto start
	
goto wag1:

'-----------------------------------------	
wag2:
	b4 = 170
	b5 = 90
	b6 = 6
	gosub swing
	if b3=1 then goto start
goto wag2:
	
'-----------------------------------------	
wag3:
'  sertxd("Wag3",13,10)
	pause 250
	servopos servoV, vhappy
	servopos servoH, hdrop
	if b3=1 then goto start
	
	goto wag3
'-----------------------------------------	
wag4:
 'sertxd("Wag4",13,10)
	pause 250
	servopos servoV, vsad
	servopos servoH, hdrop
	if b3=1 then goto start

	goto wag4
'-----------------------------------------	
wag5:
	servopos servoH,hdrop
	servopos servoV,vdrop
	pause 1000
	readadc10 2,w4
	pause 500
	servo servoV, vhappy

wag51:
	pause 100
	readadc10 2,w5
	if b3=1 then goto start

	b0 = 0
	w3 = w4 - w5
	If w3 > 10000 then
		w3 = w5 - w4
		b0 = 1 ' negative flag
	end if
	
	If w3 < 5 then	goto wag51
		
	If w3 > 50 then 
		w3 = 50
	end if
	If b0 = 1 then 
		w5 = 150 - w3
	else
		w5 = 150 + w3
	end if
	
'	sertxd(#w5,13,10)
	servo servoH,w5
	
	goto wag51


	



'-----------------------------------------	

	
swing:
	servopos servoV,vhappy
	swing1:
	pause b6
	for b1 = b5 to b4 step 1
		servopos servoH,b1
		if b3=1 then
		 	return
		end if
		pause b6
	next
	pause b6
	for b1 = b4 to b5 step -1
		servopos servoH,b1
		if b3=1 then 
			return
		end if
		pause b6
	next
	goto swing1    
	

'-----------------------------------------	
	
	interrupt:
    serin listen,t2400, b5,b6
    setint %00001000, %00001000
    If b5 = 1 then
		 b3 = 1
 	 end if
  	 return
 
Top