Submit Search
KotlinでROSノードを書いてみた
3 likes
2,581 views
Naoki Iwata
2015/10/04 ROS勉強会
Software
Read more
1 of 39
Download now
Downloaded 14 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
More Related Content
PDF
1070: CUDA プログラミング入門
NVIDIA Japan
PPTX
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Fujio Kojima
PPTX
Java version 11 - les 9 nouveautes
Abdenour Bouateli
PDF
機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)
小川 雄太郎
PDF
Finding connections among images using CycleGAN
NAVER Engineering
PDF
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
PPTX
ゲーム体験を支える強化学習の実応用について
Jun Okumura
PDF
Media ServicesとAIを利用した字幕付きライブ配信
Yuichiro Danno
1070: CUDA プログラミング入門
NVIDIA Japan
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Fujio Kojima
Java version 11 - les 9 nouveautes
Abdenour Bouateli
機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)
小川 雄太郎
Finding connections among images using CycleGAN
NAVER Engineering
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
ゲーム体験を支える強化学習の実応用について
Jun Okumura
Media ServicesとAIを利用した字幕付きライブ配信
Yuichiro Danno
What's hot
(20)
PDF
Kaggleのテクニック
Yasunori Ozaki
PDF
TensorRT Inference Serverではじめる、 高性能な推論サーバ構築
NVIDIA Japan
PPTX
[DL輪読会]Batch Renormalization: Towards Reducing Minibatch Dependence in Batch-...
Deep Learning JP
PDF
[DL輪読会]Deep Reinforcement Learning that Matters
Deep Learning JP
PPTX
BoostAsioで可読性を求めるのは間違っているだろうか
Yuki Miyatake
PDF
Volumetric Lighting for Many Lights in Lords of the Fallen
Benjamin Glatzel
PDF
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
Fixstars Corporation
PDF
Precomputed Voxelized-Shadows for Large-scale Scene and Many lights
Seongdae Kim
PDF
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
Deep Learning JP
PDF
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
Shuyo Nakatani
PDF
SPU Optimizations-part 1
Naughty Dog
PDF
[DL輪読会]`強化学習のための状態表現学習 -より良い「世界モデル」の獲得に向けて-
Deep Learning JP
PDF
最近のSingle Shot系の物体検出のアーキテクチャまとめ
Yusuke Uchida
PDF
モデルではなく、データセットを蒸留する
Takahiro Kubo
PDF
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
Deep Learning JP
PDF
【DL輪読会】Mastering Diverse Domains through World Models
Deep Learning JP
PDF
関数型プログラミング入門 with OCaml
Haruka Oikawa
PDF
【DL輪読会】Deep Transformers without Shortcuts: Modifying Self-attention for Fait...
Deep Learning JP
PDF
[Review] BoxInst: High-Performance Instance Segmentation with Box Annotations...
Dongmin Choi
PPTX
[DL輪読会]World Models
Deep Learning JP
Kaggleのテクニック
Yasunori Ozaki
TensorRT Inference Serverではじめる、 高性能な推論サーバ構築
NVIDIA Japan
[DL輪読会]Batch Renormalization: Towards Reducing Minibatch Dependence in Batch-...
Deep Learning JP
[DL輪読会]Deep Reinforcement Learning that Matters
Deep Learning JP
BoostAsioで可読性を求めるのは間違っているだろうか
Yuki Miyatake
Volumetric Lighting for Many Lights in Lords of the Fallen
Benjamin Glatzel
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
Fixstars Corporation
Precomputed Voxelized-Shadows for Large-scale Scene and Many lights
Seongdae Kim
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
Deep Learning JP
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
Shuyo Nakatani
SPU Optimizations-part 1
Naughty Dog
[DL輪読会]`強化学習のための状態表現学習 -より良い「世界モデル」の獲得に向けて-
Deep Learning JP
最近のSingle Shot系の物体検出のアーキテクチャまとめ
Yusuke Uchida
モデルではなく、データセットを蒸留する
Takahiro Kubo
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
Deep Learning JP
【DL輪読会】Mastering Diverse Domains through World Models
Deep Learning JP
関数型プログラミング入門 with OCaml
Haruka Oikawa
【DL輪読会】Deep Transformers without Shortcuts: Modifying Self-attention for Fait...
Deep Learning JP
[Review] BoxInst: High-Performance Instance Segmentation with Box Annotations...
Dongmin Choi
[DL輪読会]World Models
Deep Learning JP
Ad
Viewers also liked
(20)
PDF
生活支援ロボットMini@ROS勉強会
Kensei Demura
PDF
Pepper meets ROS
Kenta Yonekura
ODP
EusLispでロボットプログラミング
Hiroaki Yaguchi
PDF
ROS2.0時代に備えたc++11/14
Takashi Ogura
PDF
明日からちょっと KotlinでAndroidが書きたくなる(かもしれない?)SAM変換と拡張関数
Ryota Murohoshi
PDF
SIerアーキテクト視点でみたKotlinの紹介
Shinichi Kozake
PPTX
Dronecodeの概要とROSの対応について
博宣 今村
ODP
Hacking Robotics(English Version)
Kensei Demura
PDF
kotlinについて
隆史 川中
PPTX
Kotlin
Shumpei Hozumi
PDF
Kotlinで快適Android開発 #W8lt
Junpei Matsuda
PDF
もう一度Kotlinの話をしよう #ndsmeetup4
Yukiya Nakagawa
PDF
Kotlinあるある言いたい
yy yank
PDF
Kotlinでマッチョする話
Shinobu Okano
PDF
UnityでC#6.0が使える未来がそろそろ来そう!
Ryota Murohoshi
PDF
Kotlin: Why Do You Care?
intelliyole
PDF
普段C#を使っている僕から見たKotlin
Ryota Murohoshi
PDF
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
akio19937
PDF
Kotlinソースコード探訪
yy yank
PDF
Android学ぶを君へ。生き抜くためのナレッジ共有
Shinobu Okano
生活支援ロボットMini@ROS勉強会
Kensei Demura
Pepper meets ROS
Kenta Yonekura
EusLispでロボットプログラミング
Hiroaki Yaguchi
ROS2.0時代に備えたc++11/14
Takashi Ogura
明日からちょっと KotlinでAndroidが書きたくなる(かもしれない?)SAM変換と拡張関数
Ryota Murohoshi
SIerアーキテクト視点でみたKotlinの紹介
Shinichi Kozake
Dronecodeの概要とROSの対応について
博宣 今村
Hacking Robotics(English Version)
Kensei Demura
kotlinについて
隆史 川中
Kotlin
Shumpei Hozumi
Kotlinで快適Android開発 #W8lt
Junpei Matsuda
もう一度Kotlinの話をしよう #ndsmeetup4
Yukiya Nakagawa
Kotlinあるある言いたい
yy yank
Kotlinでマッチョする話
Shinobu Okano
UnityでC#6.0が使える未来がそろそろ来そう!
Ryota Murohoshi
Kotlin: Why Do You Care?
intelliyole
普段C#を使っている僕から見たKotlin
Ryota Murohoshi
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
akio19937
Kotlinソースコード探訪
yy yank
Android学ぶを君へ。生き抜くためのナレッジ共有
Shinobu Okano
Ad
Similar to KotlinでROSノードを書いてみた
(20)
PDF
Kotlinのwebフレームワーク探訪
豊明 尾古
PDF
IntelliJ IDEAとKotlinで作るSpring 5アプリケーション
CASAREAL, Inc.
PDF
Gws 20120521 gradle
Nobuhiro Sue
PDF
Gradle handson
Nemoto Yusuke
PDF
SDLoader SeasarCon 2009 Whire
Akio Katayama
PDF
Introduction of Rhodes
Hitoshi Kuroyanagi
PPTX
AKS (k8s) Hands on Lab Contents
Yoshio Terada
PDF
scala-kaigi1-sbt
Kenji Yoshida
PDF
Groovy base gradle_20130309
Nobuhiro Sue
PPTX
Appsody でnodejsのアプリを立ち上げよう!
Daisuke Hiraoka
PDF
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
Midori Oge
PDF
Scalaでのプログラム開発
Kota Mizushima
PPTX
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
PDF
Line Creators Studio Android With Kotlin
LINE Corporation
PDF
Docker for Windows & Web Apps for Containers 実践活用技法
Microsoft Corporation
PDF
Kotlinことはじめ -まずは触って動かしてみよう-
CASAREAL, Inc.
PDF
All I learned while working on a Scala OSS project for over six years #ScalaM...
Kazuhiro Sera
PDF
Driverについて
幸雄 村上
PDF
クラウドカンファレンスIn静岡 r cloud
Kazuki Aranami
PDF
RでつくるWebアプリ~rApache編~
Kazuya Wada
Kotlinのwebフレームワーク探訪
豊明 尾古
IntelliJ IDEAとKotlinで作るSpring 5アプリケーション
CASAREAL, Inc.
Gws 20120521 gradle
Nobuhiro Sue
Gradle handson
Nemoto Yusuke
SDLoader SeasarCon 2009 Whire
Akio Katayama
Introduction of Rhodes
Hitoshi Kuroyanagi
AKS (k8s) Hands on Lab Contents
Yoshio Terada
scala-kaigi1-sbt
Kenji Yoshida
Groovy base gradle_20130309
Nobuhiro Sue
Appsody でnodejsのアプリを立ち上げよう!
Daisuke Hiraoka
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
Midori Oge
Scalaでのプログラム開発
Kota Mizushima
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
Line Creators Studio Android With Kotlin
LINE Corporation
Docker for Windows & Web Apps for Containers 実践活用技法
Microsoft Corporation
Kotlinことはじめ -まずは触って動かしてみよう-
CASAREAL, Inc.
All I learned while working on a Scala OSS project for over six years #ScalaM...
Kazuhiro Sera
Driverについて
幸雄 村上
クラウドカンファレンスIn静岡 r cloud
Kazuki Aranami
RでつくるWebアプリ~rApache編~
Kazuya Wada
KotlinでROSノードを書いてみた
1.
KotlinでROSノードを 書いてみた 2015/10/04 ROS勉強会 @iwata_n
2.
@iwata_n いわたん ros歴2ヶ月くらい - ROS本を読んだぐらい ロードバイクとボルダリング
3.
Message このノードをKotlinで作った!
4.
今日伝えたい事 ROSノードをKotlinで書く方法
5.
What s Kotlin? Why
Kotlin?
6.
Kotlinを知ってる人!
7.
まぁそうなりますよね
8.
What's Kotlin? Javaと同じ仮想マシン上で動くけど、 Javaより安全 Javaより簡潔 Javaと同等に速い らしい あとAndroidのアプリも書けるらしい
9.
Kotlin言語は、ジェットブレインズ社の研究所のひとつ、ロシア連邦 レニングラード州都のサンクトペテルブルクで生まれた。 ジェットブレインズ社は Java、Ruby、Python などのプログラミン グ言語による開発環境などを開発して販売してきた。Kotlin言語は同 社が経験を活かしてJava言語をもっと簡潔、安全になるように改良し た産業利用向け汎用言語として、2011年7月20日に発表された。 オペーレーティング・システムによらずJava仮想マシン上で動く。 Java言語が書かれたプログラムと同じほど速くコンパイルされ同じほ ど速く動作するとしている。 Java言語に望まれている機能であっても互換性を保つために実現でき ていない機能や、将来のJava言語の仕様で実現が予定されている機能 から、有用と思う機能を採用した。また、Java仮想マシンで動く点で 似ているスクリプト言語
Groovy や関数型プログラミング言語色の強 い Scala から、機能や簡易記法(糖衣構文)を採用した。 2012年2月14日、Kotlin はApacheライセンス バージョン2.0に基づ 詳しくはWebで!
10.
KotlinがJavaと同じ仮想マシン上で動く ↓ それならRosJavaで動くんじゃね? ↓ じゃぁ確かめよう Why Kotlin?
11.
技術的な話
12.
手順 1. RosJavaを入れる 2. RosJavaのプロジェクトを作る 3.
build.gradleにkotlin関係のコードを追記する 4. kotlinでコードを書く 5. ビルド
13.
RosJavaのインストール http://qiita.com/iwata-n@github/items/ 989bed3acc21ffb28521
14.
$ mkdir -p
/ros/myjava/src $ cd /ros/myjava/src $ source /opt/ros/indigo/setup.bash $ catkin_init_workspace $ cd .. $ catkin_make catkinのワークスペース作成 ROS本のP42∼の作業内容と同じです
15.
パッケージの作成 $ cd /ros/myjava/src $
catkin_create_rosjava_pkg <Package> ROS本のP44∼の作業に相当します。 ただ、rosjavaでパッケージを作成するので、 コマンドが違います。 <Package>はお好きな名前で。
16.
パッケージの作成 Created repo file:
/home/ros/ros/myjava/src/kotlin/settings.gradle Created repo file: /home/ros/ros/myjava/src/kotlin/build.gradle Created repo file: /home/ros/ros/myjava/src/kotlin/CMakeLists.txt Created repo file: /home/ros/ros/myjava/src/kotlin/package.xml Creating gradle wrapper: /opt/ros/indigo/lib/python2.7/dist-packages/ rosjava_build_tools/gradle/gradlew -p /home/ros/ros/myjava/src/kotlin wrapper :wrapper BUILD SUCCESSFUL Total time: 7.033 secs catkin_create_rosjava_pkgを実行結果
17.
プロジェクトを作成 $ cd /ros/myjava/src/kotlin/ $
catkin_create_rosjava_project sample Creating rosjava project Name : sample File : build.gradle File : settings.gradle File : Talker.java File : Listener.java File : CMakeLists.txt (gradle task update) gradleやjavaファイル等の必要なファイルを生成してくれる
18.
package com.github.rosjava.kotlin.sample; /* 略
*/ public class Listener extends AbstractNodeMain { @Override public GraphName getDefaultNodeName() { return GraphName.of("rosjava/listener"); } @Override public void onStart(ConnectedNode connectedNode) { final Log log = connectedNode.getLog(); Subscriber<std_msgs.String> subscriber = connectedNode.newSubscriber("chatter", std_msgs.String._TYPE); subscriber.addMessageListener(new MessageListener<std_msgs.String>() { @Override public void onNewMessage(std_msgs.String message) { log.info("I heard: "" + message.getData() + """); } }); } }
19.
ビルド $ cd /ros/myjava $
catkin_make Base path: /home/ros/ros/myjava # ... 省略 #### Running command: "make -j8 -l8" in "/home/ros/ros/myjava/build" #### Scanning dependencies of target gradle-iwatan [100%] Gradling tasks for kotlin Uploading: com/github/rosjava/kotlin/sample/0.1.0/sample-0.1.0.jar to repository remote at file:/home/ros/ros/myjava/devel/share/maven Transferring 4K from remote Uploaded 4K [100%] Built target gradle-kotlin catkinでビルドが出来るが、gradleで直接ビルドした方が速い
20.
実行 $ cd src/<Package>/sample/build/install/sample/bin $
./sample com.github.rosjava.kotlin.sample.Listener
21.
rosjavaは ここまでで手順でOK
22.
Kotlin化
23.
build.gradleを編集 apply plugin: 'application' mainClassName
= 'org.ros.RosRun' dependencies { compile 'org.ros.rosjava_core:rosjava:[0.2,0.3)' } roskotlin/src/<Package>/sample/build.gradle gradleとはざっくり言うとMakefileみたいなもの (他にも色々機能はありますが)
24.
追加その1 apply plugin: kotlin" buildscript
{ repositories { mavenCentral() maven { url 'http://oss.sonatype.org/content/repositories/snapshots' } } dependencies { classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.1-SNAPSHOT' } }
25.
追加その2 sourceSets { deploy } repositories { mavenCentral() maven
{ url 'http://oss.sonatype.org/content/repositories/snapshots' } } dependencies { compile 'com.google.guava:guava:12.0' compile 'org.jetbrains.kotlin:kotlin-stdlib:0.1-SNAPSHOT' deployCompile 'com.google.guava:guava:12.0' testCompile 'org.testng:testng:6.8' } test.testClassesDir = project.tasks.compileTestKotlin.destinationDir
26.
この2つを追記すれば Kotlinで書ける
27.
kotlinでコードを書く • IntelliJ IDEAを使うとプラグインでJava→Kotlinが 簡単に出来る •
IntelliJはPythonでも便利なIDEなのでオススメ • Javaのファイルを開いて自動変換するだけ • http://kotlinlang.org/docs/tutorials/kotlin-android.html
28.
package com.github.rosjava.kotlin.sample; /* 略
*/ public class Listener extends AbstractNodeMain { @Override public GraphName getDefaultNodeName() { return GraphName.of("rosjava/listener"); } @Override public void onStart(ConnectedNode connectedNode) { final Log log = connectedNode.getLog(); Subscriber<std_msgs.String> subscriber = connectedNode.newSubscriber("chatter", std_msgs.String._TYPE); subscriber.addMessageListener(new MessageListener<std_msgs.String>() { @Override public void onNewMessage(std_msgs.String message) { log.info("I heard: "" + message.getData() + """); } }); Java
29.
package com.github.rosjava.kotlin.sample /* 略
*/ public class Listener() : AbstractNodeMain() { override public fun getDefaultNodeName(): GraphName = GraphName.of("rosjava/listener") override public fun onStart(connectedNode: ConnectedNode) { val log = connectedNode.getLog() val subscriber = connectedNode.newSubscriber<std_msgs.String>("chatter", std_msgs.String._TYPE) subscriber.addMessageListener { message -> log.info("Kotlin heard: "" + message.getData() + """) } } } Kotlin
30.
ビルド $ cd /ros/myjava $
catkin_make Base path: /home/ros/ros/myjava # ... 省略 #### Running command: "make -j8 -l8" in "/home/ros/ros/myjava/build" #### Scanning dependencies of target gradle-kotlin [100%] Gradling tasks for kotlin Uploading: com/github/rosjava/kotlin/sample/0.1.0/sample-0.1.0.jar to repository remote at file:/home/ros/ros/myjava/devel/share/maven Transferring 4K from remote Uploaded 4K [100%] Built target gradle-kotlin RosJavaと全く同じ。
31.
実行 これまたRosJavaと全く同じ。 $ cd src/<Package>/sample/build/install/sample/bin $
./sample com.github.rosjava.kotlin.sample.Listener
32.
手順おさらい 1. RosJavaを入れる 2. プロジェクトを作る 3.
build.gradleにkotlin関係のコードを追記する 4. kotlinでコードを書く 5. ビルド RosJavaと一緒 RosJavaと一緒
33.
Kotlin化 • コードは少し簡潔になった • Null安全で実行中にぬるぽで突然死が無い •
ノードの突然死回避→普通のExceptionでは死ぬ • IntelliJ IDEAとROSの相性がいい事に気がつく
34.
But…
35.
But… • Pythonと比べると実行までに時間がかかる • サンプルのビルドに11秒ほど •
ハッカソンなど時間が無い時にはストレスに
36.
まとめ
37.
まとめ 👀Kotlinでのノード実装の方法を紹介 📗RosJavaでもROS本の知識が生きる 😖短期の開発で静的型言語は大変 😃型チェックとNullセーフは安心
38.
おしまい
39.
リンク • 写真素材ぱくたそ • https://www.pakutaso.com •
RosJavaを入れた記録 • http://qiita.com/iwata-n@github/items/989bed3acc21ffb28521 • KotlinでROSのノードを書く • http://qiita.com/iwata-n@github/items/30eefa47326fb5b0ef77 • 今日のコード+αのGithub • https://github.com/iwata-n/roskotlin • KotlinのGithub • https://github.com/JetBrains/kotlin-examples/blob/master/ gradle/hello-world/build.gradle
Download