注目の投稿

移転

移転しました(2020.03) →  https://akehi.github.io/ ---- ・GitHub Pages使ってみたかった ・HTMLファイルをそのまま公開できるのが手軽でいいなと思った ・・JupyterとかMarkdown+PlantUMLとかで書い...

2017/10/28

楕円フィッティング


地磁気センサや加速度センサのキャリブレーションのために、与えられたデータセットに対して最もフィットする楕円を知りたくなることがある。 そこで、最小二乗法を用いて楕円パラメータを推定することを考える。 このとき、楕円とデータセットの残差をどのように定義すればよいか?という問題に直面した。 結論としては、各データと、フィッティング楕円のマハラノビスノルムの差を残差として定義し、最小化すれば最尤楕円が求まることが分かった。

本ノートはそのメモである。


2017/10/22

GPSロボットカーコンテスト2017まとめ

1.台風の接近により中止

技術交流会として,機体構成とその特徴についての発表会があった.
自分の発表資料は以下

https://docs.google.com/presentation/d/1oYFm3Nsqm9fn4pTbdHUADZbymoTgzz2OGPZY9DazVYQ/edit?usp=sharing

時間切れでブログの宣伝までたどり着かなかったのが悔やまれる.

2017/10/02

試走会まとめ

センターサークルでアピールする方法考えてなかった.
・やっべ

SSHログイン

自動ログイン + パスワード認証不要に設定
http://robonchu.hatenablog.com/entry/2017/04/02/121229

ログイン後しばらく放置しているとpingすら通らなくなる.
wifiドングルがスリープだか省電力だかに入るという話をどこかで聞いた気がするのでその内対処する

暫定は以下の方法で対処
・起動後すぐにSSHでログイン
・PC側に向かってpingを投げさせる

Nios flashからのブート

以下のマニュアルがよくまとまっていて分かりやすい
https://www.altera.com/en_US/pdfs/literature/an/an730.pdf

がしかし,マニュアルのoption2を忠実になぞってもうまくいかない.
・実行後しばらくは正常動作するが,しばらくするとフリーズする
・PCからjtag経由でRAMにプログラムを書き込むと正常に動作する.

どうやら,printf()が入っているとフリーズするようだ.以下の状況も確認済み
・PCからjtag経由でRAMにプログラムを書き込み,jtag用ケーブルを抜くとフリーズする

flashからのブートもprintf()無しで動作するか確認予定.

タミヤESCをpwm制御


タミヤのESC周りの仕様がややこしいので整理.

2017/09/24

altera_spi_core と bcm2835

nios側でspiデータが来るのをポーリングで待つように処理したところ,RPi側からbcm2835_spi_transfern()でデータを送信したときにSPIcoreのROE (Receiver Overrun Error)が立ってしまう.ROEはniosでデータ読み出しする前に,次のspiデータを受信してしまうと発生する.

仕方なくbcm2835_spi_transfer()で1byteずつ送信し,byte間をbcm2835_delayMicroseconds()で埋めた.ある程度delayを増やすと上手く行く.しかし,安定して通信できるのがbcm2835_delayMicroseconds(2000)あたり.これより小さいとうまくいかない.この設定でスマホからRPi→FPGA→サーボを操作すると,体感0.1secくらいのもっさり感がある.


bcm2835 RPiライブラリ仕様

transfern()のbyte間が0.4us程度.かなり短い

短絡評価

C言語の論理演算子は無駄な式の評価をカットする仕様になっている.

ex) 以下を実行すると何も出力されない
false && printf(“aa”)
true  || printf(“aa”)
→第一項を評価した段階で式全体の論理が確定するから第二項は評価されない

ex) 以下を実行すると”aa”が出力される
false ||   printf(“aa”)
true  && printf(“aa”)
→第一項を評価した段階で式全体の論理が確定しないから第二項の評価に入る

詳細は以下に詳しい.
参考:
https://qiita.com/gyu-don/items/a0aed0f94b8b35c43290

参考ページにある以下の書き方は玄人っぽい.
a || doSomething()
でも残念ながら以下の書き方はできない.
a || return 0;
returnは関数でなく予約語だから.

2017/09/17

BlueTooth経由でRPiと通信4 (#includeの歴史)

ことの始まり:
demo_rx.c 内部で#include ”ros/ros.h”をするとコンパイルエラーが起きた.
(demo_rx.cを改造して,受信データをROSmsgs経由で他のノードに転送したかった)

エラー内容:
#include <string> がno such file
→拡張子なしファイルのincludeとは?

調査結果:
C++がCに対して後方互換性を保つための記述方法.
効果は,標準関数が全て名前空間 [std::] に属してしまうことで生じる不整合の解消.

以下のページが分かりやすい.知らなかった・・・
https://oshiete.goo.ne.jp/qa/6138437.html

対策:
demo_rx.cはC言語ファイルなのに,”ros/ros.h”の内部でC++の表現が含まれているのが問題.
→demo_rx.c の拡張子を.cppにすることで解決

BlueTooth経由でRPiと通信3 (ROSでRS232)

BlueToothのSPPで通信すると,RPi側からはただのシリアルポートに見える.
ROSの上で通信したいので,C/C++でRS232通信ができるライブラリを適当に引っ張ってくる.今回は以下を利用.
https://www.teuniz.net/RS-232/

ファイルセット内のrx232.cを見ると,cahr *comports[] という変数に/dev/tty**等のCOMポート名の一覧が定義されている.
ライブラリ使用時には*comports[]のインデックスを指定してポートオープンをする作りになっている.
リストには/dev/rfcomm0 が定義されていないので,先頭のポートを書き換えたら通信成功.
しかもdemo_rx.cがそのまま利用できた.
→ baud=9600,  data=8bit, parity=None,  Stop=1,  flow=None

2017/09/03

BlueTooth経由でRPiと通信2 (RPiとの接続)

BLTドングルはこのページと同じものを購入.


Ubuntu Mate にはbluetooth に必要なパッケージが完備されているようで,ソフトウェア導入は必要なかった.
ドングルを挿入すると,BLT設定GUIであるBluemanが自動で起動する.
しかし,GUI経由で接続すると無線オーディオやアクセスポイントとしてのプロファイルが適用されてしまい,Serial Port Profileでの接続ができなかった.


SPP接続するためにはrfcommを使用する必要があるようだ.以下のページをなぞればOK


最終的な接続の流れは以下
・(RPi) rfcomm listen
→(Android) BLT connect

→(RPi) COM Open



追記
端末を落とすと実行権限等色々リセットされる.
sudo chmod 777 /var/run/sdp
sudo sdptool add --channel=22 SP

このあたりは毎回端末起動時に実行するようにしないとBT接続できない.

BlueTooth経由でRPiと通信1 (スマホ側)

androidアプリに BlueTooth Serial Controllerというナイスなアプリを発見


画面にボタンが配置されていて,それぞれのボタンにBluetoothSPP経由で送信するデータを設定可能.
QZSSスクランブル用の機体もこれで手動操作できそう.


機体データフローとしては以下を目指す.
・スマホ側はBLT Serial Controllerで送信
・ros側でcomポート読み込み→ros内のmsgに乗せてSPI nodeに伝達
・FPGA側でSPI Slaveとして受信して各種アクチュエータを駆動

機体側ステータスをスマホ側に送信できればより良い.

ROSnodeのroot実行

rosrunコマンドはsudo rosrunができない.
bcm2835はroot権限が必要.
なので,実行ファイルのオーナー変更等の操作が必要
以下のHPに詳細あり.


以下の操作で,bcm2835を含むnodeを実行できた.
cd devel/lib/my_pkg     # cd to the directory with your node
sudo chown root:root my_node # change ownship to root
sudo chmod a+rx my_node      # set as executable by all
sudo chmod u+s my_node       # set the setuid bit

追記

catkin_makeする度に実行しなくてはいけないので自動実行する仕組みが必要あり

2017/08/29

SPI Slave

・mosiポートに到達した波形とrx レジスタの値が一致しない
・tx レジスタにセットした値がmisoポートから出力されない

同様の質問をフォーラムで発見
https://alteraforum.com/forum/showthread.php?t=42909
→Qsys optionの Insert_SynchronizerをEnableにしたら解決したらしい.
手元の実機でも同様の結果が得られた.

Depth=2とか3とかから察するにClock Domain CrossingのためにDFFを挿入するオプションではないかと予想.
MasterモードのときはNiosクロックを分周してSPIクロックを作っているようなので,タイミング的に上手く動作するようなHDLデザインになっているのだろう.逆に外部のクロックソース駆動のSlaveモードではSyncronizerが必須ということか.



追記
RTLViewerで見ると外部CLKソース入力の直後にD-FFが2つ挿入されていた.予想は当たっていたようだ.
D-FF2つをまとめたコンポーネントとしてaltera_std_synchonizerが提供されているっぽい.使い方は以下のフォーラム参照.今度使ってみよう.
https://alteraforum.com/forum/showthread.php?t=22230

機体に荷台作成

アクリルをカットして土台を作成.

透明を買ったと思ったら白を買っていた.ださい.


Nios マルチコアシステム

Qsys
・Nios設定にてreset vector (ブート位置)が被らないように手動で入力する.
参考文献(https://www.altima.jp/members/japanese/download/nios2_sw_sc2_v10.pdf)ではreset vector , expection vector 共に +0x60000している.これでプログラム(ソフトウェア・イメージ)を同じメモリに格納できる.
・通常reset vectorはon chip flash 等の不揮発領域を指定するが,flashの書き込み寿命が気になったり,気軽にデバッグしたい場合にはon chip memoryやsdram controllerなどでも良い.
・expection vectorはRAM領域推奨(な気がする)
・各CPUに対してJTAGモジュールが必要

Eclipce BSP
・CPUを複数含むsopcinfoファイルからCプロジェクトを生成すると,どのCPUに対するBSPかを選択できる.
・Linker ScriptタブのLinker Regionsにメモリの使用可能領域が表示されている.この領域をそれぞれのCPUのBSPと見比べて,Qsysで入力した通りになっているか裏付けができる.
・あとはLinkerSectionのMappingを上手いこと設定する.ここの設定はプログラム実行時にどこのメモリを使うか?(ソフトウェア実行領域)なので基本的にはsdram等の大容量なやつが指定されるはず

・賢いことに,複数のプロジェクトでソフトウェア実行領域が被らないようにしてくれるらしい.

・ここまでで各CPUから独立にLチカするくらいはできる.


--ここから未確認.要検証
・プロジェクト間でデータを共有したい場合には共有メモリを使う.共有メモリといってもQsysでon chip memoryを追加して,二つのCPUからMMslaveインターフェースに結線するだけ.

・Nios上でon chip memory のAPIを叩いて,指定アドレスへのデータ書き込みを行う.このアドレスに別のCPUから読み込みを行えばデータ共有が可能になる.

・が,排他制御は必要.ハードウェアMutexというシンプルな仕組み(IP)が有るようなのでQsysに追加.

I2C独立駆動

I2C通信がかなり遅い(100kHz) のでI2Cデバイスとのデータ通信もハードウェアにバックグラウンドでやらせて、Niosは値を必要なときに引っ張ってくるだけ、という設計にしたい(つまりメイン処理のCPUを介さずにI2Cコントロールをしたい)
→結局Niosを2つ積んでマルチコアシステムを採用した.

I2C独立システム化の潰えた計画達
1.altera_avalon_I2C_Master + DMAC
マニュアル上ではFIFO内蔵+Avalon_STインターフェース(DMAインターフェース)が提供されているようだ.これは熱い.

→そもそもalteraのI2CモジュールからI2C波形が出力できなかった.
TFR_CMDレジスタをIOWRで直接叩いても反応なし.
仕様理解不足か?

driverとして自動でリンクされるCソースは内部向け関数と外部向け関数が混在していてとても分かりにくくて苦行.
とりあえず i2c_open()みたいな関数に対して”/dev/i2c” (i2cはコアの名前.デフォではi2c_0になってるやつ)を渡せばBase Address等が格納された構造体が帰ってくる.構造体を適宜渡しながらライブラリを叩けば良さそう.が,やはりI2C波形は出なかった.

参考文献が少ない(というかほぼ無い)ので諦めた

2.  I2C_Master(opencore.org) + 自作のavalon_MMslave to avalon_MMmaster
opencoresのI2Cモジュールはかなりシンプルで分かりやすい.動作確認OK.
あとはメインCPUを介さずにI2C通信し続ける部分が必要.
avalon_MMインターフェースしか提供されていないので,このモジュールにavalon_MMmasterとしてコマンドを送り続けるモジュールが必要.
→そんな気力はない.

車体オドメータ取り付け

大会で使えるかわからないが,デバッグやモデリング等で非常に使い勝手が良いと思うのでオドメータを取り付けることにした.
せっかくなので両輪につけてみたい.

候補としては,
エンコーダ : 軸動力の伝達が大変.高分解能
フォトインタラプタ : 設置スペースが大きい.高分解能.
磁石 :分解能が低い.取り付け簡単

→取り付け難易度からホール素子を採用.
秋月のUS1881LUAを使用した.http://akizukidenshi.com/catalog/g/gI-05274/

内蔵のシュミットトリガにより,磁石を近づけた後に離してもスイッチは切り替わらない.切り替えるには逆の極を近づける必要がある.

早速グルーガンで100均のネオジム磁石をタイヤに8個,N/S極交互に貼り付けた.意外とタイヤが重くなった.


実測では最高速度にて121pulse/secを記録
(121pulse/8pole=15rps,タイヤ周長実測36cmより,540cm/sec= 5.4 m/s=19.4 km/h →だいたい感覚と一致する)

速度算出は,指定時間内のパルス数を出力することにした.
1パルスあたりの時間ではばらつきが出るため←すると直近の数パルスあたりの時間を取得する必要がある←直近の数パルス平均=移動平均のHDL実装が難しそう.
指定時間内のパルス数であれば,時間毎にパルス数のラッチとリセットを繰り返せば良いので楽.




Nios RPi通信構想

I2C通信がどうしてもボトルネック→遅い上に複数センサのシーケンシャル読み込みだから
検討するとマージン多めにとって1スキャンあたり1000bit必要= 100Hz程度の周期になる。
RPiからのアクセスなら十分だけど、他に何かしたいときに100Hz限界じゃ寂しい。
→I2Cデバイスとのデータ通信もハードウェアにバックグラウンドでやらせて、Niosは値を必要なときに引っ張ってくるだけ、という思想にする。これならavalon busのclk=50MHzでデータ取ってこられる。

→そうすると、SPIの監視→リクエストあったらデータ取得→転送の流れでも1スキャンを数10〜数百kHzくらいは取れるんじゃないかと思う。プログラムもシンプルになる。

車体選定

購入したのは以下
タミヤ セミアッセンブルシリーズ No.5 SA 電動RCカー完成シャーシセット (WR-02シャーシ プロポ付き) \1万6000@amazon
http://www.tamiya.com/japan/products/57985wr02set_fin/index.htm

選定理由
・amazonで売ってる
・ボディ要らないからその分安くしたかった←どうせセンサのせるために外すから
・でこぼこ芝生も走れそう
・WR-02シャーシは改造した実例がたくさんヒットする。あまり深入りするとお金が飛んでいくのでやらないけど。余力があれば以下の改造くらいはやっておこうかな。
・軸受けをボールベアリングにする
・ステア周りの剛性を高くする

追記
軸受けをボールベアリングにした.(タミヤ HOP-UP OPTIONS OP-8 1150ラバーシールベアリング)
前輪がトゥルトゥルになった.
後輪はデフが入っていて手で回しても相変わらず重い感じであまり違いが分からなかった.

bcm2835-1.52

一発OK
最初からこれ使えばよかった。
gpioみたいにコマンドからは使えないけれどサンプルソースがあるので問題なし

SPIで使うピン番号はそれぞれヘッダでマクロ化されている。
ヘッダ見ると各RPiバージョンによってGPIOピンの割り付けが定義されている。
きっとRPiバージョンを読み取って自動割り付けしてくれているはずだと信じている。

SDOとSDIをショートさせるとSPI通信のセルフチェックができるという小技が自分の中で地味に革命的
公式リファレンスがソースから自動生成しているっぽくてかっこいい。

WiringPi

Mate 標準の2.32を使った
が、最新のkernelに対応してないのでapt-get upgradeには注意。自分は手遅れだったので、以前のカーネルにダウングレードした。
WiringPiをつかって端末からgpio -v xxxを実行するときのピン番号はRPiのピン番号と一致する。
WiringPiをCから叩くときに指定するピン番号とRPi上のピン番号は一致しない。
https://projects.drogon.net/raspberry-pi/wiringpi/pins/

ヘッダは wiringPi.hを基本に、SPIやPWMなど用途に応じて個別に存在する
コンパイルは -lwiringPi というオプションが最低限必要

SPI通信しようとしたらエラー発生
gpio load spi がunable to load modulesになる
raspi-configからspi enableにして、lsmod | grep spi で spi_bcm2835が出てくる。
が、WiringPi 2.32 のgpio.cを見ているとspi_bcm2708を探している。
→最新版の2.44を見ると2835の文字がちらほら見えるので最新版インストールすることにした

が、結局Lチカはできるもののgpio spi loadエラー回避できず。
諦めた。

Raspberry Piセットアップ

家に余っているのでRaspberry Pi2 Model B を使う。
Raspberry PiにROSを入れたい。
OSはRaspbian ではなくて、Ubuntu Mateを入れると、Ros Kineticが簡単に入る。

実際に入れてみた
・起動時エラー出る。systemctl status system-module-serviceで確認できる。とりあえず放置。
・RPi2にはデスクトップ描画がちょっと重いかもしれない。
・デスクトップ背景がかっこいい
・ネットの設定にGUIが使えてRaspbianよりも楽
・あとSD容量フルで使うためのひと手間とかもなくて楽。
・WringPiがデフォルトで入っている。 (追記:spidevが使えなかったから特に利点ではなかった)
・ROSも躓くことなく無事導入できた。

今度からROSとか関係なしにRPi使うときは Ubuntu Mateを使おうと思った。

RPi3とかRPi2 Model B+にはROSインストール済みのイメージファイルが公開されているのでもし新規で買うならどちらかにする。
Model B+用に公開されているイメージはModel B でも使えないのだろうか。試せば良かった。

2017/07/17

GPSロボコン2017


ダブルパイロンレースに個人参加するのでそろそろ製作始める。
・ロボットカーは新規開発する
・FPGA+Raspberry Piの構成にする←今までにない新しい感じがする

今後を見据えた設計にしたい。
・センサ統合や、経路生成、制御アルゴリズムを色々試すテストベッドにする
・そのために、システム・プログラム全体の設計をきちんとやる。プログラムの設計図を描く(最初は思うがままにやって、できればUMLとか使う)
・デザインパターンを実践する。各パターンの利点や、適用すべき問題を知る。

2017/07/15

チップとドライバとモジュール

・lsusbやlspciで表示されるのはチップ情報

・チップとドライバが同名とは限らない (?)(追記:多分そんなことはない)

・ドライバはモジュールとして動的に読み込まれる

・lsmodで実際にモジュールが読み込まれているか確認できる


2017/05/18

kotlin

androidの正式開発言語がことりんになったらしい

確かにQiitaでたくさん投稿あるなと思っていたけど、ここまで流行っていたのか

java勉強するなら、どうせだしことりんにしようかな。ざまりんみたいでかわいいし


2017/03/28

git・プログラムでよく使われる英語


gitでよく使われる英語
http://qiita.com/shi_chicken/items/a5f922a3ef3aa58a1839?utm_content=bufferac06d&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer

シンプルだし覚えておきたい


プログラムでよく使われる英語
http://qiita.com/Ted-HM/items/7dde25dcffae4cdc7923?utm_campaign=popular_items&utm_medium=twitter&utm_source=dlvr.it

http://php-archive.net/php/words-in-function-names/

関数の名前を先に決めるのはとても大切(できればURLのように接頭語を積極的に使う)
・関数の責任範囲とか役割とかがイメージしやすくなるから
・その結果,思いつきで書き始めるよりもナイスなコードが書ける気がするから

関数名のアンチパターンは頭の片隅に置いておこう
・個人的にはxxxManegerみたいなのをついつい作りたくなるけど,良くないらしい (あまり大規模なプロジェクトを書いたことないから実感無い)

FPGA(MAX10)購入奮闘記(2)


FPGAへのピンアサインは以下の通り
・48Mhz発振器の入力は27pへ
・付属LEDへの出力は120~122p (RBG.駆動源はIOバンク8用のVCC.出力端子Lで光る)
・付属SW1(LED近くのやつ)の入力は123pへ.押すとL
・その他ユーザが使える入出力系は両端のピンヘッダ(CN1,CN2).基板側に接続先ピンが書いてある.FPGA側ピンとダイレクトにつながっている.なのでプルアップは外付けするなりFPGA内蔵抵抗を使うなり自分でやる必要がある.

2017/03/20

アクリル曲げ加工

サーボブラケットやraspberry piのケース,その他ちょっとした部品を作りたい場面が増えたので,アクリル板を曲げることにした.


こちらのHPにある通り,発泡スチロールカッターを使うと簡単に曲げ加工ができる.
http://marupeke296.com/EL_Ard_No10_Bracket.html

発泡スチロールカッターの安いものはamazonで900円くらいで電池式が買える.
一方コンセント式は2500円くらいとやや高価.

以下の理由から,電池式のカッターをコンセント式に改造する.
・電池もったいないし捨てるのも面倒くさいのでコンセント式がいい.
・まんまと+1500円出すのは悔しい

結局購入したのは以下
・白光 電池式スチロールカッター No.251-01 (\866 @amazon)

改造
・同メーカのコンセント式発泡スチロールカッターは公称6W
・ブレッドボードで使う用に家にあったACアダプタがたまたま3.3V-2A=6.6Wだったので活用
・内部構造はとてもシンプルなのでフタ開ければ分かる(赤い電源線と黒いGND線しか見えない)

結果うまく使えている.


2017/02/25

FPGA(MAX10)購入奮闘記

マルツでMAX10実装済み+JTAG実装済みのFPGA入門基板を買った.
http://news.marutsu.co.jp/wp/feature/6910/

実装の手間を惜しんだが,説明資料が全く付属せず,完成品だけ見ても手が出せなかった情弱っぷり.

困った結果,結局解説書を買った.
実装前の基板がついてきた.2台目ゲットだぜ.


2017/01/28

バランスチェア製作

バランスチェアなるものがあることを知った.
興味があったので同じようなものを作ることにした.
製作には構造用アルミフレーム(レコフレーム)を使う.


左側が本家のバランスチェアの広告.右側が作成予定のもの.

直交射影行列

射影行列:P^2=Pになる行列
直交射影行列: P^t=Pになる射影行列
補直交射影行列(正式な名称不明): Q=I-P (Pは直交射影行列) であるとき,Qも直交射影行列

2017/01/05

最適化問題参考資料

最適化問題を集合的な基礎から書いてあるから困ったら読んでみたい
http://lecture.ecc.u-tokyo.ac.jp/~nakamura/PDF/00-Disc_Math.pdf


線形推測論なる名前がついているらしい
http://nshi.jp/contents/doc/glm/

射影行列から分散分析に持っていっている
これに沿って勉強すれば分散分析などを幾何学的に理解することができそうな予感がする
http://www.ms.u-tokyo.ac.jp/~nakahiro/lec17/modelmon/workbook2.pdf

2017/01/04

母平均・母分散の比較方法

せっかく母平均・母分散推定について学んだのでついでにお勉強

主題は母平均・母分散の比較について.

学んだものはF分布.

分散分析とか平方和の分解とかそのあたりの勉強もしたいところではある.


ノート形式
http://nbviewer.jupyter.org/github/Akehi/IpythonNotes/blob/master/KnowledgeBox/Statics2.ipynb

スライド形式
http://nbviewer.jupyter.org/format/slides/github/Akehi/IpythonNotes/blob/master/KnowledgeBox/Statics2.ipynb#/


2017/01/01

これから触っていきたい言語


go
興味ナンバーワン
マルチプロセスが楽ってのは良い
マルチプラットフォームだし
もし何年後かにmc lambda実装するならぜひお供に使いたい

haskel
関数型言語なんていわれてるけど、実際に試してみたい
mapとかfilterみたいな高階関数がpythonにあるけど,それの輸入元がこういう関数型言語らしい
プログラミングの幅が広がりそう
あとプログラ厶の副作用とは何か体感したい
http://qiita.com/hiruberuto/items/26a813ab2b188ca39019?utm_content=buffere6334&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer

http://qiita.com/piroor/items/77233173707a0baa6360?utm_campaign=popular_items&utm_medium=twitter&utm_source=dlvr.it


c#
vs2016からXamalin使えるからマルチプラットフォームアプリ開発できる魅力
あと広報の人がかわいい
https://manuke.jp/chomado/


java
Androidスマホのセンサ化計画のお供に
話長い相手に、お前の喋り方javaっぽいなって煽れる程度には詳しくなりたい

javascript
node.js気になる。
サーバーサイドプログラマがかんたんにクライアント機能使えるらしい
サーバーサイドとかウェブとかの知識欲しい
何か作りたいわけじゃないけど、構造に興味がある。
オブジェクト指向、デザインパターンの必要性ってウェブやったら分かるのだろうか

python
rosに使ったりnote書いたりこれからもお世話になります.