Iv'e thought a bit more about the saving of waypoints during a flight.
The ArduPilot already has the GPS data so the other processor only has to tell it to save the current position as a waypoint. One digital input can be the save waypoint command.
The other processor can keep track of the waypoint numbers and then later tell the ArduPilot which waypoint to go to. This could be via a few custom codes, either serially through a single pin or else by waypoint numbers via 3 or 4 inputs giving 8 or 16 possible values.
Chris, thanks for your wonderful system.
Is it possible for another processor to pass a waypoint to the ArduPilot via spare I/O pins?
An example is a glider that has found a thermal and can enter the location into ArduPilot.
It can later return to that point or even attempt to fly from thermal to thermal represented as a series of waypoints.
I guess I can edit the ArduPilot code to accept a stream of serial data on a spare I/O pin.
The unknown is whether the data can be stored in the ArduPilot waypoint database.
In ArduPilot2.0.1 the tab is "Waypoints" and the waypoints you enter there are relative (distance and direction from previous waypoint). In ArduPilot 2.1 they can only be added through the setup utility.
i wanna make a system(for gps tracking and stbilization). but i don't know well about this. i have not seen the AVR. do u have C++ program open source for building system? and how can i buy board from oversea?
Ah, you're referring to 2.1 and the fly-by wire mode. I haven't tested that, since we don't have any receivers that stop all PWM when they lose signal. (What receiver to do you have? That sounds like an odd behavior). The solution for you is to disable fly-by-wire mode by commenting out the relevent lines. Most other people have receivers with more normal signal-loss behavior so they won't have this problem.
read_Ch1(); //reading the receiver with very short delays
read_Ch2(); //Reading the receiver with very short delays
and in the navigation folder:
/* void stabilization(void)
{
unsigned int t_dt=millis()-PID_timer; //Timer...
if(t_dt > PID_dt)
{
if((abs(read_Ch1())>25) || (abs(read_Ch2())>25))//Fly by wire, check if we move the sticks
{
pulse_servos(PID_roll(roll_trim+(read_Ch1()/16), get_roll(),roll_abs,t_dt),PID_pitch(pitch_error(pitch_trim+(read_Ch2()/16), get_pitch()),t_dt));
}
If I dont remove this sentences on no input pulses, program is frozen.
Regards, Pablo
Comments
The ArduPilot already has the GPS data so the other processor only has to tell it to save the current position as a waypoint. One digital input can be the save waypoint command.
The other processor can keep track of the waypoint numbers and then later tell the ArduPilot which waypoint to go to. This could be via a few custom codes, either serially through a single pin or else by waypoint numbers via 3 or 4 inputs giving 8 or 16 possible values.
Technically that's possible, using software serial on a spare digital pin. It would take a bit of coding, however.
Is it possible for another processor to pass a waypoint to the ArduPilot via spare I/O pins?
An example is a glider that has found a thermal and can enter the location into ArduPilot.
It can later return to that point or even attempt to fly from thermal to thermal represented as a series of waypoints.
I guess I can edit the ArduPilot code to accept a stream of serial data on a spare I/O pin.
The unknown is whether the data can be stored in the ArduPilot waypoint database.
Where do I put the waypoints in Ardupilot 2.0.1? I can`f find the "Mission_setup" tab. Do I copy the one in Ardupilot 2.0?
Ah, you're referring to 2.1 and the fly-by wire mode. I haven't tested that, since we don't have any receivers that stop all PWM when they lose signal. (What receiver to do you have? That sounds like an odd behavior). The solution for you is to disable fly-by-wire mode by commenting out the relevent lines. Most other people have receivers with more normal signal-loss behavior so they won't have this problem.
read_Ch1(); //reading the receiver with very short delays
read_Ch2(); //Reading the receiver with very short delays
and in the navigation folder:
/* void stabilization(void)
{
unsigned int t_dt=millis()-PID_timer; //Timer...
if(t_dt > PID_dt)
{
if((abs(read_Ch1())>25) || (abs(read_Ch2())>25))//Fly by wire, check if we move the sticks
{
pulse_servos(PID_roll(roll_trim+(read_Ch1()/16), get_roll(),roll_abs,t_dt),PID_pitch(pitch_error(pitch_trim+(read_Ch2()/16), get_pitch()),t_dt));
}
If I dont remove this sentences on no input pulses, program is frozen.
Regards, Pablo
Bill, you can't fly a plane on two accelerometers! This comes up a lot with beginners, so we even put a post on the front page to address it.
-
38
-
39
-
40
-
41
-
42
of 62 Next