LINUX.ORG.RU
ФорумTalks

У марсианского зонда случилось переполнение

 ,


1

5

Такая новость сегодня вышла про зонд Schiaparelli: https://www.gazeta.ru/science/2016/11/24_a_10365155.shtml

Вскоре после раскрытия парашюта произошел «глюк» - переполнение отсчетов так называемого Инерциального измерительного устройства (Inertial Measurement Unit — IMU), в состав которого входят гироскопы и который следит за параметрами вращения аппарата в пространстве.

Из-за этого переполнения, которое длилось всего одну секунду, в бортовой компьютер была передана неверная информация. Обработав ее, компьютер неверно рассчитал высоту зонда, которая оказалась отрицательной: по сути, он посчитал, что аппарат уже приземлился или был у поверхности.

Это, в свою очередь, привело к преждевременному отстрелу парашютов, кратковременному включению тормозных реактивных двигателей и активации систем, которые должны были включиться при приземлении аппарата. В действительности же аппарат в это время находился на высоте 3,7 км.

Не является ли это очередным свидетельством того, что профессия программиста дискредитирует саму себя, превращаясь из инженерной специальности в профессию для ПТУ?

PS: Наверняка код написан на каком то языке не очень высокого уровня, например на Си. Было бы лучше, если бы писали на лиспе, например?

★★★★★

Последнее исправление: Puzan (всего исправлений: 2)
Ответ на: комментарий от Loki13

или в самом датчике регистр со с значением был int16

Harald ★★★★★
()
Ответ на: комментарий от WARNING

программа должна проверять входные данные на адекватность и соответствие законам физики, если следующее показание датчика резко отличается от предыдущего, скорее всего что-то сломалось, а не произошла телепортация или девайс засосало в чёрную дыру

Harald ★★★★★
()
Ответ на: комментарий от Puzan

В реальном мире в реальном железе переполнение всегда есть. То, что некоторые языки для дебилов скрывают этот ужасный факт от недалёких программистов, истинное положение вещей не меняется

Harald ★★★★★
()
Ответ на: комментарий от quickquest

зато ферритовые колечки с медными проволочками массу имели нехилую такую

Harald ★★★★★
()
Ответ на: комментарий от Deleted

но новую команду таки лучше нанять, а старую поджопниками разогнать )

Harald ★★★★★
()
Ответ на: комментарий от Harald

программа должна проверять входные данные на адекватность и соответствие законам физики

Тут топовые видюхи не могут до сих пор нормально движение в играх просчитать, куда уж контроллеру.

если следующее показание датчика резко отличается от предыдущего, скорее всего что-то сломалось

Угу. Когда Колумбия начала гореть в атмосфере, тоже поначалу все думали что датчик глючит. Сглаживание результатов наблюдений позволяет получить систему, достаточно устойчивую к кратковременным «выбросам», но совершенно непригодную для случаев внезапно меняющихся условий. Т.е. когда всё хорошо, она будет работать хорошо. Но стоит внешним условиям измениться и она на них не отреагирует.

И да, учтите, что датчик выдавал неверные данные достаточно долго, возможно, отказал совсем и был неработоспособен в принципе, прежде чем система начала предпринимать решительные меры. Так что какая-то защита от неверных данных стояла, но поломка оказалась более серьёзной.

WARNING ★★★★
()
Ответ на: комментарий от Harald

В реальном мире в реальном железе переполнение всегда есть.

В железе переполнение - не ошибка. Ошибка возникает выше, на уровне алгоритма, где одни языки позволяют ей возникнуть, а другие нет. Вот и всё отличие.

Puzan ★★★★★
() автор топика
Ответ на: комментарий от WARNING

И да, учтите, что датчик выдавал неверные данные достаточно долго, возможно, отказал совсем и был неработоспособен в принципе, прежде чем система начала предпринимать решительные меры. Так что какая-то защита от неверных данных стояла, но поломка оказалась более серьёзной.

Но ведь очевидно, что виноваты программисты, которых следует учить в ПТУ.

tailgunner ★★★★★
()
Ответ на: комментарий от Puzan

Может быть потому что насаждается мнение, что программировать может каждый, а «каждый» верит и начинает программировать?
И действительно, для этого не нужно образование, не нужно знание и соблюдение стандартов, не нужно быть инженером в конце концов. Т.е. программирование - это не инженерная специальность, это максимум ПТУ

ИМХО всё дело в том, что понятие программирование очень обширное. Ведь и обезьянок умеющих кодить в 1C и разработчиков ядра - называют программистами. Но разница в умениях и навыках у них - пропасть. Программист - это не сварщик. Для каких-то областей и применений - программисту хватит образования ПТУ. Для каких-то не хватит даже высшего образования. Для того чтобы заставить средненького гуманитария просто начать говнокодить на JS - хватит даже бесплатных курсов. Но сможет-ли такой человек нормально архитектуру своего ПО разработать, и соответствующим образом организовать процесс ?

Я вот за свою практику встречал отличных инженеров-схемотехников с образованием кандидат наук и выше. Они разрабатывали отличные отказоустойчивые схемы. В железе реализовывали отказоустойчивость и дублирование. Им приходилось также и программировать. Но программирование для них было в некоторым смысле утилитарным навыком. По какой-то неведомой причине они не могли понять что для ПО также как и для их железа может потребоваться архитектура, продуманная структура, определённый подход к разработке, тестирование и прочее. Они эти понятия отказывались в принципе принимать, так как ничего больше чем прошивку для микроконтроллера никогда не писали. Когда организация решила сэкономить на программистах и посадила за разработку управляющего ПО этих товарищей - через пару лет такой разработки проект они просрали. История реальная, сам в ней участвовал как сторонний наблюдатель (аудитор в некотором смысле), но назвать конкретную компанию, область, даты, имена, явки и пароли - не могу, NDA и всё такое. В принципе, история актуальна для любого НИИ, НТЦ - тем кому приходилось поддерживать их ПО, не дай бог для их-же железа, не дадут мне соврать.

Так что я не совсем согласен с тезисом, является-ли программирование специальностью для ПТУ. Для каких-то областей да, для каких-то нет. Просто нету нормального описания что в себя обязательно включает «специальность программиста».

Я бы так всё-таки разделил понятие программиста на две специальности:

Программирование - это просто навык, как умение работать за компом и офисом, только требующего большей практики, конечно. Совершенствование в этом навыке со временем тоже обязательно требуется для хорошего программиста - изучение новых языков, новых сопутствующих инструментов (сред разработки, VCS, и.т.д). Если мы хотим провести аналогию с ПТУ - то можно, например, ввести дифференциацию по разрядам. Получать это умение программировать можно и в ПТУ. Умение просто закодить имеющийся алгоритм - вполне может быть востребовано. Можно тут привести аналогию с ПТУшной специальностью слесаря - они ведь как правило не разрабатывают, детали - они их просто изготавливают.

И отдельные специальности - это разработка ПО для какой-то конкретной области. И они уже будут нифига не ПТУ-шной по своему уровню. В разных специальностях по разработке ПО могут требоваться совершенно разные навыки, умения, и знания.

DawnCaster ★★
()
Ответ на: комментарий от WARNING

Тут топовые видюхи не могут до сих пор нормально движение в играх просчитать, куда уж контроллеру.

Если напишите более подробно что вы имеете ввиду, я, возможно, смогу ответить почему так.

Вообще, физические расчёты - сложны, и в плане самих расчётов (там сложность форум - далеко не физика за 9 класс), и в плане их вычислительной сложности. Даже на видяхах. Всякие штуки типа физики мягких тел - это вообще эдакий rocket science в мире игр. Я не знаю какое конкретно «движение в играх» вы имеете ввиду, но там сплошные приблежения на приблежениях и имитации каких-то реальных вещей. Вы ведь не думаете что разрабы не могущие сделать элементарную оптимизацию сдюжат вам сделать реалистичную физику <чего-нибудь> сверх того что умеет готовый havok\physx ?

DawnCaster ★★
()
Ответ на: комментарий от Puzan

По-моему, ты идиот, а дело было так: спускался аппарат, на нем в цикле крутилось условие «пока высота >100 м парашют не отстреливать, тормозной двигатель не включать». А тут датчик высоты выдал -100. Что его заставило — аппаратный сбой, заряженная частица, перегрев — никто не знает, но программа честно вышла из цикла и начала следующую ветку. При чем тут лисп, С или что-то еще — решительно непонятно.

Исключить такую ошибку можно было только человеческой логикой, например, зная ненадежность высотных данных вести экстраполяцию высоты по уже имеющимся, чтобы такие случайные выбросы не влияли на алгоритм. Но тут, как говорится, кто ж знал-то?

unanimous ★★★★★
()
Ответ на: комментарий от rezedent12

Датчик давления, при срабатывании более нескольких секунд - открывает парашют

Датчик давления, говоришь? Тебе известен профиль марсианской атмосферы в данное время года на данной широте с точностью, позволяющей высоту определить хотя бы ±5 км? Кроме того, давление ты измерять будешь с набегающем потоке газа, что тоже не добавит точности.

Радар при приближении к поверхности на определённое расстояние, отстреливает крепления парашютов и включает тормозные двигатели.

Радар — уже лучше. Но таки спускаемый аппарат большую часть времени идет в облаке плазмы, потому что топливо на его замедление никто не тратит, так что радарные данные опять-таки большую часть времени недоступны. Вообще, не исключено, что решение об открытии парашюта принимается по акселерометрам, т.е. не высовываясь «вовне» вообще.

Хотя я согласен, что к моменту, когда парашюты уже открыты плазмы нет и можно пробовать радар. Хотя неясно, обеспечивает ли он достаточную точность — для хорошей точности нужно уметь очень хорошо замерять запаздывание, что означает «тяжелый и сложный прибор».

unanimous ★★★★★
()
Ответ на: комментарий от unanimous

Кроме того, давление ты измерять будешь с набегающем потоке газа, что тоже не добавит точности.

А ещё можно открывать парашют по показаниям акселерометра. Если происходит торможение - значит попал в атмосферу.

позволяющей высоту определить хотя бы ±5 км?

Технически для открытия парашюта важно именно давление, а не высота над поверхностью.

для хорошей точности нужно уметь очень хорошо замерять запаздывание, что означает «тяжелый и сложный прибор».
для хорошей точности нужно уметь очень хорошо замерять запаздывание

Можно проще. Если высота менее километра, то включить двигатели и снизить скорость относительно поверхности до 5 метров в секунду. Если расстояние меньше 10 метров, то дать импульс равный скорости падения.

Играл я в KSP, при посадке на Дюну ориентировался по расстоянию между световыми пятнами от направленных вниз фонарей.

rezedent12 ☆☆☆
()
Ответ на: комментарий от DawnCaster

Что ты так на 1С-ников, обезьянки. У них очень большая ответственность, они деньги считают. Живут ошибки в ядре годами и никто не парится, пропади миллион хотя бы денег из-за ошибки, ага.

ilovewindows ★★★★★
()
Ответ на: комментарий от DawnCaster

Так я сам знаю почему так. Потому что сложно. В реальном мире на тело действует куча сил, само тело неоднородно, среда вокруг тела неоднородна и т.д. Поэтому точно рассчиать движение крайне сложно.

Мой комментарий это был какой-то кривой сарказм на тему «запихнуть физику в контроллер».

WARNING ★★★★
()
Ответ на: комментарий от rezedent12

Технически для открытия парашюта важно именно давление, а не высота над поверхностью.

Только с точностью его оценки ±5 км ты рискуешь открыть его уже *под* поверхностью.

Можно проще. Если высота менее километра, то включить двигатели и снизить скорость относительно поверхности до 5 метров в секунду. Если расстояние меньше 10 метров, то дать импульс равный скорости падения.

Ты походу не понимаешь. Нет там такой роскоши, как маневрирование двигателями на километровых высотах. Двигатель включается на минимальной дистанции от поверхности — в сотнях, если не в десятках метров. До этого как хошь — маневрируй только парашютами.

Играл я в KSP, при посадке на Дюну ориентировался по расстоянию между световыми пятнами от направленных вниз фонарей.

Здорово. Т.е. еще оператора надо в спускаемый аппарат сажать?

unanimous ★★★★★
()
Ответ на: комментарий от Puzan

А программист - это инженер. Инженер работает с понятными, исследованными и описанными сущностями.

Угу, особенно когда приходится придумывать новый алгоритм под какие-то требования или продумывать архитектуру ПО. Но конечно, некоторые программисты просто codemonkey, поскольку считают кодинг за программирование, как и многие ученые просто штаны протирают, переписывая то, что уже известно.

peregrine ★★★★★
()
Ответ на: комментарий от unanimous

Исключить такую ошибку можно было только человеческой логикой, например, зная ненадежность высотных данных вести экстраполяцию высоты по уже имеющимся, чтобы такие случайные выбросы не влияли на алгоритм. Но тут, как говорится, кто ж знал-то?

Я думаю, что знали и ввели. Но не всё можно скомпенсировать - понятие «запроектной аварии» не зря придумали.

tailgunner ★★★★★
()
Ответ на: комментарий от rezedent12

Можно проще. Если высота менее километра, то включить двигатели и снизить скорость относительно поверхности до 5 метров в секунду. Если расстояние меньше 10 метров, то дать импульс равный скорости падения.
Играл я в KSP, при посадке на Дюну ориентировался по расстоянию между световыми пятнами от направленных вниз фонарей.

То чувство, когда угадываешь комментатора не глядя на ник.

DawnCaster ★★
()
Ответ на: комментарий от peregrine

Угу, особенно когда приходится придумывать новый алгоритм под какие-то требования или продумывать архитектуру ПО

Не льсти себе :) Придумывать алгоритм под требования, или тем более продумывать архитектуру - это чисто инженерные задачи.

Puzan ★★★★★
() автор топика

Не является ли это очередным свидетельством того, что профессия программиста дискредитирует саму себя, превращаясь из инженерной специальности в профессию для ПТУ?

Нет, это дискредитация некоторых ЯП поддерживаемых корпорациями - теперь и спутники с ИИ на них глючат как игрушки на них же.

Napilnik ★★★★★
()
Ответ на: комментарий от unanimous

По-моему, ты идиот

Ну что за люди такие?

Во-первых, идиот это ты, а во-вторых почитай тред, там уже всё написано.

а дело было так

Ты из команды разработчиков аппарата, или так, пукнул в лужу?

Puzan ★★★★★
() автор топика
Ответ на: комментарий от Puzan

Ты из команды разработчиков аппарата, или так, пукнул в лужу?

Я человек с мозгами, а не комплексом лиспового программиста. Если тебе непонятно, что никакой язык программирования тебя не спасет от неверных данных с датчика (если ты на уровне алгиритма не предусмотрел такой исход) — то тебя не только в ПТУ пускать нельзя, тебя лечить надо.

unanimous ★★★★★
()
Ответ на: комментарий от unanimous

Только с точностью его оценки ±5 км ты рискуешь открыть его уже *под* поверхностью.

Даже на гаишных радарах точность выше.

Ты походу не понимаешь.

Понимаю.

Нет там такой роскоши, как маневрирование двигателями на километровых высотах.

Просто такого ещё не делали.

Играл я в KSP, при посадке на Дюну ориентировался по расстоянию между световыми пятнами от направленных вниз фонарей.

Здорово. Т.е. еще оператора надо в спускаемый аппарат сажать?

Нет. Но с чего ты решил что оптические наблюдения эксклюзивная возможность «оператора»? И я это привёл лишь как пример. Можно светить лазерами на поверхность что бы по угловым координатам отражений рассчитывать относительное положение и скорость.

Прими на свой счёт оскорбление в недалёкости мышления.

rezedent12 ☆☆☆
()
Последнее исправление: rezedent12 (всего исправлений: 1)
Ответ на: комментарий от rezedent12

Можно светить лазерами на поверхность и по координатам отражений рассчитывать относительное положение и скорость.

/me убил себя фейспалмом

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Можно светить лазерами на поверхность и по координатам отражений рассчитывать относительное положение и скорость.

/me убил себя фейспалмом

Ты считаешь это принципиально невозможным?

rezedent12 ☆☆☆
()
Ответ на: комментарий от Napilnik

Во, наконец-то добрались до корпораций - мильёны строк кода, птушники мнящие себя программёрами и эффективный менеджмент. В итоге те же окна только в профиль. Жрут гигабайты и также падают.

ilovewindows ★★★★★
()
Последнее исправление: ilovewindows (всего исправлений: 1)
Ответ на: комментарий от rezedent12

Я считаю, что принципиальная возможность не интересует никого, кроме тебя.

tailgunner ★★★★★
()
Ответ на: комментарий от Puzan

Я и не спорю, что инженерные, я спорю, что

Инженер работает с понятными, исследованными и описанными сущностями.

peregrine ★★★★★
()
Ответ на: комментарий от rezedent12

Даже на гаишных радарах точность выше.

Чем больше я с тобой разговариваю, тем сильнее ощущение, что ты совершенно не в теме. Да гаишный радар весит прилично в масштабе всего спускаемого аппарата, работает при ничтожных перегрузках и в узком температурном диапазоне. А не при 30-50 g и от -100 до +300.

Можно светить лазерами на поверхность что бы по угловым координатам отражений рассчитывать относительное положение и скорость.

Хватит фантазировать уже! Какие оптические наблюдения сначала в облаке плазмы, а потом — в облаке пыли? Иди уже играй в свои игрушки.

unanimous ★★★★★
()
Ответ на: комментарий от rezedent12

Ты считаешь это принципиально невозможным?

Фантазёр, остановись! *Принципиально* возможно многое, но инженерная задача состоит в том, чтобы реализовывать это в заданных, и часто весьма жестких, ограничениях. И для марсианского аппарата эти ограничения *крайне* жесткие.

unanimous ★★★★★
()
Ответ на: комментарий от unanimous

Я человек с мозгами

Ты человек с чрезмерно раздутым ЧСВ. Возможно школьник.

Если тебе непонятно, что никакой язык программирования...

Подростковый максимализм так и прёт. Иди уроки делай, а то мамка заругает.

Puzan ★★★★★
() автор топика
Ответ на: комментарий от rezedent12

попробуй сначала в земных условиях измерить лазером расстояние хотя бы до соседнего дома, потом возвращайся :)

Harald ★★★★★
()
Ответ на: комментарий от unanimous

Радар — уже лучше. Но таки спускаемый аппарат большую часть времени идет в облаке плазмы, потому что топливо на его замедление никто не тратит, так что радарные данные опять-таки большую часть времени недоступны.

Парашют раскрывают после снижения скорости до 1-2 скоростей звука. При такой скорости никакой плазмы в помине нет.

Хотя неясно, обеспечивает ли он достаточную точность

Гугли «радиовысотомер», школьник. Современные спутниковые радиовысотомеры имеют точность до 2см. Обеспечить точность в пол метра для спускаемого аппарата не представляет никаких проблем.

Puzan ★★★★★
() автор топика
Последнее исправление: Puzan (всего исправлений: 1)
Ответ на: комментарий от unanimous

Фантазёр, остановись! *Принципиально* возможно многое, но инженерная задача состоит в том, чтобы реализовывать это в заданных, и часто весьма жестких, ограничениях. И для марсианского аппарата эти ограничения *крайне* жесткие.

Ну тогда хватит аселерометра и хронометра.

rezedent12 ☆☆☆
()
Ответ на: комментарий от Harald

попробуй сначала в земных условиях измерить лазером расстояние хотя бы до соседнего дома, потом возвращайся :)

А можно двумя лазерами и транспортиром?

rezedent12 ☆☆☆
()
Последнее исправление: rezedent12 (всего исправлений: 1)
Ответ на: комментарий от rezedent12

хоть четырьмя

уточню - не пользуясь своими глазами, а каким-нибудь сенсором, фотодиодом или камерой :)

Harald ★★★★★
()
Ответ на: комментарий от Harald

уточню - не пользуясь своими глазами, а каким-нибудь сенсором, фотодиодом или камерой :)

У меня такой камеры нет.

rezedent12 ☆☆☆
()

cast DNA_Seq, давай, в этом топике остро не хватает твоего вердикта и избрания меры пресечения! :D

Manhunt ★★★★★
()
Ответ на: комментарий от rezedent12

ориентировался по расстоянию между световыми пятнами от направленных вниз фонарей

Ещё по тени можно, если днём, но труъ способ всё же — это пользоваться показаниями KER или MechJeb, а не пытаться угадывать высоту на глаз.

INFOMAN ★★★★★
()
Ответ на: комментарий от WARNING

Когда Колумбия начала гореть в атмосфере, тоже поначалу все думали что датчик глючит.

А тогда уже пофиг было, глючит он или на самом деле крыло отваливается. Потому что выскочить обратно в космос этот кирпич всё равно не сможет, у него тупо столько топлива нет.

Вот если бы у Челленджера успели понять, что бустер сейчас прогорит, и тупо отстрелили бустеры прям в полёте в надежде, что они не зацепят при этом орбитер, был бы шанс его спасти.

INFOMAN ★★★★★
()
Ответ на: комментарий от unanimous

решение об открытии парашюта принимается по акселерометрам

Так показания акселерометра тоже зависят от плотности атмосферы, которая не известна с достаточной точностью. Так что нужен комплексный подход.

INFOMAN ★★★★★
()
Ответ на: комментарий от Puzan

Инженер работает с понятными, исследованными и описанными сущностями.

ну-ну. с понятными и описанными...если бы всё было очевидно, то и инженеры были бы не нужны. некоторые даже так называются: инженер-разработчик, инженер-конструктор. вот эти инженеры и делают то, что потом люди считают «понятным и описанным». теоретики пока ничего не сделали.

Iron_Bug ★★★★★
()
Ответ на: комментарий от INFOMAN

да тупо лазерный дальномер бы прицепили к нему. дёшево и сердито.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Puzan

А программисту сообщили что датчик может считать число которые превысит размер переменной? Ему как инженеру сказали: будет записано число, от ... и до ..., он и использовал какой-то «byte», может «инженеры» которые делали предварительные замеры не подумали что аппарат будет вращаться как юла?

mul4 ★★★★★
()
Ответ на: комментарий от INFOMAN

Так показания акселерометра тоже зависят от плотности атмосферы

Интегрируя ньютоновские уравнения по данным акселерометра (ускорениям) можно вычислять свою траекторию в пространстве. Теоретически, замерив профиль высоты заранее, с орбиты, можно потом тупо отсчитывать расстояние до поверхности вычитая из начальной высоты свое текущее (рассчитанное) положение. В идеальном мире такая схема вообще не зависит от того, что и как происходит снаружи. Проблема в том, чтобы а) ускорения измерялись с достаточной точностью б) профиль высот был заранее известен для любых разумных выкрутасов траектории.

unanimous ★★★★★
()

PS: Наверняка код написан на каком то языке не очень высокого уровня, например на Си. Было бы лучше, если бы писали на лиспе, например?

Наверняка было бы лучше, если бы писали на лиспе, например. Но было бы еще лучше, если бы в лиспе не было скобок?

MyTrooName ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.