BEIKE blog

備忘録です

同一リポジトリでの作業方法

概要

誰かのpcにあるリポジトリで開発をする時にどうやって複数人で上手くGitHubでの作業を行っていくのかっていう疑問がありますよね。ある程度の流れを抑えたので、備ぼる。

やり方

まず、誰かのPCに作業用のリポジトリがあるとします。

hoge@hoge:~/test/

そのリポジトリGitHub上でフォークします。フォークしたら、リモートリポジトリとして 誰かのPCの作業用のリポジトリにURLを追加します。 addの後ろのhogeは、git remote -vで確認して同じ名前が無いことを確認しましょう。

hoge@hoge:~/test/$ git remote add hoge 追加したいリポジトリ

次に、自分のフォークしたリポジトリのブランチを誰かのPCの作業用のリポジトリに追加したいと考えます。そのために以下のコマンドを実行します。

fetchの後ろのhogeは、先程のaddした名前と同じものです。

hoge@hoge:~/test/$ git fetch hoge <ブランチ名>
hoge@hoge:~/test/$ git checkout <ブランチ名>

上手くブランチが切り替わらなかった場合は(変更が残ってる場合) error: Your local changes to the following files would be overwritten by checkout:みたいなことを言われたらgit stash(作業途中の場合)git commitgit checkout .(変更全消し)をしましょう。


これで自分がフォークしたブランチを持ってくることが出来たので、 git addしてgit commitをするのですが他のユーザーが使っていることを考えて一時的に 自分のユーザー名でcommitをした方が良いと考えます。方法は以下のとおりです。

hoge@hoge:~/test/$ git add hoge
hoge@hoge:~/test/$ git -c user.name='hoge' -c user.email='hofe@hoge.com' commit

後は、commitしたものを自分のGitHubのフォークしたリポジトリに反映させます。

hoge@hoge:~/test/$ git push hoge

反映させたら、GitHubでPR(フォーク元を修正したい場合)を投げて完了です。

m1 macのParallels Desktopのubuntu 20.04の仮想マシンにvscodeをダウンロードする方法

概要

なんかタイトル長いですね。今までmacとか使ったことがなくて、普段通りのvscodeのインストールだと 上手く出来ませんでした。(普通にミスったかもしれんが)

そこで簡単にインストールする方法を知ったので、備ぼる。

やり方

m1 macParallels Desktopubuntu 20.04だと、以下の赤枠のものをダウンロードすると良いらしいです。 https://i.gyazo.com/b63d40233bc54dc5000ec29a24ee26d1.png

ダウンロードすると、Downloadsフォルダの中にcode_1.58.2-1626300392_arm64.debのような 名前のファイルがダウンロードされたと思います。

ダウンロードしたcode_1.58.2-1626300392_arm64.debのバージョン名を使用してvscodeをダウンロードします。

$ sudo apt install ~/Downloads/code_1.58.2-1626300392_arm64.deb

$ sudo apt install -y apt-transport-https

$ sudo apt update

以上でvscodeはインストールは終了です。

以下のコマンドでインストール出来ているか確かめられます。

vscode

2回目からssh hoge@hogeをノーパスで実行する方法

概要

sshログインよく使いますよね。いつも真面目にパスワード打ってたんですが、打たずに済む方法を 知ったので備ぼる。

やり方

以下のコマンドでログインします。

$ ssh hoge@hoge

入れることが分かったら一旦抜けて、以下のコマンドでノーパスログインができるようにします。

$ ssh-keygen (エンター連打)
$ ssh-copy-id hoge@hoge

以上です。

ubutnu マイクの調子が悪い時の対処法

概要

ある日ミーティングで私が喋ってたときにみんな揃いに揃って、うるさいよって言ってきました。 どうやら、凄いノイズが入ってるようで自分でも聞いた所半端なかったですw。windowsでは問題はなかったのでドライバに問題があることがわかりました。ということでドライバの更新方法を備ボリます。

オーデイオドライバの更新方法

以下のコマンドを順番に実行していくだけです。

~$ sudo alsa force-reload

~$ sudo apt-get remove --purge alsa-base pulseaudio
~$ sudo apt-get install alsa-base pulseaudio

おわりに

ドライバの更新で解決してよかった。

dockerを用いたCIでのエラーについて(Process completed with exit code 137.)

概要

dockerを使ってCI回せば、CIで回ってるdockerコンテナは自分のPC環境でも試せるし良いことたくさんですよね。しかし、何も知らずに使うとエラー(Process completed with exit code 137.)に悩まされます。。。ということで、Process completed with exit code 137.について備ぼります。

エラー(Process completed with exit code 137.)について

このエラーは

docker start hogehoge
docker ps
docker exec 123456 /bash -c "roslaunch hoge hoge; sleep15"

とかをGitHub Actions上で実行すると出てきます。(hogeは例です。execのid番号も例です。)

エラーについて調べると、メモリー不足やら何やら出てきます。 そこで使用メモリーについてコマンドにて確認してみましたが、十分余裕が有り問題ありませでした。

他に調べていると、どうやらdocker runだとPID1で実行したいコマンドを実行できて、docker execだとPID1で実行したいコマンドが実行できないことから、GitHub Actionsでは勝手に異常終了させられる事がわかりました。(多分)

なので異常終了させられないためには、docker run のみを使用してPID1でスクリプト等を実行する。 あるいは、docker execでもPID1でコマンドを実行できるようにする必要が有ります。

おわりに

何か間違っていたり有益な情報をお持ちでしたら教えて頂けると助かります。

解決法

何気にアクセス数が多かったので、追記します。 --initオプションをつけると怒られなくなります。

docker run --init 

確率ロボティクス(青本) 自己位置推定

概要

自己位置推定に関するアルゴリズムを把握するために読んだことを備忘る。

自己位置推定

  • 格子位置推定
    • 細かい格子だと計算量が大きくなる
    • 荒い格子だと離散化による情報の損失が大きくなりフィルタに悪影響を与える
  • モンテカルロ位置推定(MCL)
    • 最も人気のある位置推定アルゴリズム
    • ロボット姿勢に対する事後信念を推定をするためにパーティクルフィルタを用いる

格子位置推定

姿勢空間を格子状に離散化し、ヒストグラムフィルタを適用して事後信念を近似する手法。

ヒストグラムフィルタ

ヒストグラムフィルタは、連続状態空間における近似推定のために、離散ベイズフィルタを利用する。 ロボットの存在確率を評価するのに各グリッドに対して行う。二次元平面上のX-Y位置のみを推定したい場合などに利用される。

格子の解像度

  • トポロジカル・・・ある特徴のみで表現

    • 極端に荒いものになる
    • グラフ状の粗い離散化表現
  • メトリック・・・細かい粒度での表現

    • 状態空間の解像度がトポロジカルよりずっと高くなる
    • 格子表現

計算量の考慮

三次元格子の場合、動作の更新は分布の積の積分により六次元の計算になる。 計測更新は3次元の演算であるが、スキャン全ての尤度を計算する負荷は大きい。

これらのことから、以下のような格子位置推定の計算複雑性を減少させるテクニックがある。

  • モデルキャッシング・・・各格子地図に正しい距離計測値をキャッシュしておくことで、計測モデルの計算負荷が高いことに対処するための方法
  • センササブサンプリング・・・計測値の一部だけについて計測モデルを評価することによっ て、処理スピードのアップが可能にする方法(ただし、情報量の減少により期待されない結果が求められる可能性がある)
  • 遅延動作更新・・・動作更新をロボットの制御や計測の頻度よりも少ない頻度で適用して、格子位置推定の実行速度を上げる方法
  • 選択的更新・・・格子セルの確率を更新するとき、閾値を超える事後確率を有する一部の格子セルしか更新を行わないことで計算負荷を小さくする方法(ただし誘拐ロボット問題では低確率の格子セルも直ぐに反応できるように注意を払う必要がある)

格子位置推定まとめ

離散化表現の解像度は、格子マルコフ位置推定において重要なパラメータである。十分な CPUとメモリが与えられれば、細かい離散化は粗い離散化よりも通常望ましい。また、細かい離散化による近似は、ロボットの信念が真の姿勢から大幅に異なってしまう致命的誤りが起こる頻度を低く抑える。


モンテカルロ位置推定(MCL)

パーティクルフィルタ

  • パーティクル
    • ガウス分布に従う確率変数 X から選ばれる標本
    • 事後確率分布の標本
    • 時刻 t における真の状態に対する仮説

      参考資料

myenigma.hatenablog.com

www.amazon.co.jp