rviz楽しい
ROSで最近rvizで描画するのにはまっています
こんな感じに使ってるロボットの制御点やセンサーの位置を指定してビジュアル的に見れるのはとてもクールだと思います
ただ,こんな感じに制御点指定するのは結構めんどくさいので他の研究室の人たちにはあまり好まれません・・・・・
あと,今コレに少し問題があって何故かセンサデータが世界座標から見ても移動してしまうことが起こっています
明日には解決するかなぁ・・・・・・
rviz楽しい
ROSで最近rvizで描画するのにはまっています
こんな感じに使ってるロボットの制御点やセンサーの位置を指定してビジュアル的に見れるのはとてもクールだと思います
ただ,こんな感じに制御点指定するのは結構めんどくさいので他の研究室の人たちにはあまり好まれません・・・・・
あと,今コレに少し問題があって何故かセンサデータが世界座標から見ても移動してしまうことが起こっています
明日には解決するかなぁ・・・・・・
風邪は引かずに済んで良かった
今日は,今まで作ったノードの整理をしていました
複数台のラズパイからデータが来るので,それぞれにネームスペースを与えてデータを分割して実行できるようなlaunchファイルを作っていました
でも,少しまずいことになっていて,node間でpublishしたりsubscribeするデータはremapで簡単に変更できます
しかし,他のパラメータを変更するためのparam化を忘れていて少々面倒になってきました
主に参照する座標系をparam化しないと行けなくなってきました
しかも,param化すると同時にそのparamデータが動的に読み込まれるようなプログラムを作らないといけません
かなりめんどくさそう・・・・・
風邪ひいたかもしれないので寝ます
やって効果があるかわからない
ROSには,同じマシンの中のNodeならnodeletという物を使ってデータのやり取りを高速化できる仕組みがあります
研究で少し重めのデータがあるのでそこをnodeletを用いて高速化できるように書きました
公式のHPよりもわかりやすくて,実装が一日で出来ました
明日は,台風も過ぎ去って大学に行けるのでこれを使って実験しないと
ほとんど寝ていた休日
今日は朝から雨で買い物と昼ごはん以外には外に出ませんでした
その代わりに家で研究の進捗出せるかなと思っていたのですが,ほとんど寝ていました
もったいない休日でした
ですが,少し進んでラズパイ用のシェルスクリプトを書いていました
時刻同期やURGの許可はROS上からは操作できないのでシェルスクリプトを書いて実行すれば全部やってくれるものを書きました
結構簡単でこれで動かすときに楽になるのではないかと思います
後,ラズパイ用のlaunchファイルを書いていました
毎回,パラメータ設定とかのコマンドラインを書くのがめんどくさいのに気づいたので,ようやくlaunchファイルを作りました
明日は,nodelet関係のプログラムを作りたいなぁ
もう少し改良が必要だった
昨日のオフライン同期をもう一台のラズパイでやってみたのですが,数十秒遅れる上につながらない時もありました
なので,公式のページを見ながら設定を見直してみました
そしたら,許容する遅れの範囲を設定していたのでそれをラズパイで設定してみました
server [PCのIPアドレス] iburst minpoll 0 maxpoll 5 maxdelay 0.5
maxdelayを設定することで誤差の許容範囲を示します
またminpollとmaxpollの値を公式のページの値にしてみました
こうすると,なぜかPCの時刻にすぐ同期出来て,しかも遅れもなくなりました
しかし,ROSで運用する際にはもっと精密な同期が必要かもしれず,もし,そうならmaxdelayを小さくすればいいのではないかな
あと,やっといた方がいいと思うのは
ぐらいかな
でも,これで準備ができたので明日からは動かします
今日は朝一で歯医者に行っていたので,これしかできませんでした
今日,久しぶりにまた部室に行ってきました
そしたら,新しいMDが出来上がっていました
新しいPICが乗っていて,エンコーダの処理もできてSPI通信で動くそうです
それとPS3コントローラの受信機も自作するようになっていました
なんだか,次々と新しいものを作っていっている後輩たちがめっちゃうらやましくなりました
自分も混ざりって彼らと開発がしたかったです
もし,自分が今開発するなら
のSTMフルコースを作りたいなぁ
あと,MDにDC/DCコンバータ乗せて余計な線を排除したい
ROHMにいいDC/DCコンバータあったから,それを今年の部品提供に混ぜてもらおうかなぁ
時刻同期が出来た
研究では,複数台のラズパイとノートPCを使ってROSを実行するのですが,ROSではtfを使う際時間同期をしないといけません
なので,chronyやntpdateを使って外部ネットワークにあるサーバに時刻同期します
ですが,学内のネットワークではSSH接続ができなくてロボットに乗せたラズパイに遠隔接続できないし,携帯のテザリングでは携帯を忘れたらロボットを動かせません
そして,先生に相談したら無線LANだけを貸してくれました
つまり,外部ネットワークに繋げずにROSネットワークを作らない行けなくなりました
なので,夏前はテザリングで動かして夏シンポが終わってから,ラズパイがノートPCへ時刻同期を行うように設定できるかなとトライしていました
で,今日やっと成功しました
主に,参考にしたページはこれです
ja/ROS/NetworkSetup - ROS Wiki
もちろん,公式を見ればいいのですが公式で自分が確認できたのは時刻合わせをしないといけないということでした
なので,それぞれで行ったことをまとめます
いじる場所は,ラズパイ,ノートPCともに
/etc/chrony/chrony.conf
です
ノートPCには内臓クロックが搭載されているので特に外部に対して時刻同期しなくてもいいものと考えます
なので,ノートPCがラズパイに対して時刻同期を許可すればいいだけです
なので
allow [ラズパイのIPアドレス]
を追加します
こうすることで,ラズパイが時刻同期しようとするのを許可します
IPアドレスは,無線LANの設定から固定のIPアドレスを与えます
次に加えるのが
local stratum 10
です
これは,ノートPCが外部のサーバに対して時刻同期できなくても,ノートPCの時刻は信頼できるものとして,ラズパイが参考できるというものです
普段,時刻同期はネットにつなげば行われるのですが,もし同期できなければ信頼度が16となり,参考にできないようになります
(信頼度は1が最高で15が最低です)
今回の設定では,同期できなければ10の信頼度でもいいなら同期してもいいよというものです
まず,ラズパイ側ではどこのIPアドレスに対して時刻同期を行うか設定します
server [PCのIPアドレス] iburst minpoll5 maxpoll 6
これでどこのIPアドレスの時刻に同期するか指定をします
IPアドレスの後ろはオプションですが,参考文献を見ればわかると思います
次に行うのは,信頼度に関係なく時刻同期を行う設定をします
stratumweight 0
これを書けば,信頼度に関係なく時刻同期を行います
これらは設定した後
sudo /etc/init.d/chrony restart
で設定を読み込みます
どちらも,設定して読み込んだ後
ラズパイ側で
sudo chronyc -a makestep
をするとサーバの時刻に強制的に同期します
ですが,何回かしないと時刻同期できません・・・・・
自分は5分ぐらいすると同期出来ました
なぜ,時間がかかるかはわかりません
date
コマンドライン上に時刻を表示
chronyc sources
今同期しようとしているサーバ一覧が表示される
chronyc tracking
同期先に関するデータ?が表示される
思い出しながら書いてるので,これだけでできる保証はないです
それに余計なコマンドも書いてるかもしれないですが,とりあえず自分はこれで同期が出来ました
とゆうか,忘れたとき用に書いてるだけですのであしからず
今,デュアルディスプレイと無線キーボードとマウスで作業していますが,快適で買ってよかったです
買ってよかった
ディスプレイと無線キーボード・マウスを購入しました
ディスプレイは,デスクトップPCのために購入しました
時々,家でラズパイをいじるのですがその時ディスプレイが一枚しかないので何か調べようとしてもUbuntuのノートPCしかなくなってしまします
でも,このノートPCそろそろ研究用にしようかなと思ってるので,もう一枚ディスプレイが必要でした
なので,Amazonで中古のディスプレイがランダムで3700円で購入できるものを買いました
そして,来たのがこれです
中古にしてはきれいですし,ちゃんと動くので問題はありません
そして,今の家の開発環境がこんな感じになって,研究室の環境よりもよくなりました
無線キーボード・マウスですが,デスクトップPCから線が垂れるのと,ノートPC用に有線マウスを確保したかったので,ディスプレイと一緒に買いました
やっぱり,線がなくなってだいぶスマートになりました
今のところ無線の遅延もほとんど感じられませんし,1500円でまとめて買えたので良かったです
後,UbuntuMateですがCUIとGUIの切り替え機能が便利でCUIにするとURGのデータがサクサク転送できた気がします
なので,UbuntuMateを研究に正式採用です
メモ
ノード一つ消すとビルドが通る
SSH接続が研究室のネットワークだとつながらないから,ファームウェアのアップデートもしくは一度リセットはあり
URGとかロボットにつなぐときには,許可忘れない
永続的に許可する方法があるなら試す
毎度毎度ノードを立ち上げるのに長い分は面倒なので,シェル?でできない?
お土産渡しに行ったけど,めっちゃ失敗した
失敗したから次は頑張る
でも,気持ちが分らんから不安でしかない
時間がないならないと言ってほしいし,嫌なら嫌なら嫌と言ってほしいなぁ
うまくいきそうかな・・・・・?
ラズパイのOSを入れ替えることを決めて数日
やっと形が見えてきました
以前,使っていたのはRaspberry Piで学ぶ ROSロボット入門に乗っていた方法でUbuntu16.04を入れていました
しかし,少し時間がたつと,カーネルパニックを起こして起動ができなくなったり,wlanが見えなくなってSSH接続ができなくなって使えなくなったりしていました
なので,UbuntuMateにしました
これの利点は複数あって
数日,インストールに関する記事ばかり探していて思ったのですが,UbuntuMateに関する記事が多くてめっちゃ参考になりました
デスクトップにSDカードリーダがない自分はこの記事を参考にして,ubuntuの乗ったノートPCでまずフォーマットしました
これがラズパイにUbuntuMateを入れる方法で,公式でサポートされているのでちゃんと成功します
この上二つが,UbuntuMateにROSを導入する方法で自分は二つ目の英語の記事を参考にしました
英語の方はworkspaceの製作まですべて網羅していたので,コピペで最後まで行けますが.bashrcの変更の所が少し間違っていて後で自分で手直しが必要です
何度もこの部分をいじっていたのですぐ気づけましたが,始めたばっかの自分ならどうしたらいいんだろうと困惑していたと思います
自分はラズパイにつないだURGのデータを計算するために,ネットワーク越しにURGのデータを送る必要があります
今日,GUIでURGのデータを送信してみたのですが,めっちゃカクカクしていました
以前のCUIオンリーのOSなら滑らかに動いていました
そのため,ラズパイの負荷を下げるためにCUIの起動を行いたいのですが,無線とかノードの設定する際にはGUIで操作しないと全く手が付けられません
なので,GUIとCUIの切り替えをしたいのですが,以前のOSではCUIオンリーでした
でもUbuntuMateなら簡単に切り替えられます
Ubuntu 16.04 デスクトップ版を CUIログインに変更する方法│机上ノ奇跡
このページを参考にすればあっという間にできました
でも,UbuntuMateのCUIでサクサク動くかと言われればまだわからないので明日試します
Raspberry Piで学ぶ ROSロボット入門ではwlan0が見えないというエラーが発生して,それに関する対処方法がありました
しかし,自分のラズパイでは時間経過か何かの拍子にまたwlan0が見えなくなってしまいました
でも,UbuntuMateではそのエラーがなくてifconfigでちゃんと確認できます
自分的には,OSレベルのエラーは自分では対処できないので,出来るだけエラーは存在してほしくありません
なので,精神衛生上とてもいいと思います
明日は,CUIに切り替えてURGのデータをネットワーク越しに転送したいと思います
最近,パソコンからマウスとキーボードの線が垂れてるのが格好悪いのとノートPC用にマウスが必要になったので無線のキーボードとマウスのセットを買いました
あと,ディスプレイも買いました
Amazonの中古でランダムなディスプレイが届くやつで,19インチが3700円という格安で少し怖いですが楽しみです
明日は,散髪行くのと,山口のお土産を渡しに行かないと
自分のためのメモ
学校のネットワークのつながっていない無線LANで確か以前はできたのになぜかできない
新しくOSを入れ直したので,sudo ufw disableを忘れない
これしないと確かネットワーク的にはつながっているがデータが飛んでこない
時間のchronyの強制同期はテザリングなら可能か?
ロボットを動かすnodeは昔の型でしかビルドが通らない
でも,一度失敗してもう一度ビルドするとなぜか通る
その時,新たに成功するnodeはjointに関するnodeで特に不具合はなさそうだけど心配
山口県まで行ってきました
朝,7時半に駅に集合して,同級生の車で出発しました
一日目に訪れたのは,
に行きました
運転手のリア充同級生が彼女と行ったことがあって見晴らしがいいし,ちょうど休憩ができるということで立ち寄りました
海岸沿いで海も見えてきれいでした
やっぱり,リア充はこんなきれいな所知ってるんですね
まじでふぁっくです
本当は違うお店を予定したのですが,店の中がいっぱいだったので諦めて代わりにここに行きました
写真を撮るのを忘れたのですが,550円でお腹いっぱいになるほどのお好み焼きが出てきてよかったです
一日目のメインの観光地として錦帯橋に行きました
研究室の友達に山口県といえば何があると聞いたときに出てきて温泉も近くにあったので錦帯橋に行きました
すべてが木で作られた橋で20年ごとに建て替えられてるらしいです
橋は渡ってみると,結構急で意外と歩きづらかったです
あと,錦帯橋を渡っているとき雨がやんで運がよかったです
その後は近くのお風呂に行きました
そこの露天風呂からは錦帯橋が見えて景色がいいということでチョイスしました
ここでは,後輩にいたずらをしました
シャンプーをし終わった後に流すときに,横からシャンプーを足して流しても流してもシャンプーが落ちないいたずらをしました
しかし,シャンプーが思ったより飛ばなくてうまくいきませんでした
残念
でも,どうしても良心が痛んだので後で謝りました
あと,ここではまじめな話をしました
ロボ研の今後の在り方みたいなものを話しました
でも,ほとんど後輩同士で議論していたので頼もしい後輩だなぁと思って眺めていました
最後になぜか水切をしました
橋なので下に大きな川が流れていて,砂利の河原だったので水切しました
自分は意外と水切できたのでうれしかったのですが,翌日肩が痛くなっていました
運動不足を痛感しました
今までふぐを食べたことがなかったので,ふぐのフルコースを食べました
ふぐ刺しにふぐのから揚げ,そしてふぐ鍋という贅沢三昧です
お酒も少し飲みながら,黙々とみんなで食べました
喋らなくなるぐらいおいしかったです
訪れたのは
観光はできませんでした
泊まったホテルから徒歩で行ける範囲でおいしそうなモーニングが食べれそうな所はどこだろうと探すとここが見つかりました
写真を撮るのを忘れていましたが,サンドイッチやパンケーキなど何種類かモーニングのセットがあって,サラダやデザートのヨーグルトなどもついて600円ぐらいでリーズナブルでおいしかったです
さすが,パン屋さんのモーニングでした
会場は結構広くて,ステージの裏にピットが併設されてるという贅沢なフィールドでした
一般客は2階に通されたのですが,地区大会なので満員になることは全くなくてだいぶ空いていました
決勝は呉A対呉Bという珍しい決勝でした
呉Bのホームセンターで買った植物の支柱を鞭のように振り回す風船の割り方は一番格好良かったです
夜,時間があったので晩飯行こうということで,運転手のリア充のおすすめの店に行きました
わざわざ,帰りの高速降りていく価値があるほどおいしいがあると言っていたのですが,確かにおいしかったです
カモのたたきが最高でした
大学生活で初めて後輩を巻き込んだ旅行に行きました
皆,満足してくれたかどうか心配ですが,自分的にはすべて予定通りにこなせたので結構満足できた旅行でした
移動中,さまざまな話をしました
ロボコンのことや,研究のこと,そして恋愛のこと
やっぱり,告白しとけばと良かったと話していて後悔しました
でも,今まで思っていて話せていなかったことを話せたのではないかと思います
また,来年行きたいな
うまくいったけどこれでいいのか・・・・・?
pointcloud_to_laserはできました
launchファイルにパラメータをしっかり設定すれば動きました
デフォルトの値は設定されてるはずですが,そのままではなぜか動きませんでした
ただ,これをやっている最中に思ったのですが,このままlaserに変換して位置推定に使っても,自己位置推定出来ないんじゃないのか・・・
でも,このデータをマージする方法は他にも使えるのでやった意味はあると思います
次は,複数台のセットアップのやり直しです
最初にできたはずなのに,OSが一度壊れたので再セットアップです
TSUTAYAにCD借りに行って,お金を引き出して,泊まる準備しないと
うまくいきません
ROSでURGのデータをPointCloudに展開し,その後座標変換を行うことまでできました
しかし,pointcloud_to_laserscanのノードがうまく働きません
pointcloud_to_laserscan - ROS Wiki
やっぱり,2次元のデータはこの方法ではできないのかなぁ
もしくは,色々パラメータ設定できるところがあるのでそこをいじれば何とかできるのだろうか?
もしくは,Pointcloudのデータ構造が悪いのだろうか
でも,rvizのデバックには問題なさそうだしなぁ
こんなことを毎日してるとしんどいです
でも,今日担当の先生と話してて思ったのですが意外と研究でロボットを触れる時間が2年もないことに気づいたので,頑張らないとなぁと思います
今日はできたとこまでのLaunchファイルを作って寝ます
gitってなんか難しい・・・・
gitで学校と家のPCで全部のソースコードを管理しようとしたのですが,失敗しました
ROSのCMakefileが学校にあるプログラムに依存してるところがあって,家でコンパイルが通らなくなってしました
なので,自分に必要なデータだけgitで管理しようと思います
また,gitのリポジトリ作んないと・・・・
あと,ROSのオープンソース性がアダになったことが今日あって,今までコンパイルが通っていたソースコードが通らなくなってしまいました
よく見ると,これもCMakefileが少し変わっていました
意外とROSってめんどくさいなぁ・・・・・・
今週はいろいろ滞ってる部分があるのでがんばります
三連休なんかありませんでした
土曜日にflumpoolのコンサートに行ったあと,家でひたすらROSをいじっていました
日曜日にできたのは,ROSのtfが更新されるとすぐに呼び出されるコールバック関数を書けたこと,機体の座標軸間の距離を取得できるようになったこと
月曜日にできたのは,gitによるpushとlaserのデータを(x,y)座標に変換
ぐらいです
また,新しく問題も出てきてやっぱりラズパイに入れたOSが時間経過でぶっ壊れることです
家にあるSDカードの中のOSが壊れていました
wlan0を見つけることができなくて,これが見つけられないとSSH接続ができないのでUbuntuMateでやってみようと思います
gitでpush
gitにpushした時に誰がしたかわかるためのもの
git config --global user.name "name"
git config --global user.email "mail_address"
catkin_wsの場所で
gitの初期化
git init
pushしないものを選択
vim .gitignore
build/
devel/
.catkin_workspace
を書く
pushするものを選択
[全部]
git add .
[/srcだけ]
git add src/
commitする
git commit -m "コメント"
url先のリポジトリを固有の名前で管理
git remote add <name> <url>
ssh鍵を入手
ssh-keygen -t rsa -C "mail_address"
一番上の項目だけ名前を設定するほうがわかりやすい
ssh鍵を表示
cat "name".pub
gitにpushする
git push -u 固有名 master