{"action":"created","issue":{"url":"https://api.github.com/repos/ArduPilot/ardupilot/issues/6438","repository_url":"https://api.github.com/repos/ArduPilot/ardupilot","labels_url":"https://api.github.com/repos/ArduPilot/ardupilot/issues/6438/labels{/name}","comments_url":"https://api.github.com/repos/ArduPilot/ardupilot/issues/6438/comments","events_url":"https://api.github.com/repos/ArduPilot/ardupilot/issues/6438/events","html_url":"https://github.com/ArduPilot/ardupilot/pull/6438","id":236228423,"number":6438,"title":"WIP: Support for Ecotrons UAV Electronic Fuel Injection Systems ","user":{"login":"frizensami","id":5507069,"avatar_url":"https://avatars3.githubusercontent.com/u/5507069?v=3","gravatar_id":"","url":"https://api.github.com/users/frizensami","html_url":"https://github.com/frizensami","followers_url":"https://api.github.com/users/frizensami/followers","following_url":"https://api.github.com/users/frizensami/following{/other_user}","gists_url":"https://api.github.com/users/frizensami/gists{/gist_id}","starred_url":"https://api.github.com/users/frizensami/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frizensami/subscriptions","organizations_url":"https://api.github.com/users/frizensami/orgs","repos_url":"https://api.github.com/users/frizensami/repos","events_url":"https://api.github.com/users/frizensami/events{/privacy}","received_events_url":"https://api.github.com/users/frizensami/received_events","type":"User","site_admin":false},"labels":[{"id":305298438,"url":"https://api.github.com/repos/ArduPilot/ardupilot/labels/BuildSystem","name":"BuildSystem","color":"d4c5f9","default":false},{"id":628379704,"url":"https://api.github.com/repos/ArduPilot/ardupilot/labels/CAN","name":"CAN","color":"42b3f4","default":false},{"id":24269224,"url":"https://api.github.com/repos/ArduPilot/ardupilot/labels/Copter","name":"Copter","color":"02e10c","default":false},{"id":245520098,"url":"https://api.github.com/repos/ArduPilot/ardupilot/labels/DataFlash","name":"DataFlash","color":"bfd4f2","default":false},{"id":425709688,"url":"https://api.github.com/repos/ArduPilot/ardupilot/labels/Driver","name":"Driver","color":"006b75","default":false},{"id":24259150,"url":"https://api.github.com/repos/ArduPilot/ardupilot/labels/Enhancement","name":"Enhancement","color":"84b6eb","default":false},{"id":136051782,"url":"https://api.github.com/repos/ArduPilot/ardupilot/labels/Library","name":"Library","color":"f7c6c7","default":false},{"id":383057714,"url":"https://api.github.com/repos/ArduPilot/ardupilot/labels/MAVLink","name":"MAVLink","color":"FF6600","default":false},{"id":219703373,"url":"https://api.github.com/repos/ArduPilot/ardupilot/labels/WIP","name":"WIP","color":"fef2c0","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":17,"created_at":"2017-06-15T15:25:33Z","updated_at":"2017-07-05T14:15:45Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ArduPilot/ardupilot/pulls/6438","html_url":"https://github.com/ArduPilot/ardupilot/pull/6438","diff_url":"https://github.com/ArduPilot/ardupilot/pull/6438.diff","patch_url":"https://github.com/ArduPilot/ardupilot/pull/6438.patch"},"body":"# Introduction\r\nThis work-in-progress PR is a first attempt to integrate electronic fuel injection systems into Ardupilot. For certain applications, like high/changing flight altitudes, an internal combustion engine with a carburetor is insufficient and electronic fuel injection systems (that usually come with an engine control unit) are fitted. This PR specifically targets the  [**Ecotrons UAV Electronic Fuel Injection System**](http://www.ecotrons.com/products/uav-engine-efi/). This system broadcasts data over UAVCAN and serial as of now. I am able to do this as my team and I are currently integrating this EFI into a DLE170cc 2-stroke internal combustion engine to be fitted onto a large tandem helicopter. \r\n\r\n## Critical Objectives\r\n1. Read data from the Ecotrons UAV EFI over UAVCAN, possibly serial as well.\r\n2. Log all data from the EFI to dataflash.\r\n3. Send all data back over MAVLink.\r\n\r\n## Planned Uses of Data\r\n1. Use RPM data for Ardupilot-internal governor systems (also another GSoC objective of mine)\r\n2. Monitor engine temperature and RTL/prevent takeoff/etc if temperature exceeds safe limits\r\n3. Monitor fuel status for RTL decision making\r\n4. And many more!\r\n\r\n## Architecture\r\nThe library is called `AP_EcotronsEFI` and is structured as per any normal frontend-backend library in Ardupilot. Backends such as `AP_EcotronsEFI_UAVCAN` derive from `AP_EcotronsEFI_Backend` and must update the frontend state when `update()` is called from the front-end at 10Hz.\r\n\r\nA design decision was made after some discussion with @OXINARF that this should be a **vendor-specific library** as it is now, as there were too many details to be figured out for a more specific `AP_EFI/ECU` library for example (engines with different numbers of strokes, non-standard data sets provided from different EFI vendors, etc.).\r\n\r\n## Caveats\r\n1. @pavel-kirienko and I are currently discussing improvements to the UAVCAN message provided by Ecotrons, as there are certain changes that must be made to meet UAVCAN requirements, such as SI unit conformity and the removal of currently-present scaling factors in the `.dsdl` file. Ecotrons also has to change their data type ID, and remove themselves from the `uavcan/` namespace into a vendor-specific namespace. This has been going on for a few weeks, firstly updating Ecotrons' UAVCAN implementation to fit the standard, and now is in this present phase of message definition refinement.\r\n2. A MAVLink update is required to include a new message definition for this PR.\r\n\r\nAs of now, two temporary versions of both files can be used by:\r\n1. Downloading [1120.Status.uavcan](https://drive.google.com/open?id=0B_bbiwjdkLT2OVlhT0M5Z0lST2c) and placing it inside `modules/uavcan/dsdl/uavcan/equipment/ecu/`\r\n2. Downloading [ardupilotmega.xml](https://drive.google.com/open?id=0B_bbiwjdkLT2d0NqVktySktpWGc) and placing it inside `modules/mavlink/message_definitions/v1.0/`\r\n\r\n**The project will not compile successfully without these two additions/replacements.**\r\n\r\n## TODO\r\n\r\n- [ ] MAVLink message definition change + submodule update\r\n- [ ] Finalize Ecotrons EFI UAVCAN Status message\r\n- [ ] Add logging and MAVLink message sending for Rover and Plane\r\n- [ ] Integrate this PR with Rover and Plane\r\n- [ ] Test on fully integrated tandem heli platform (currently bench-tested only)\r\n- [ ] Test with more than one simultaneously connected instance of the Ecotrons EFI\r\n- [X] Base PR on #6167 "},"comment":{"url":"https://api.github.com/repos/ArduPilot/ardupilot/issues/comments/313115972","html_url":"https://github.com/ArduPilot/ardupilot/pull/6438#issuecomment-313115972","issue_url":"https://api.github.com/repos/ArduPilot/ardupilot/issues/6438","id":313115972,"user":{"login":"frizensami","id":5507069,"avatar_url":"https://avatars3.githubusercontent.com/u/5507069?v=3","gravatar_id":"","url":"https://api.github.com/users/frizensami","html_url":"https://github.com/frizensami","followers_url":"https://api.github.com/users/frizensami/followers","following_url":"https://api.github.com/users/frizensami/following{/other_user}","gists_url":"https://api.github.com/users/frizensami/gists{/gist_id}","starred_url":"https://api.github.com/users/frizensami/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frizensami/subscriptions","organizations_url":"https://api.github.com/users/frizensami/orgs","repos_url":"https://api.github.com/users/frizensami/repos","events_url":"https://api.github.com/users/frizensami/events{/privacy}","received_events_url":"https://api.github.com/users/frizensami/received_events","type":"User","site_admin":false},"created_at":"2017-07-05T14:15:45Z","updated_at":"2017-07-05T14:15:45Z","body":"Great stuff, thanks @pavel-kirienko and @EShamaev."}}
{"actor":{"display_login":"frizensami"}}