Espritmodel.com Telemetry Radio
Reply
Thread Tools
Old Feb 13, 2013, 08:37 PM
Registered User
RCvertt's Avatar
Joined Aug 2007
4,081 Posts
Thanks everyone. Just goes to show that you should never give up on your VTOL model. Even like in my case when you should have stopped about two years ago

Stats are...

Wingspan = 31"

Weight with 2100 15c thunderpower 3 cell = 555 grams
Weight wtih 1800 40to50c Turnigy 3 cell = 580 grams

Motors up front are 1300kv blue wonders spinning CC 8" slow fly props.
Rear motor is (AD-100L Micro Brushless Outrunner 1850Kv) with recommended 6 inch GWS prop.

CG is about two inches behind front motors pivot point.


Video showing most of the controls and how the back motor shuts off automatically when in forward flight...
TricopterControls (1 min 13 sec)
RCvertt is offline Find More Posts by RCvertt
RCG Plus Member
Last edited by RCvertt; Feb 13, 2013 at 10:41 PM.
Reply With Quote
Sign up now
to remove ads between posts
Old Feb 14, 2013, 11:58 AM
Will fly for food
ilektron's Avatar
United States, CA, Carlsbad
Joined May 2011
532 Posts
Looks great
ilektron is offline Find More Posts by ilektron
Reply With Quote
Old Mar 02, 2013, 09:56 PM
Design, Build, and Fly
KatanaGuy's Avatar
Pleasant Grove, Utah
Joined Nov 2001
372 Posts
20th Flight, 1st one with FPV telemetry running while in 50/50 mix. Will get full forward flight footage later.

20130302-140417 (2 min 56 sec)


-Steve
KatanaGuy is offline Find More Posts by KatanaGuy
Last edited by KatanaGuy; Mar 02, 2013 at 10:06 PM.
Reply With Quote
Old Mar 17, 2013, 01:47 AM
Design, Build, and Fly
KatanaGuy's Avatar
Pleasant Grove, Utah
Joined Nov 2001
372 Posts
The promised forward-flight video:
Introduction to the Orange Hawk Project (0 min 0 sec)
KatanaGuy is offline Find More Posts by KatanaGuy
Last edited by KatanaGuy; Mar 17, 2013 at 02:25 AM.
Reply With Quote
Old Mar 17, 2013, 03:14 AM
Registered User
RCvertt's Avatar
Joined Aug 2007
4,081 Posts
Looks awesome! Great job.
RCvertt is offline Find More Posts by RCvertt
RCG Plus Member
Latest blog entry: Chupacabra sighting !!!
Reply With Quote
Old Mar 17, 2013, 11:19 PM
skumgummi dave
Gresham, OR.
Joined Mar 2004
1,791 Posts
Yes, very good job!

Dave-
foamdave is offline Find More Posts by foamdave
Reply With Quote
Old Mar 18, 2013, 06:02 AM
Winging it >
leadfeather's Avatar
Joined May 2006
9,417 Posts
Excellent!
leadfeather is offline Find More Posts by leadfeather
Reply With Quote
Old Mar 18, 2013, 12:35 PM
Registered User
Ran D. St. Clair's Avatar
United States, CA, Sunnyvale
Joined Dec 2006
751 Posts
Fantastic job!

Fantastic job!

Now tell us all your secrets so we can do it with 1/10th the work
Ran D. St. Clair is offline Find More Posts by Ran D. St. Clair
Reply With Quote
Old Mar 19, 2013, 01:20 PM
Design, Build, and Fly
KatanaGuy's Avatar
Pleasant Grove, Utah
Joined Nov 2001
372 Posts
I've posted a few pieces of information on the project at DIY Drones here: http://diydrones.com/profiles/blogs/...-wing-vtol-uav

The text editor at DIYD doesn't take code nicely, as this forum does, so I'll post a preview of the code here, an exclusive sneak peek:


In the MultiWii.ino source file:
Code:
#if defined(TRICOPTER_HYBRID_TYPE_A) || defined(TRICOPTER_HYBRID_TYPE_B)
		if(rcOptions[BOXHYBD_FF] == 1 && rcOptions[BOXHYBD_INT] == 0){ // Forward Flight
			hybridTiltFactor = (hybridTiltFactor>HYBRID_TILT_INCVAL)? hybridTiltFactor-HYBRID_TILT_INCVAL: 0;
			#if defined(TRI_HYBRID_FOLD_MECH)
				foldMechSetpoint = (hybridTiltFactor==0)? HYBRID_FOLD_FWDFLT: HYBRID_FOLD_HOVER;
			#endif
		} else if(rcOptions[BOXHYBD_FF] == 0 && rcOptions[BOXHYBD_INT] == 0){ // Hover Mode
			hybridTiltFactor = ((hybridTiltFactor+HYBRID_TILT_INCVAL)<HYBRID_TF_MAX)? hybridTiltFactor+HYBRID_TILT_INCVAL : HYBRID_TF_MAX;
			#if defined(TRI_HYBRID_FOLD_MECH)
				foldMechSetpoint = HYBRID_FOLD_HOVER;
			#endif
		} else if(rcOptions[BOXHYBD_FF] == 0 && rcOptions[BOXHYBD_INT] == 1){ // 50/50 Mix, or middle spot between F/F and Hover
			hybridTiltFactor = ((hybridTiltFactor+HYBRID_TILT_INCVAL)<(HYBRID_TF_MAX/2))? hybridTiltFactor+HYBRID_TILT_INCVAL : 
							   ((hybridTiltFactor-HYBRID_TILT_INCVAL)>(HYBRID_TF_MAX/2))? hybridTiltFactor-HYBRID_TILT_INCVAL : (HYBRID_TF_MAX/2);
			#if defined(TRI_HYBRID_FOLD_MECH)
				foldMechSetpoint = HYBRID_FOLD_HOVER
			#endif
		} else{ // R/C Knob Channel Mix, direct assignment, no incrementers. For debugging/manual flying. For the manual-transmission type of crowd.
			hybridTiltFactor = (rcData[AUX1]> 1960)? 0 : ((rcData[AUX1]-1100)<0)? 120: (120-((rcData[AUX1]-1100)>>3)); // (rcData[AUX1]-1000)>>3; // and 120
			#if defined(TRI_HYBRID_FOLD_MECH)
				foldMechSetpoint = (hybridTiltFactor==0)? HYBRID_FOLD_FWDFLT: HYBRID_FOLD_HOVER;
			#endif
		}

In the Output.ino File:
Code:
#elif defined(TRICOPTER_HYBRID_TYPE_B)
		motor[0] = PIDMIX( 0,+3/2, 0);		//REAR //+4/3
		motor[1] = -axisPID[ROLL] - axisPID[PITCH]/2;		//RIGHT PIDMIX(-1,-2/3, 0); //axisPID[PITCH]*2/3;	
		motor[2] =  axisPID[ROLL] - axisPID[PITCH]/2;		//LEFT  PIDMIX(+1,-2/3, 0);
		
		// servo[2] = YAW_DIRECTION * axisPID[YAW] + MIDRC + conf.hybrid_cassette_offset; //LEFT 
		// servo[5] = YAW_DIRECTION * axisPID[YAW] + MIDRC - conf.hybrid_cassette_offset; //RIGHT 
		// servo[2] -= ((HYBRID_TILT_HOVER-1000)*(hybridTiltFactor>>2))/(HYBRID_TF_MAX>>2) + 
							// ((HYBRID_TILT_FWDFLT-1000)*((HYBRID_TF_MAX-hybridTiltFactor)>>2))/(HYBRID_TF_MAX>>2);
		// servo[5] += ((HYBRID_TILT_HOVER-1000)*(hybridTiltFactor>>2))/(HYBRID_TF_MAX>>2) + 
							// ((HYBRID_TILT_FWDFLT-1000)*((HYBRID_TF_MAX-hybridTiltFactor)>>2))/(HYBRID_TF_MAX>>2);
		
		servo[2] = ((YAW_DIRECTION*axisPID[YAW]*(hybridTiltFactor>>2))/(HYBRID_TF_MAX>>2)) + ((HYBRID_TILT_LIMIT_B-HYBRID_TILT_LIMIT_A)*(hybridTiltFactor>>2)/(HYBRID_TF_MAX>>2) + HYBRID_TILT_LIMIT_A) - (conf.hybrid_cassette_offset);
		servo[5] = ((YAW_DIRECTION*axisPID[YAW]*(hybridTiltFactor>>2))/(HYBRID_TF_MAX>>2)) + ((HYBRID_TILT_LIMIT_A-HYBRID_TILT_LIMIT_B)*(hybridTiltFactor>>2)/(HYBRID_TF_MAX>>2) + HYBRID_TILT_LIMIT_B) + (conf.hybrid_cassette_offset);
		
		// 120 is 90 deg up, 0 is 0 deg (forward). Or, 120>>2 = 30, 30 is 90 deg. 120 *3/4.
		// Actuator		Left & Right Motors			Rear Motor		Left & Right Servos
		// Pitch		*= sin(t)					*= sin(t)		
		// Roll			*= sin(t)									+= rollPID * cos(t) * 10% ( leave off for now )
		// Yaw			+= yawPID*(120-t)*12% ( need cos(t)? )	    *= t/120  ( may want *= sin(t) )
		
		//		sin approx		cos approx		[0:90 deg] -> [0:120 ticks]
		//	1.0	      __		__
		//	.8	    /...		...\
		//	.6	   /....		....\
		//	.4	  /.....		.....\
		//	.2	 /......		......\
		//	0	/.......120		.......\
		//		0     90		0 30    120
		
		if(hybridTiltFactor<HYBRID_TF_MAX){ // 120 -> 30
			if(hybridTiltFactor == 0){
				motor[0] = MINTHROTTLE;
				motor[1] = (YAW_DIRECTION*axisPID[YAW])>>2;
				motor[2] = (-YAW_DIRECTION*axisPID[YAW])>>2;
			} else {
				for(uint8_t i=0; i<3; i++) motor[i] = (motor[i]>2000)? 2000: motor[i];
				
				motor[0] = (hybridTiltFactor>(HYBRID_TF_MAX*5/8))? motor[0]:((motor[0]-MINTHROTTLE)*(hybridTiltFactor>>2)/(HYBRID_TF_MAX>>2))*8/5+MINTHROTTLE;
				
				motor[1] = (hybridTiltFactor>(HYBRID_TF_MAX*3/4))? motor[1]:((motor[1])*(hybridTiltFactor>>2)/(HYBRID_TF_MAX>>2))*4/3;
				motor[2] = (hybridTiltFactor>(HYBRID_TF_MAX*3/4))? motor[2]:((motor[2])*(hybridTiltFactor>>2)/(HYBRID_TF_MAX>>2))*4/3;
				
				motor[1] += ((YAW_DIRECTION*axisPID[YAW]*((HYBRID_TF_MAX>>2)-(hybridTiltFactor>>2)))/(HYBRID_TF_MAX>>2))>>2;
				motor[2] += ((-YAW_DIRECTION*axisPID[YAW]*((HYBRID_TF_MAX>>2)-(hybridTiltFactor>>2)))/(HYBRID_TF_MAX>>2))>>2;
				
				//servo[2] += ((YAW_DIRECTION*axisPID[YAW]*(hybridTiltFactor>>2))/(HYBRID_TF_MAX>>2)) + The start of trying to isolate servo loop as motors are above.
			}
		}
		
		// motor[0] += rcCommand[THROTTLE];
		motor[1] += rcCommand[THROTTLE];
		motor[2] += rcCommand[THROTTLE];
		
		debug[0] = rcCommand[PITCH]; // servo[2]; //conf.hybrid_cassette_offset;
		debug[1] = axisPID[PITCH];  // servo[5]; //MIDRC;
		
		servo[2] = constrain( servo[2], 1005, 2000); // LEFT
		servo[5] = constrain( servo[5], 1005, 2000); // RIGHT
	#endif

Repeated from the DIYDrones post, attached here is a snapshot of the GUI:
KatanaGuy is offline Find More Posts by KatanaGuy
Reply With Quote
Old Mar 19, 2013, 07:53 PM
Design, Build, and Fly
KatanaGuy's Avatar
Pleasant Grove, Utah
Joined Nov 2001
372 Posts
Here is the source code for the project:
http://www.rcgroups.com/forums/showthread.php?t=1855292
KatanaGuy is offline Find More Posts by KatanaGuy
Reply With Quote
Old Mar 19, 2013, 11:21 PM
Design, Build, and Fly
KatanaGuy's Avatar
Pleasant Grove, Utah
Joined Nov 2001
372 Posts
Thanks all for the kind remarks. You guys are the prime motivators for me, I hope I've added something to the group, being the lone wolf I've been.

Quote:
Originally Posted by EddieWeeks View Post
I have been flying in the yard for a few days now... The plane is fine.. The pilot needs some work..

Going to transition next..

http://www.youtube.com/watch?v=mUU3IF6cu8k

Eddie,

Did transitioning ever work out?

-Steve
KatanaGuy is offline Find More Posts by KatanaGuy
Reply With Quote
Old Mar 19, 2013, 11:33 PM
Registered User
RCvertt's Avatar
Joined Aug 2007
4,081 Posts
Quote:
Originally Posted by KatanaGuy View Post
Here is the source code for the project:
http://www.rcgroups.com/forums/showthread.php?t=1855292
Very nice code drop. Looks like you did a lot of work here.

Does your code stretch the servo signal to let them move past a 90 degree range?
RCvertt is offline Find More Posts by RCvertt
RCG Plus Member
Latest blog entry: Chupacabra sighting !!!
Reply With Quote
Old Mar 20, 2013, 01:14 AM
Design, Build, and Fly
KatanaGuy's Avatar
Pleasant Grove, Utah
Joined Nov 2001
372 Posts
Quote:
Originally Posted by RCvertt View Post
Very nice code drop. Looks like you did a lot of work here.

Does your code stretch the servo signal to let them move past a 90 degree range?
No, it doesn't. I initially started in that direction, and was hacking MultiWii beyond recognition. I abandoned that attempt in favor of staying as conservative as possible with the base code, since timers and such had to be modified to get the servo outputs below 1000 us. Going above 2000 is doable, I think 2100ish is where the variable overflows.
KatanaGuy is offline Find More Posts by KatanaGuy
Reply With Quote
Old Mar 20, 2013, 04:21 AM
Registered User
RCvertt's Avatar
Joined Aug 2007
4,081 Posts
That's cool. Your bird is functioning quite well without it.

The new ISR method they use in (2.1) code appears to be very custom and not the most friendly to work with. Not a good sign when the person that implemented it told me that it would be difficult to stretch and that he doesn't have time to do it.

Do you think it's possible to not stretch the servo signal but rather shift the 90 degree range up and down so we don't loose any resolution?
RCvertt is offline Find More Posts by RCvertt
RCG Plus Member
Last edited by RCvertt; Mar 20, 2013 at 04:44 AM.
Reply With Quote
Old Mar 20, 2013, 11:24 AM
Registered User
Joined Oct 2004
2,733 Posts
Ultimately there is only a certain amount of resolution a servo can be capable of. You could use a single larger and slower servo for tilt and a couple of smaller and quicker ones for control, though. However the problem with using the whole servo range for control is that there is a limit to the speed a servo can travel its full range, so there will always be some compromise made between response time and resolution
Brandano is online now Find More Posts by Brandano
Reply With Quote
Reply


Thread Tools

Similar Threads
Category Thread Thread Starter Forum Replies Last Post
Discussion QTD- Quad Tilt Duino (Arduino- Tilt Rotor) RCvertt VTOLs 100 Jun 28, 2012 12:15 AM
Question Tricopter: What rear tilt angle? bb42 Multirotor Talk 3 Oct 15, 2010 09:40 AM
New Product The new Panther tilt rotor UAV from Israel Aerospace Industries Hunter850 Multirotor Talk 2 Oct 06, 2010 08:06 AM
For Sale Rc lander panther complete setup with metal edf/motor/esc/servos/retracts/battery TurboFanElectric Aircraft - Electric - Jets (FS/W) 3 Mar 25, 2010 08:29 AM
Sold RClander Panther 70mm Fan and motor cjdscratch Aircraft - Electric - Power Systems (FS/W) 7 Mar 13, 2010 10:31 PM