マイコンで人工知能やってみた
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
その1:16bit マイコンに論理型プログラミング言語Prologを...
#contents
*はじめに [#gefbc05e]
当社もマイコンの組み込みソフトウェアを開発するようになっ...
*16bitマイコンに実装してみる [#q09ed345]
ベースにしたのは"S-Prolog"という処理系です。必要機能が一...
実装ターゲットは以下の製品です。
ルネサス RL78/G13:
-Flash: 512K
-RAM: 32K
Prologの詳しい説明は以下のサイトをどうぞ
[[Prolog:http://ja.wikipedia.org/wiki/Prolog]] - ウィキペ...
[[お気楽Prologプログラミング>http://www.geocities.jp/m_hi...
いわゆる対話型のインタプリタ言語です。マイコン内部のファ...
*実行してみる [#r75b7385]
ではmember/2からやってみます。マイコンはUARTでパソコンのT...
member(X,[X|_]).
member(X,[_|R]):-member(X,R).
&ref(member_small.jpg,nolink);
これでプログラムの入力が完了です。では質問してみます。文...
?-member(a, [a, b, c, d]).
yes
ちゃんとyesと答えてくれました。では、文字'a'はb, c, dの中...
?-member(a, [b, c, d]).
no
そりゃ、noですよね~(ただしく答えてくれました)
Prologでは"?-"の後に質問を入力することでプログラムの実行...
*いろいろやってみる [#d00c8e22]
memberでは全然おもしろくないので、append/3をやってみます...
append([],List,List).
append([H|T],List,[H|TList]):- append(T,List,TList).
そして質問してみます。aに、b, c, dを追加すると何になりま...
?-append([a], [b, c, d], Y).
Y = [a,b,c,d]
a, b, c, dと答えてくれました。ちょっとひねった、こんな質...
?-append(X, [c, d], [a, b, c, d]).
X = [a,b]
なかなか賢いです。もうすこし意地悪してこういう質問「XにY...
&ref(append_small.jpg,nolink);
ちゃんと全部の組み合せを答えてくれました!
*マイコンがパズルも解くよ [#w31bcbf4]
では最後におなじみ、ハノイの塔をやってみましょう。パズル...
hanoi(1, From, To, _) :- write([From, to, To]), nl.
hanoi(N, From, To, Via) :- N1 is N - 1, hanoi(N1, From, ...
円盤3つで解いてみます。
&ref(hanoi.jpg,nolink,hanoi);
どれどれ, aの円盤をbに移して、次にaの円盤をcに移して、そ...
*機能を追加するには [#v1da8d7b]
やはりマイコンの各種I/Oを使いたい場面が多々あります。とい...
ここでは、マイコンのA/D変換入力に接続された温度センサから...
?-temp(X).
X = 27
yes
これでいつでも温度が取得できます。
他、バックトラック、カットオペレータ等、標準的な機能はひ...
また既存のC言語プログラムとインタプリタは容易にリンクでき...
処理系単体のソフトウェアサイズは以下ように結構小型に収ま...
-プログラムサイズ:42KB
-RAMサイズ:28KB
これでハノイを解いた時には、正直ちょっとだけ感動しました...
*なぜPrologなのか [#jc478218]
appendの例で見た通り、Prologのプログラムには双方向性とい...
また、Prologにはデータやプログラム自体を実行時に登録、削...
そこで例えば・・
+各種センシングデータをfactとしてデータベースに蓄積する
+以下のルールを必要に応じて流し込む
++「人が快適であるのは湿度X%以下、室温Y度程度」
++「ただし急激に変化した場合は快適でない」
++「急激に変化するとは、過去Z分間で?度の温度変化を言う」
あとは今の湿度と室温から、快適かどうかをPrologが推論して...
このようにPrologは、普通とかなり違う動作原理を持った言語...
*まとめ -すべてのモノがより知的に- [#vac6356b]
近頃、"IoT (Internet of Things)”というキーワードが聞かれ...
これらのデバイスは、今はまだ、ネットに接続してデータを送...
個々の"Things"たちが、まるで小さないきもののように、自律...
終了行:
その1:16bit マイコンに論理型プログラミング言語Prologを...
#contents
*はじめに [#gefbc05e]
当社もマイコンの組み込みソフトウェアを開発するようになっ...
*16bitマイコンに実装してみる [#q09ed345]
ベースにしたのは"S-Prolog"という処理系です。必要機能が一...
実装ターゲットは以下の製品です。
ルネサス RL78/G13:
-Flash: 512K
-RAM: 32K
Prologの詳しい説明は以下のサイトをどうぞ
[[Prolog:http://ja.wikipedia.org/wiki/Prolog]] - ウィキペ...
[[お気楽Prologプログラミング>http://www.geocities.jp/m_hi...
いわゆる対話型のインタプリタ言語です。マイコン内部のファ...
*実行してみる [#r75b7385]
ではmember/2からやってみます。マイコンはUARTでパソコンのT...
member(X,[X|_]).
member(X,[_|R]):-member(X,R).
&ref(member_small.jpg,nolink);
これでプログラムの入力が完了です。では質問してみます。文...
?-member(a, [a, b, c, d]).
yes
ちゃんとyesと答えてくれました。では、文字'a'はb, c, dの中...
?-member(a, [b, c, d]).
no
そりゃ、noですよね~(ただしく答えてくれました)
Prologでは"?-"の後に質問を入力することでプログラムの実行...
*いろいろやってみる [#d00c8e22]
memberでは全然おもしろくないので、append/3をやってみます...
append([],List,List).
append([H|T],List,[H|TList]):- append(T,List,TList).
そして質問してみます。aに、b, c, dを追加すると何になりま...
?-append([a], [b, c, d], Y).
Y = [a,b,c,d]
a, b, c, dと答えてくれました。ちょっとひねった、こんな質...
?-append(X, [c, d], [a, b, c, d]).
X = [a,b]
なかなか賢いです。もうすこし意地悪してこういう質問「XにY...
&ref(append_small.jpg,nolink);
ちゃんと全部の組み合せを答えてくれました!
*マイコンがパズルも解くよ [#w31bcbf4]
では最後におなじみ、ハノイの塔をやってみましょう。パズル...
hanoi(1, From, To, _) :- write([From, to, To]), nl.
hanoi(N, From, To, Via) :- N1 is N - 1, hanoi(N1, From, ...
円盤3つで解いてみます。
&ref(hanoi.jpg,nolink,hanoi);
どれどれ, aの円盤をbに移して、次にaの円盤をcに移して、そ...
*機能を追加するには [#v1da8d7b]
やはりマイコンの各種I/Oを使いたい場面が多々あります。とい...
ここでは、マイコンのA/D変換入力に接続された温度センサから...
?-temp(X).
X = 27
yes
これでいつでも温度が取得できます。
他、バックトラック、カットオペレータ等、標準的な機能はひ...
また既存のC言語プログラムとインタプリタは容易にリンクでき...
処理系単体のソフトウェアサイズは以下ように結構小型に収ま...
-プログラムサイズ:42KB
-RAMサイズ:28KB
これでハノイを解いた時には、正直ちょっとだけ感動しました...
*なぜPrologなのか [#jc478218]
appendの例で見た通り、Prologのプログラムには双方向性とい...
また、Prologにはデータやプログラム自体を実行時に登録、削...
そこで例えば・・
+各種センシングデータをfactとしてデータベースに蓄積する
+以下のルールを必要に応じて流し込む
++「人が快適であるのは湿度X%以下、室温Y度程度」
++「ただし急激に変化した場合は快適でない」
++「急激に変化するとは、過去Z分間で?度の温度変化を言う」
あとは今の湿度と室温から、快適かどうかをPrologが推論して...
このようにPrologは、普通とかなり違う動作原理を持った言語...
*まとめ -すべてのモノがより知的に- [#vac6356b]
近頃、"IoT (Internet of Things)”というキーワードが聞かれ...
これらのデバイスは、今はまだ、ネットに接続してデータを送...
個々の"Things"たちが、まるで小さないきもののように、自律...
ページ名: