C++
ROS
ロボット

ROS講座00 目次

数字は書いた順です。

初めに

01 概要
ROSのメリット、デメリット、ユースケースについて説明します。

02 インストール
UbuntuのインストールからROSのインストールまで説明します。

11 gitリポジトリ
この講座の中のサンプルプログラムが入っているgitリポジトリです。

基礎編

03 Pub & Sub 通信
C++でROSノードを作成し、ビルドし、実行します。

04 roslaunch
roslaunchを使用して簡単にROSノードを実行します。

19 roslaunch2
roslaunchのrename、remap、arg、paramについて解説します。

05 ros tool
ROSのデバッグのためのROSのツールを解説します。

06 ROS Logger
ROSのprintfシステムであloggerを解説します。

07 joyプログラム
joyスティックを用いてturtle_simの「亀」を動かすプログラムを作成します。

08 pub & sub 遅延測定
Pub & Sub通信の遅延を測定します。

41 ros timerで処理を行う
一定間隔で処理を行うのにメインループでなくtimerを使う方法を解説します。

09 ROSmsg(とarray型の使い方)
ROSメッセージの使い方について説明します。

10 カスタムmsg
自作のROS型の定義の仕方、使い方について解説します。

43 カスタムmsgを別のパッケージから使う
自作のROS型を、別のパッケージから参照する方法を説明します。

58 ROSのツール概要
ROSの各ツールの役割の概要を説明します。

可視化(Rviz)編

12 Rviz概要
ROSの可視化ソフトであるRvizで何ができるのかを解説します。

13 URDFを記述する1
ROSのロボット記述ファイルであるURDFを記述してRvizで表示します。

14 URDFを記述する2
URDFで様々な形のlinkや稼働するjointの記述の仕方を解説します。

34 stlファイルをrvizで表示する
単純な図形だけでなくstlファイルを使って複雑な形状を表示する方法を説明します。

15 tf概要
tfの概要について解説します。

16 joint_stateをpublishする
ROSノードからjoint_stateをpublishsる方法方法を解説します。

17 tfのbroadcast、listen (publish、sbscribe)
ROSノードからtfをbroadcast、subscribeする方法を説明します。

18 Rviz上で移動ロボットを作る
全方向移動の移動ロボットをRviz上でシミュレーションします。

23 jskプラグインでrviz上に情報を表示する1
Rviz上でTopicの表示をかっこよく表示するためのjskのプラグインを紹介します。

31 jskプラグインでrviz上に情報を表示する2
Rvizの3D画面上にmenuやtextを表示する方法を紹介します。

24 RvisにVisualizationMarkerを表示する
3Dウィンドウの中に直方体や矢印などのmarkerを表示する方法を解説します。

25 DiagnosticをRvizに表示する
ROSのエラー管理ツールであるdiagnosticsをRvizの画面上に表示します。

32 rqt_plotでリアルタイムでグラフ表示する
リアルタイムにグラフを表示する方法を説明します。

シミュレーション(gazebo)編

26 シミュレーターを作る
gazeboシミュレーションで単純な箱を出現させる方法を説明します。

27 gazeboでjointを動かす
ros_controlを使ってjointを動かします。

33 車輪ロボットを作る1(rvizで表示)
車輪ロボットをrvizで表示します。

35 車輪ロボットを作る2(物理シミュレーション)
車輪ロボットをgazebo上に出現させる方法を解説します。

39 車輪ロボットを作る3(diff_drive_controllerで動かす)
車輪ロボットをros_controlを使って動かします。

40 車輪ロボットを作る4(gazebo上で位置を取り込む)
gazebo上のモデルの位置をtfに取り込みます。

37 gazeboでworldを作成する
worldを設定してgazeboを起動する方法を説明します。

38 gazebo modelを作成する
gazebo用のmodelを作成する方法を説明します。

42 車輪ロボットを作る5(lidarのシミュレーション)
lidarをgazeboでシミュレーションします。

45 車輪ロボットを作る6(IMUのシミュレーション)
IMUのシミュレーションをします。

49 オムニホイールのシミュレーション1(オムニホイールのモデリング)
全方向移動台車のシミュレーションのためにまずはオムニホイールのモデリングをします。

50 オムニホイールのシミュレーション2(全方向台車のモデリング)
全方向移動台車をgazebo上に出現させます。

51 オムニホイールのシミュレーション3(コントローラーを作る)
全方向移動台車をtwistで動かします。

python編

55 pythonでrosbagを解析・可視化する
rosbagをmatplotlibを使ってグラフに描画します。

発展編

28 Dynamic Reconfigureを使う
動的にパラメーターの変更ができるツールであるDynamic Reconfigureを使ってみます。

29 rosbagを使う
rosの記録・再生ツールであるrosbagを使います。

30 3次元の角度の表記と相互変換
3次元の姿勢の表し方とその変換の仕方を解説します。

48 ROSの時間システム
ROSの2つの時間(ROS timeとWall time)を解説します。

54 VMWare上でROSを使う
VMwareを使うとwindowsマシンの上にubuntu環境を作り、そこでROSを起動できます。

プラグイン編

59 ROSにおけるpluginの書き方
pluginlibを用いたプラグインの書き方、使い方を解説します。

ネットワーク編

20 複数のPCでROS接続1
複数のPCを使ってROSを起動する方法を説明します。

21 複数のPCでROS接続1
複数のPC上でのROSノードを、roslaunchを使って一気に起動する方法を説明します。

22 リモートでロボットの電源を切る
ネットワーク越しにロボットのPCの電源を切る方法を説明します。

36 非インターネット環境でNTPをする
インターネットの無いクローズドな環境で、複数のマシンで時刻合わせをする方法を解説します。

Navigation編

60 Navgation用のシミュレーション環境
navigation stackを使うためのシミュレーションのロボット・環境の構築をします。

61 位置情報の統合
ロボットの位置を複数のセンサーを統合して得る処理を行います。

ハードウェア編

44 シリアル通信とROSをつなぐ
シリアルポートをROSで使う方法、シリアルが切れても再接続する方法を説明します。

46 コマンドラインでarduinoを使う
ROSとの親和性のために、IDEではなくてplatformioでCLIでarduinoを使う方法を説明します。

47 rosserialを使う
arduinoから直接ROSトピックを扱えるrosserialの使い方を解説します。

カメラ編

56 Webカメラの画像を表示する
Webカメラの画像をROSトピックとしてpublishして、それを表示します。

57 カメラ画像を圧縮して送信
ネットワーク越しに転送するために画像を圧縮、展開する方法を設枚します。

Web編

52 webサーバーを立てる
Webアプリを使うためにWebサーバーをROSで立てます。

53 ブラウザでpub subする
rosbridgeを経由してjavascriptでpubsubします。

62 Webカメラの画像をwebから見る
web経由でカメラ画像を見ます。

63 webでtwistを送る
javascriptを使ってマウス操作でtwistを送ります。

番外編(メカトロニクス講座)

ROSに関係はありませんが、ロボット製作にかかわるものを置いておきます。

ソフトウェア

01 gitコマンド
シチュエーション別にgitコマンドを書きます。

02 Arduino megaのPWMについて
arduino megaで多数のPWMを使うときの注意を書きます。

03 c++でudp通信をする方法
c++でudp通信をする方法を書きます。