Code samples
From Skybotix
In C++
- CppExampleMonitoring Monitoring
- CppExampleServoing Sensor servoing
- CppExampleJoystick Joystick control
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;
