Code samples

From Skybotix

Jump to: navigation, search

In C++

In Python

 #!/usr/bin/python2.5
 
 import sys
 from math import *
 from sbsimple import *
 
 print "Created conn object"
 conn = sbSimpleAlloc('localhost',5123);
 print "Starting initialisation"
 
 if sbSimpleInitialise(conn) != 0:
 	print "Error in initialisation"
 	sbSimpleFree(conn)
 	sys.exit(-1)
 	
 
 print "Reaching Ctrlled state"
 # request and wait controlled mode
 sbSimpleReachNavState(conn, SB_NAV_CTRLLED, 30.0);
 print 'Heli is controlled'
 
 sbSimpleWaitState(conn,None,1.0);
 
 print 'Checking take-off (%f)' % conn.state.zrange
 while conn.state.zrange < 0.4:
 	sbSimpleControl(conn,0,0,0, 0.5);
 	sbSimpleWaitState(conn,None,1.0);
 
 print 'Rotation'
 for i in range(1,100):
 	sbSimpleControl(conn,0,0,sin(2*pi*i/100)*2.0, 0.5);
 	sbSimpleWaitState(conn,None,1.0);
 	print "%+3f" % (conn.state.yaw * 180/pi)
 
 print 'Pitch'
 for i in range(1,100):
 	sbSimpleControl(conn,0,sin(2*pi*i/100)*0.01, 0, 0.5);
 	sbSimpleWaitState(conn,None,1.0);
 
 print 'Roll'
 for i in range(1,100):
 	sbSimpleControl(conn,sin(2*pi*i/100)*0.01, 0, 0, 0.5);
 	sbSimpleWaitState(conn,None,1.0);
 
 sbSimpleReachNavState(conn, SB_NAV_STOP, 30.0);
 
 print 'Cleanup'
 sbSimpleTerminate(conn);
 sbSimpleFree(conn)
 


In Matlab

 addpath '.'
 
 global conn
 
 conn = SBConnection('localhost',5123);
 
 sbLoadConstants
 
 sl = GetSensorList(conn)
 
 ConfigureTimeout(conn,SB_TIMEOUT_NONE, SB_TIMEOUT_NONE); % no timeout
 %ConfigureTimeout(conn,1000, 3000); % 1s timeout on control, 3s timeout on commands
 %ConfigureOAMode(conn,SB_OA_NONE); % no obst. avoid
 %ConfigureControl(conn, SB_CTRL_NONE, SB_CTRL_NONE, ...
 %	SB_CTRL_POS, SB_CTRL_POS, SB_CTRL_VEL ); % roll = pitch = none, yaw = alt = pose, horiz = vel
 %
 %ConfigureComm(conn, SB_COM_ONREQUEST); % state on request
 SetNavMode(conn, SB_NAV_CTRLLED, 30.0); % request and wait controlled mode
 disp 'Heli is controlled'
 
 S = ReadState(conn,1);
 
 disp 'Checking take-off'
 while S.zrange < 0.4
 	SetControl(conn,0,0,0, 0.5);
 	S = ReadState(conn,1);
 end
 
 disp 'Rotation'
 for i=1:100
 	SetControl(conn,0,0,sin(2*pi*i/100)*2.0, 0.5);
 	S = ReadState(conn,1);
 end
 
 disp 'Pitch'
 for i=1:100
 	SetControl(conn,0,sin(2*pi*i/100)*0.05,0.0, 0.5);
 	S = ReadState(conn,1);
 end
 
 disp 'Roll'
 for i=1:100
 	SetControl(conn,sin(2*pi*i/100)*0.05,0,0.0, 0.5);
 	S = ReadState(conn,1);
 end
 
 
 SetNavMode(conn, SB_NAV_STOP, 30.0); % request and wait controlled mode
 
 % cleanup, not really necessary
 disp 'Cleanup'
 Disconnect(conn);
 clear conn;
Personal tools