Paul Cox Notes
Paul Cox Build Log
LISTS
Links
[[1]]1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|
Community_Flight_Log_Archive | ||||
x |
x |
x |
TODO
Num | Name | Notes | Priority | Status |
---|---|---|---|---|
1 | build virtual world scan in hoku2gdhe | x | x | In progress |
2 | Install MTi-G driver on laptop | MTIHardTest -v <params> >> out.txt stores to disk | x | Done |
3 | Get test scans from rooftop | logging apps ready, boom built, let's go! | x | In progress |
4 | Design MIPI/I2C camera board | sketches ready, Pierre doing orcad and ordering | x | In progress |
5 | Design/Build hokuyo/MTIG box/mounting cage | Build at Bertrand's place or ENAC | x | Not started |
6 | Get openembedded running on laptop | over the weekend on personal external drive | x | Do it Slacker! |
x | x | x | x | x |
PERSO TODO
Num | Name | Notes | Priority | Status |
---|---|---|---|---|
1 | Get minimag flying | Reinstalled electronics, justs needs tuneup and ready for flight | Paulcox 10:33, 17 February 2011 (CET) | In progress |
2 | Slowstick flying | Need to mount autopilot/motor, ardupilot working needs flight test | x | In progress |
3 | Flash ardupilot and get ap compiling | methodology posted on ArduIMU page | x | Done |
4 | Test xbeepro868 performance | XCTU loopback at 9600 shows 80-90%, with basic telemetry was seeing huge (10-15 sec) delay (was looking at attitude messages) | x | In progress |
5 | Test loss of IR contrast | works in simulation, need to test in real | x | In progress |
6 | Adjust Beth opamp gains | for increased precision | x | Do it slacker |
7 | Try Web-based GCS | qwip checked in, need to try pow | x | In progress |
8 | Improve altitude control loop | issue with hard boundary between PI and constant regions | x | x |
9 | Some camera stabilization | Read gimbal servo positions via pot tap to ADC | x | x |
10 | Try then document item drop capability | one of the checked in enac flight plans does this | x | not started |
11 | Paparazzi Documentation | Started outlining here | x | Stalled |
12 | try pan/tilt code | x | x | no started |
13 | get log archive ready | x | x | In progress |
BUY BUY BUY
Num | Name | Notes | Price | Status |
---|---|---|---|---|
1 | RC Transmitter (PPM and 2.4GHz) | x | x | x |
2 | Overo Camera | x | x | x |
3 | Lisa board | x | x | x |
4 | I2C motor controllers | need 4 to finish quad | x | x |
5 | New laptop | x | x | Keep dreaming |
6 | XBeePro868 | Need a third one to test point to multi-point | x | x |
7 | RazorIMU | For testing | x | x |
8 | Minimag | x | x | x |
9 | x | x | x | x |
IDEAS
Num | Name | Notes | Priority | Status |
---|---|---|---|---|
1 | x | x | x | x |
2 | x | x | x | x |
3 | x | x | x | x |
Using a joystick to control twog servo
PC-side configuration
On the PC side we will send actuator commands two different ways:
- 1. Running an ocaml application that listens to the joystick device and using a configuration file, will send ivy messages that get forwarded to the vehicle by the server.
- 2. Normal paparazzi settings mechanism (using settings dialog from paparazzi center running on PC) that sets corresponding variables on the vehicle.
Running the joystick test program you can see which buttons do what: (Note you have to run a make in the directory first to compile everything)
~/paparazzi3/trunk/sw/ground_segment/joystick$ ./test_stick Available button: 288 (0x120) Available button: 289 (0x121) Available button: 290 (0x122) Available button: 291 (0x123) Available button: 292 (0x124) Available button: 293 (0x125) Available button: 294 (0x126) Available button: 295 (0x127) Available button: 296 (0x128) Available button: 297 (0x129) Available button: 298 (0x12a) Available button: 299 (0x12b) Available axis: 0 (0x0) Available axis: 1 (0x1) Available axis: 2 (0x2) Available axis: 5 (0x5) Available axis: 16 (0x10) Available axis: 17 (0x11) Available axis: 40 (0x28) Axis 0 : parameters = [0,255] Axis 1 : parameters = [0,255] Axis 2 : parameters = [0,255] Axis 3 : parameters = [0,255] Axis 4 : parameters = [-1,1] Axis 5 : parameters = [-1,1] Axis 6 : parameters = [0,255] Input device name: "GreenAsia Inc. USB Joystick " on device "/dev/input/event6" buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 127 0 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 87 0 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 20 0 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 69 0 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 127 0 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 127 0 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 0 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 0 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 0 0 127 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 0 111 48 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 0 127 -64 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 -127 32 -127 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 -127 -39 -69 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 0 -117 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 0 -127 127 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis -127 40 -35 127 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis -127 49 127 127 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis -127 127 127 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis -53 127 127 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 8 127 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 127 84 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 0 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 0 0 0 0 0 127 0 0 0 buttons 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 0 0 0 0 0 127 0 0 0 buttons 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 0 0 0 0 0 127 0 0 0 buttons 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 | axis -127 -66 0 0 0 0 127 0 0 0 buttons 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 | axis -127 0 0 0 0 0 127 0 0 0 buttons 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 127 0 0 0 0 127 0 0 0 buttons 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 | axis 47 127 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 59 127 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 0 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 0 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis -105 -127 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis -78 -127 0 0 0 0 127 0 0 0 buttons 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 -99 0 0 0 0 127 0 0 0 buttons 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | axis 0 0 0 0 0 0 127 0 0 0
Then creating an xml configuration file such as:
paul@ledelle:~/paparazzi3/trunk/sw/ground_segment/joystick$ medit ngs_set_actuators.xml
and now running the input2ivy ocaml application:
export PAPARAZZI_HOME=/home/paul/paparazzi3/trunk paparazzi3/trunk/sz/ground_segment/joystick/input2ivy -ac TJOVERO ngs_set_actuators.xml
running ivyprobe we can see the message getting transmitted:
paul@ledelle:~/paparazzi3/trunk/sw/ground_segment/joystick$ ivyprobe '(.*)'
shows:
Paparazzi joystick sent 'input2ivy SET_ACTUATOR 1496 2 3'
but we have to make sure the server knows this message needs to be forwarded: in messages.xml the message should be labeled as "forwarded" :
<message name="SET_ACTUATOR" id="100" link="forwarded"> <field name="value" type="uint16"/> <field name="no" type="uint8"/> <field name="ac_id" type="uint8"/> </message>
To send settings use the actuators.xml file:
<settings> <dl_settings NAME="Actuators" > <dl_setting VAR="actuators[1]" MIN="900" STEP="1" MAX="2100" module="actuators" shortname="chan1"/> <dl_setting VAR="actuators[2]" MIN="900" STEP="1" MAX="2100" module="actuators" shortname="chan2"/> <dl_setting VAR="actuators[3]" MIN="900" STEP="1" MAX="2100" module="actuators" shortname="chan3"/> <dl_setting VAR="actuators[4]" MIN="900" STEP="1" MAX="2100" module="actuators" shortname="chan4"/> <dl_setting VAR="actuators[5]" MIN="900" STEP="1" MAX="2100" module="actuators" shortname="chan5"/> <dl_setting VAR="actuators[6]" MIN="900" STEP="1" MAX="2100" module="actuators" shortname="chan6"/> <dl_setting VAR="actuators[7]" MIN="900" STEP="1" MAX="2100" module="actuators" shortname="chan7"/> </dl_settings> </settings>
Vehicle-side configuration
On the vehicle side we are using a twog for hardware so we will use the setup_actuators target found in /conf/autopilot/setup.makefile. This makefile is used by the tiny.makefile which is used because we specify we're using the twog in twinjet_overo.xml
<firmware name="fixedwing"> <target name="ap" board="twog_1">
The setup target is defined as follows in the airframe (twinjet_overo.xml):
<firmware name="setup"> <target name="tunnel" board="twog_1" /> <target name="setup_actuators" board="twog_1" /> </firmware>
If we were adding the joystick to the autopilot code we could instead add the following line to the firmware section:
- <subsystem name="joystick"/>
but that's another project...
Here's the setup.makefile section that worked for me:
setup_actuators.CFLAGS += -DFBW -DLED -DTIME_LED=1 -DACTUATORS=\"servos_4017_hw.h\" -DSERVOS_4017 setup_actuators.CFLAGS += -DUSE_UART1 -DUART1_BAUD=B57600 -DDOWNLINK_DEVICE=Uart1 -DPPRZ_UART=Uart1 setup_actuators.CFLAGS += -DDOWNLINK -DDOWNLINK_TRANSPORT=PprzTransport -DDATALINK=PPRZ setup_actuators.CFLAGS += -DDOWNLINK_FBW_DEVICE=Uart1 -DDOWNLINK_AP_DEVICE=Uart1 setup_actuators.srcs += sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c pprz_transport.c downlink.c actuators.c setup_actuators.c $(SRC_ARCH)/uart_hw.c $(SRC_ARCH)/servos_4017_hw.c main.c