I've been working on a system for running an APM 2.5 as a sensor and I/O board for a plane with another on-board computer. I couldn't find existing code for this (although perhaps it does exist and I missed it), so I built my own.
This is close to what I'm doing, although I do not use ROS (it would be easy to add though): http://www.diydrones.com/forum/topics/ardupilot-mega-with-ros-onboard?page=2&commentId=705844%3AComment%3A1203701&x=1#705844Comment1203701
The APM communicates with the on-board computer via USB, to which it publishes sensor readings, and reads messages that contain the servo values. It also does mux-ing between autonomous and manual modes based on a radio channel input.
I'm using the MAVLINK protocol to go up and down, so it should be relatively compatible with existing code in that regard. I did have to define a new message or two, but that shouldn't be too bad for anyone else to use.
The system is working pretty well now, and if anyone is interested, I'm happy to provide the code. I wasn't quite sure what to call it, so it's currently named "ArduRead". Some of the code is hacked together, but I'm happy with most of it.
Some approximate stats from the last time I turned it on:
IMU message rate: 160Hz
Barometric altitude rate: 70-80Hz
Pitot tube rate: 70-80Hz
GPS rate: 10Hz (although might be duplicated, depending on your GPS)
Battery read rate: should be 10Hz, putting this in this week
Ph.D. Candidate in Electrical Engineering & Computer Science
Robot Locomotion Group
Computer Science and Artificial Intelligence Laboratory
Massachusetts Institute of Technology
Stata Center, 32-380
32 Vassar St.
Cambridge, MA 02139