りさーちゃーのたまご -2ページ目

りさーちゃーのたまご

研究者になり損ねた社会人のつれづれ日記です。へっぽこソフトしかかけないけど、社会人研究職を目指します。
適当なソフト、語学(英語、中国語)、マラソン、旅行、ときどき小言。

【はじめに】
とりあえずROSのプログラムをC++で実装したりできるようになった.
だが,まだ大きな問題がある.開発環境だ.

しばらくvimで頑張ってみたが,やはり私にはIDEが必要である.
CUIでちゃちゃっとやりたいときは確かに便利だけど,プロジェクト全体を見渡したり
相互参照するにはIDEが圧倒的に便利.

そんなのvimのプラグインでやればいいじゃん,なんですが,どうもあの世界は私の肌には合わない.
なんでちょっと設定追加するだけであんなに苦労せないかんのだ笑.

目的に応じて最適化されたツールを使い分けて効率的に開発することを,私は悪いとは思わない考えをもっているので,もうIDEを入れようと思う.

【IDEの選定】
ちょっと調べたが,QtCreatorに決定.
CMakeListsに対応しているので,ツール向けに余計な設定をしなくても導入ができるっぽい.
ROSワークスペースに変な影響を与えたくないので,これにした.

【QtCreatorの導入手順】
※初版で書いた内容が余りにもひどいので,改版した.色々試したら問題だらけでした汗.
この動画が大変役に立った...本当に助かった.
How to open ROS package by qtcreator


■インストール
・Ubuntu 標準のソフトウェアセンターで"QtCreator"で検索して,インストールする.
※実はこのあとインストーラでver. 3.4を入れ直した.ソフトウェアセンターのバージョンver. 3.1と古く,しかもプロジェクトを再起動すると開けないというバグがあった.それに,上記動画サイトと同じ画面で設定できる.下記はver. 3.1の時のあがきの遺産なので,じきメンテします.


■ROSワークスペースのビルド
○初めにコマンドラインからROSのワークスペースをcatkin_makeしておく必要があります.QtCreatorは一からやってくれません.

○catkin_make と,その中身の挙動についてはROS wikiを参照.
 ROS.org - catkinTutorialsusing_a_workspace

○上記サイトにしたがって,勉強がてらcatkin_makeを使わずにビルドしてみました.
 すると,
 ・~/catkin_ws/devel
 に実行ファイルなど色々と出力されます.

ここまで一回手動でやっておく必要があります.
そうしないで初めからQtCreatorでやろうとすると,実行時に以下のパスを見に行こうとします.
 ・~/catkin_ws/build/devel
んなディレクトリねーよ!相当ハマりましたw.ツールからは設定しようがありませんでした.
カレントディレクトリで整合性が取れないためにこうなります.ROSでは,catkin_makeを~/catkin_ws で行いますが,下記のツール設定でビルドするとどうしても~/catkin_ws/buildになってしまいます.後述しますが,まずはROSのワークスペースでビルド,その後QtCreatorでプロジェクトを開く.を死守する必要があります!何度ハマったことか….


QtCreatorを設定
○立ち上げたら右上のOpen Projectを選択します.

Qt初期


○ROS パッケージのCMakeLists.txt を選択する.
~/catkin_ws/src/パッケージ名/CMakeLists.txt あたりになるはず.

Qt選択


○プロジェクト設定の"Default欄"を以下のディレクトリに変更するし,"Configure Project"を選択.
/home/ユーザ/catkin_ws/build

Qt初期設定

何やら色々な処理が始まる.無事に終わればプロジェクトが開く.
ツリー表示のルートが"Project"であればOK.

Qtプロジェクト初期

ここが特定のワークスペース名の場合,手動catkin_makeからやり直したほうがいい.何か間違えている可能性あり.build, develフォルダを削除して,ワークスペース直下でcatkin_makeをした後に,QtCreatorからプロジェクトを選択しなおしてみること.


○ビルド,実行の設定
左側のメニューから"Projects"選択.

 ◆ビルド
 CMakeの項目だけ確認.下記のようになっていること.
  ・CMakeDirectory: /home/ユーザ名/catin_ws/build
  ・Cmake aruguments: ../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_PREFIX=../devel -DCMAKE_BUILD_TYPE=Debug .

QtBuild設定


 ◆実行
 上部DesktopのRunを選択.Runの項目だけ確認.
  ・Arguments: お好きにどうぞ.私の場合はROS Parameter でTopic名を変えたかった.
  ・Working directory: /home/ユーザ名/catin_ws/devel/lib/ワークスペース名
  ※これは間違えないこと.

QtRun設定


【ビルド】

Ctrl+bでパッケージのビルド.

その後コンソールから
$ rosrun ビルドしたパッケージ名 ノード名
で実行したら,ちゃんと動いている.タイムスタンプも新しくなっている.

【おわりに】
最初これでいいじゃね?って思って書いた方法だ全然ダメだった.
そこから相当ハマって,ようやく正規の方法にたどり着く.

自動補完,デバッグ,相互参照もバッチシ.これで快適にROSの開発ができる!
【はじめに】
最近のロボット屋さんのトレンドとして,ROSが挙げられます.
私もとても強い興味を持っていたのですが,なかなか腰を据えて勉強できていませんでした.
そんなときに発売された,「ROSではじめる ロボットプログラミング」の本!キタコレ!

ということで,読破しました.素晴らしい書籍です.かなり丁寧に解説されているので,よどみなく読破できました.
で,この本で学んだことをベースにPS3コントローラでRoombaを制御しました.

Roombaの制御のところはちょっと忘れちゃいそうなのでメモを残しておこうと,そういうことです.
参考にさせていただいたのは,下記のサイトです.感謝です.
roombaをROSのコマンドで動かしてみる
RoombaのROSドライバをソースからビルドして使ってみる

【Roombaドライバのインストール】
○ダウンロード
次のサイトからドライバをダウンロードします.
http://arkapravo.github.io/roomba_500_ROS_drivers/

○格納
次のフォルダに展開します
~/catkin_ws/src/roomba_500_ROS_drivers

○インストール
ダウンロードで参照したサイトに従ってインストールします.
$ rosmake cereal_port
$ rosmake roomba_500_series

【動作】
○接続確認
PCとルンバをシリアルケーブルで接続します.
上記サイトに従ってUSBシリアル通信を確認します.
dmsg | grep tty
もし繋がっていなければ,下記コマンドでアクセス権を取得する.
sudo chmod a+rw /dev/ttyUSB0

○ノード起動
当方には roomba521 があるので,下記コマンドを実行する.
$ rosrun roomba_500_series roomba500_light_node

○速度指令トピックに指令値をパブリッシュ
roomba500_light_nodeの速度指令トピック名:cmd_vel
同じく型:geometry_msgs/Twist
$ rostopic pub -1 cmd_vel geometry_msgs/Twist '[0, 0, 0]' '[0, 0, 0.1]' && rostopic pub -1 cmd_vel geometry_msgs/Twist '[0, 0, 0]' '[0, 0, 0]'
これで旋回するはずです.

【おわりに】
あとは,好きなノードでcmd_velにパブリッシュしてしまえばよいわけです.
私はとりあえずPS3無線コントローラで動かして遊んでみました.
https://youtu.be/JM5vpHZsusA

次は画像処理ライブラリ作成だな.
【はじめに】
Vimで挿入モード中に日本語で入力が終わり、ノーマルモードに移行したあとに日本語入力が引き継がれていてアボーンはよくある話だろう。
単純に、ノーマルモード移行時に必ずIMEオフにしてくれるような.vimrc の設定を探したが、Ubuntuではない!

ということで、スクリプトを書いて対策している方のブログを参考にやってみました。

【手順】

Vimで強制的にIMをオフにする @Ubuntu
概ね、この通りです。
ただし、私の環境ではIMシステムが違うのと、ホットキー設定の方法が記載されていないので、ちと補足。
○IMの設定
 検索→システム設定→言語サポート→キーボード入力に使うIMシステム→fctix を選択
 その後OSを再起動
○ホットキー(IMEオフ)の設定
 OSツールバー右上のキーボードのマークをクリック→入力メソッド→Mozcを選択
 再度キーボードマークをクリック→現在の入力メソッドの設定→全体の設定→下方の「拡張オプションの表示」を選択→入力メソッドをオフにでCtrl+Shift+Space に指定する。
※実は、これで相当ハマった。調べてもみんな当たり前のように設定しているのだが、私にはどのウィンドウを開けばいいのかさっぱりで相当試行錯誤した…。

これだけやっておけば、確かにノーマルモード移行時にIMがオフになったことを確認した。

【終わりに】
本質的ではないところで、また無意味にハマった。おかげでVimでのスクリプト記述方法がわかったので、よしとしておく。