RoboticsとC++
@OTL
自己紹介
名前: OTL
Twitter: @OTL
Blog: http://ros-robot.blogspot.jp/
GitHub: http://github.com/OTL
Robot屋です。
内容
● 自己紹介を兼ねた趣味のロボットと言語
● RoboticsとC++
● 真面目なロボットのC++使用例
● 個人的C++イメージ
2015年
Python
2013年
C++
2012年
Java / Python
2009年
Objective-C
ロボットはいろんな言語を使
う
Python/C++/Java/Objective-C
RoboticsとC++の話
組み込み系世界
制御
C言語、Matlab
マイコン
知能系世界
認識・学習・計画・制御
C/C++、Python、
Lisp、、、、
PC
ロボット界には2つの世界がある。
知能系では計算効率のよい高級言語であるC++は人気
実際につかわれている例
● ミドルウェア
o ROS
o OpenRTM-aist
● OpenCV
● PCL
ROS(Robot Operating System)
米国のベンチャーが作ったロボット用OS(コンピュータ
用OSの上で走るミドルウェア)。(BSDライセンス)
http://ros.org/
言語非依存の分散環境やGUIなどのツール群などを提供
デフォルトサポート言語: C++、Python、Lisp
ROS(Robot Operating System)
Publisher:
main() {
ros::NodeHandle node;
ros::Publisher pub = node.advertise<std_msgs::String>(“/topic”, 1);
std_msgs::String msg;
pub.publish(msg);
}
ROS(Robot Operating System)
Subscriber:
void callback(const std_msgs::String &msg) {
/* do something */
}
main () {
ros::NodeHandle node;
ros::Subscriber sub = node.subscribe(“/topic”, 1, &callback);
}
ROSのC++11/14への対応状況
ロボット界ではC++11/14への対応への関心は薄そうなイメージ。C++03が主流。
こんな感じにしたいが・・・
main() {
ros::NodeHandle node;
auto sub = node.Subscriber(“/topic”, 1, [] (const std_msgs::String& msg)
{
/* do something */
});
}
OpenRTM-aist
国産のROSみたいなもの(むしろこちらが元
祖)
C++, Python, Javaをサポート
http://www.openrtm.org/
Robot用ライブラリ
OpenCV:
Intelが作った画像処理ライブラリ
C++とPython
PCL(PointCloudLibrary):
Kinectなどの3次元センサからのデータを処理するライブ
ラリ
C++のみ
http://pointclouds.org/
初心者的なC++イメージ
● C++のよいところ
o GCがない (cf. java)
o 効率がよい (cf. python)
o ライブラリ多い (cf. lisp)
初心者的なC++イメージ
● 初心者的C++への不満
o (テンプレートの)コンパイルが遅い
o ヘッダファイル書くのめんどい
o むつかしすぎ(べからず集が多すぎ
解決方法あれば教えてください!
以上です

RoboticsとC++@歌舞伎座.tech#8「C++初心者会」