質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

697閲覧

同期処理における自動停止機能について

Enginyaaa

総合スコア12

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/10/02 07:31

編集2018/10/03 01:10

現在node.jsにてドローン制御機能の開発しています.

・移動
・GPS情報の取得
・残り時間の表示
・一定時間経過後のプログラム終了処理(安全のための自動停止モード)

などの処理を非同期処理にて行っていたのですが,機能を追加する毎に自分の意図した順序の処理が難しくなってきたため,保守性を高めるためにも同期処理を行いたいと考えています.

移動やGPS情報の取得関数はPromiseによる同期処理を行っているのですが,自動停止機能はどのように実装するのが一般的なのでしょうか?
自動停止機能は,プログラム開始から一定時間経過後,ドローンを着陸させ,プログラムを終了するといった流れです.

どうぞよろしくお願いいたします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

一定時間経過の判定をしたいんでしょうか。
なら、起動時に終了時刻を求めて、その判定をすればいいというはなしになります

#自動停止機能のほうなら、メカ図面やモータの定格、回路図ないと答えようないですが

投稿2018/10/02 08:18

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Enginyaaa

2018/10/03 01:23

> #自動停止機能のほうなら、メカ図面やモータの定格、回路図ないと答えようないですが 今現在はソフトウェアのみでの制御を考えております. > 一定時間経過の判定をしたいんでしょうか。 > なら、起動時に終了時刻を求めて、その判定をすればいいというはなしになります なるほど カウントではなく終了時刻を求めておくという発想はなかったです. しかしこの方法ですと,同期処理中に何らかのエラーが有った場合に,自動停止しない可能性はないのでしょうか? 例えば f1() #移動 .then(f2) #GPS取得 .then(f3) #自動停止 という同期処理を何らかのループで動作させる場合,GPS取得関数内で問題が発生すると自動停止が働かない可能性はありませんか? 独立した関数内での問題発生を考えるなら,非同期・同期処理にかかわらず自動停止機能が働かない場合があるのかもしれませんが,操作不能時の保険としては不備があるように思うのです. 飛行関連の処理をしつつ,裏では自動停止機能を走らせるということは,Javascriptの特性上難しいのでしょうか? どうぞよろしくお願いいたします.
y_waiwai

2018/10/03 01:31

> しかしこの方法ですと,同期処理中に何らかのエラーが有った場合に,自動停止しない可能性はないのでしょうか? それはプログラマの責任では? OSをも巻き込むようなエラーが起きたときには、プログラムではどうしようもありませんが、そういうはなしをしたいんでしょうか。
Enginyaaa

2018/10/03 01:44

> > しかしこの方法ですと,同期処理中に何らかのエラーが有った場合に,自動停止しない可能性はないのでしょうか? > それはプログラマの責任では? はい その点に関しては重々承知しているのですが,ドローンという特性上,原因にかかわらず保険としての自動停止機能を設ける必要があるのです. > OSをも巻き込むようなエラーが起きたときには、プログラムではどうしようもありませんが、そういうはなしをしたいんでしょうか。 少なくともプログラムが実行されており,その効力を有している状態での自動停止機能を盛り込めたらと考えております. それでも問題があると考えられる場合には,ハードと連携した自動停止機能を設ける必要があると考えています. 一般的にこのような機能を盛り込む際にはどのような工夫がなされているのでしょうか? どうぞよろしくお願いいたします.
y_waiwai

2018/10/03 01:51

> 少なくともプログラムが実行されており,その効力を有している状態 なら、あなたが想定されている処理に関わるエラーはきちんとエラーのキャプチャを行い、処理するようにしましょう。 あなた自身が想定していないエラー?それは、あなたにとってはプログラムが実行されていて効力を有している状態ではありません。 いくら考えても無駄です
Enginyaaa

2018/10/03 02:28

> なら、あなたが想定されている処理に関わるエラーはきちんとエラーのキャプチャを行い、処理するようにしましょう。 はい もちろん処理に関しては最善を尽くしますし,それを前提とした上で,自動停止という「保険 」が必要なのです. 現状,「安全な飛行」という目的を達成するために,「自動停止機能を設ける」という手段が必要です. しかし,この手段は手段であり目的でもあり,目的を達成するために他の手段を考えるという話ではないのです. 一般的に自動停止機能を盛り込む際にはどのような手法が用いられることが多いのでしょうか? ご教授願います.
y_waiwai

2018/10/03 03:33

組み込み系などでよく使われる手法で、ウオッチドッグというのがあります プログラムのメインループで、定期的にイベントを発生させておき、別プロセスでそのイベントを監視して、一定時間以上そのイベントは到達しなくなった場合にシステムダウンと判断して回復手段を行う、というものです この場合の監視プロセスはできればOS直下で動くもの、あるいは別OS(ベアメタルで?)動かせるプロセスじゃないとあんまし意味ないですね まあ、普通はウオッチドッグのタイムアウトでCPUにリセットを書けて再起動、回復させるもんですが、ドローンの墜落防止では再起動の時間では間に合わないでしょうね
Enginyaaa

2018/10/03 04:01

やはり別プロセスで処理するのが一般的なのですね. まだまだ手探りですが,そちらも視野に開発を行っていきたいと思います. 何度もご回答いただき,ありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問