This article is take from DiyDrones Post , original article Posted by Michal B on February 1, 2009 at 2:00pm
Here is another ArduPilot simulation inspired by Jordi's
simulation.
My simulation requires minimum additional hardware, all you need is
ArduPilot connected by FTDI cable to PC.
Actual simulation runs in X-plane simulator. ArduPilot get simulated GPS
data over serial, and it returns back proposed servo positions back
over serial as part of telemetry info (servos can also move physically).
ArduPilot also reports bunch of variables - lat/lot/alt, next waypoint,
distance to it, etc.
What you need to repeat the simulation:
- Modified ArduPilot code from this
blog post
- X-plane 9 demo
(buy full version if you wish, but demo works just perfect, it only
ignores joystick input after 10 minutes, but we control it other way so
it really doesn't limit us)
- Google Earth
- ArduSimulator ArduSim_20090211.zip
(developed by me), which is simple application that does following:
1) Connects to ArduPilot over serial for sending/receiving data
2) Connects to X-plane on localhost (same PC)
3) Reads data from X-plane (lat/lon/alt/course), sending these to
ArduPilot as GPS sentences
4) Simulating FMA copilot stabilization on ailerons/elevator
5) Reads and displays telemetry and servo positions from ArduPilot
6) Sends servo positions to X-plane to control throttle and rudder
7) Records fly path and sends it to Google Earth to display
Here's how to repeat the simulation:
- Start X-plane, go to Menu->Settings->Net Connections, select tab
Inet 3 and enable "IP of data receiver", change IP address to 127.0.0.1
and port to 49001. It looks like this: - Select Aircraft from folder Aircraft\Radio Control\GP_PT_60 (yes, we
want to fly RC plane which has ail/elv/rud/thr controll)
- Select airport Innsbruck
- You can open this KML path: Innsbruck.kmz
in Google Earth, which was my testing fly plan configured in ArduPilot;
this will show you the waypoints
- upload compiled ArduPilot code to the board and leave it running; LOCK
LED should keep flashing
- start ArduSim.exe (simulator tool); it will connect to serial port and
X-plane; if it can't connect to serial, specify correct port and
baudrate and press Start button
- click [Google Earth] button in ArduSim to make connection with GE
- hit B in X-plane to release brakes, and try keys A/W/C to choose
various views
Now simulation should be running if everything is connected
successfully, and you should see plane in X-plane to fly and
visualization path & icon in Google Earth to move. Don't control
plane in X-plane! ArduPilot will take-off and fly on its own.
Here's video how it all looks in action:
And complete flight path visualization for Google Earth: Flight.kmz
You can see original waypoints in white, and real fly path in yellow.
And also final circulation over start point when all waypoints were
visited...
Now about problems and future tasks:
- I have strong impression that controlling altitude by throttle with
use of copilot stabilization doesn't work properly, this simulation
showed me that plane didn't want to drop altitude from high point to
lower one... see results in above flight path in GE. I'm not sure how
real plane behaves (didn't went out to real world with this yet), we'll
see.
- For this reason I plan to start playing with complete stabilization in
ArduPilot, and controlling both elevator+throttle to get desired
altitude.
- You can play with dozen of various parameters to control behavior,
most obvious are PID settings for throttle/rudder in ArduPilot, but also
PID values in stabilization (which is here provided by simulator tool,
in real world it is FMA Copilot which you can control by its sensitivity
setting). Then you can change maximal servo rotation for ArduPilot to
work with. All these values make the plane fly smoother, make more
precise turns, etc etc. And the settings seem to depend on actual
aircraft and its physical behavior. So there won't be single settings
working for everyone.
- It's somehow cumbersome to specify different altitude for various
waypoints; while I converted waypoints from KML file out of Google
Earth, I had to specify individual altitudes manually in waypoints.h
file in ArduPilot code.
After all, I'm pretty happy to see the plane flying in simulator and
doing the task! Note that it's ArduPilot doing the navigation work. And
in a real airplane, this simulation allows to reuse the ArduSim
application as a base station, getting telemetry from plane over Xbee
modem and displaying what it does as well as showing path in Google
Earth.
Comments