Paul Cox Notes

From PaparazziUAV
Jump to navigation Jump to search

LISTS

Links

[[1]]
Paul's Links
1 2 3 4 5
Community_Flight_Log_Archive

Paul_Cox_Activity_Log

User:PaulCox

Lisa_Logitech_Camera

Rt3070usb

ArduIMU

Laserhawk

x

x

x

TODO

SPRING 2011 TODO LIST
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 one night scan acquired. need day scans and higher scans (and faster) 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 laptop too slow x Waiting for new PC
x x x x x

PERSO TODO

PERSONAL TODO LIST
Num Name Notes Priority Status
1 Get minimag flying tuneup done, need some glue then ready for maiden Paulcox 10:33, 17 February 2011 (CET) In progress
2 Slowstick flying First arduimu flights done, issues due to auto2 probably due to flight plan altitues, need to study logs x In progress
3 Flash ardupimu 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), short flights at 57600 ok so far 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
14 redo joystick control setup look at chris' stuff he send x Not started
15 potentially merge tiny/overo i2c com code from tobias x x In progress

BUY BUY BUY

WISH LIST
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

IDEA LIST
Num Name Notes Priority Status
1 x x x x
2 x x x x
3 x x x x

Random Notes

ubuntu packages

Utilities

sudo apt-get install medit gtk-term git-core ssh

paparazzi

sudo apt-get install paparazzi-dev paparazzi-stm32 paparazzi-arm7 paparazzi-omap

perl modules

sudo apt-get install 

CGI webserver

sudo apt-get install boa 

openrobots

sudo apt-get install libbz2-dev pax cmake automake autoconf

Create file ~/.ssh/config

Host *.laas.fr
User pdcox

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