2021年12月26日日曜日

アーテック社のStuduinoをUbuntuで動かす

 あまプロではロボットプログラミングをお教えする事が有ります。
先日アーテック社のティーレックスを使ったのであメログ。
取説はサイトからダウンロードする形式になっている分、お手頃なブロックタイプのロボットプログラミングになります。

アーテックロボはStuduinoというアプリでプログラミングするそうです。
名前からしてArduinoに独自のカスタマイズを加えた物でしょう。
あまプロではUbuntuを使っていますが、StuduinoのダウンロードページにはUbuntu版は用意されていませんでした。

なので、同じくDebian系のディストリビューションのRaspberryPi版を使ってみようと考えました。
ダウンロードしたrobotist_raspberry_pi.tar.bz2を任意のディレクトリに解凍して
その中のbpe.shを実行すると、コマンドが見付からない旨のエラーが出ました。
簡単には動いてれませんね…。
arduinoとsqueakが足らへんそうなので、

sudo apt install arduino squeak-vm
でインストールします。
その他諸々の必要なパッケージはaptが自動的にインストールしてくれるので、非常に助かります。
インストール後に再度
./bpe.sh
を実行すると、無事にStuduinoが起動しました。

 
 さあこれで皆さんも快適なアーテックロボライフを。

5374の年末年始対応について

 あまプロではCodeforAmagasakiの活動にも参加しています。
その中で5374プロジェクトというのが有りまして、オープンデータオープンソースを活用した地区毎のごみの
収集日を表示するアプリの開発運用を行っております。
年末年始にはごみの収集日が変更になりますので、その反映手順をあメログ。

毎年恒例
の年末年始対応手順です。
githubからリポジトリをクローンします。
CUIが得意な方はgitで、GUIが得意な方はsourcetree等をお使い下さい。
今回の例ではgitで説明します。
git clone git@github.com:codeforamagasaki/5374.git
すると、こんなのがダウンロードできます。
/C4AMA/5374$ ls -ahl --group-directories-first
合計 164K
drwxr-xr-x 7 4.0K 12月 26 03:35 .
drwxr-xr-x 27 4.0K 7月 31 11:15 ..
drwxr-xr-x 8 4.0K 12月 26 04:36 .git
drwxr-xr-x 2 4.0K 12月 26 2018 css
drwxr-xr-x 2 4.0K 12月 26 04:38 data
drwxr-xr-x 2 4.0K 12月 8 2017 img
drwxr-xr-x 3 4.0K 12月 8 2017 js
-rw-r--r-- 1 9 12月 8 2017 .gitignore
-rw-r--r-- 1 37 12月 8 2017 404.html
-rw-r--r-- 1 85K 12月 8 2017 5374colormanual.pdf
-rw-r--r-- 1 17 12月 26 2018 CNAME
-rw-r--r-- 1 1.3K 12月 8 2017 HOWTOUSE.md
-rw-r--r-- 1 192 12月 8 2017 LICENSE
-rw-r--r-- 1 7.4K 12月 8 2017 LOCALIZE.md
-rw-r--r-- 1 6.3K 12月 8 2017 LOCALIZE_en.md
-rw-r--r-- 1 1.7K 12月 8 2017 README.md
-rw-r--r-- 1 5.6K 12月 26 2018 index.html
ディレクトリやファイルがようけ有りますが、一先ず変更履歴を見てみましょう。
/C4AMA/5374$ git log --decorate --graph --stat
* commit 1b4a1e2b4cd32119f24488df738eaeb91249258c (HEAD -> gh-pages, origin/gh-pages)
| Author: Masayuki Tada <tadanet3@netscape.net>
| Date: Sun Dec 13 23:37:53 2020 +0900
|
| Update center.csv
|
| 年末年始対応2020
|
| data/center.csv | 52 +++++++++++++++++++++----------------------
| 1 file changed, 26 insertions(+), 26 deletions(-)
|
* commit ec4b956645085d7b83a8bbbece314abdc07b1669
| Author: Masayuki Tada <tadanet3@netscape.net>
| Date: Fri Dec 6 09:06:04 2019 +0900
|
| 年末年始対応2019
|
| data/center.csv | 52 +++++++++++++++++++++----------------------
| 1 file changed, 26 insertions(+), 26 deletions(-)
去年も一昨年もdata/center.csvしか変更してませんね。
なので、年末年始対応で変更するファイルはdata/center.csvのみです。
では次にdata/center.csvをエディタで開きましょう。
お好みのエディタで構いませんが、例ではvimで説明します。
地区,休止開始日,休止終了日
地区1,2020/12/28,2021/01/04
地区2,2020/12/28,2021/01/04
地区3,2020/12/28,2021/01/04
 ︙
地区1とか地区2とか何の事か解りませんね。そんな時はdata/area_days.csvも開きましょう
地名,地区,燃やすごみ,金属製小型ごみ・危険なもの,紙類・衣類,びん・缶・ペットボトル
 ︙
常松,地区1,月 木,水2,火,金
常吉,地区1,月 木,水2,火,金
これで地区xxと地名が紐付きました。
地区1の燃やすごみは月曜と木曜という事も解ります。
 
次に市報12月号の4ページを開きましょう。
燃やすごみの
月・木曜日地区 の年末の最終収集日は12月30日(木)で年始の初収集日は1月6日(木)という事が解ります。
data/area_days.csvから月・木曜日地区は地区1, 地区2, 地区3, 地区4, 地区14, 地区15, 地区16, 地区23, 地区24という事が解ります。
ここで注意点ですが、5374は休止開始日休止終了日ですが、市報に掲載されているのは最終収集日初収集日です。
どういう事かというと、休止開始日は最終収集日 + 1休止終了日は初収集日 - 1になります。
なので、2020/12/28,2021/01/04を2022/12/31,2022/01/05に一括置換するだけです。
:%s|2020/12/28,2021/01/04|2021/12/31,2022/01/05|g
正規表現がちとややしいてすが、この要領で他地区も一括置換します。
 
data/center.csvを保存したら
追加して
git add data/center.csv
コミットして
git commit -m"年末年始対応2021"
プッシュして(プッシュには権限が要りますので、ご連絡下さい。プルリクエストを送って頂く事も出来ます)
git push origin gh-pages
Username for 'https://github.com': tadanet3
Password for 'https://tadanet3@github.com':
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 2 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 488 bytes | 30.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
1b4a1e2..38ef33b gh-pages -> gh-pages
※githubは現在パスワード認証から個人アクセストークン認証に変更されてまして、プッシュには
で設定した個人アクセストークンが必要になります。
これで完了です。

http://amagasaki.5374.jp/
を開いて、ゴミ収集日を調べたい地区を選択すると、直近のゴミ収集日が表示されます。
 
それでは皆さん、良きゴミ収集ライフを。

2021年12月11日土曜日

ロボットプログラミングについて

 あまプロではロボットプログラミングを行う事が有ります。
先日、ELEGOO社のロボットで嵌ったのであメログ。

あまプロではELEGOO Smart Robot Car Kitという自動車ロボットを使って授業をしてます。
値段もお手頃で、V3.0までは取説を読みながら、BlocklyDuinoで簡単に走るプログラムを動かせてました。

ところがV4.0にバージョンした際に一新されまして、装置が増えたのも有るんですが
ピンの構成が変わって、今までのV3.0で動かせてたプログラムがV4.0では動かなくなってしまってました…。

しかもサンプルプログラムもオブジェクト指向になってて、BlocklyDuinoではclassが使えへん(つまりオブジェクト指向未対応)なので、サンプルプログラムを非オブジェクト指向に変換して、BlocklyDuinoで生徒にコーディングしてもらわなあかんという…何か凄い手順が煩雑になってまいました。

 アップデートって油断できませんね…。
でも新しい機能や発見が有って、これはこれておもろいです(^-^)

2021年11月4日木曜日

特定のライングループに定期的にメッセージを送る方法について

あまプロではちょっとしたメッセージの自動送信ツールを開発する事があります。
作る途中にちょっとはまったんで、あメログ。

あまプロは曜日と月の回数に選って開催する教室を決めています。
例えば第一木曜日と第一金曜日が武庫教室…の様な感じです。
こうしないと、月毎に開催教室が変わってしまい管理だ煩雑になるので、曜日で決めています。
例えば2021年10月7日(木)は第2週の木曜日ですが、第一木曜日になります( -"-)。
第一木曜日(武庫教室)と第二木曜(伊丹昆陽教室)とでは大違いなんで、間違うと生徒さんに迷惑が掛かってしまいます。
かと言って、毎回カレンダで確認するもの面倒やし…。

そこであまプロでは GASLINE NOTIFYを使って各教室の開催前に指定したグループにメッセージを送るサービスを作ってみました。
当日が第何曜日(第何週の曜日ではない)を取得するのがちょっとややこしかったですが…

Math.floor( ( new Date( t.getFullYear( ), t.getMonth( ), 1).getDay( ) + new Date( ).getDate( ) - 1) / 7) + ( new Date( t.getFullYear( ), t.getMonth( ), 1).getDay( ) > new Date( ).getDay( )? 0: 1)

 こんな感じで取得出来ました。
ワンライナで記述しているので解り難いですが、変数を使って整理すると

let t = new Date( );
let f = new Date( t.getFullYear( ), t.getMonth( ), 1);
let n = Math.floor( ( f.getDay( ) + t.getDate( ) - 1) / 7) + ( f.getDay( ) > t.getDay( )? 0: 1);

 こんな感じです。

 第何曜日かが取得できれば、後はそれをトリガで実行するだけで、教室前に「第何曜日と教室」のメッセージを送る事ができました!

グーグルさんラインさん、有り難う。

2021年10月16日土曜日

Ubuntu21.10へのアップグレードについて

あまプロではUbuntuを使って授業をしてます。
先日、Ubuntuの新バージョンがリリースされましたので、アップグレードしました。
特に嵌った所は無かってん嵌ったので、アップグレードの様子をあメログ。













 アップグレード完了!

追記

アップグレードの際にウィンドウシステムがWaylandに切り替わってしまいました。

その為、FirefoxのWebGLが無効になりScratchやヤフー地図等のサービスが利用できなくなってしまいました…。
何か前にもアップグレードの時にウィンドウシステムがWaylandに切り替わって同じ現象が発生した記憶が…。
これの解決方法は、一度ログアウトして、ユーザ選択してパスワード入力時に右下のオプションでUbuntu on Xorgを選択するとウィンドウシステムがX11になって、解決します。