著者アーカイブ 杉浦

著者:杉浦

NMEAについてざっくり

NMEAを詳しく知りたい方のための資料として私がおすすめする資料はu-bloxの公開しているu-blox 8 / u-blox M8 Receiver Description Including Protocol Specificationのpp.105~127あたりです。このふんわりした小話よりもそちらでがっつり読み込んだ方がためになると思います。私は検索がうまくできませんでしたがtrimbleのhelpなども詳しいです。
NMEAとはGNSSの受信したデータを出力する複数のプロトコルをまとめた呼称です。NMEAは正式にはNMEA0183といい、団体であるNMEA(この記事中に出てくるこれ以外のNMEAはプロトコルNMEA0183のことを指した語です)が制定したプロトコルです。GNSS受信機はGNSS衛星から送られてきた信号を元に自らの位置などを推定しています。この推定された位置などの便利そうな情報をいい感じにまとめるプロトコルがNMEAになるわけです。ほとんどのGNSS受信機はこのNMEAに従ってデータを出力します。このNMEAには様々な種類があります。その中でも使われる頻度の高いGGA、GSA、GSV、RMCについてほんのり紹介します。実際に受信機から送られてくるデータを読んだことがある人はGGA、GSAでなく$GPGGA、$GNGSAなどの頭文字を持ってデータが送られてくることを知っているでしょう。NMEAは受信機によってGPGGA、GNGGAと頭文字が変わります。この頭文字は受信機が対応する衛星に従って付けられています。
GGAはざっくりと今の受信機の状態が分かるプロトコルです。位置、使用衛星数、精度低下率などがわかります。

$xxGGA,time,lat,NS,long,EW,quality,numSV,HDOP,alt,M,sep,M,diffAge,diffStation*cs<CR><LF>

GSAは誤差について詳しく記述されたプロトコルです。使用衛星、精度低下率について詳しく記述されています。

$xxGSA,opMode,navMode{,sv},PDOP,HDOP,VDOP,systemId*cs

GSVはGNSS Satellites in Viewの略称であり可視状態にある衛星について詳しく記述されています。

$xxGSV,numMsg,msgNum,numSV,{,sv,elv,az,cno},signalId*cs

RMCはRecommended Minimum dataとされています。RMCに大体のGPSに時刻、位置、速度といったGNSSに要求されている結果が記されています。

$xxRMC,time,status,lat,NS,long,EW,spd,cog,date,mv,mvEW,posMode,navStatus*cs
著者:杉浦

screenとshutdown

 2018/4/16本日、screenからexitするつもりがscreen中でshutdownコマンドを実行してサーバを落とす事故を起こしてしまいました。そんなわけでlinuxのscreenコマンドとshutdownコマンドについて書くことにしました。screenについてはこちらの記事こちらの記事で詳しく話されています。
screen
 screenは端的に言えば別画面を作るコマンドです。ターミナルと同じ機能を持つ別のプロセスが走り出すような感じです。
参照:SCREEN Quick Reference
よく使う操作

新たにscreenを作る screen
名前を付けてscreenを作る screen -S <name>
現在存在しているscreenをリストアップ screen -ls
指定した<id|name>のscreenに移動 screen -rx <id|name>
screenを動作させたまま抜け出す screen中でCtrl-a d
screenを消して抜け出す screen中でexit

 
shutdown
 シャットダウンを行うコマンドです。ただ命令するだけでも問答無用でshutdownコマンドが実行され出しますがコンピュータのシャットダウンが行われるまで多少猶予があります。CentOS7.4.1708のデフォルト設定におけるオプションなしの猶予は1分でした。特に覚えておきたい大事な操作は’shutdown -c’で実行できるshutdown処理の中断命令です。shutdownはCtrl+zやCtrl+cを打ち込んでも走り続けるため、シャットダウンを中止するためにはshutdown -cを入力する必要があります。一応shutdownを実行した際に「use ‘shutdown -c’ to cancel」と文面がでますが、焦り出す上に英語に親しくない私みたいな人は読み取れないことがあると思います。気を付けましょう。

著者:杉浦

アプリGNSS Viewについて

GNSS Viewは、指定した時間や場所におけるみちびきやGPS、GLONASSなどの測位衛星の位置を知ることができるWebアプリです。(みちびきより)
GNSS Viewというアプリを見つけましたが、技術者以外の人も対象にしているような作りのサイトで説明がろくになかったのでざっくりと機能と使えそうな用途の例の説明させてもらいます。
web版GNSSViewの全体図が下図です。

 BASE CONDITIONについてはほぼ割愛。英語が読めれば多分大丈夫です。GPS/QZSS WeeksもMaskAngle操作してみればわかるでしょう。 レーダ部を飛ばしてSELECT SATELLITE部。これはBASE CONDITIONとSELECT SATELLITEの設定でレーダー部をいじるためです。チェックボックスは衛星の種類です。自分の知りたい受信機に対応する衛星を選ぶとよいです。GPSはほぼすべての受信機で対応しています。ついでGLONASSです。GNSSを謳う受信機でしたらすべてに対応していることもあります。ラジオボタンは発信している信号の種類です。下の方ほど多種で精度の良い信号を持つ衛星になります。
 レーダー部は先に述べた通りBASE CONDITIONとSELECT SATELLITEの設定で動きます。上部のレーダは見たまま設定時点で見える衛星の配置です。色が衛星の種類を区別しています。TimeLine、Visible GNSSも見たままです。HDOP、VDOP。これはGNSSの精度低下率です。もしこの条件でGNSSによる測位を行ったら、という時の精度の目安になります。これらが0に近づくほど良好な受信環境になると予想できるわけです。なぜ実際に受信を行っていないのに、精度低下率が出せるのかというと衛星の散らばり具合によって算出しているからです。最近、3DMAPによる工事などが話題に上ったりもします。3DMAPによってマルチパス、可視衛星の精密な予測ができることによってより優れたHDOPに成り代わるものが現れるかもしれません。

著者:杉浦

組み合わせ爆発の話

 巨大な数を表す方法にはいろいろあります。掛け算、乗数、n乗のn乗の…数(乗数に乗数が含まれている)と順に大きくなっていきます。この中で2番目の乗数なんかは組み合わせ爆発と合わせてプログラマに縁があると思います。組み合わせ爆発とは機械学習などのアルゴリズムを考える時に考える必要のあることであり、碁や将棋のコンピュータが強くなることが難しいとされていた理由の一つです。多数の項目を組み合わせることで組み合わせ爆発を起こせます。[a-z]と[A-Z]と[0-9]を組み合わせれば26*26*10になります。雑に作ったアルゴリズムになんかはループ中ループ中を含み、こんなことになります。
 囲碁や将棋の手を進めることはどうしようもなく組み合わせ爆発になります。このため良い手を見つけることはとても難しいとされていました。組み合わせ爆発が起きるか否かはアルゴリズムを図示する際、フローチャートか状態遷移図かの基準なんかにもできます。

著者:杉浦

主成分分析について具体的な過程抜きでざっくり

 少し前に話題になっており、今も存在感のあるビッグデータという言葉があります。この記事ではビッグデータの解析等で役に立っている統計学の技術である主成分分析の紹介をします。
 大量のデータはその大きさに違わず大量の重複した情報をはらんでいることがあります。主成分分析とは重複した情報をまとめ、計算効率よく処理することを可能にする方法です。この重複した情報には似た意味を持つ情報というのは異なる項目成れど、片方が分かればもう片方もほとんどわかるような密接な関係にある情報のことも含みます。完全に重複した情報の例にはある物体中に含まれる分子の数と原子の数、似た情報の例には身長と体重が挙げられます。主成分分析はこの重複した情報を一つの情報としてまとめる方法です。項目数を減らすことは計算量の減少に大きく貢献します。例えば、8つの選択肢のある項目が3つあった場合、すべてのパターンを網羅するには8^3=512個の処理が必要ですが、主成分分析によって項目を2つに減らした場合、8^2=64個の処理で済むことになります。単純なやり方はある項目Aとある項目Bを最小二乗法で一次式を引き、一次式がよく当てはまれば、その一次式の傾きに合わせて次元を削減、というものです。下図なんかがわかりやすいです。三項目のデータを二項目で表しています。

 この手法の応用のために使われる関連技術には、平面でなくもっと複雑な面にまとめるカーネルやスカスカなデータは不要と判断するスパース性なんかがあります。

著者:杉浦

texで論文を書く人向けのツールの紹介

特にtex(きれいに数式を書ける論文向け言語)を使って論文の制作する人の役に立ちそうな道具の紹介になります。
Math – MyScript Webdemo:https://webdemo.myscript.com/views/math.html
手書きで書いた数式をtex形式にするページです。分数を書くたびにいちいち\frac{}{}、ギリシャ文字を書くためにいちいち\alphaなんか書く必要があって手間なtexの数式制作を楽にしてくれます。
CSV2TeX:https://www.quark.kj.yamagata-u.ac.jp/~genki/omake/csv2tex_kai_v1.html
csv形式のデータをtexの表にしてくれるページです。これまた区切りが七面倒くさいtexの表の制作を楽にしてくれます。
smallpdf:https://smallpdf.com/jp
pdfを大きく圧縮するアプリの紹介です。経験談では20MB越えのpdfファイルが数MBになりました。
メールに添付するには大きすぎるpdfを作りがちな、修士論文、卒業論文をメールで提出しないといけない大学生なんかには特に役に立つと思います。

著者:杉浦

GNSSの測定する位置と速度

 前情報としてAccuracy(正確さ)、Precision(精度)の話を挟ませていただきます。誤差はランダムな誤差と規則的な誤差の二種類に分けることができます。計測、予測の世界においては下図の様にランダムな誤差の大きさをAccuracy(正確さ)、規則的な誤差の大きさをPrecision(精度)と呼びます。

 GNSSの測定する位置と速度の精度の話に入らせていただきます。GNSSから得られる情報には様々なものがあります。この中で容易に得られる成形された情報としてNMEAというフォーマットに沿った情報があります。このフォーマットの中には位置と速度が含まれています。しかしながらこの位置と速度を導き出される過程はとても異なるものとなっています。
 GNSSはGNSSはなぜ都心で精度が悪くなりやすいのかに書いた通りGNSS受信機の位置を、GNSS受信機一台と地球の衛星軌道上の人工衛星三基を結んでできる三角錐から受信機の位置を連立方程式によって解く手法によって測定しています。最近はRTK-GNSSによるcm級測位などが話題となっておりますが、この手法による誤差は10m~20mほどです。(受信環境、受信信号を用いた計算に対する工夫、他技術を交えることによって市販されている様々なGNSS受信機における実際の誤差はもっと少ないものが多いです)一方で、GNSS受信機の速度はドップラ効果から測定されます。これは信号を受け取った時点の波長と発信された時点の信号の波長のずれから速度を計算するという手法です。こちらの手法はとても精度がよく、水平速度精度0.36m/sec、垂直速度精度0.72m/secとなっています。RTK-GNSS以前からcm単位で語れる誤差があったわけです。
 一見、このドップラ効果を用いた測定された速度を積算することによって位置を推定したならばとても誤差の小さい位置の推定ができるように思えます。ここでAccuracy(正確さ)、Precision(精度)の話が出てきます。このドップラ効果によって測定された速度の誤差が小さいことは述べた通りです。しかしながら、積算のみによる位置の推定には完璧なAccuracy(正確さ)が求められてしまいます。これは上図の左下のような偏りがわずかでもあった場合、偏りが膨らみ続け大きな誤差を生むことになることが原因です。これによってドップラ効果から得られた速度の積算のみによる位置の推定には問題があるわけです。
 ネガティブな意見を述べましたが、現実にこのドップラ効果による速度は高精度であり、この高精度速度を利用して得られた位置の誤差はRTK-GNSSを用いずとも2、3m程度になります。この位置と速度を組み合わせてより正確な位置を求めることに使われている技術の主となるのがカルマンフィルタと呼ばれる技術です。カルマンフィルタはGNSSのみならず制御工学、宇宙工学、経済学などで広く使われる優れた技術です。

著者:杉浦

条件付き確率の話

 ここにある事象A、Bがあるとします。Aである時にBである確率とただ単にBである確率は同じでしょうか。
 AとBに関係がなければ同じですが、AとBに関係があるならばほぼ全ての場合で異なるでしょう。このAである時にBである確率を条件付き確率と呼びます。A、Bには様々なものが適用できます。特にAには複数の事象が入ることが多く、aであり、bであり、cである時のBである確率、なんてことによくなります。
 この条件付き確率をよく用いる分野に自然言語処理というものがあります。自然言語処理は人間が日常的に自然に使っている言語をコンピュータに処理させるという技術のことです。文脈という言葉がで表される様に、文章中の文の続き具合、文中の語の続き具合、というものが存在します。また、言語は名詞、動詞、形容詞、助詞などと分類でき、おおまかな文法が存在しており、構造化が可能です。構造化によって文脈を明瞭にとらえることが可能になります。先ほどの条件付き確率の説明におけるAを文脈とすることで、様々なBを予測することが可能です。
 この条件付き確率を用いた予測によって翻訳、質問応答、対話生成、文章の意味分析、自動変換などなどのことができます。和訳を例にして、文脈がわかることの有用性を説明してみます。goneという言葉があります。言葉の主な意味は”行った”です。また、無視できない程の頻度で用いられる意味として”逝った”というものがあります。ただの”gone”という言葉を単体で和訳した場合、使用頻度からただ”行った”と訳すのが正解でしょう。しかしここで”He has gone.”、”He is gone.”という文全体の情報があったとした場合、”He has”、”He is”という文脈からそれぞれ”行った”、”逝った”と使い分けてより正確に翻訳を行うことができます。より身近な例としてPCやSPの自動変換があります。文章をまあまあ正しく漢字に直してくれる機能なんかもこの条件付き確率を用いた技術を使っていたりします。

著者:杉浦

GNSSはなぜ都心で精度が悪くなりやすいのか

 GNSS(Global Navigation Satellite System)/全球測位衛星システムの略称であり、GPSを含む衛星を用いた位置情報を得るシステムのことです。
GNSSについて書かれた記事:GNSS(Global Navigation Satellite System)とは
この記事はGNSS全体に共通することについての話なので、この記事の中のGNSSはGPSと読み替えても何ら問題ありません。
 スマートフォン、テレビ、ラジオを始め世の中には電波を用いて通信を行う機器が多々あります。それらは都心の様な障害物の多い中であっても良好な通信を行うことができます。GNSSはなぜスマートフォン、テレビの様に障害物の多い中で良好な通信を行うことが簡単でないのでしょうか。この原因はGNSSが位置情報を算出するには直接電波を受け取ることが重要であるという点にあります。
 GNSSの行っている計算は下図の様な地上のGNSS受信機一台と地球の衛星軌道上の人工衛星三基を結んでできる三角錐をイメージするとなんとなくわかりやすいです。

この三角錐をなす四つの点のうち、GNSS受信機の位置は未知であり、人工衛星の位置は既知であります。また、三角錐を成す辺の長さのいずれも既知であります。GNSS受信機は自身の位置を計算する時、「衛星の三点の位置と各辺の長さのみがわかる。未知である受信機の一点の位置は?」という問題を解いています。(大体このようなことをしているというイメージ程度で実際は異なります)この計算を行う時、受信機と衛星間の辺の長さをGNSSは衛星から電波が発信された時刻と受信機が電波を受け取った時刻の差によって算出しています。電波の速度はほぼ一定のため、電波の発信受信間の時間と合わせることで距離=速度×時間の式で衛星と受信機の距離を求めることができます。ここで電波が建物に遮られ、反射した電波をGNSS受信機が受け取ったと仮定します。この時、反射した電波を受け取った時刻は、反射した分、直接電波を受け取るはずだった時刻より遅れます。この時刻の遅れが前の話とつながって位置の誤差となります。そのため、直接電波が受け取れず反射した電波を受け取りやすい状況が生まれやすいビル街ではGNSSの精度が悪くなりやすいのです。

著者:杉浦

アンケートにかかるバイアス

 この記事の話は、アンケートの回答者は本当に知りたい情報の情報源なのかを知ることによってより正確にアンケートを行うことができる、という話です。
 こんな話があります。ある調査会社は固定電話によって次の選挙で誰に投票するか世論調査を行いました。調査結果はAさん、もしくはBさんが当選するだろうと結果を示しました。しかしながら、実際の選挙ではCさんが当選しました。この原因は固定電話による世論調査に応じる人々は有権者のうちわずかであるということです。この話が一昔前の話ならば、固定電話は高価であり、固定電話のみによる調査では有権者のうち富裕層の意見ばかりを集めてしまったのでしょう。この話が最近の話ならば、固定電話を持たない家が増えたため、固定電話のみによる調査では有権者のうちの若年層の意見がぬけてしまったのでしょう。
 この回答者の集団と知りたい対象の集団のずれを疫学では選択バイアスと呼びます。また、母集団(知りたい情報を持つ対象群)から標本(アンケート回答者)を抽出する際にバイアスがかかっている、とも言います。
 選択バイアスがかかったアンケートを試みてしまった場合、前述の例のような失敗が起こることになります。他の例として、動物園や水族館のの出口にのみにただおいてある様なアンケートがあげられます。これは記入が任意かつ無報酬かつ自由な時間を使用させるアンケートになり、とても高い評価やとても低い評価が回答の多くを占めやすいという失敗が起きやすいです。このような失敗が起きる原因はアンケートを書きたいだけの動機がある人ばかりがアンケートを書く、そのような人とは強い感情を持つ人である、強い感情による評価とはとても高い評価ととても低い評価である、ということにあります。
 選択バイアスの対策として層化というものが試みられています。これはありうるであろうバイアスを埋めるように複数の集団からアンケートを取るようにするという方法です。選挙ならば、人種、財産、宗教、地域などなどを別々に分け、それぞれからアンケートを集計し、その結果をまとめるというものです。起きうるバイアスが正しく予想できる場合、この方法によってバイアスを打ち消すことが可能です。しかしながら、この方法は分けた集団がそれなりに大きいサンプル数を含んでいない場合、ランダムな誤差が大きくなるという問題があります。このランダムな誤差とバイアスの誤差のバランスをとるためにも、アンケートの回答者がどのような方々なのか、知りたい情報源となるのはどのような方々なのかを知ることが大切になります。