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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Scratch

Scratchは、MITメディアラボが開発した子ども向けプログラミング言語。コードを記述することなくブロックを組み合わせてプログラミングを行うビジュアルプログラミング言語です。Scratch2.0からは、Web上でのプログラミングも可能になっています。

Q&A

1回答

1290閲覧

scratch ドローン

ishidaa

総合スコア0

Scratch

Scratchは、MITメディアラボが開発した子ども向けプログラミング言語。コードを記述することなくブロックを組み合わせてプログラミングを行うビジュアルプログラミング言語です。Scratch2.0からは、Web上でのプログラミングも可能になっています。

0グッド

0クリップ

投稿2021/01/29 00:59

編集2021/01/29 01:59

前提・実現したいこと

私は現在scratchというツールを用いて小学生向けのトイドローンの教材開発を行っています。
そこで私は安全を配慮した安全装置(人にぶつからないようにする)というものを実現したく、ソフトウエアで何かできないかと考えています。その中で私は例として「100以上はドローンが動作しない」このようなプログラムを開発しようと考えました。

発生している問題・エラーメッセージ

安全装置がはたらかない。

該当のソースコード

以下のソースコードは「スペースキーが押されたときドローンが離陸して100前に進んで着陸する+スペースキーを押したとき0<100のとき着陸する」プログラムである。このプログラムを実行したところ、「スペースキーが押されたときドローンが離陸して100前に進んで着陸する」しか正常に動作しなかった。
また、ソースの「5秒待つ」はドローンを正常に動かすために動作と動作の間にいおいている。

スペースキーが押されたとき

take off(離陸)

5秒待つ

fly forward with distance 100(前に100前進する)

5秒待つ

land(着陸)

スペースキーが押されたとき

もし0<100なら
land(離陸)

イメージ説明説明](9423a080155f3b5f0d7d4840ebf2ea9a.jpeg)
イメージ説明説明](851be0d18dc0dafa755b4b01c96dda12.jpeg)
イメージ説明

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

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

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

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

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

thkana

2021/01/29 01:18

・PythonとCは関係ないですね? タグは外して下さい。 ・「安全装置」とはなにか? の説明がありませんが? ・'fly forward with distance'と'land'という相矛盾する命令を受けた機械側の動作はどうなるのか、確認する必要があります。機械は、あなたが思ったように動くものではありません。作られたように動きます。
y_waiwai

2021/01/29 01:19

しつもんはなんでしょうか。 また、タグのpythonとCは関係ないように思いますが
Daregada

2021/01/29 01:38 編集

あえてScratch 2を使う理由はなんだろう……。小学生にも使わせるのかな? Flashのサポートが切れちゃってるけど。
dodox86

2021/01/29 01:43

「スペースキーが押されたとき」のイベントが重なっているからでは。 また、「スペースキーが押されたとき」 0 < 100 なら着陸と言う判定はあり得ないです。0 は常に100未満です。 質問については、「安全装置が働かない」のは質問者さんが「安全装置」と称しているモノが動かないように見える、現在の現象を示しているだけです。具体的に何をききたいのか、明らかにしましょう。
dodox86

2021/02/02 02:44 編集

>@質問者ishidaaさん [flag 質問者が21時間前に「まだ回答を求めています」と言っています。]を読んで: ここで言うトイドローンとはScratch 2でのサポートもあるTello (EDU)だと思いますが、 https://www.ryzerobotics.com/jp/tello-edu/downloads 本コメント欄、[質問への追記・修正の依頼]での皆さんの指摘事項に応えられないと回答は難しいと思いますよ。 > その中で私は例として「100以上はドローンが動作しない」 ここで言う100以上とは恐らくドローンの飛行距離を指しているのだと思いますが、以下のAPI仕様を見るとTelloの現在の距離とか飛行累積の距離は取れなさそうなので、自分で(質問者さん自身がScratchのプログラムで)計算する必要があると思います。 [Tello SDK2.0 User Guide] https://dl-cdn.ryzerobotics.com/downloads/Tello/Tello%20SDK%202.0%20User%20Guide.pdf 何となくですが、"fly forward with distance 100"とか"land"のブロックは、連続させてつなげるとそのままドローンに命令が送られてしまいそうな気がします。(あくまで気がする、ですが) だとすると、例えば”fly forward... 200"とか実行してしまうと、途中で"land"(着陸)させることはできないように思います。
guest

回答1

0

スペースキーが押されたときに、

を実行した後に、

を実行しているのではないでしょうか?
厳密にいえばどちらも同時に実行しているわけではないので...
イベントブロックは複数より、一つにしておいたほうが動作が安定します。

==============================================
「100以上はドローンが動作しない」というのは何のことなのでしょうか
そこを明確に書いてもらえると助かります。

安全を配慮した安全装置(人にぶつからないようにする)というものを実現したく

ということなので
人との距離が100以下だった場合は飛ばず人が周りにいないなら飛ばす
でしょうか?(あくまで推測ですが)
もしそうなら、イベントブロックを一つにまとめ

みたいにするのがいいかと思います。
余り状況がわからないので的確な答えではないかもしれません...

投稿2021/04/02 15:08

luchs_II

総合スコア2

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問