SlideShare a Scribd company logo
1 of 34
ROS+GitHub+test
千葉工業大学 上田隆一
今日の内容
• ロボット(実機)でROSを扱う
• ROSだけではなく次のものも扱う
– GitHub
– Travis CI(CIツール)
2018年6月3日 ROS講習会@ROBOMECH2018 2
ROSとインターネット上のサービス
• ROSを使うときに以外に引っかかる人がいる事実
– インストールしたからってロボットが賢くなるわけではない
– 独立したソフトウェアだがインターネット上の
様々なサービスと連携しないと効果が薄い
• インターネットとのやりとりの例
– APTを使ってパッケージをインストール
– GitHubからパッケージをインストール
– GitHubでパッケージを公開
2018年6月3日 ROS講習会@ROBOMECH2018 3
テストはどうでしょう?
• テストを書いたことはありますか?
• ソフトウェアの世界ではテストすら
インターネット上のサービスで
• 本日のテーマ: ロボットでどうやるんだ
– ハードがないのにテストできるのか?
2018年6月3日 ROS講習会@ROBOMECH2018 4
テスト入門
2018年6月3日 ROS講習会@ROBOMECH2018 5
テスト入門
• ここでやるのは「ユニットテスト」(単体テスト)
– プログラム中で入出力が起こる各部分で
入出力が正しいか確認
2018年6月3日 ROS講習会@ROBOMECH2018 6
原始的なテスト
• 次のようなplus.pyを作りましょう(ライブラリとして記述)
• 別のプログラムから呼び出します
• ライブラリplus.pyのテストを書きましょう
2018年6月3日 ROS講習会@ROBOMECH2018 7
#!/usr/bin/env python
def plus(a,b):
returna + b
#!/usr/bin/env python
from plus import plus
print(plus(1,2))
テスト
• 一般的に
終了ステータスを利用
– プログラムを実行後、
echo $?で調査
• Pythonの場合
– sys.exit
• sys.exit(0): 正常
• sys.exit(0でない数字):
何らかの異常
– モジュールの場合、
if __name__ ...
の下に書くことが可能
2018年6月3日 ROS講習会@ROBOMECH2018 8
#!/usr/bin/env python
def plus(a,b):
return a + b
if __name__ =='__main__':
importsys
ifplus(1,2) !=3:
sys.exit(1)
ifplus(1.1,2.2) <3.299999 orplus(1.1,2.2) > 3.300001:
sys.exit(2)
ifplus("abc","def") !="abcdef":
sys.exit(3)
sys.exit(0)
unittestを使う
• unittest: Pythonのユニットテストフレームワーク
2018年6月3日 ROS講習会@ROBOMECH2018 9
#!/usr/bin/envpython
importunittest
fromplusimportplus
classTestPlus(unittest.TestCase): # unittestクラスからTestPlusを派生
deftest_int(self): #テスト用のメソッドはtest_...と書く
self.assertEqual(plus(1,2),3,"erroron int")
deftest_float(self):
self.assertTrue(3.299999<plus(1.1,2.2)<3.300001,"erroronfloat")
deftest_str(self):
self.assertEqual(plus("ab","cd"),"abcd", "erroronstr")
unittest.main() #unittestのmainメソッドを呼ぶ
unittestの出力
• 右: テストにパス
• 下: エラー
2018年6月3日 ROS講習会@ROBOMECH2018 10
ueda@remote:~/tmp$./test_plus.py
...
--------------------------------------------Ran 3testsin0.000s
OK
ueda@remote:~/tmp$./test_plus.py
..F
======================================================================
FAIL:test_str(__main__.TestPlus)
----------------------------------------------------------------------
Traceback(mostrecentcall last):
File "./test_plus.py",line15, in test_str
self.assertEqual(plus("a","cd"),"abcd", "erroron str")
AssertionError:erroronstr
----------------------------------------------------------------------
Ran3testsin 0.000s
FAILED(failures=1)
ueda@remote:~/tmp$echo $?
1 #終了ステータスでも成否がわかるようになっている(自動化のため)
GitHub + Travis CI
• CI(continuous integration、継続的インテグレーション)サービス
– コードを常に改善しながらシステムに反映するためのもの
– 機能: コードをテストしてから本番投入(デプロイ)
– 今回はTravis CIを使います
• 他の方が良いかもしれませんが今回はこれで
• GitHubへコードを公開するとテストが走るように設定
2018年6月3日 ROS講習会@ROBOMECH2018 11
今のテストをTravis CI上で実行
• まず、GitHubにリポジトリを作る
– テストのテストリポジトリなので「testtest」としましょう
– 今までラズパイで書いたコードをtesttestディレクトリに置く
• Plus.py, main.py, test_plus.py
– GitHubにプッシュ
• 次のページのように操作
– Travis CIと連携
• 次々ページのように操作
2018年6月3日 ROS講習会@ROBOMECH2018 12
GitHubの操作
2018年6月3日 ROS講習会@ROBOMECH2018 13
ueda@remote:~/tmp/testtest$ git init #ローカルリポジトリ初期化
Initialized empty Git repository in /home/ueda/tmp/testtest/.git/
ueda@remote:~/tmp/testtest$ git add-A #ステージング
ueda@remote:~/tmp/testtest$ git commit -m “Addfiles” #コミット
[master (root-commit) 8f04172] Addfiles
3 files changed, 40 insertions(+)
create mode 100755 main.py
create mode 100755 plus.py
create mode 100755 test_plus.py
ueda@remote:~/tmp/testtest$ git remote add origin #次の行も続けて
https://github.com/ユーザ名/testtest
ueda@remote:~/tmp/testtest$ git push originmaster #プッシュ
(略。IDとパスワードを聞かれる。)
*[new branch] master -> master
Travis CIの設定
• Sign in with GitHubを押してサインイン
• 右上のユーザのアイコンを押してProfileに行く
• 「testtest」のスイッチをONに
• リポジトリに.travis.ymlというファイルを置く
– 中身は次の1行
• push
2018年6月3日 ROS講習会@ROBOMECH2018 14
ueda@remote:~/tmp/testtest$ git add -A
ueda@remote:~/tmp/testtest$ git commit -m"Add .travis.yml"
(略)
ueda@remote:~/tmp/testtest$ git push origin master
(略)
8f04172..6646392 master ->master
script: ./test_plus.py
テストの実行
• Travis CIの画面でしばらく待っているとテストが走る
2018年6月3日 ROS講習会@ROBOMECH2018 15
GitHub上にテスト結果を表示
• Travis CIの「build passing」と書いたアイコンを押す
• Markdownを選択して下のコードをコピー
• コピーしたコードを
README.mdにコピー
– README.mdは
リポジトリのディレクトリ
直下に作成しましょう
• GitHubのリポジトリにテストの
合否が表示される
2018年6月3日 ROS講習会@ROBOMECH2018 16
ROS上でのテスト
2018年6月3日 ROS講習会@ROBOMECH2018 17
やること
• ryuichiueda/raspimouse_ros_2 をfork
• ラズパイマウスにclone
• ロボットの動作確認
• ロボット上でテスト
• Travis CI上でテスト
2018年6月3日 ROS講習会@ROBOMECH2018 18
リポジトリのforkとクローン
• Forkボタンを押して自分のアカウントにコピー
• その後、自分のリポジトリで~/catkin_wr/src下にクローン
– Clone or downloadボタンを押してhttpsのURIをコピー
2018年6月3日 ROS講習会@ROBOMECH2018 19
ubuntu@ubuntu:~/catkin_ws/src$ git clone https://github.com/自分のアカウント/raspimouse_ros_2.git
ロボットの動作確認(デバイスドライバ)
• デバイスドライバのセット
• デバイスドライバの動作確認
2018年6月3日 ROS講習会@ROBOMECH2018 20
ubuntu@ubuntu:~$cd ~/RaspberryPiMouse/src/drivers/
ubuntu@ubuntu:~/RaspberryPiMouse/src/drivers$sudo insmod
###距離センサ###
ubuntu@ubuntu:~$cat /dev/rtlightsensor0
211292312
###モータ###
ubuntu@ubuntu:~$echo 5005001000> /dev/rtmotor0
ロボットの動作確認(ROS)
• ビルド
• 起動
• 「トピック」を使ってセンサ値を読み出し
2018年6月3日 ROS講習会@ROBOMECH2018 21
ubuntu@ubuntu:~/catkin_ws$sudo apt install ros-kinetic-tf
ubuntu@ubuntu:~/catkin_ws$sudo apt install ros-kinetic-tf2-ros
ubuntu@ubuntu:~$cd ~/catkin_ws/
ubuntu@ubuntu:~/catkin_ws$catkin_make
ubuntu@ubuntu:~/catkin_ws$source ~/.bashrc
ubuntu@ubuntu:~/catkin_ws$roslaunch raspimouse_ros_2 raspimouse.launch
ubuntu@ubuntu:~$ rostopic echo /lightsensors
right_forward:0
right_side: 0
left_side: 0
...
ロボットの動作確認(ROS, 続き)
• 「サービス」、「トピック」を使ってモータを動かす
2018年6月3日 ROS講習会@ROBOMECH2018 22
ubuntu@ubuntu:~$ rosservice call /motor_on
success: True
message: "ON"
ubuntu@ubuntu:~$ rostopic pub/cmd_vel geometry_msgs/Twist "linear:
x:0.2
y:0.0
z:0.0
angular:
x:0.0
y:0.0
z:0.0"
publishing andlatching message. Press ctrl-C to terminate
^Cubuntu@ubuntu:~$ #Ctrl+Cで止める(1秒後にモータ停止)
ubuntu@ubuntu:~$ rosservice call /motor_off
success: True
message: "OFF"
ROSとデバイスドライバ
• ROS上で動くプログラム(ノード)がトピック、
• サービスを通じて別のノードから要求を受け、
デバイスドライバに書き込む
• なんでこんな2重構造になっているか
– 変換・抽象化
• 例: モータ: 速度・角速度からステップモータの周波数へ
– ROSを使うと他のROSパッケージが使える
– ROSを使わなくても良い
2018年6月3日 ROS講習会@ROBOMECH2018 23
ロボットのテスト
• なるべくロボットを動かさずに入出力を確認
• デバイスドライバに値を書き込むと読めないので
普通のファイルに置き換えてテスト
2018年6月3日 ROS講習会@ROBOMECH2018 24
###こいつらを普通のファイルに置き換え###
ubuntu@ubuntu:~$ ls /dev/rt*
/dev/rtbuzzer0 /dev/rtled0 /dev/rtlightsensor0 /dev/rtmotoren0
/dev/rtcounter0 /dev/rtled1 /dev/rtmotor0 /dev/rtswitch0
/dev/rtcounter_l0 /dev/rtled2 /dev/rtmotor_raw_l0 /dev/rtswitch1
/dev/rtcounter_r0 /dev/rtled3 /dev/rtmotor_raw_r0 /dev/rtswitch2
###再起動すると消えます###
ubuntu@ubuntu:~$ reboot
ロボットのテスト(続き)
• ダミーファイルを作る
• raspimouse_ros_2のノードを立ち上げて読めるか確認
2018年6月3日 ROS講習会@ROBOMECH2018 25
ubuntu@ubuntu:~$echo 12 3 4| sudo tee /dev/rtlightsensor0
1 2 34
ubuntu@ubuntu:~$cat /dev/rtlightsensor0
1 2 34
ubuntu@ubuntu:~$rostopic echo /lightsensors
right_forward: 1
right_side: 2
left_side: 3
left_forward: 4
sum_all: 10
sum_forward: 5
---
ROSを使ったテスト
• まず、一通りダミーファイルを作る
2018年6月3日 ROS講習会@ROBOMECH2018 26
### スクリプトがパッケージに準備されてます ###
ubuntu@ubuntu:~/catkin_ws/src/raspimouse_ros_2$ cat test/travis_prepare_dummy_files.bash
#!/bin/bash -xve
sudo touch /dev/rt{buzzer,motor,motoren,motor_raw_{l,r}}0
sudo chmod 666/dev/rt{buzzer,motor,motoren,motor_raw_{l,r}}0
echo "0000" | sudo tee /dev/rtlightsensor0
sudo chmod 666/dev/rtlightsensor0
echo "0"| sudo tee /dev/rtswitch{0,1,2}
sudo chmod 666/dev/rtswitch{0,1,2}
### 実行 ###
ubuntu@ubuntu:~/catkin_ws/src/raspimouse_ros_2$ ./test/travis_prepare_dummy_files.bash
テストスクリプト
• 例: パッケージのtest/travis_test_lightsensors.py
• コードの主要な部分
– Lightsensorsトピックにデータを送るオブジェクト
(サブスクライバ)を作成
– Unittestのassert...を利用している部分
2018年6月3日 ROS講習会@ROBOMECH2018 27
9 def setUp(self):
10 self.count =0
11 rospy.Subscriber('/lightsensors', LightSensorValues, self.callback)
12 self.values =LightSensorValues()
18 def check_values(self,lf,ls,rs,rf):
19 vs =self.values
20 self.assertEqual(vs.left_forward, lf,“different value: left_forward”)# unittestのasserEqualを利用
21 ...
テストスクリプト(続き)
– テストを実行するメソッド
2018年6月3日 ROS講習会@ROBOMECH2018 28
31 def test_get_value(self):
32 (略)
33 (略)
34 with open(“/dev/rtlightsensor0”,“w”) asf:#ダミーの値の書込
35 f.write("-1 0 123 4321n")
36
37 time.sleep(3)
38 ###コールバック関数が最低1回は呼ばれ、値が取得できているかを確認###
39 self.assertFalse(self.count ==0,“cannot ...
40 self.check_values(4321,123,0,-1) #値の確認
ROSでのテストの実行
• launchファイル
– ノードを一斉に立ち上げるための設定を書いたファイル
– パッケージのlaunchディレクトリにはロボットを動作させる
ためのlaunchファイルとテスト用のlaunchファイルが存在
• 特に分ける必要はないが事情により
2018年6月3日 ROS講習会@ROBOMECH2018 29
ubuntu@ubuntu:~/catkin_ws/src/raspimouse_ros_2$ ls launch/
raspimouse.launch test.launch
ubuntu@ubuntu:~/catkin_ws/src/raspimouse_ros_2$ cat launch/test.launch
<launch>
<node pkg="raspimouse_ros_2" name="buzzer" type="buzzer.py" required="true" />
(略)
<test test-name="test_buzzer" pkg="raspimouse_ros_2"
(略)
</launch>
ROSでのテストの実行(続き)
2018年6月3日 ROS講習会@ROBOMECH2018 30
ubuntu@ubuntu:~$ rostest raspimouse_ros_2 test.launch
...
[ROSTEST]-----------------------------------------------------------------------
(略)
[raspimouse_ros_2.rosunit-test_motors/test_put_freq][passed]
[raspimouse_ros_2.rosunit-test_motors/test_put_value_timed][passed]
SUMMARY
*RESULT: SUCCESS
*TESTS: 11
*ERRORS: 0
*FAILURES: 0
rostest log fileis in /home/ubuntu/.ros/log/rostest-ubuntu-5841.log
Travis CIでのテスト
• 毎回ROSをセットアップしてからテスト
– Dockerで手間を減らせそうですが試してません
– 下図: パッケージ内の.travis.yml
2018年6月3日 ROS講習会@ROBOMECH2018 31
1 sudo: required
2 dist: trusty
3 install:
4 - bash -xve ./test/travis_ros_install.bash
5 - source ~/catkin_ws/devel/setup.bash
6 before_script:
7 - bash -xve ./test/travis_package_make.bash
8 - source ~/catkin_ws/devel/setup.bash
9 - bash -xve ./test/travis_prepare_dummy_files.bash
10 script:
11 - rostest raspimouse_ros_2 test.launch
Travis CIでテストしてみましょう
• Travis CIでforkしたraspimouse_ros_2を監視対象に
• あとは少しリポジトリをいじってpush
2018年6月3日 ROS講習会@ROBOMECH2018 32
この後の課題
• 自分でテストを書いてみる
• ラズパイマウスで遊ぶ
2018年6月3日 ROS講習会@ROBOMECH2018 33
参考資料
• ROS Wiki
– http://wiki.ros.org/action/show/Quality/Tutorials/UnitTesting
– http://wiki.ros.org/CIs
• 上田: Raspberry Piで学ぶ ROSロボット入門, 日経BP,
2017
– テストを扱ってます
2018年6月3日 ROS講習会@ROBOMECH2018 34

More Related Content

What's hot

shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理DADA246
 
Intel RealSense for ROSConJP20221121.pdf
Intel RealSense for ROSConJP20221121.pdfIntel RealSense for ROSConJP20221121.pdf
Intel RealSense for ROSConJP20221121.pdfTakumi14
 
Fortranが拓く世界、VSCodeが架ける橋
Fortranが拓く世界、VSCodeが架ける橋Fortranが拓く世界、VSCodeが架ける橋
Fortranが拓く世界、VSCodeが架ける橋智啓 出川
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
 
Deeplearning輪読会
Deeplearning輪読会Deeplearning輪読会
Deeplearning輪読会正志 坪坂
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
C++ AMPを使ってみよう
C++ AMPを使ってみようC++ AMPを使ってみよう
C++ AMPを使ってみようOsamu Masutani
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化Gosuke Miyashita
 
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Yusuke Fujimoto
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門Yosuke Onoue
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編Fixstars Corporation
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みChihiro Ito
 
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説Takateru Yamagishi
 
Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)Tadahiro Ishisaka
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたMITSUNARI Shigeo
 
ROSを用いた歩行ロボットの脚の開発
ROSを用いた歩行ロボットの脚の開発ROSを用いた歩行ロボットの脚の開発
ROSを用いた歩行ロボットの脚の開発ShomaUehara
 

What's hot (20)

shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
 
Intel RealSense for ROSConJP20221121.pdf
Intel RealSense for ROSConJP20221121.pdfIntel RealSense for ROSConJP20221121.pdf
Intel RealSense for ROSConJP20221121.pdf
 
Fortranが拓く世界、VSCodeが架ける橋
Fortranが拓く世界、VSCodeが架ける橋Fortranが拓く世界、VSCodeが架ける橋
Fortranが拓く世界、VSCodeが架ける橋
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
Deeplearning輪読会
Deeplearning輪読会Deeplearning輪読会
Deeplearning輪読会
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
CuPy解説
CuPy解説CuPy解説
CuPy解説
 
C++ AMPを使ってみよう
C++ AMPを使ってみようC++ AMPを使ってみよう
C++ AMPを使ってみよう
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
 
画像処理の高性能計算
画像処理の高性能計算画像処理の高性能計算
画像処理の高性能計算
 
Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
ROSを用いた歩行ロボットの脚の開発
ROSを用いた歩行ロボットの脚の開発ROSを用いた歩行ロボットの脚の開発
ROSを用いた歩行ロボットの脚の開発
 

Similar to ROSチュートリアル ROBOMECH2018

IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~Hideki Takase
 
Microsoft Graph API Library for Go
Microsoft Graph API Library for GoMicrosoft Graph API Library for Go
Microsoft Graph API Library for Goyaegashi
 
Rancher と GitLab を使う3つの理由
Rancher と GitLab を使う3つの理由Rancher と GitLab を使う3つの理由
Rancher と GitLab を使う3つの理由Tetsurou Yano
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3mganeko
 
BotとWikiを使った試験的な並列プログラミング
BotとWikiを使った試験的な並列プログラミングBotとWikiを使った試験的な並列プログラミング
BotとWikiを使った試験的な並列プログラミングTakashi Yamanoue
 
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03Daiki Maekawa
 
Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会
Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会
Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会Hiroaki Kaneda
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識Katsuhiro Morishita
 
rpi_handson_2.5
rpi_handson_2.5rpi_handson_2.5
rpi_handson_2.5teruyaono1
 
ネットワークAPI のあれこれ (ENOG37)
ネットワークAPI のあれこれ (ENOG37)ネットワークAPI のあれこれ (ENOG37)
ネットワークAPI のあれこれ (ENOG37)Kentaro Ebisawa
 
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料博文 斉藤
 
補足 : LOOLのビルドについて
補足 : LOOLのビルドについて補足 : LOOLのビルドについて
補足 : LOOLのビルドについてMasataka Kondo
 
Metahub for github
Metahub for githubMetahub for github
Metahub for githubSuguru Oho
 
hubotで快適BOT生活
hubotで快適BOT生活 hubotで快適BOT生活
hubotで快適BOT生活 Kazufumi Otani
 
LibreOfficeとモバイルデバイス
LibreOfficeとモバイルデバイスLibreOfficeとモバイルデバイス
LibreOfficeとモバイルデバイスMasataka Kondo
 
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)Toshihiko Yamakami
 
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介Kohei Nishikawa
 
広島IT勉強会カレンダー(仮)はRubyを使っています
広島IT勉強会カレンダー(仮)はRubyを使っています広島IT勉強会カレンダー(仮)はRubyを使っています
広島IT勉強会カレンダー(仮)はRubyを使っていますYoshitake Takata
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築You&I
 

Similar to ROSチュートリアル ROBOMECH2018 (20)

IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
 
Microsoft Graph API Library for Go
Microsoft Graph API Library for GoMicrosoft Graph API Library for Go
Microsoft Graph API Library for Go
 
Rancher と GitLab を使う3つの理由
Rancher と GitLab を使う3つの理由Rancher と GitLab を使う3つの理由
Rancher と GitLab を使う3つの理由
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
 
BotとWikiを使った試験的な並列プログラミング
BotとWikiを使った試験的な並列プログラミングBotとWikiを使った試験的な並列プログラミング
BotとWikiを使った試験的な並列プログラミング
 
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
 
Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会
Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会
Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
 
rpi_handson_2.5
rpi_handson_2.5rpi_handson_2.5
rpi_handson_2.5
 
ネットワークAPI のあれこれ (ENOG37)
ネットワークAPI のあれこれ (ENOG37)ネットワークAPI のあれこれ (ENOG37)
ネットワークAPI のあれこれ (ENOG37)
 
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
 
補足 : LOOLのビルドについて
補足 : LOOLのビルドについて補足 : LOOLのビルドについて
補足 : LOOLのビルドについて
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
 
hubotで快適BOT生活
hubotで快適BOT生活 hubotで快適BOT生活
hubotで快適BOT生活
 
LibreOfficeとモバイルデバイス
LibreOfficeとモバイルデバイスLibreOfficeとモバイルデバイス
LibreOfficeとモバイルデバイス
 
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)
 
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
 
広島IT勉強会カレンダー(仮)はRubyを使っています
広島IT勉強会カレンダー(仮)はRubyを使っています広島IT勉強会カレンダー(仮)はRubyを使っています
広島IT勉強会カレンダー(仮)はRubyを使っています
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 

More from Ryuichi Ueda

第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライドRyuichi Ueda
 
シェル・ワンライナー160本ノック
シェル・ワンライナー160本ノックシェル・ワンライナー160本ノック
シェル・ワンライナー160本ノックRyuichi Ueda
 
日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナーRyuichi Ueda
 
シェル芸勉強会と会場の話
シェル芸勉強会と会場の話シェル芸勉強会と会場の話
シェル芸勉強会と会場の話Ryuichi Ueda
 
移動ロボットのナビゲーション
移動ロボットのナビゲーション移動ロボットのナビゲーション
移動ロボットのナビゲーションRyuichi Ueda
 
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆Ryuichi Ueda
 
第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライド第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライドRyuichi Ueda
 
bash(の変な使い方)update
bash(の変な使い方)updatebash(の変な使い方)update
bash(の変な使い方)updateRyuichi Ueda
 
第41回シェル芸勉強会 午後オープニング
第41回シェル芸勉強会 午後オープニング第41回シェル芸勉強会 午後オープニング
第41回シェル芸勉強会 午後オープニングRyuichi Ueda
 
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...Ryuichi Ueda
 
20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トーク20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トークRyuichi Ueda
 
第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロ第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロRyuichi Ueda
 
シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習Ryuichi Ueda
 
poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018Ryuichi Ueda
 
Robot frontier lesson3 2018
Robot frontier lesson3 2018Robot frontier lesson3 2018
Robot frontier lesson3 2018Ryuichi Ueda
 
Robot frontier lesson2 2018
Robot frontier lesson2 2018Robot frontier lesson2 2018
Robot frontier lesson2 2018Ryuichi Ueda
 
Robot frontier lesson1 2018
Robot frontier lesson1 2018Robot frontier lesson1 2018
Robot frontier lesson1 2018Ryuichi Ueda
 
第34回シェル芸勉強会
第34回シェル芸勉強会第34回シェル芸勉強会
第34回シェル芸勉強会Ryuichi Ueda
 
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」Ryuichi Ueda
 
2017年10月18日 シェル芸勉強会 meets バイオインフォマティクス vol.1 スライド
2017年10月18日 シェル芸勉強会 meets バイオインフォマティクス vol.1 スライド2017年10月18日 シェル芸勉強会 meets バイオインフォマティクス vol.1 スライド
2017年10月18日 シェル芸勉強会 meets バイオインフォマティクス vol.1 スライドRyuichi Ueda
 

More from Ryuichi Ueda (20)

第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド
 
シェル・ワンライナー160本ノック
シェル・ワンライナー160本ノックシェル・ワンライナー160本ノック
シェル・ワンライナー160本ノック
 
日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー
 
シェル芸勉強会と会場の話
シェル芸勉強会と会場の話シェル芸勉強会と会場の話
シェル芸勉強会と会場の話
 
移動ロボットのナビゲーション
移動ロボットのナビゲーション移動ロボットのナビゲーション
移動ロボットのナビゲーション
 
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
 
第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライド第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライド
 
bash(の変な使い方)update
bash(の変な使い方)updatebash(の変な使い方)update
bash(の変な使い方)update
 
第41回シェル芸勉強会 午後オープニング
第41回シェル芸勉強会 午後オープニング第41回シェル芸勉強会 午後オープニング
第41回シェル芸勉強会 午後オープニング
 
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
 
20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トーク20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トーク
 
第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロ第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロ
 
シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習
 
poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018
 
Robot frontier lesson3 2018
Robot frontier lesson3 2018Robot frontier lesson3 2018
Robot frontier lesson3 2018
 
Robot frontier lesson2 2018
Robot frontier lesson2 2018Robot frontier lesson2 2018
Robot frontier lesson2 2018
 
Robot frontier lesson1 2018
Robot frontier lesson1 2018Robot frontier lesson1 2018
Robot frontier lesson1 2018
 
第34回シェル芸勉強会
第34回シェル芸勉強会第34回シェル芸勉強会
第34回シェル芸勉強会
 
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
 
2017年10月18日 シェル芸勉強会 meets バイオインフォマティクス vol.1 スライド
2017年10月18日 シェル芸勉強会 meets バイオインフォマティクス vol.1 スライド2017年10月18日 シェル芸勉強会 meets バイオインフォマティクス vol.1 スライド
2017年10月18日 シェル芸勉強会 meets バイオインフォマティクス vol.1 スライド
 

ROSチュートリアル ROBOMECH2018