SlideShare a Scribd company logo
1 of 92
Download to read offline
第一回 ROS勉強会@東京
2014年4月12日 
千葉工業大学 工学部 4年 
ロボット設計・制御研究室 前川大輝
目次
1.自己紹介
2.この勉強会について
3.ROSとは
4.ディストリビューション
5.ROSの歴史
6.通信の基本モデル
7.ROSのノードについて理解する
8.ROSのトピックを理解する
9.RVizで図形を可視化しよう
10.URDF
自己紹介
■ロボカップの開発チーム「CITBrains」のリーダー
 → ロボカップヒューマノイドリーグに参加
■ロボカップ
 → ロボットと人工知能の新たな標準問題
 → 「2050年までにヒューマノイドロボットで
ワールドカップ・チャンピオンに勝つ」
■ロボカップヒューマノイドリーグ
 → 人間以上の機能を制限
 → すべてのリーグの困難な要素を集約
 → 40近くの国や地域が参加
世界大会の様子
■ロボカップ 2013 世界大会(オランダ)
 KIDサイズ:3on3サッカー4位
 KIDサイズ:テクニカルチャレンジ1位
 TEENサイズ:3on3サッカー 準優勝
 TEENサイズ:テクニカルチャレンジ2位
■ロボカップ 2013 ジャパンオープン
 5連覇(殿堂入り)
■ロボカップ 2012 世界大会(メキシコ)
 KIDサイズ:ベストヒューマノイド(総合世界一)
 KIDサイズ:3on3サッカー 準優勝
 KIDサイズ:テクニカルチャレンジ1位
 TEENサイズ:3on3サッカー 準優勝
 TEENサイズ:テクニカルチャレンジ 2位
■教育用マイコンボードの開発プロジェクトのリーダー
 → 2011 ~ 2012年、ソフトウェアのライブラリ開発
■農場用メータの自動読み取り技術に関して
 企業と共同で開発中
■今年からつくばチャレンジにアドバイザとして参加
■OSSの活動にも積極的
日本Qtユーザー会、ROS JAPAN Users Groupに所属
自己紹介は以上
これから勉強会の話に移ります
この勉強会について
初心者にやさしい勉強会を目指す!
■開催目的
もっと多くの人にROSの魅力を伝えたい
■ポリシー
本日の勉強会の流れ
■13:50 ~ 15:50
ROSの概要解説(前川)
■16:00 ~ 17:30
ROS+Gazeboによるロボットシミュレーション入門(akio)
■17:40 ~ 18:20
Turtlebot2について(株式会社アールティ)
 
毎回登壇者を募集します
 紹介したい話題等をお持ちの方大歓迎です
みんなで作る勉強会
勉強会の資料はネットに公開予定
問い合わせ
(ROS JAPAN Users Group)
https://groups.google.com/group/ros-japan-users
Q : 何から勉強するの?
A : まずは本家のチュートリアルをこなしましょう
これを続けるかどうかは今日の様子次第
本家チュートリアル
初級
1.ROS環境のインストールとセットアップ
2.ROSのファイルシステムを学ぶ
3.ROSパッケージを作る
4.ROSのパッケージをビルドする
5.ROSのノードを理解する
6.ROSのトピックを理解する
7.ROSのサービスとパラメータを理解する
8.rqt_consoleとroslaunchを使う
9.ROSでrosedを使ってファイルを編集する
10.ROSのメッセージやサービスなどを作る
11.シンプルなパブリッシャとサブスクライバを書く
12.データを記録し、リプレイをする
中級
他のライブラリのチュートリアル
その他
初級
1.ROS環境のインストールとセットアップ
2.ROSのファイルシステムを学ぶ
3.ROSパッケージを作る
4.ROSのパッケージをビルドする
5.ROSのノードを理解する
6.ROSのトピックを理解する
7.ROSのサービスとパラメータを理解する
8.rqt_consoleとroslaunchを使う
9.ROSでrosedを使ってファイルを編集する
10.ROSのメッセージやサービスなどを作る
11.シンプルなパブリッシャとサブスクライバを書く
12.データを記録し、リプレイをする
中級
他のライブラリのチュートリアル
その他
本日の学習範囲
本家チュートリアル
ROS(Robot Operating System)とは
■オープンソースで提供されるロボット向けのメタ・オペレーティングシステム
■ロボット制御用のミドルウェア
 → ソースをコンパイルするためのビルドシステム
 → プロセス間通信のための通信ライブラリ
■ロボット工学分野の研究・開発におけるコードの”再利用”を
 支援することが目的
ROS = 通信 + ツール群 + 機能群 + エコシステム
ディストリビューション
■ー年周期のリリース(五月にIndigo)
■ーつのリリースの開発(現在はHydro)
■二つのリリースのサポート
ROSの歴史
■2007年 Stanford大学のAI Labが開発
■2008年 WillowGarageが開発を引き継ぎ
■2013年2月からOSRF(Open Source Robotics Foundation)が開発
通信の基本モデル
■ソフトウェアの単位: ノード
■ロボットのセンサやアクチュエータ等を別々のノードとして定義
 → それを組み合わせ分散システムを構築
Node A
Node B
Node C
■出版-購読型のメッセージング
■異なるプログラミング言語で記述されたノードでもやりとりが可能
Node A
Node C
Publish
Subscribe
Publish
TopicA
Publisher Publisher
Node B
Subscriber
■サービス (リモート関数呼び出し)
■利用側(多くはノード)からリクエストを受け取ると特定の処理を行うもの
Client Service
Arguments
Return Values
■パラメータ
■トピック以外のデータを送受信するための仕組み
■パラメータサーバがデータを保持
 → 他のノードからの変更は通知される
■マスター
■ノードやトピックの管理を行う
■roscoreというプロセスにより提供される
■パッケージ
■機能毎に分類されたノードやライブラリの単位のこと
■パッケージを管理するための便利なコマンドが多数提供されている
■ロボット用のオープンソースパッケージが多数公開されている
ROSのノードについて理解する
■ROSを使用する際に一番初めにroscoreを起動する
$ roscore
■rosrunを用いてパッケージに含まれるノードを起動
$ rosrun turtlesim turtlesim_node
■ノードの一覧を表示
$ rosnode list
/rosout
/turtlesim
Ctrl - Cでノードを停止
■リマップでコマンドラインから名前を変更
$ rosrun turtlesim turtlesim_node __name :=
my_turtle
rosnode list
/rosout
/my_turtle
■ノードが起動しているか確認
$ rosnode ping my_turtle
rosnode: node is [/my_turtle]
pinging /my_turtle with a timeout of 3.0s
xmlrpc reply from http://daikimaekawa-ThinkPad-X230:58887/
time=0.523806ms
xmlrpc reply from http://daikimaekawa-ThinkPad-X230:58887/
time=1.019001ms
xmlrpc reply from http://daikimaekawa-ThinkPad-X230:58887/
time=1.125097ms
ROSのトピックを理解する
■キーボードによる亀の操作
$ rosrun turtlesim turtle_teleop_key
■システムの進行状況・挙動を示すグラフの生成
$ rqt_graph
ROSのノードやトピックがハイライトされる
■rostopicはトピックの詳細を調べるコマンド
$ rostopic echo /turtle1/cmd_vel
linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 2.0
---
linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
■rostopicが /turtle1/cmd_velを購読していることを
 確認してみよう
$rqt_graph
■配信者と購読者が通信するためには同じ型のメッセージ
 を送受信する必要がある
■トピックの型は配信されるメッセージの型により定義される
■rostopicを使って簡単に調べることが可能
■配信-購読されているトピックとその型の情報を調べる
$ rostopic list -v
Published topics:
* /turtle1/color_sensor [turtlesim/Color] 1 publisher
* /turtle1/cmd_vel [geometry_msgs/Twist] 1 publisher
* /rosout [rosgraph_msgs/Log] 3 publishers
* /rosout_agg [rosgraph_msgs/Log] 1 publisher
* /turtle1/pose [turtlesim/Pose] 1 publisher
Subscribed topics:
* /turtle1/cmd_vel [geometry_msgs/Twist] 2 subscribers
* /rosout [rosgraph_msgs/Log] 1 subscriber
■rostopic typeで特定のトピックのメッセージ型を調べる
$ rostopic type /turtle1/cmd_vel
geometry_msgs/Twist
■rosmsgを使用してメッセージの詳細を調べる
$ rosmsg show geometry_msgs/Twist
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z
■rostopic pubはトピックへデータを配信します
■turtlesimを直線速度2.0, 角速度1.8で移動させる
$ rostopic pub -1
/turtle1/cmd_vel
geometry_msgs/Twist
-- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
rostopic pub [topic] [msg_type] [args]
■亀は動き続けるために定期的な1Hzのコマンドが必要
$ rostopic pub
/turtle1/cmd_vel geometry_msgs/Twist -r 1
-- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
■何が起こっているかはrqt_graphでも可視化できる
■rostopic pub node と rostopic echo nodeが通信
$ rqt_graph
■rostopic hzは配信されたデータの更新頻度を調べる
■/turtle1/poseを購読して, turtlesim_nodeの速さがど
 の程度か見てみよう
$ rostopic hz /turtle1/pose
subscribed to [/turtle1/pose]
average rate: 62.489
min: 0.016s max: 0.016s std dev: 0.00011s window: 62
average rate: 62.491
min: 0.016s max: 0.016s std dev: 0.00009s window: 125
average rate: 62.496
min: 0.016s max: 0.016s std dev: 0.00009s window: 187
データの更新頻度は60Hz
■コマンドを組み合わせて便利に使える
■rostopic type と rosmsg showを結合して使ってみよう
 → 普通にパイプが使える
$ rostopic type /turtle1/cmd_vel | rosmsg show
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z
■rqt_plotはトピックで配信されている
データの時間図を表示する
$ rqt_plot 任意のトピックを追加
■/turtle1/pose/xと/turtle1/pose/yを可視化
■-ボタンで非表示にできる
■/turtle1/pose/thetaを追加
■rosservice listでアクティブなサービスの情報を表示
$ rosservice list
/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/spawn
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level
■rosservice type でサービスの型を表示します
$ rosservice type clear
std_srvs/Empty
リクエストの作成にデータを送らない
レスポンスの受け取りにデータを受け取らない
■rosservice callでサービスを呼び出す
■turtlesimをクリアしよう
$ rosservice call clear
■サービスが引数をとる場合を考えましょう
■spawnサービスは新しい亀を誕生させる
$ rosservice type spawn | rossrv show
float32 x
float32 y
float32 theta
string name
---
string name
■位置と向きを与えて新しい亀を誕生させよう
 → 名前の指定は任意
$ rosservice call spawn 2 2 0.2 “”
name: turtle2
作成した亀の名前を返す
■rosparamはROSパラメータサーバを用いてデータの
 蓄積や操作を実現
$ rosparam list
/background_b
/background_g
/background_r
/rosdistro
/roslaunch/uris/host_daikimaekawa_thinkpad_x230__57324
/rosversion
/run_id
■rosparam setでパラメータの値を変える
$ rosparam set /background_r 255
$ rosservice call clear
■rosparam getでパラメータの値を取得する
$ rosparam get /background_r
255
■全てのパラメータサーバの中身を見る
$ rosparam get /
background_b: 255
background_g: 86
background_r: 255
rosdistro: 'hydro
'
roslaunch:
uris: {host_daikimaekawa_thinkpad_x230__57324:
'http://daikimaekawa-ThinkPad-X230:57324/'}
rosversion: '1.10.2
'
run_id: 2ec6f1ae-be3f-11e3-986c-b8763fd266b5
■全てのパラメータをファイルに書き出す
$ rosparam dump params.yaml
■yamlファイルをcopyというネームスペース
の中に読み込む
$ rosparam load params.yaml copy
■rosparam getで中身を確認する
$ rosparam get copy/background_b
255
RVizで図形を可視化しよう
■通信システムを大まかに理解するためのサンプル
■RVizでデータを3次元マップ上に可視化
■トピックを送信するプログラムを書いてみよう
■ROSのワークスペースを作成(catkin)
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace
$ cd ~/catkin_ws
$ catkin_make
$ echo “source ~/catkin_ws/devel/setup.bash”
>> ~/.bashrc
$ source ~/.bashrc
■パッケージ作成
$ cd ~/catkin_ws/src
$ catkin_create_pkg marker_publisher roscpp
visualization_msgs
■ノードを作成
$ roscd marker_publisher/src
$ vi marker_publisher.cpp
■使用するヘッダファイルのインクルード
#include <cmath>
#include <ros/ros.h>
#include <visualization_msgs/Marker.h>
■初期設定
#define DEFAULT_RATE 20
int main(int argc, char *argv[]){
ros::init(argc, argv, “test”);
ros::NodeHandle n;
ros::Publisher marker_pub =
n.advertise<visualization_msgs::Marker>(“visualiz
ation_marker”, 10);
・・・
}
■初期設定
int main(int argc, char *argv[]){
・・・
 visualization_msgs::Marker line_strip;
line_strip.header.farme_id = “practice”;
line_strip.ns = “practice”;
line_strip.id = 1;
line_strip.type =
visualization_msgs::Marker::LINE_STRIP;
line_strip.action =
visualization_msgs::Marker::ADD;
・・・
}
■初期設定
int main(int argc, char *argv[]){
・・・
 line_strip.scale.x = 0.1;
line_strip.color.b = 1.0;
line_strip.color.a = 1.0;
float phai = 0.0;
n.setParam(“/rate”, DEFAULT_RATE);
・・・
}
■図形を作成
int main(int argc, char *argv[]){
・・・
for(int i=0; i <= 10; i++){
const float radius = i % 2 ? 6.0 : 3.0;
const float theta =
(72.0 * (i/2) + (i%2) * 36.0) * M_PI / 180.0;
geometry_msgs::Point vertex;
vertex.x = radius * cos(theta);
vertex.y = radius * sin(theta);
line_strip.points.push_back(vertex);
}
・・・
}
■図形の回転
int main(int argc, char *argv[]){
・・・
 while(ros::ok()){
int val = DEFAULT_RATE;
if(n.getParam(“/rate”, val)){
std::cout << “val = ” << val << std::endl;
}
ros::Rate r(val);
line_strip.header.stamp = ros::Time::now();
line_strip.pose.orientation.z = sin(phai / 2);
line_strip.pose.orientation.w = cos(phai / 2);
・・・
}
return 0;
}
■図形の回転
while(ros::ok){
・・・
 marker_pub.publish(line_strip);
phai += 0.05;
if(phai > 2 * M_PI) phai -= 2 * M_PI;
r.sleep();
}
■CMakeLists.txtを編集
$ rosed marker_publisher CMakeLists.txt
■CMakeLists.txtを編集
・・・
add_executable(marker_publisher_node
src/marker_publisher.cpp
)
target_link_libraries(marker_publisher_node
${catkin_LIBRARIES}
)
・・・
■パッケージをビルド
$ cd ~/catkin_ws
$ catkin_make
■ノードを起動
$ rosrun marker_publisher marker_publisher_node
■rostopic echoでframe_idを確認
$ rostopic echo /visualization_marker
・・・
 frame_id: practice
 ・・・
line_strip.header.frame_id = “practice”
■rvizで図形を可視化
■rqt_graphでノード間通信を可視化
$ rqt_graph
■図形の回転速度を変更
$ rosparam set /rate 100
■rosbagでトピックを記録
$ rosbag record /visualization_marker
■marker_publisher_nodeを停止
$ Ctrl - C
■rosbagでバグファイルを再生
$ rosbag play *.bag
rosbagはデバックの強い味方
URDF(Unified Robot Description
Format)
■ロボットシミュレーションへの繋ぎ
■XMLフォーマットのロボットモデルの記述
■urdf_tutorial.xmlに記述
$ vi urdf_tutorial.xml
<robot name=”test_robot”>
<link name=”link1” />
<link name=”link2” />
<link name=”link3” />
<link name=”link4” />
<link name=”world” />
</robot>
?
リンク間の関係を定義する
<robot name=”test_robot”>
・・・
<joint name=”joint1” type=”continuous”>
<parent link=”world”/>
<child link=”link1”/>
</joint>
<joint name=”joint2” type=”continuous”>
<parent link=”link1”/>
<child link=”link2”/>
</joint>
 ・・・
</robot>
<robot name=”test_robot”>
・・・
<joint name=”joint3” type=”continuous”>
<parent link=”link1”/>
<child link=”link3”/>
</joint>
<joint name=”joint4” type=”continuous”>
<parent link=”link3”/>
<child link=”link4”/>
</joint>
</robot>
■パース可能なのかを確認
$ check_urdf urdf_tutorial.xml
robot name is: test_robot
---------- Successfully Parsed XML ---------------
root Link: world has 1 child(ren)
child(1): link1
child(1): link2
child(2): link3
child(1): link4
■空間を追加
■<origin>でリンクの参照フレームから
 子供のジョイントまでのオフセットを与える
 → 位置のオフセットxyz
 → 姿勢のオフセットrpy
■空間を追加
・・・
<joint name=”joint1” type=“continuous”>
<parent link=”world”/>
<child link=”link1”/>
<origin xyz=”5 0 0” rpy=”0 0 3.14”/>
</joint>
<joint name=”joint2” type=“continuous”>
<parent link=”link1”/>
<child link=”link2”/>
<origin xyz=”5 2 0” rpy=”0 0 3.14”/>
</joint>
・・・
■空間を追加
・・・
<joint name=”joint3” type=“continuous”>
<parent link=”link1”/>
<child link=”link3”/>
<origin xyz=”5 0.5 0” rpy=”0 0 0”/>
</joint>
<joint name=”joint4” type=“continuous”>
<parent link=”link3”/>
<child link=”link4”/>
<origin xyz=”5 0 0” rpy=”0 0 3.14”/>
</joint>
・・・
■ジョイントの回転を定義
■ローカルフレームでの回転軸を指定
 → joint1では<axis xyz=”0 1 0” />
■ジョイントの回転を定義
・・・
<joint name=”joint1” type=“continuous”>
<parent link=”world”/>
<child link=”link1”/>
<origin xyz=”5 0 0” rpy=”0 0 3.14”/>
 <axis xyz=”0 1 0”/>
</joint>
<joint name=”joint2” type=“continuous”>
<parent link=”link1”/>
<child link=”link2”/>
<origin xyz=”5 2 0” rpy=”0 0 3.14”/>
<axis xyz=”0.707 0.707 0”/>
</joint>
・・・
■ジョイントの回転を定義
・・・
<joint name=”joint3” type=“continuous”>
<parent link=”link1”/>
<child link=”link3”/>
<origin xyz=”5 0.5 0” rpy=”0 0 0”/>
<axis xyz=”0.9 0.15 0”/>
</joint>
<joint name=”joint4” type=“continuous”>
<parent link=”link3”/>
<child link=”link4”/>
<origin xyz=”5 0 0” rpy=”0 0 3.14”/>
<axis xyz=”0.707 0.707 0”/>
</joint>
・・・
■可視化
$ urdf_to_graphiz urdf_tutorial.xml
基礎講義はここまで
ご清聴ありがとうございました
次はシミュレータの解説を行います

More Related Content

What's hot

Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能についてshigeki_ohtsu
 
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューAkira Inoue
 
SEH on mingw32
SEH on mingw32SEH on mingw32
SEH on mingw32kikairoya
 
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 HyのすすめLispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 HyのすすめSatoshi imai
 
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作るGoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作るMasahiro Wakame
 
~knitr+pandocではじめる~『R MarkdownでReproducible Research』
~knitr+pandocではじめる~『R MarkdownでReproducible Research』~knitr+pandocではじめる~『R MarkdownでReproducible Research』
~knitr+pandocではじめる~『R MarkdownでReproducible Research』Nagi Teramo
 
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法Nagi Teramo
 
Web技術勉強会 第38回
Web技術勉強会 第38回Web技術勉強会 第38回
Web技術勉強会 第38回龍一 田中
 
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSALVisual C++コード分析を支えるSAL
Visual C++コード分析を支えるSALegtra
 
Swiftのアプリ開発でハマったこと
Swiftのアプリ開発でハマったことSwiftのアプリ開発でハマったこと
Swiftのアプリ開発でハマったことyohei sugigami
 
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageKink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageTaku Miyakawa
 
イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術Kohsuke Yuasa
 
Ext.directことはじめ
Ext.directことはじめExt.directことはじめ
Ext.directことはじめShuhei Aoyama
 
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングTanUkkii
 
高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャ高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャDADA246
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングKohsuke Yuasa
 

What's hot (20)

What is Metasepi?
What is Metasepi?What is Metasepi?
What is Metasepi?
 
Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能について
 
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
 
Tokyo.R#16 wdkz
Tokyo.R#16 wdkzTokyo.R#16 wdkz
Tokyo.R#16 wdkz
 
Stream2の基本
Stream2の基本Stream2の基本
Stream2の基本
 
SEH on mingw32
SEH on mingw32SEH on mingw32
SEH on mingw32
 
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 HyのすすめLispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
 
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作るGoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
 
~knitr+pandocではじめる~『R MarkdownでReproducible Research』
~knitr+pandocではじめる~『R MarkdownでReproducible Research』~knitr+pandocではじめる~『R MarkdownでReproducible Research』
~knitr+pandocではじめる~『R MarkdownでReproducible Research』
 
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
 
Web技術勉強会 第38回
Web技術勉強会 第38回Web技術勉強会 第38回
Web技術勉強会 第38回
 
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSALVisual C++コード分析を支えるSAL
Visual C++コード分析を支えるSAL
 
Swiftのアプリ開発でハマったこと
Swiftのアプリ開発でハマったことSwiftのアプリ開発でハマったこと
Swiftのアプリ開発でハマったこと
 
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageKink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
 
イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術
 
Ext.directことはじめ
Ext.directことはじめExt.directことはじめ
Ext.directことはじめ
 
Altanative macro
Altanative macroAltanative macro
Altanative macro
 
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミング
 
高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャ高度に最適化された移植可能なメモリマネージャ
高度に最適化された移植可能なメモリマネージャ
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
 

Viewers also liked

第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーションakio19937
 
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発Yoshitaka HARA
 
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03Daiki Maekawa
 
ROSによるロボットソフトウェアの開発
ROSによるロボットソフトウェアの開発ROSによるロボットソフトウェアの開発
ROSによるロボットソフトウェアの開発Yuji Yamauchi
 
分散バージョン管理ことはじめ 〜KiCadのための〜 (書きかけ)
分散バージョン管理ことはじめ 〜KiCadのための〜 (書きかけ)分散バージョン管理ことはじめ 〜KiCadのための〜 (書きかけ)
分散バージョン管理ことはじめ 〜KiCadのための〜 (書きかけ)Kenta Yonekura
 
納品用ROS機の手癖
納品用ROS機の手癖納品用ROS機の手癖
納品用ROS機の手癖Kenta Yonekura
 
HTML5時代でもFlashとかを使い続ける漢達
HTML5時代でもFlashとかを使い続ける漢達HTML5時代でもFlashとかを使い続ける漢達
HTML5時代でもFlashとかを使い続ける漢達Wakasa Masao
 
Web標準技術だけでロボ
Web標準技術だけでロボWeb標準技術だけでロボ
Web標準技術だけでロボWakasa Masao
 
基板とブラウザと私
基板とブラウザと私基板とブラウザと私
基板とブラウザと私Wakasa Masao
 
Tech-Circle PepperでROS開発をはじめよう in アトリエ秋葉原(ハンズオン)
Tech-Circle PepperでROS開発をはじめよう in アトリエ秋葉原(ハンズオン)Tech-Circle PepperでROS開発をはじめよう in アトリエ秋葉原(ハンズオン)
Tech-Circle PepperでROS開発をはじめよう in アトリエ秋葉原(ハンズオン)Yuta Koga
 
tf,tf2完全理解
tf,tf2完全理解tf,tf2完全理解
tf,tf2完全理解Koji Terada
 
RTミドルウェアによるロボットプログラミング技術 1.コース概要
RTミドルウェアによるロボットプログラミング技術 1.コース概要RTミドルウェアによるロボットプログラミング技術 1.コース概要
RTミドルウェアによるロボットプログラミング技術 1.コース概要Noriaki Ando
 
160428 東工大「ロボット技術」授業資料
160428 東工大「ロボット技術」授業資料160428 東工大「ロボット技術」授業資料
160428 東工大「ロボット技術」授業資料openrtm
 
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6Yukiko Tamiya
 
オープンソースとロボット
オープンソースとロボットオープンソースとロボット
オープンソースとロボットRyuichi Ueda
 
Web Audio API, Web MIDI API - 2015 html5 conference
Web Audio API, Web MIDI API - 2015 html5 conferenceWeb Audio API, Web MIDI API - 2015 html5 conference
Web Audio API, Web MIDI API - 2015 html5 conferenceRyoya Kawai
 
Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )
Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )
Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )博宣 今村
 
Why they are best Viral Video - "Check it Out" , for your reference.
Why they are best Viral Video - "Check it Out" , for your reference.Why they are best Viral Video - "Check it Out" , for your reference.
Why they are best Viral Video - "Check it Out" , for your reference.anupama pradhan
 

Viewers also liked (20)

第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
 
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
 
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
 
ROS.js の紹介
ROS.js の紹介ROS.js の紹介
ROS.js の紹介
 
ROSによるロボットソフトウェアの開発
ROSによるロボットソフトウェアの開発ROSによるロボットソフトウェアの開発
ROSによるロボットソフトウェアの開発
 
Pepper meets ROS
Pepper meets ROSPepper meets ROS
Pepper meets ROS
 
分散バージョン管理ことはじめ 〜KiCadのための〜 (書きかけ)
分散バージョン管理ことはじめ 〜KiCadのための〜 (書きかけ)分散バージョン管理ことはじめ 〜KiCadのための〜 (書きかけ)
分散バージョン管理ことはじめ 〜KiCadのための〜 (書きかけ)
 
納品用ROS機の手癖
納品用ROS機の手癖納品用ROS機の手癖
納品用ROS機の手癖
 
HTML5時代でもFlashとかを使い続ける漢達
HTML5時代でもFlashとかを使い続ける漢達HTML5時代でもFlashとかを使い続ける漢達
HTML5時代でもFlashとかを使い続ける漢達
 
Web標準技術だけでロボ
Web標準技術だけでロボWeb標準技術だけでロボ
Web標準技術だけでロボ
 
基板とブラウザと私
基板とブラウザと私基板とブラウザと私
基板とブラウザと私
 
Tech-Circle PepperでROS開発をはじめよう in アトリエ秋葉原(ハンズオン)
Tech-Circle PepperでROS開発をはじめよう in アトリエ秋葉原(ハンズオン)Tech-Circle PepperでROS開発をはじめよう in アトリエ秋葉原(ハンズオン)
Tech-Circle PepperでROS開発をはじめよう in アトリエ秋葉原(ハンズオン)
 
tf,tf2完全理解
tf,tf2完全理解tf,tf2完全理解
tf,tf2完全理解
 
RTミドルウェアによるロボットプログラミング技術 1.コース概要
RTミドルウェアによるロボットプログラミング技術 1.コース概要RTミドルウェアによるロボットプログラミング技術 1.コース概要
RTミドルウェアによるロボットプログラミング技術 1.コース概要
 
160428 東工大「ロボット技術」授業資料
160428 東工大「ロボット技術」授業資料160428 東工大「ロボット技術」授業資料
160428 東工大「ロボット技術」授業資料
 
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
 
オープンソースとロボット
オープンソースとロボットオープンソースとロボット
オープンソースとロボット
 
Web Audio API, Web MIDI API - 2015 html5 conference
Web Audio API, Web MIDI API - 2015 html5 conferenceWeb Audio API, Web MIDI API - 2015 html5 conference
Web Audio API, Web MIDI API - 2015 html5 conference
 
Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )
Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )
Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )
 
Why they are best Viral Video - "Check it Out" , for your reference.
Why they are best Viral Video - "Check it Out" , for your reference.Why they are best Viral Video - "Check it Out" , for your reference.
Why they are best Viral Video - "Check it Out" , for your reference.
 

Similar to ROS JAPAN Users Group Meetup 01

Open shiftoriginquickstart clouddevelopercircle_20170920
Open shiftoriginquickstart clouddevelopercircle_20170920Open shiftoriginquickstart clouddevelopercircle_20170920
Open shiftoriginquickstart clouddevelopercircle_20170920kei omizo
 
Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Koji SHIMADA
 
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Koichi Shimozono
 
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうかMasahito Zembutsu
 
QoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/EloquentQoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/EloquentHideki Takase
 
Ruby on RedHat Enterprise Linux
Ruby on RedHat Enterprise LinuxRuby on RedHat Enterprise Linux
Ruby on RedHat Enterprise LinuxTomoya Kawanishi
 
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展Recruit Technologies
 
Tokyo r25 hiro_macchan
Tokyo r25 hiro_macchanTokyo r25 hiro_macchan
Tokyo r25 hiro_macchanHiroki Matsui
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpMasahito Zembutsu
 
Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介Hiroshi Tokumaru
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方Yoshifumi Kawai
 

Similar to ROS JAPAN Users Group Meetup 01 (12)

Open shiftoriginquickstart clouddevelopercircle_20170920
Open shiftoriginquickstart clouddevelopercircle_20170920Open shiftoriginquickstart clouddevelopercircle_20170920
Open shiftoriginquickstart clouddevelopercircle_20170920
 
Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4
 
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
 
V6 unix in okinawa
V6 unix in okinawaV6 unix in okinawa
V6 unix in okinawa
 
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
 
QoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/EloquentQoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/Eloquent
 
Ruby on RedHat Enterprise Linux
Ruby on RedHat Enterprise LinuxRuby on RedHat Enterprise Linux
Ruby on RedHat Enterprise Linux
 
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展
 
Tokyo r25 hiro_macchan
Tokyo r25 hiro_macchanTokyo r25 hiro_macchan
Tokyo r25 hiro_macchan
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorp
 
Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
 

ROS JAPAN Users Group Meetup 01