Browse Source

autotest: setup Rover autotest for Sparkfun course

this will make it easier to test around the course
mission-4.1.18
Andrew Tridgell 12 years ago
parent
commit
4c9cb461d6
  1. 10
      Tools/autotest/Rover.parm
  2. 16
      Tools/autotest/apmrover2.py
  3. 7
      Tools/autotest/pysim/aircraft.py
  4. 4
      Tools/autotest/pysim/rover.py
  5. 2
      Tools/autotest/pysim/sim_rover.py
  6. 19
      Tools/autotest/rover1.txt
  7. 2
      Tools/autotest/sim_rover.sh

10
Tools/autotest/Rover.parm

@ -1,10 +1,13 @@
WP_RADIUS 3
LOG_BITMASK 4095 LOG_BITMASK 4095
MAG_ENABLE 1 MAG_ENABLE 1
CRUISE_SPEED 7 CRUISE_SPEED 5
CRUISE_THROTTLE 80 CRUISE_THROTTLE 40
THR_MAX 100 THR_MAX 100
RC3_MAX 2000 RC3_MAX 2000
RC3_MIN 1000 RC3_MIN 1000
RC1_MAX 2000
RC2_MIN 1000
RC3_TRIM 1500 RC3_TRIM 1500
MODE1 0 MODE1 0
MODE2 0 MODE2 0
@ -12,4 +15,5 @@ MODE3 11
MODE4 10 MODE4 10
MODE5 2 MODE5 2
MODE6 0 MODE6 0
STEER2SRV_P 0.6 STEER2SRV_P 1.5
HDNG2STEER_P 1.0

16
Tools/autotest/apmrover2.py

@ -8,8 +8,8 @@ import mavutil, random
testdir=os.path.dirname(os.path.realpath(__file__)) testdir=os.path.dirname(os.path.realpath(__file__))
HOME=mavutil.location(-35.362938,149.165085,584,270) #HOME=mavutil.location(-35.362938,149.165085,584,270)
HOME=mavutil.location(40.071374969556928,-105.22978898137808,1583.702759,246)
homeloc = None homeloc = None
def drive_left_circuit(mavproxy, mav): def drive_left_circuit(mavproxy, mav):
@ -144,15 +144,15 @@ def drive_APMrover2(viewerip=None, map=False):
mav.wait_gps_fix() mav.wait_gps_fix()
homeloc = mav.location() homeloc = mav.location()
print("Home location: %s" % homeloc) print("Home location: %s" % homeloc)
if not drive_left_circuit(mavproxy, mav):
print("Failed left circuit")
failed = True
if not drive_mission(mavproxy, mav, os.path.join(testdir, "rover1.txt")): if not drive_mission(mavproxy, mav, os.path.join(testdir, "rover1.txt")):
print("Failed mission") print("Failed mission")
failed = True failed = True
if not drive_RTL(mavproxy, mav): # if not drive_left_circuit(mavproxy, mav):
print("Failed RTL") # print("Failed left circuit")
failed = True # failed = True
# if not drive_RTL(mavproxy, mav):
# print("Failed RTL")
# failed = True
except pexpect.TIMEOUT, e: except pexpect.TIMEOUT, e:
print("Failed with timeout") print("Failed with timeout")
failed = True failed = True

7
Tools/autotest/pysim/aircraft.py

@ -48,3 +48,10 @@ class Aircraft(object):
velocity_body = self.dcm.transposed() * self.velocity velocity_body = self.dcm.transposed() * self.velocity
self.accelerometer = self.accel_body.copy() self.accelerometer = self.accel_body.copy()
def set_yaw_degrees(self, yaw_degrees):
'''rotate to the given yaw'''
(roll, pitch, yaw) = self.dcm.to_euler()
yaw = math.radians(yaw_degrees)
self.dcm.from_euler(roll, pitch, yaw)

4
Tools/autotest/pysim/rover.py

@ -11,9 +11,9 @@ from rotmat import Vector3, Matrix3
class Rover(Aircraft): class Rover(Aircraft):
'''a simple rover''' '''a simple rover'''
def __init__(self, def __init__(self,
max_speed=10, max_speed=13,
max_accel=10, max_accel=10,
max_turn_rate=45, max_turn_rate=100,
skid_steering=False): skid_steering=False):
Aircraft.__init__(self) Aircraft.__init__(self)
self.max_speed = max_speed self.max_speed = max_speed

2
Tools/autotest/pysim/sim_rover.py

@ -120,6 +120,8 @@ a.yaw = float(v[3])
a.latitude = a.home_latitude a.latitude = a.home_latitude
a.longitude = a.home_longitude a.longitude = a.home_longitude
a.set_yaw_degrees(a.yaw)
print("Starting at lat=%f lon=%f alt=%f heading=%.1f" % ( print("Starting at lat=%f lon=%f alt=%f heading=%.1f" % (
a.home_latitude, a.home_latitude,
a.home_longitude, a.home_longitude,

19
Tools/autotest/rover1.txt

@ -1,6 +1,15 @@
QGC WPL 110 QGC WPL 110
0 1 0 16 0.000000 0.000000 0.000000 0.000000 -35.362938 149.165085 584.000000 1 0 1 0 16 0 0 0 0 40.071375 -105.229789 1584.000000 1
1 0 3 16 0.000000 0.000000 0.000000 0.000000 -35.362049 149.164810 97.790001 1 1 0 3 16 0.000000 0.000000 0.000000 0.000000 40.071300 -105.230028 0.000000 1
2 0 3 16 0.000000 0.000000 0.000000 0.000000 -35.363449 149.164978 97.809998 1 2 0 3 16 0.000000 0.000000 0.000000 0.000000 40.071186 -105.230063 0.000000 1
3 0 3 16 0.000000 0.000000 0.000000 0.000000 -35.363430 149.165359 98.580002 1 3 0 3 16 0.000000 0.000000 0.000000 0.000000 40.070974 -105.229969 0.000000 1
4 0 3 16 0.000000 0.000000 0.000000 0.000000 -35.361992 149.165176 98.720001 1 4 0 3 16 0.000000 0.000000 0.000000 0.000000 40.070935 -105.229915 0.000000 1
5 0 3 16 0.000000 0.000000 0.000000 0.000000 40.070869 -105.229937 0.000000 1
6 0 3 16 0.000000 0.000000 0.000000 0.000000 40.070845 -105.229848 0.000000 1
7 0 3 16 0.000000 0.000000 0.000000 0.000000 40.070713 -105.229701 0.000000 1
8 0 3 16 0.000000 0.000000 0.000000 0.000000 40.070738 -105.229535 0.000000 1
9 0 3 16 0.000000 0.000000 0.000000 0.000000 40.070806 -105.229277 0.000000 1
10 0 3 16 0.000000 0.000000 0.000000 0.000000 40.070910 -105.229081 0.000000 1
11 0 3 16 0.000000 0.000000 0.000000 0.000000 40.071251 -105.229363 0.000000 1
12 0 3 16 0.000000 0.000000 0.000000 0.000000 40.071403 -105.229486 0.000000 1
13 0 3 16 0.000000 0.000000 0.000000 0.000000 40.071371 -105.229829 0.000000 1

2
Tools/autotest/sim_rover.sh

@ -19,7 +19,7 @@ gnome-terminal -e "nice /tmp/APMrover2.build/APMrover2.elf"
#gnome-terminal -e "valgrind --db-attach=yes -q /tmp/APMrover2.build/APMrover2.elf" #gnome-terminal -e "valgrind --db-attach=yes -q /tmp/APMrover2.build/APMrover2.elf"
sleep 2 sleep 2
rm -f $tfile rm -f $tfile
gnome-terminal -e "nice ../Tools/autotest/pysim/sim_rover.py --home=-35.362938,149.165085,584,270 --rate=400" gnome-terminal -e "nice ../Tools/autotest/pysim/sim_rover.py --home=40.071374969556928,-105.22978898137808,1583.702759,246 --rate=400"
sleep 2 sleep 2
popd popd
mavproxy.py --aircraft=test --master tcp:127.0.0.1:5760 --sitl 127.0.0.1:5501 --out 127.0.0.1:14550 --out 127.0.0.1:14551 $* mavproxy.py --aircraft=test --master tcp:127.0.0.1:5760 --sitl 127.0.0.1:5501 --out 127.0.0.1:14550 --out 127.0.0.1:14551 $*

Loading…
Cancel
Save