paparazzi-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Paparazzi-devel] Using Paparazzi board as failsafe


From: Nathan Aherne
Subject: Re: [Paparazzi-devel] Using Paparazzi board as failsafe
Date: Sun, 26 Sep 2010 20:43:44 +1000

Hi Felix,

I have done what you have said, I checked you guide at least 10 times to make 
sure I didn't miss anything. See my airframe file below:

<airframe name="Island Hopper TWOG 1">

  <modules main_freq="60">
    <load name="servo_switch.xml">
      <param name="SERVO_SWITCH_ON_VALUE"  value="1000"/>
      <param name="SERVO_SWITCH_OFF_VALUE" value="2000"/>
      <param name="SERVO_SWITCH_SERVO"     value="SERVO_SWITCH"/>
    </load>
  </modules>

  <servos>
    <servo name="MOTOR"         no="0" min="1000" neutral="1000" max="2000"/>
    <servo name="AILEVON_LEFT"  no="2" min="1130" neutral="1575" max="1880"/>
    <servo name="AILEVON_RIGHT" no="6" min="1980" neutral="1465" max="1170"/>
    <servo name="SWITCH"        no="7" min="1000" neutral="1500" max="2000"/>
  </servos>

This is how I call the function
   <block key="c" name="KILL" strip_button="KILL" strip_icon="kill.png">
      <call fun="ServoSwitchOn()"/>
    </block>





Kindest regards,
 
Nathan Aherne
Email: address@hidden
Mob: 0402 555 080

On 26/09/2010, at 8:04 PM, Felix Ruess wrote:

> Hi Nathan,
> 
> By default the servo_switch module looks for a servo called SWITCH.
> So you have to either define a servo named SWITCH or set a different
> servo like I indicated before.
> e.g. in my airframe file I have:
>  <servos>
>    ....
>    <servo name="SWITCH" no="7" min="1000" neutral="1500" max="2000"/>
>  </servos>
> 
> 
> The switch on value is 2000us and switch off is 1000us by DEFAULT.
> If you want to use a different servo/values you can set that in the
> modules section, e.g. for a servo named KILL:
> <load name="servo_switch.xml">
>     <param name="SERVO_SWITCH_ON_VALUE"  value="1100"/>
>     <param name="SERVO_SWITCH_OFF_VALUE" value="1900"/>
>     <param name="SERVO_SWITCH_SERVO"     value="SERVO_KILL"/>
> </load>
> 
> Of course you only have to set these parameters here If you do not
> want to use the DEFAULT servo (SWITCH) or the default on/off values.
> <load name="servo_switch.xml"/>
> 
> In my airframe I use a switch which expects the on signal to be
> reversed (on is short, off is long) and it was just an example of how
> to override the default switch values.
> 
> Cheers, Felix
> 
> On Sun, Sep 26, 2010 at 7:30 AM, Nathan Aherne <address@hidden> wrote:
>> I have also noticed that servo_switch.h contains this:
>> 
>> #ifndef SERVO_SWITCH_ON_VALUE
>> #define SERVO_SWITCH_ON_VALUE 2000
>> #endif
>> #ifndef SERVO_SWITCH_OFF_VALUE
>> #define SERVO_SWITCH_OFF_VALUE 1000
>> 
>> This seems to be opposite of what I have set in the airframe file, is this 
>> by design?
>> 
>> Kindest regards,
>> 
>> Nathan Aherne
>> Email: address@hidden
>> Mob: 0402 555 080
>> 
>> On 26/09/2010, at 1:30 PM, Nathan Aherne wrote:
>> 
>>> Ok so I have worked out the battery issue (forgot "make" in my haste to get 
>>> it working).
>>> 
>>> I am getting an issue with servo_switch:
>>> 
>>> modules/servo_switch/servo_switch.c: In function ‘servo_switch_periodic’:
>>> modules/servo_switch/servo_switch.c:37: warning: implicit declaration of 
>>> function ‘SetServo’
>>> modules/servo_switch/servo_switch.c:37: error: ‘SERVO_SWITCH’ undeclared
>>> 
>>> I tried calling both functions from the flight plan but both produce the 
>>> issue.
>>> 
>>>>>  <call fun="ServoSwitchOn()"/>
>>>>> or
>>>>>  <call fun="ServoSwitchOff()"/>
>>> 
>>> I copy pasted the implementation you recommended. I cannot see how 
>>> SERVO_SWITCH could be undeclared.
>>> 
>>> Kindest regards,
>>> 
>>> Nathan Aherne
>>> Email: address@hidden
>>> Mob: 0402 555 080
>>> 
>>> On 25/09/2010, at 11:02 PM, Felix Ruess wrote:
>>> 
>>>> you might also want to take a look at the EMAV2009.xml flight plan
>>>> (which includes EMAV2009_safety.xml as a procedure)....
>>>> 
>>>> On Sat, Sep 25, 2010 at 2:57 PM, Felix Ruess <address@hidden> wrote:
>>>>> Hi Nathan,
>>>>> 
>>>>> I just updated the servo_switch module a bit. I can't test it at the
>>>>> moment, but it *should* work as advertised ;-)
>>>>> 
>>>>> Have a look at the mentor_tum.xml airframe... there it is used.
>>>>> 
>>>>> Now you only have to declare a servo in your airframe.xml that you
>>>>> want to use. Previously you had to set up commands, command laws as
>>>>> well.
>>>>> 
>>>>> By default the servo_switch module looks for a servo called SWITCH.
>>>>> The switch on value is 2000us and switch off is 1000us by default.
>>>>> If you want to use a different servo/values you can set that in the
>>>>> modules section, e.g. for a servo named KILL:
>>>>> <load name="servo_switch.xml">
>>>>>     <param name="SERVO_SWITCH_ON_VALUE"  value="1100"/>
>>>>>     <param name="SERVO_SWITCH_OFF_VALUE" value="1900"/>
>>>>>     <param name="SERVO_SWITCH_SERVO"     value="SERVO_KILL"/>
>>>>> </load>
>>>>> 
>>>>> In your flight plan you just call the makro defined in servo_switch.h
>>>>>  <call fun="ServoSwitchOn()"/>
>>>>> or
>>>>>  <call fun="ServoSwitchOff()"/>
>>>>> respectively.
>>>>> 
>>>>> Cheers, Felix
>>>>> 
>>>>> On Sat, Sep 25, 2010 at 8:51 AM, Nathan Aherne <address@hidden> wrote:
>>>>>> Hi All,
>>>>>> 
>>>>>> I have updated my paparazzi code and found the servo switch module, this 
>>>>>> should work fine fore me. What I would like to know is how to use this 
>>>>>> module (how to call servo_switch from within the flight plan) and set 
>>>>>> the servo to either min or max. Also how do I declare which servo output 
>>>>>> to use?
>>>>>> 
>>>>>> Kindest regards,
>>>>>> 
>>>>>> Nathan Aherne
>>>>>> Email: address@hidden
>>>>>> Mob: 0402 555 080
>>>>>> 
>>>>>> On 25/09/2010, at 3:37 PM, Nathan Aherne wrote:
>>>>>> 
>>>>>>> These are the relevant part of my flight plan in regards to the 
>>>>>>> failsafe action. The rest is just some of the competition waypoints.
>>>>>>> 
>>>>>>> You will see I have implemented the Holdingpoint block so that the Kill 
>>>>>>> block is not run. I would like to understand if there is an easier way 
>>>>>>> to implement this crash failsafe than this, and output to a servo 
>>>>>>> 1000ms or 2000ms. Thanks for your help in advance!
>>>>>>> 
>>>>>>>   <sector color="red" name="MissionBoundary">
>>>>>>>     <corner name="MB1"/>
>>>>>>>     <corner name="MB2"/>
>>>>>>>     <corner name="MB3"/>
>>>>>>>     <corner name="MB4"/>
>>>>>>>     <corner name="MB5"/>
>>>>>>>     <corner name="MB6"/>
>>>>>>>     <corner name="MB7"/>
>>>>>>>     <corner name="MB8"/>
>>>>>>>     <corner name="MB9"/>
>>>>>>>     <corner name="MB10"/>
>>>>>>>     <corner name="MB11"/>
>>>>>>>   </sector>
>>>>>>> </sectors>
>>>>>>> <exceptions>
>>>>>>>     <exception cond="! InsideMissionBoundary(estimator_x, estimator_y)" 
>>>>>>> deroute="Kill"/>
>>>>>>> </exceptions>
>>>>>>> <blocks>
>>>>>>> <!-- FLIGHT PLAN -->
>>>>>>>   <block name="Wait GPS">
>>>>>>>     <set value="1" var="kill_throttle"/>
>>>>>>>     <while cond="!GpsFixValid()"/>
>>>>>>>   </block>
>>>>>>>   <block name="Geo init">
>>>>>>>     <while cond="LessThan(NavBlockTime(), 10)"/>
>>>>>>>     <call fun="NavSetGroundReferenceHere()"/>
>>>>>>>     <set value="0" var="estimator_flight_time"/>
>>>>>>>   </block>
>>>>>>>   <block name="Holding point">
>>>>>>>     <call fun="NavSetWaypointHere(WP_STPT)"/>
>>>>>>>     <set value="1" var="kill_throttle"/>
>>>>>>>     <attitude roll="0" throttle="0" vmode="throttle"/>
>>>>>>>   </block>
>>>>>>>   <block key="c" name="KILL" strip_button="KILL" strip_icon="kill.png">
>>>>>>>     <go wp="CRASH" vmode="throttle" pitch="kill_pitch"/>
>>>>>>>   </block>
>>>>>>> 
>>>>>>> Kindest regards,
>>>>>>> 
>>>>>>> Nathan Aherne
>>>>>>> Email: address@hidden
>>>>>>> Mob: 0402 555 080
>>>>>>> 
>>>>>>> On 25/09/2010, at 2:58 PM, Nathan Aherne wrote:
>>>>>>> 
>>>>>>>> We would like to use the Paparazzi as a failsafe in this years outback 
>>>>>>>> challenge, plus use its other features to control and report back 
>>>>>>>> certain tests and conditions. We are using the paparazzi for this 
>>>>>>>> because it supplies so much more data than our commercial autopilot.
>>>>>>>> 
>>>>>>>> The failsafe part just needs to output 2000ms or 1000ms on a servo 
>>>>>>>> output if the aircraft goes over the mission boundary. I have already 
>>>>>>>> built some code, but it seems there must be a simpler way to get the 
>>>>>>>> autpilot to do this, could someone help me out with this one please? 
>>>>>>>> Some sample code would be great and possibily an explanation of what I 
>>>>>>>> need to initialise.
>>>>>>>> 
>>>>>>>> I am only wanting to run the GPS, Xbee and TWOG if possible.
>>>>>>>> 
>>>>>>>> Thanks in advance!
>>>>>>>> 
>>>>>>>> Kindest regards,
>>>>>>>> 
>>>>>>>> Nathan Aherne
>>>>>>>> Email: address@hidden
>>>>>>>> Mob: 0402 555 080
>>>>>>>> 
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> Paparazzi-devel mailing list
>>>>>>>> address@hidden
>>>>>>>> http://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>>>>>> 
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> Paparazzi-devel mailing list
>>>>>>> address@hidden
>>>>>>> http://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>>>>> 
>>>>>> 
>>>>>> _______________________________________________
>>>>>> Paparazzi-devel mailing list
>>>>>> address@hidden
>>>>>> http://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>>>>> 
>>>>> 
>>>> 
>>>> _______________________________________________
>>>> Paparazzi-devel mailing list
>>>> address@hidden
>>>> http://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>> 
>>> 
>>> _______________________________________________
>>> Paparazzi-devel mailing list
>>> address@hidden
>>> http://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>> 
>> 
>> _______________________________________________
>> Paparazzi-devel mailing list
>> address@hidden
>> http://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>> 
> 
> _______________________________________________
> Paparazzi-devel mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/paparazzi-devel




reply via email to

[Prev in Thread] Current Thread [Next in Thread]