[管理者用]

イゼルローン日誌
宇宙・・・それは人類に残された最後の観光地である

         
戻る 
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月
1998年
1999年
2000年
2001年
2002年
2003年
2004年
2005年
2006年
2007年
2008年
2009年
2010年
2011年
2012年
2013年
2014年
2015年
2016年
2017年

2017年06月
6月30日 ・さて今月で半年乗り切れた。残りも無事に乗り切れることを期待したいけど、どうなるのか、まだまだ先が見えない。
・そんなところで、ちょっと次のためのテスト。C++からCのライブラリを呼ぶのはextern"C"でいいけど、CからC++を呼ぶときはどうしたらいいだろうと考えたけど、やはり一回フックしてやる手かな。
・昨年から年越しでファームウェアの作成に絡んでいた製品が新聞記事の中で紹介されていた。単に装置のファームウェアを担当していただけだけども、実際に役に立っているという記事を見るとちょっと感慨深い。
・というところで、基板のリピート生産のための部品表作成。久しぶりにDigiKeyで過去の発注履歴を見ると、履歴をXLSやCSVで書き出すのはもちろんだけど、アップロードすることもできるようになったらしい。
・どんなフォーマットで送るのかと思って説明を見ていると、どうも表形式でアップロードした後に「このカラムが個数で、ここがDigiKey型番だよ」という具合に選んでやれば良いようだ。ちょっとやってみるかな。
・ということで、チェックを始めたけど、「在庫数0」になっている部品がいくつも出てくる。5%の1kΩの抵抗が無いってどういうこと?というところ。仕方ないので1%で代替してみたけど、そんな高精度である必要も無いのにな。
・合計金額を出してみると、前回よりだいぶ上がっている。円安方向なせいなのかなんなのか。とりあえず見積もり失敗はしていないので、足が出るようなことはないけどもね。

6月29日 ・ロボットをオーバーホールのために受け渡し。さて、あちこちガタガタになっていたのは治ってくるかな。
・ちょっと次の企画ものを見せてもらったりしたのだけど、なるほど、そういえば3D-CADでパーツと素材の比重を入れてやれば重心を自動的に算出してくれたりなんていうのは当たり前にできるのだな。理屈じゃわかっているけど、実際に見るとやはり面白いものだ。

6月28日 ・最近届いているお馬鹿メール。
・ひとつは、件名が「2017.6支払依頼書」で、「お疲れ様です。請求書金額を入力した支払依頼書を添付いたしました。」で、.ruなところを経由してきている。
・もうひとつは件名が「請求書ほか」で、「お世話になっております。
御請求書は、御社様宛に送付になります」などと書いてあって、こちらはsonetからということになっているけど、return-pathはbiglobe。
・いずれも珍妙なZIPファイルが添付されている。
・それにしてもあちこちにボロがあってツッコミどころだらけだ。このメールもたまたまゴミ箱を見ていたから気づいたけど、そうでなかったらそのまま消去されていただろう。手動設定していた自動振り分けに引っかかるような間抜けなメールだったということだ。
・もっと真面目に日本語とEmailの勉強をしてからにしたほうがいいんじゃないかな。

6月27日 ・一応いじっていたのだけど、XBeeの通信が途絶した時に延々と動作完了待ちになってしまう。
・これはよろしくない。Node-REDでタイムアウト検出を入れよう。基本的にはダウンカウンタを作ってやればいい。カウント値セットと、停止(動作正常終了値)を用意しておいてそれぞれの条件成立でセットするだけ。
・これがハードウェアだとメタステーブルの問題が出たりするけど、そこはシングルタスクのNode-RED(Node.js)なので深く考えなくてもいい。
・一応実験する。最初からダメなとき、途中から通信途絶した時もちゃんとタイムアウトしてリカバリできた。よしよし。

6月26日 ・前進・後退ボタンはできたので、左右への方向転換機能もつけてみる。ファームウェア側では回転用の動作ディスクリプタを追加して、コマンドと関連付けてやればOK。
・Node-RED側ではHTMLファイルの中身をちょいといじってボタンを追加して完了。
・動かしてみたらうっかりして左右が逆だった。直してOK。よしよし。

6月25日 ・基本的なところが動いたので次はWebブラウザ。コントローラ画面を作って、Websocketでやりとりすればいい。以前自分でも作ったけど、忘れたな。でも、ちょっと検索すれば出てくるシンプルなサンプル
・あとはちょいちょいと変更加えて、基本動作テスト。まずまずうまくいったな。


6月24日 ・世間的には週末だけど、こちらは動作確認と拡張のための作業。
・PCまでたどり着いたので、こうなったらPC上でGUIで動かせるようにしなくてはなるまい。
・別に速度が必要なものでもないし、こういう時に便利なのはやっぱりNode-RED+Webブラウザだ。
・とりあえず、Node-REDでコマンドを送るようにしてみる。と、CR+LFをつけるのがなんとなくめんどくさい。Node-REDだとプレーンなテキストだけにしたほうがノードでの処理も簡単だ。
・それならデリミタを変更すればいいか。ということで、デリミタキャラクタを追加。まずは単一コマンドテストのレベルでいい感じで動き出した。やはりインタプリタ的に変更したらすぐ実行というのは楽でいいな。

6月23日 ・問題は解決してどうにか話は通るようになってきた。こうなってくれれば話は早い。コマンドコードを変えてあれを変えて・・という具合でいろいろいじっていって、どうにかいい感じだ。
・動作中のステータスをXBee経由でPCに投げてやって、ターミナルで眺めてみると、「やってますよ」感が出るな。

6月22日 ・というところで、CPU間通信を使って動かしてみる。と、なんだかわけのわからない動きをし始めた。何が起きているのかさっぱりわからなかったけど、しばらくして原因判明。わかってしまえば単純なこと。我ながら間抜けなことをしたものだ。

6月21日 ・結構な豪雨というのか、嵐。それにしてもこの天気のバイナリな変化は一体なんなのだろうな。

6月20日 ・昨日の確認を再度行って、さて、今日はちょっと遠出。
・エアコン必須な暑さだな

6月19日 ・とりあえず、基本部分が動いたので本格的に動作実験。恐る恐る動かしてみたら予定通り動いている。ならば・・と壁を登らせたけど、大丈夫そうだ。天井は・・と思ったけど、壁を登っているときに若干不安な動きがあったので、これはまた今度。
・とりあえず、基本シーケンスは正しいことがわかったので良しとする。

6月18日 ・さて、MBedでCレベルで作っていたものをクラスにまとめる。コンパイルエラーも出なくなって大丈夫だなと思っていたら全然動かない。一体何が起きたのか、一回git reset --hardで元に戻してもう一回書きなおしていて気がついた。割り込み処理の中で更新するフラグはvolatileをつけないとね。

6月17日 ・Linuxへのお引越しで積み残しの課題の一つが3D-CAD。いままではPTC Creoのフリー版を使っていろいろ試していたのだけど、Linuxだと何があるのだろう。
・ちょっと検索すると、ほぼFreeCADで決まりという印象。とりあえず、ソフトウェアセンタに行ってインストールしてみるとVersion0.15。今のStableは0.16ということなので、ちょっと古い。
・ということで、検索すると、
sudo add-apt-repository ppa:freecad-maintainers/freecad-stable
して、
sudo apt-get update
sudo apt-get install freecad
で、無事に0.16に更新された。
ついでに、freecad-docもapt-get installしておいてやるか。
・さて、そういえばmbedってC++だよなということで、少しC++らしさを出してみる。今までそれほど真面目にC++をいじってきたわけでもないので、手探りに近いし、実際のハードウェアと絡むといろいろあるものだ。
・ピンを操作するためのDigitaOutはあるけど、複数のピンを使うようなクラスだと・・多重継承にすればいいか。
・次にクラスの配列の初期化で、コンストラクタへの引数が複数あるならどうするのかとか、タイマ割り込みでコールバックされる関数も、割り込みにattachする関数もクラスのメンバならどうなるのだとか、いろいろ出てきたけど、とりあえずクリア。
・これができるなら、ひとつのクラスの中のメンバの関数をそれぞれ別スレッドで動かすということもできるんだろうな、多分。
・今更だけど、思っていた以上に便利だ。ただ、生成されるコードがどのようなものになるのか、ちょっと考えただけで頭が痛くなりそうではあるけれど。

6月16日 ・さて、MBedでポンプやバルブ制御を行ってみる。オフラインでmakeできる環境を作ったので、とっても気楽だ。
・まず、基本的なON/OFFはうまく行ったようだ。
・次にシリアルポートからコマンドを送って動かしてみる。これがちょっと難儀した。いくつか勘違いがあったりして躓いていたけど、やっと動作。わかってしまえば簡単なんだけどな。
・ポンプやバルブの駆動というのは、それなりに待ち時間も必要なはずだけど、その間ウェイトさせておくのは勿体無い。
・MBed OSでスレッドが使えるので、これをうまく使ってやるほうが良いんだろうな。さて、どうするのがベストだろう。

6月15日 ・Sylpheedにも少し慣れて、メール環境も少し整ってきた。未登録だったアカウントを追加しておく。
・Sylpheedの面白く、ちょっと最初とまどったのは、複数のメールアカウントがあってもすべてまとめて「どのアカウントでも受信されたメールはメール」というのを基本スタンスにしていることで、何もしなければ全部「受信箱」に入る。振り分けも全体一括で行うのがなんとも面白い。
・別々にしたければ、自分で好きなフォルダを作っておいて、それぞれのアカウントごとに「このフォルダに入れろ」と指定しておく。返信したときにどのアカウントを使うのか、デフォルトのアカウントを使うのかということも、フォルダ毎に指定できる。
・更にサブフォルダを作っておいて、そこに振り分け条件を割りつけてやることもできる。送信のアカウントも個別に指定できる。
・つまり、従来は受信ボックスのようなものはアカウント毎にはっきりした壁ができていたのが、Sylpheedの場合、受信ボックス/フォルダは単に自分がわかりやすいような分類整理箱。メールはいったん全部まとめておいて、指定された振り分けルールにしたがって、それぞれの箱に移すという仕掛け。
・なるほど、とってもフレキシブルな仕掛けだな。

6月14日 ・これは誰?と思ったらその昔登録したのかもしれない転職サイトさんから「地方独立行政法人 東京都立産業技術研究センター」の求人があるよとのこと。
・「今回、IoTの活用通じて産業を活性化しようという流れからIoT開発セクターが設立されました。ミッションは中小企業のIoT関連製品の開発支援や工場のIoT化となります。」ということで、なるほどね。IoTですか。一応応募の動機のようなものを小論文で書けっていうことらしい。
・IoTとはいっても、いまやRaspberryPiが1000円でお釣りが来るという御時世でもあるけれど、多分問題は作ることよりハッキング対策、そしてバグ対策をどうするかということなんだろう。直接ネットにつながってしまっている以上、万が一を考えるとかなり怖いことになってしまうしな。


6月13日 ・Lubuntuの左側にある、Windowsでいうところのスタートメニューの項目の追加などはどうやるのだろうと思って検索したら専用のアプリケーションでやるのが簡単らしい。
・さて、何があるのかとLubuntuソフトウェアセンタで「Menu」で検索してみると、「Menu editor」の名で2つでてきた。まず、xdg menu editorを入れてみたけど、こちらは起動時になんか文句を言うし、開かれたメニューも英語。どうも日本語環境のメニューには対応できないようだ。
・ということでもう一方の「Add or remove application from menu」と書いてある方にしてみる。実体は「menulibre」というらしい。こちらが正解。ちゃんと日本語環境のメニューがそのまま扱える。
・試しにwineで動かす、xyzzy.exeを登録してみたけど、何も問題なく追加できて、追加されたものもきちんと起動した。
・Windowsからの引っ越しがだいぶ済んできて、使えるようになってきたな。残る大きい問題はOffice系か。
・と思っていたら、ThunderBirdで問題発生。なんと添付ファイルがあるとメール送信ができないという大問題。添付ファイルがわずか40KB程度でも駄目。もちろん、Windows下でのBecky!でも、Lubuntu下のSylpheedでも問題なく送信できるので、サーバの問題ではない。
・あちこち眺めたけど、簡単には解決しそうにない。ちょっとSylpheedを調べて行ったら、複数アカウントの扱いがちょっと癖ありな感じだけど、これはこれでも便利か。よし。Thunderbirdは捨てよう。

6月12日 ・さて、1本ずつの動作はうまくいったので、全体の同時動作確認をしてみる。
・足1本ごとにオブジェクト化して、動きの管理はメンバ関数で行うので、メインのプログラムは結構簡単になってきたな。
・とりあえず、全部一斉に動くというのは思い通り。あとは歩行パターンのディスクリプタテーブルを作って読みだすようにすればいいのか。
・さて、Becky!をwineで動かしたけど、なんだか今ひとつうまくいっていない。やっぱり駄目だと諦めて、Thunderbirdをインストールしてみる。アカウントを登録してみる。良く使う分を登録していたら、いきなり仕事の連絡メールが入ってきて、初めての他人とのメールになった。
・さて、ロボットの方も一応ディスクリプタを作って動かしてみる。なんだかうまく行きそうな感じになってきたので、床におろしてみたら、予定通りの動きでちゃんと歩いた。これならいけそうだな。

6月11日 ・さて、サーボはちゃんと動いたので、いよいよロボットでテストするプログラムにしてみる。とりあえず、どのサーボがどこにつながって、どんなアドレスになっているのか知らないといけない。
・サンプル的に受け取ったプログラムを眺めると、なるほど、使用している範囲はわかった。問題はどれが何番なのかということだな。これはやってみるほうが早い。
・とりあえず、足を1本ずつ動かすようにしてみる。さて、動くかなとやったら、ギギギ・・・と動き出した。うむ、やっぱりこういうふうに「動く」ものは面白いな。
・一応動く方向と、それぞれのモータ番号はわかった。あとは、モータの管理を綺麗にプログラムに落とし込めるか・・だな。
・さて、そんなところで、最後まで残っていたメーラ。とりあえず、Becky!をWineで動かしてみる。レジストリを書き出しておいて、
wine regedit
で読み込ませて、メールのフォルダまるごとコピーしてOK。でもそろそろメーラもお引越しすべきかな。

6月10日 ・知り合いがiPhoneにしたというので、一緒に眺めてみる。と、恐ろしい勢いでデータ通信をしている。
・この調子だと、あっという間に6Gだろうと8Gだろうと使いきってしまいそうな勢いだ。我が家のAndroid君では全くそのようなことはないのだが。
・一体何ごと?と思って検索してみると、なるほど最初から入っているアプリが勝手気ままにダラダラといろいろなことをしでかしてくれるらしい。とにかく片っ端からOFFにしてみたらおとなしくなったように見える。それにしても、このルーズな設定は一体何なのだろう。データ量無制限プランなんかじゃないんだからねと言いたくもなるな。
・そんなこんなで迷惑千万なWindows Update。とうとうやられた。プログラムを書いているところで、ちょっと夕飯にして戻ってきたらシャットダウンが始まっている。もちろん、再起動したらさっきまでの画面は全部あの世行き。しかもWindows10になったら手動にすることもできなくなってしまっているときた。
・ふざけるな!と言ってもどうせ聞く耳持たずだろう。ということで、仮想マシンのネットワークをOFF。これで何もできないだろう。
・言っておこう。「Windows10機をネットに繋いではいけない」と。

6月9日 ・ロボットの足の動きを考える。足を振り回すスペースが限られているので、いろいろ大変なのだけど、一歩後退、二歩前進によって事実上の一歩前進ということにすると、かなり動きがシンプルになることに気付く。
・プログラムのパラメータテーブルがかなり単純になるし、ギヤやリンク機構を使えば各足に付いているモータを1個削減できそうな感じもする。とりあえず、これで進めてみよう。


6月8日 ・とりあえず、電源問題は外部供給することで片付ける。
・多足歩行ロボットをテスト。現状まで作った方のプログラムを確認していたのだけど、ソースコードだけだと何をしたいのかよくわからないので、とりあえず動かしてみようというところ。
・なるほど、こういうふうにしたのか。とりあえず足の寸法を測定して、動きを考えよう。

6月7日 ・いい加減重たく重たくなってきたので髪を切る。しばし考え事。これから先のことを考えると気が重くなるので、とりあえず今目の前のことを片付けるだけだな。

6月6日 ・一応の環境はできたな。
・そんなところで、急ぎの原稿書き。どうも疲れて睡魔が襲ってきたりする。なかなかしんどいな。

6月5日 ・とりあえずLEDの点滅だなということで、LED番号をサンプルから変更してMakeしてできた、.BINファイルを書き込み・・とはいっても、MBedなのでそこは簡単で、Drag&Dropすればいい。これで書き込み終了。一瞬だんまりなので焦ったけど、再起動していたようで、無事に動き始めた。
・一応、構築した環境で大丈夫だということだな。
・ところで、このmbed-osのドキュメントはどこにあるのだろう。と、検索したら出てきた出てきた
・ザッと眺めるとTaskManagementで、結構簡単にスレッドを作ってやりとりできるようだ。試しにスレッドを一つ起こしてメイン側からシグナルを送ってキックするというのをやってみたけど、ごく簡単。

6月4日 ・さて、とりあえずサーボモータは動いたけど、今度は通信系が全くダメときた。これまたわけがわからないな。もう、いい加減にしてくれないかなぁ。
・と、気を取り直してとりあえず開発環境の整備。STM32を使うことになってとりあえずMBed。これがまたオンラインでやれということだけど、さすがにいろいろと出先に行くことがある身としては面倒くさい。オフラインでできないものかとお見ていたらMBed CLIとかでオフラインでもなんとか環境構築できるようだ。
・こういう環境関係はやっぱりLinuxだろう。コマンドラインベースで十分だということでLubuntu上にGCCで構築してみる。ところが、web上でこうすればOKというのが全くダメときた。
・コンパイラなどなどは、sudo aptinstall gcc-arm-none-eabiでもしてやればいいのだろうと思ってとりあえず、インストール。
・続いて、サンプルを引っ張ってこようとするけどこれがだめ。結局MBedのサイトでexportして、ダウンロードしたものを展開する。
・これでMakeすればいいだろうとやったら最後の最後でエラー。
・ツールチェーンをppa:terry.guo/gcc-arm-embeddedにあるパッケージを引っ張ってくれば良いと書いてるサイトがたくさんあるけど、これがだめ。持って来られない。
・それならば、ご本家のARMのツールチェーンを引っ張ってきたらどうだということで、ダウンロードして展開。さて、インストールは?と思ったけど、結局binにpathを通せばOKな感じ。
・これで改めてmakeしたら問題なく終了。ただ、このMakeFileだと毎回のようにMBed-OSと称するI/Oライブラリ全ソースコードをプロジェクトのディレクトリの下に置かなくてはならない。
・こういうときは・・・そうだ、シンボリックリンクだなということで、リンクを作成したら問題なしというところ。
・これでMBed関係も手元でBuildできるようになったかな。明日にでも動作確認しておこう。

6月3日 ・さてと・・と思って動かそうとしたら全く応答してくれない。まず、マイコンボードに書き込めない。これは電源が悪かった。一応仕様書の範囲内なんだけどな。
・さて、書き込みができたと思ったらサーボモータが動かない。散々調べていってもわけがわからず、試しに隣のポートに移したらなんと言うことはなく動いてしまった。これでほぼまる一日無駄にしたな。

6月2日 ・ぼんやりとロボットの挙動について考える。足は一応3軸あるけど、実は"Z"を横倒しにしたものがZ軸のまわりに回転するという形なので、2.5軸という感じ。
・これで床にちゃんと着地させようとすると、どうしてもサーボモータの誤差が問題になってくるし、足が伸びきったら先に進めなくなる。さて、どうしたものかな。

6月1日 ・.emacの設定もう一歩。行番号表示にくわえてtabの挙動がどうにも気に入らないので、
(define-key global-map "\C-i" 'tab-to-tab-stop)
(setq line-number-display-limit-width 10000)
(electric-indent-mode -1)
(setq tab-always-indent nil)
(global-linum-mode 1)
などとしてみた。自動インデントがありがたいという方も多いのだろうけど、初期のCコンパイラと同様に「プログラマの責任において何でもできる。極力余計なことはしないでくれ」というところ。
・これでほぼ不満無い状態になったな。

前月 次月
エース