Я придумал и реализовал решение которое позволяет стабилизации работать во всем диапазоне хода стика газа без выключения моторов и вместе с тем дает возможность быстрого выключения моторов и включения их обратно стиком газа.
Для этого диапазон стика газа нужно тактильно разделить на 2 зоны:
FlightZone 3-100% хода стика; моторы и стабилизация всегда включены (включен AirMode); стик газа двигается как обычно свободно
MotorstopZone 0-3% хода стика; в этой зоне моторы выключаются; присутствует возможность выполнить арм/дизарм стиком; стик газа подпружинен и стремится вернуться во FlightZone
Что бы перейти из FlightZone в MotorstopZone нужно преодолеть небольшое сопротивление с кликом (например как нажатие кнопки трим или любой другой кнопки с кликом). Обратный переход свободный, после отпускания стика газа - он сам возвращается во FlightZone.
Это достигается очень простой аппаратной модификацией стика газа. Появляется тактильный сигнализатор перехода из FlightZone в MotorstopZone и свободный переход обратно.
Подробнее под спойлером
Проблема
Я встречал много отзывов людей которые хотят что бы:
коптер можно было армить стиками
при достижении стикам газа минимального положения - выключать моторы
Это может показаться удобным, привычным и даже более безопасным, но не соответствует современному подходу в управлении коптером.
Современный подход в управлении коптером таков:
моторы и стабилизация работает во всем диапазоне стика газа
арм/дизарм производится тумблером, это позволяет моментально выключать двигатели в экстренной ситуации
AirMode всегда включен (MOTOR_STOP всегда выключен)
низкий min_check (например у меня 1010 при диапазоне rxrange 1000-2000 us это 1% хода стика) для максимально широкого рабочего диапазона стика газа и минимальной “мертвой” зоной внизу
Я пользуюсь такой конфигурацией довольно давно (до появления AirMode я использовал pid_at_min_throttle = PID а еще раньше - трим холостого хода в аппе), и она меня полностью устраивает кроме одной проблемы, описанной ниже.
Существует проблема быстрой остановки и запуска моторов в полете. При использовании арминга тумблером - можно очень быстро остановить моторы (дизармить). Но невозможно их опять моментально запустить после этого. А это может понадобится например при попадании в ветки дерева, с последующим выпаданием их них. Например я всегда успеваю дизармить моторы при ударе, но если коптер высвободился из кроны и падает - не успеваю заармить его обратно. Ведь для этого нужно не только опустить газ в ноль и перевести тумблер в положение арм после этого, но и коптер должен находится в положении близком к горизонтальному (при дефолтном small_angle = 25).
Я взялся решать именно эту проблему. Но мое решение также удовлетворяет желанием людей, о которых я написал в начале.
Решение
Обдумав привычную моторику управления коптером я пришел к выводу что задачу выключения моторов должен выполнять стик газа. Ведь это вполне естественно в экстренной ситуации опускать его вниз и выключать моторы. С другой стороны во время полета при опускании стика в нижнее положение моторы и стабилизация не должна выключаться.
Поэтому я пришел к выводу что эту задачу можно решать только аппаратно модифицировав стик газа так, что бы появилось тактильная граница перед той зоной, в которой моторы выключаются.
С другой стороны модификация должна быть простой и обратимой.
Если ее произвести то можно летать с включенным MOTOR_STOP, постоянной стабилизацией и не боятся случайно опустить стик газа ниже min_check и выключить моторы. Но при необходимости экстренного отключения просто добавить немного усилия на стик внизу хода и остановить моторы. После это можно как запустить их обратно, просто отпустив стик, так и дизармить коптер привычным движением стика влево.
Реализация
Я сделал очень простой мод на свой Таранис, состоящий из пластинки из стеклотекстолита (выполняет роль адаптра/крепления и регулировки положения) на которой закреплена небольшая кнопки с кликом. Кнопка упирается во вращающуюся механическую часть стика газа в конце его хода. Электрическая часть кнопки не используется. Кнопка лишь выполняет роль создания механического тактильного порога. Думаю такой мод не сложно будет сделать на любой аппе.
Со стороны настройки контроллера я сделал следующее:
Управляющий диапазон у меня 1000-2000us. В моей реализации кнопка срабатывает вниз на 1030us и вверх на 1010us. В этом случае min_check у меня 1020, в середине диапазона клика кнопки. Фича MOTOR_STOP включена. AirMode естественно включен всегда 😃
Единственное что меня смущает в такой настройке - моторы начинают вращаться при управляющим сигнале 1030, что немного больше min_check 1020 и в этом случае уже будет работать полная стабилизация с Iterm.
Спасибо Борису, именно AirMode и обсуждение в его теме натолкнуло меня на идею создания такого решения.
Буду рад любым замечаниям/советам/вопросам.
Comments
стик газа подпружинен и стремится вернуться во FlightZone
Вот этого очень не хотелось бы…
объясни почему?
я наоборот считаю что такое поведение максимально удобно
по сути стик остается стиком, а ниже его хода - появляется “классическая кнопка с кликом”
пока ее держишь - моторы выключены, можно армить/дизармить
отпустил ее - перешел в обычный режим с работающими моторами во всем диапазоне газа
ну вариант без подпружененного газа (когда стик не центрируется) - это классика от которой не хотелось бы уходить. Дело в том, что у меня много коптеров, и один из них на Naza V2, там как бы такие вещи не желательны…
так газ и не подпружинен! в диапазоне 3-100% он работает как обычно
посмотри видео, должно стать понятно как это работает
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"526bef643df95500777309f7":{"_id":"526bef643df95500777309f7","hid":180707,"name":"czuryk","nick":"czuryk","avatar_id":null,"css":""},"54abf9623df9550077722061":{"_id":"54abf9623df9550077722061","hid":215724,"name":"korvin8","nick":"korvin8","avatar_id":null,"css":""}},"settings":{"blogs_can_create":false,"blogs_mod_can_delete":false,"blogs_mod_can_hard_delete":false,"blogs_mod_can_add_infractions":false,"can_report_abuse":false,"can_vote":false,"can_see_ip":false,"blogs_edit_comments_max_time":30,"blogs_show_ignored":false,"blogs_reply_old_comment_threshold":30,"votes_add_max_time":168},"entry":{"_id":"567a92499970730077113e84","hid":21197,"title":"ClickStick","html":"<p>Я придумал и реализовал решение которое позволяет стабилизации работать во всем диапазоне хода стика газа без выключения моторов и вместе с тем дает возможность быстрого выключения моторов и включения их обратно стиком газа.</p>\n<p>Для этого диапазон стика газа нужно тактильно разделить на 2 зоны:</p>\n<ul>\n<li>FlightZone 3-100% хода стика; моторы и стабилизация всегда включены (включен AirMode); стик газа двигается как обычно свободно</li>\n<li>MotorstopZone 0-3% хода стика; в этой зоне моторы выключаются; присутствует возможность выполнить арм/дизарм стиком; стик газа подпружинен и стремится вернуться во FlightZone</li>\n</ul>\n<p>Что бы перейти из FlightZone в MotorstopZone нужно преодолеть небольшое сопротивление с кликом (например как нажатие кнопки трим или любой другой кнопки с кликом). Обратный переход свободный, после отпускания стика газа - он сам возвращается во FlightZone.</p>\n<!--cut-->\n<p>Это достигается очень простой аппаратной модификацией стика газа. Появляется тактильный сигнализатор перехода из FlightZone в MotorstopZone и свободный переход обратно.</p>\n<div class=\"spoiler\"><div class=\"spoiler__title\"><span class=\"spoiler__icon-collapse icon icon-collapse-alt icon-space-after\"></span><span class=\"spoiler__icon-expand icon icon-expand-alt icon-space-after\"></span>Подробнее под спойлером</div><div class=\"spoiler__inner\"><div class=\"spoiler__content\">\n<p><strong data-nd-pair-src=\"**\">Проблема</strong><br>\nЯ встречал много отзывов людей которые хотят что бы:</p>\n<ul>\n<li>коптер можно было армить стиками</li>\n<li>при достижении стикам газа минимального положения - выключать моторы<br>\nЭто может показаться удобным, привычным и даже более безопасным, но не соответствует современному подходу в управлении коптером.</li>\n</ul>\n<p>Современный подход в управлении коптером таков:</p>\n<ul>\n<li>моторы и стабилизация работает во всем диапазоне стика газа</li>\n<li>арм/дизарм производится тумблером, это позволяет моментально выключать двигатели в экстренной ситуации</li>\n<li>AirMode всегда включен (MOTOR_STOP всегда выключен)</li>\n<li>низкий min_check (например у меня 1010 при диапазоне rxrange 1000-2000 us это 1% хода стика) для максимально широкого рабочего диапазона стика газа и минимальной “мертвой” зоной внизу</li>\n</ul>\n<p>Я пользуюсь такой конфигурацией довольно давно (до появления AirMode я использовал pid_at_min_throttle = PID а еще раньше - трим холостого хода в аппе), и она меня полностью устраивает кроме одной проблемы, описанной ниже.</p>\n<p>Существует проблема быстрой остановки и запуска моторов в полете. При использовании арминга тумблером - можно очень быстро остановить моторы (дизармить). Но невозможно их опять моментально запустить после этого. А это может понадобится например при попадании в ветки дерева, с последующим выпаданием их них. Например я всегда успеваю дизармить моторы при ударе, но если коптер высвободился из кроны и падает - не успеваю заармить его обратно. Ведь для этого нужно не только опустить газ в ноль и перевести тумблер в положение арм после этого, но и коптер должен находится в положении близком к горизонтальному (при дефолтном small_angle = 25).</p>\n<p>Я взялся решать именно эту проблему. Но мое решение также удовлетворяет желанием людей, о которых я написал в начале.</p>\n<p><strong data-nd-pair-src=\"**\">Решение</strong><br>\nОбдумав привычную моторику управления коптером я пришел к выводу что задачу выключения моторов должен выполнять стик газа. Ведь это вполне естественно в экстренной ситуации опускать его вниз и выключать моторы. С другой стороны во время полета при опускании стика в нижнее положение моторы и стабилизация не должна выключаться.<br>\nПоэтому я пришел к выводу что эту задачу можно решать только аппаратно модифицировав стик газа так, что бы появилось тактильная граница перед той зоной, в которой моторы выключаются.</p>\n<p>С другой стороны модификация должна быть простой и обратимой.</p>\n<p>Если ее произвести то можно летать с включенным MOTOR_STOP, постоянной стабилизацией и не боятся случайно опустить стик газа ниже min_check и выключить моторы. Но при необходимости экстренного отключения просто добавить немного усилия на стик внизу хода и остановить моторы. После это можно как запустить их обратно, просто отпустив стик, так и дизармить коптер привычным движением стика влево.</p>\n<p><strong data-nd-pair-src=\"**\">Реализация</strong><br>\nЯ сделал очень простой мод на свой Таранис, состоящий из пластинки из стеклотекстолита (выполняет роль адаптра/крепления и регулировки положения) на которой закреплена небольшая кнопки с кликом. Кнопка упирается во вращающуюся механическую часть стика газа в конце его хода. Электрическая часть кнопки не используется. Кнопка лишь выполняет роль создания механического тактильного порога. Думаю такой мод не сложно будет сделать на любой аппе.</p>\n<p>Со стороны настройки контроллера я сделал следующее:<br>\nУправляющий диапазон у меня 1000-2000us. В моей реализации кнопка срабатывает вниз на 1030us и вверх на 1010us. В этом случае min_check у меня 1020, в середине диапазона клика кнопки. Фича MOTOR_STOP включена. AirMode естественно включен всегда <span class=\"emoji emoji-smiley\" data-nd-emoji-src=\":smiley:\">😃</span><br>\nЕдинственное что меня смущает в такой настройке - моторы начинают вращаться при управляющим сигнале 1030, что немного больше min_check 1020 и в этом случае уже будет работать полная стабилизация с Iterm.</p>\n</div></div></div>\n<p><a href=\"http://www.youtube.com/watch?v=MeaaFiIIu-Q\" class=\"link link-ext link-auto\" data-nd-link-type=\"linkify\" data-nd-link-orig=\"http://www.youtube.com/watch?v=MeaaFiIIu-Q\" target=\"_blank\" rel=\"nofollow noopener\">www.youtube.com/watch?v=MeaaFiIIu-Q</a></p>\n<p>Спасибо Борису, именно AirMode и обсуждение в его теме натолкнуло меня на идею создания такого решения.</p>\n<p>Буду рад любым замечаниям/советам/вопросам.</p>\n","user":"54abf9623df9550077722061","ts":"2015-12-23T12:23:37.000Z","st":1,"cache":{"comment_count":4,"last_comment":"567ab5ff99707300771277e2","last_comment_hid":4,"last_ts":"2015-12-23T14:55:59.000Z","last_user":"54abf9623df9550077722061"},"views":1910,"bookmarks":0,"votes":0},"subscription":null},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}