LoginSignup
711

More than 1 year has passed since last update.

ROS講座00 目次

Last updated at Posted at 2018-05-02

数字は書いた順です。
kinetic->melodic->noetic移行中です。
記事中のコードは参考までに、github上のコードも参照してください。
(食い違いがあったらコメントで教えてください)

イントロダクション

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 カスタムROSメッセージ
自作のROS型の定義の仕方、使い方について解説します。

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

可視化編(Rvizモデル表示)

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

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

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

68 xacroを使う1
urdfをプログラマブルに記述するxacroの基本的な書式を説明します。

73 xacroを使う2
xacroのマクロなどの使い方を説明します。

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

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

17 tf-2:broadcast、listen
ROSノードからtfをbroadcast、listenする方法を説明します。

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

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

python編

31 python基礎
基礎的なpythonでのrosノードの記述を解説します。

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

113 smachでタスクを実行する
smachの状態遷移を使いながらtaskを実行します。

Gazeboシミュレーション

シミュレーション基礎編

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

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

35 車輪ロボットをシミュレーションする
Gazeboシミュレーションで車輪ロボットを出現され、プラグインを使って動かします。

33 車輪ロボットをrvizで表示
車輪ロボットをRvizで表示します。

133 車輪ロボットの位置をRvizに取り出して表示
Gazebo上の位置をRvizに取り出して表示します。

87 gazeboワールドを明るくする
Gazeboの明るさの設定を行います。

90 gazeboモデルでメッシュを使う、テクスチャを使う
gazeboモデルでメッシュ(stlファイル)とテクスチャを使う方法を説明します。

urdf連携編

26 urdfモデルをGazeboに出現させる
urdfで記述したモデルをGazeboシミュレーションで出現させる方法を説明します。

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

39 車輪ロボットをros_controlで動かす
車輪ロボットをros_controlを使って動かします。

40 車輪ロボット位置を取得・ros_control経由で関節角度を取得
Gazebo上のモデルの位置をtfに取り込みRvizで表示します。

シミュレーション発展編

134 Gazeboで周囲に物を置く
ModelDatabaseのGazeboモデルを使ったり、一定の範囲に複数配置する方法を説明します。

42 GazeboでLidar、Rangeセンサーのシミュレーションをする
GazeboでlidarやRangeセンサーのシミュレーションをします。

45 GazeboでIMUのシミュレーションをする
GazeboでIMUのシミュレーションをします。

67 Gazeboでカメラのシミュレーションをする
カラーカメラ・深度カメラのシミュレーションをします。

106 GazeboのModelPluginを作る
自作のGazebo Modelプラグイン書き方、SDFファイルでの使い方を説明します。

オムニホイールシミュレーション編

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

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

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

89 オムニホイールのシミュレーション4(サスペンションを作る)
シミュレーションを安定化させるためにサスペンションを追加します。

88 オムニホイールの簡易シミュレーション
物体を速度指示通りに動かすplanar_moveプラグインを使います。

上級

発展編

43 rosparamを使う1
起動時パラメーターとして使われるrosparamの使い方を説明します。

78 rosparamを使う2
辞書型、リスト型のrosparamをROSノードで読みます。

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

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

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

95 actionlibを使う
actionlibを使って通信をします。

76 ROSノードの分類とmessage_filter
入出力の方法によってROSノードを3つに分類して書き方を説明します。

30 3次元の角度の表記と相互変換
3次元の姿勢の表し方とその変換の仕方、ROSで位置姿勢を表す型について解説します。

情報表示編(rviz, etc)

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

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

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

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

プラグイン編

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

74 twistを送るrviz panel pluginを作る
twistをpublishするrvizのpanel pluginを製作します。

102 Pointを送信するrviz tool pluginを作る
toolタイプのrviz pluginを制作します。

111 Pointを受信するrviz display pluginを作る
displayタイプのrviz pluginを制作します。

118 overlayで表示するのrviz display plugindを作る
Rvizの画面上にOverlayで表示するpluginを製作します。

84 Nodeletを使う
rosメッセージの通信を高速に実行するための方式であるnodeletについて記述します。

ネットワーク編

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

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

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

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

110 ROSでntpをする
ROSのトピック経由で時刻設定をする方法を説明します。

75 gazevo serverを別マシンに分ける
処理の重いgzserverだけを別マシンで実行する方法を説明します。

開発環境編

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

64 ROSパッケージのディレクトリ構成
ROSのディレクトリ構成を見ます。

97 CMakeList.txtとpackage.xmlの書き方
ビルド・依存情報を記述するCMakelist.txtとpackage.xmlの書き方についてまとめます。

98 CIでビルドチェックをする
git pushするたびに自動でビルドチェックを行うように設定します。

99 エラーと対策
ROSでよく見かけるエラーの原因についてリストアップします。

127 rosdepを使う
rosdepを使ってシステムの依存関係を解決します。

個別要素

カメラ編

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

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

66 カメラのキャリブレーションを行う
カメラの歪みを測定して修正するキャリブレーションを行います。

119 カメラ画像の色を補正する
カメラ画像の色を校正するためのツールを作ります。

120 WebCameraのパラメーターを指定して起動する
libuvc_cameraというpkgを使って詳細な設定をしてカメラを起動します。

83 camera_infoをセットするノード
camera_infoをrosparam経由でセットするノードを製作します。

77 画像処理用の環境構築を行う
画像処理を行うためのシミュレーション環境を製作して、簡単な画像処理を行います。

79 画像処理でコーラ缶を検知する
画像処理で赤いコーラ缶を検出します。

80 compressedイメージをOpenCVで読む
compressed型の画像を直接読み込むpythonノードを書きます。

85 カメラ上に投影するimage_geometryを使う
3D位置とカメラ上の位置を変換します。

132 CameraInfoを理解する
ROSにてカメラ画像の特性を示すCameraInfoの値について解説します。

LIDAR編

93 laser_filterを使う
scanデータを領域でフィルタリングします。

82 obstacle_detectorを使う
lidarの/scanから障害物を検出するROSパッケージを使用します。

130 laserでマーカーを認識する
scanデータから特徴点抽出、テンプレートとのマッチングをしてマーカー認識します。

65 YDLIDARを使う
安価な360度LIDARであるYDLIDARを使います。

アーム編

100 Moveitでサンプルを動かす
crane_plug_armでmoveitのサンプルを動かしてみます。

103 armロボットのsim環境を作る
ロボットアームのシミュレーションをするための環境を構築します。

104 moveitでオリジナルのアームを使う
moveitをオリジナルのアームに適用して、指令をプログラムから送る方法を説明します。

109 逆運動学を解く
4軸のアームを例に逆運動学を解析的に解きます。

Navigation編

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

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

91 Laserでmap位置を推定する
LIDARを使った位置推定を導入します。

92 move_baseで移動する
move_baseを使って指示した場所にロボットを移動させます。

115 costmapの設定を書く
costmapのパラメーターの設定方法について詳細を解説します。

116 navigationを実装する
move_baseと同様の機能を持つノードを実装します。

112 不明領域を探索する
不明領域を抽出してmove_baseに指令するexplore_liteを使います。

126 最適化計算をする
CppAdとipoptを使って最適化計算をします。

128 BehaviorTreeを使う
behavior treeを使ってロボットの行動を記述・制御します。

ハードウェア編

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

46 ROSでarduinoを使う
ROSで使うためにCLIで使う方法、rosserialで通信する方法を説明します。

81 IMU(GY-955)を使う
IMUを接続して姿勢データを取り出します。

96 カスタムmbedでrosserial+platformioを使う
lpc1768のカスタムボードを作る、platformioでコンパイルする、lpc21ispで書き込む、rosserialを使うの4項目を説明します。

105 toioをROSで操作する
toioをROSに接続して動かします。

131 ArdupilotとROS経由で接続する
Rover製作編でつくたRoverをROSとつなぎます。

UI

Qt編

69 Qtを使う1(ビルドの設定)
GUIの作成ツールであるQtをcatkin_makeする設定を説明します。

70 Qtを使う2(Layout、SIGANAL・SLOT)
QtのLayoutとSIGNAL・SLOTの使い方を説明します。

71 Qtを使う3(classの作成)
Qtのクラスを製作します。

94 Qtでpub・subする
QtとROSを組み合わせてPub、Subするノードを作成します。

72 Qtでタッチパッドを作る
Qtでタッチパッドとして使えるWidgetを作ります。

101 ogreで3D描画をする
ogreライブライを使って3Dビューの中でオブジェクトを描画します。

117 QtQuick(qml)を使う
QtQuickを使ってGUIを生成し、それでROSの通信をします。

Web編

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

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

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

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

47 GamePadをブラウザで使う
GamePadをWeb経由でROSと接続します。

107 rosblidgeのclientを作る
rosbridge_serverにpythonから接続します。

108 ROSでDatabase(mongo)を使う
rosでmongodbを使う方法を説明します。

114 DataBaseで画像を扱いブラウザからアクセスする
base64へのエンコードを用いてblowserでmongodbに保存した画像を表示します。

アプリ編

121 rosbridge経由でpub/subをする
rostopicをjson形式に変換して、rosbridgeを経由してroscppを使わずにpub-subをを行います。

122 mjpeg_streamを受信する
c++のプログラムでカメラ画像のストリーミングを受信します。

Unity編

129 Unityプロジェクトをgit管理する
まずはUnityプロジェクトをgitで扱ってみます。

123 UnityでROSと通信する
ROS#を使ってUnityとROSをつなげます。

124 Unityアプリを整える・androidで使う
Androidでロボットを操作するアプリを作ります。

125 Unity-ROS#でカスタムmsgを使う
独自に定義したROS型をROS#で使用する方法を説明します。

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

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

ソフトウェア

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

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

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

04 USBシリアル変換のデバイス名を対応させる
USBシリアル変換で各々のデバイスをudevで認識する方法を説明します。

モーター制御

05 モーターの技術
モーター制御に使われる技術や部品を紹介します。

06 モーター関連部品の選定
モーター関連の部品をピックアップします。

07 モーターを速度制御する
Arduinoを使ってモーターの速度制御をしてみます。

Rover製作

室内移動ロボットの実機を作っていきます。

01 スペックの設計をする
ロボットのサイズを決めるために必要な事項を検討します。

02 必要なものをそろえる
この先で必要な購入品の一覧を乗せます。

03 MissionPlannerでardupilotと接続・アップデートする
pixhawkにardupilotを書き込みます。

04 XBeeで接続する
XBeeを使って無線でPC-Pixhawkを接続します。

05 センサー・プロポの初期設定をする
センサーのキャリブレーションやプロポの接続をします。

09 外付けデバイスの設定をする
外付けデバイス系の設定します。

06 モーターの接続・設定をする
電源・モーター周りの接続・設定をします。

07 筐体を組み立てる
筐体を組み立てて走行可能な状態にします。

08 自己位置の設定・速度制御の設定をする
速度制御を行うACROモードで移動できるように設定します。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
711