Enviar pesquisa
Carregar
KotlinでROSノードを書いてみた
•
3 gostaram
•
2,535 visualizações
Naoki Iwata
Seguir
2015/10/04 ROS勉強会
Leia menos
Leia mais
Software
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 39
Baixar agora
Baixar para ler offline
Recomendados
ROS2.0時代に備えたc++11/14
ROS2.0時代に備えたc++11/14
Takashi Ogura
ROSによる今後のロボティクスのあり方
ROSによる今後のロボティクスのあり方
Mori Ken
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)
Masataka Kondo
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
Yuuki Takezawa
WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!
WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!
Yuta Ohashi
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
Atsuhiro Kubo
ROS2のコードチェック
ROS2のコードチェック
Kotaro Yoshimoto
自社の汎用シリアルサーボドライバ・ライブラリをROSに導入してみた
自社の汎用シリアルサーボドライバ・ライブラリをROSに導入してみた
Reo Matsumura
Recomendados
ROS2.0時代に備えたc++11/14
ROS2.0時代に備えたc++11/14
Takashi Ogura
ROSによる今後のロボティクスのあり方
ROSによる今後のロボティクスのあり方
Mori Ken
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)
Masataka Kondo
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
Yuuki Takezawa
WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!
WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!
Yuta Ohashi
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
Atsuhiro Kubo
ROS2のコードチェック
ROS2のコードチェック
Kotaro Yoshimoto
自社の汎用シリアルサーボドライバ・ライブラリをROSに導入してみた
自社の汎用シリアルサーボドライバ・ライブラリをROSに導入してみた
Reo Matsumura
120418 tokyo node5_lin_qonnodejs
120418 tokyo node5_lin_qonnodejs
Takayoshi Tanaka
The Basic of How to build LibreOffice / LibreOffice開発版ビルドの基礎 for Windows
The Basic of How to build LibreOffice / LibreOffice開発版ビルドの基礎 for Windows
Naruhiko Ogasawara
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
Tomofumi Yagi
Git 初心者講座 by forkwell
Git 初心者講座 by forkwell
sinsoku listy
Frank-afcproxy
Frank-afcproxy
Toshiyuki Terashita
Spekではじめるユニットテスト
Spekではじめるユニットテスト
Recruit Lifestyle Co., Ltd.
LibreOfficeコミュニティに不具合修正パッチを送ってみた
LibreOfficeコミュニティに不具合修正パッチを送ってみた
Tomofumi Yagi
LibreOfficeをWindows上でビルドする
LibreOfficeをWindows上でビルドする
Tomofumi Yagi
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Tetsuyuki Kobayashi
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
Taisuke Inoue
最新のデスクトップアプリを使おう:Snap, Flatpak, AppImage
最新のデスクトップアプリを使おう:Snap, Flatpak, AppImage
Naruhiko Ogasawara
PHPerのためのpostgresqlチューニングmini
PHPerのためのpostgresqlチューニングmini
Takhisa Hirokawa
ROS 2 Client Library for E^2
ROS 2 Client Library for E^2
Hideki Takase
レビューで保守性のためにした コメントをふりかえってみた
レビューで保守性のためにした コメントをふりかえってみた
Takhisa Hirokawa
GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話
mdome
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
akio19937
Web socket and gRPC
Web socket and gRPC
TIS Inc
GitLab/GitLab.com勉強会 第2回
GitLab/GitLab.com勉強会 第2回
NaohiroHamada
OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料
slankdev
LibPGEN 1st Step Guide
LibPGEN 1st Step Guide
slankdev
生活支援ロボットMini@ROS勉強会
生活支援ロボットMini@ROS勉強会
Kensei Demura
Pepper meets ROS
Pepper meets ROS
Kenta Yonekura
Mais conteúdo relacionado
Mais procurados
120418 tokyo node5_lin_qonnodejs
120418 tokyo node5_lin_qonnodejs
Takayoshi Tanaka
The Basic of How to build LibreOffice / LibreOffice開発版ビルドの基礎 for Windows
The Basic of How to build LibreOffice / LibreOffice開発版ビルドの基礎 for Windows
Naruhiko Ogasawara
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
Tomofumi Yagi
Git 初心者講座 by forkwell
Git 初心者講座 by forkwell
sinsoku listy
Frank-afcproxy
Frank-afcproxy
Toshiyuki Terashita
Spekではじめるユニットテスト
Spekではじめるユニットテスト
Recruit Lifestyle Co., Ltd.
LibreOfficeコミュニティに不具合修正パッチを送ってみた
LibreOfficeコミュニティに不具合修正パッチを送ってみた
Tomofumi Yagi
LibreOfficeをWindows上でビルドする
LibreOfficeをWindows上でビルドする
Tomofumi Yagi
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Tetsuyuki Kobayashi
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
Taisuke Inoue
最新のデスクトップアプリを使おう:Snap, Flatpak, AppImage
最新のデスクトップアプリを使おう:Snap, Flatpak, AppImage
Naruhiko Ogasawara
PHPerのためのpostgresqlチューニングmini
PHPerのためのpostgresqlチューニングmini
Takhisa Hirokawa
ROS 2 Client Library for E^2
ROS 2 Client Library for E^2
Hideki Takase
レビューで保守性のためにした コメントをふりかえってみた
レビューで保守性のためにした コメントをふりかえってみた
Takhisa Hirokawa
GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話
mdome
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
akio19937
Web socket and gRPC
Web socket and gRPC
TIS Inc
GitLab/GitLab.com勉強会 第2回
GitLab/GitLab.com勉強会 第2回
NaohiroHamada
OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料
slankdev
LibPGEN 1st Step Guide
LibPGEN 1st Step Guide
slankdev
Mais procurados
(20)
120418 tokyo node5_lin_qonnodejs
120418 tokyo node5_lin_qonnodejs
The Basic of How to build LibreOffice / LibreOffice開発版ビルドの基礎 for Windows
The Basic of How to build LibreOffice / LibreOffice開発版ビルドの基礎 for Windows
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
Git 初心者講座 by forkwell
Git 初心者講座 by forkwell
Frank-afcproxy
Frank-afcproxy
Spekではじめるユニットテスト
Spekではじめるユニットテスト
LibreOfficeコミュニティに不具合修正パッチを送ってみた
LibreOfficeコミュニティに不具合修正パッチを送ってみた
LibreOfficeをWindows上でビルドする
LibreOfficeをWindows上でビルドする
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書く
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
最新のデスクトップアプリを使おう:Snap, Flatpak, AppImage
最新のデスクトップアプリを使おう:Snap, Flatpak, AppImage
PHPerのためのpostgresqlチューニングmini
PHPerのためのpostgresqlチューニングmini
ROS 2 Client Library for E^2
ROS 2 Client Library for E^2
レビューで保守性のためにした コメントをふりかえってみた
レビューで保守性のためにした コメントをふりかえってみた
GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
Web socket and gRPC
Web socket and gRPC
GitLab/GitLab.com勉強会 第2回
GitLab/GitLab.com勉強会 第2回
OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料
LibPGEN 1st Step Guide
LibPGEN 1st Step Guide
Destaque
生活支援ロボットMini@ROS勉強会
生活支援ロボットMini@ROS勉強会
Kensei Demura
Pepper meets ROS
Pepper meets ROS
Kenta Yonekura
EusLispでロボットプログラミング
EusLispでロボットプログラミング
Hiroaki Yaguchi
明日からちょっと KotlinでAndroidが書きたくなる(かもしれない?)SAM変換と拡張関数
明日からちょっと KotlinでAndroidが書きたくなる(かもしれない?)SAM変換と拡張関数
Ryota Murohoshi
SIerアーキテクト視点でみたKotlinの紹介
SIerアーキテクト視点でみたKotlinの紹介
Shinichi Kozake
Dronecodeの概要とROSの対応について
Dronecodeの概要とROSの対応について
博宣 今村
Hacking Robotics(English Version)
Hacking Robotics(English Version)
Kensei Demura
kotlinについて
kotlinについて
隆史 川中
Kotlin
Kotlin
Shumpei Hozumi
Kotlinで快適Android開発 #W8lt
Kotlinで快適Android開発 #W8lt
Junpei Matsuda
もう一度Kotlinの話をしよう #ndsmeetup4
もう一度Kotlinの話をしよう #ndsmeetup4
Yukiya Nakagawa
Kotlinあるある言いたい
Kotlinあるある言いたい
yy yank
Kotlinでマッチョする話
Kotlinでマッチョする話
Shinobu Okano
UnityでC#6.0が使える未来がそろそろ来そう!
UnityでC#6.0が使える未来がそろそろ来そう!
Ryota Murohoshi
Kotlin: Why Do You Care?
Kotlin: Why Do You Care?
intelliyole
普段C#を使っている僕から見たKotlin
普段C#を使っている僕から見たKotlin
Ryota Murohoshi
Kotlinソースコード探訪
Kotlinソースコード探訪
yy yank
Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有
Shinobu Okano
Destaque
(18)
生活支援ロボットMini@ROS勉強会
生活支援ロボットMini@ROS勉強会
Pepper meets ROS
Pepper meets ROS
EusLispでロボットプログラミング
EusLispでロボットプログラミング
明日からちょっと KotlinでAndroidが書きたくなる(かもしれない?)SAM変換と拡張関数
明日からちょっと KotlinでAndroidが書きたくなる(かもしれない?)SAM変換と拡張関数
SIerアーキテクト視点でみたKotlinの紹介
SIerアーキテクト視点でみたKotlinの紹介
Dronecodeの概要とROSの対応について
Dronecodeの概要とROSの対応について
Hacking Robotics(English Version)
Hacking Robotics(English Version)
kotlinについて
kotlinについて
Kotlin
Kotlin
Kotlinで快適Android開発 #W8lt
Kotlinで快適Android開発 #W8lt
もう一度Kotlinの話をしよう #ndsmeetup4
もう一度Kotlinの話をしよう #ndsmeetup4
Kotlinあるある言いたい
Kotlinあるある言いたい
Kotlinでマッチョする話
Kotlinでマッチョする話
UnityでC#6.0が使える未来がそろそろ来そう!
UnityでC#6.0が使える未来がそろそろ来そう!
Kotlin: Why Do You Care?
Kotlin: Why Do You Care?
普段C#を使っている僕から見たKotlin
普段C#を使っている僕から見たKotlin
Kotlinソースコード探訪
Kotlinソースコード探訪
Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有
Semelhante a KotlinでROSノードを書いてみた
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪
豊明 尾古
IntelliJ IDEAとKotlinで作るSpring 5アプリケーション
IntelliJ IDEAとKotlinで作るSpring 5アプリケーション
CASAREAL, Inc.
Gws 20120521 gradle
Gws 20120521 gradle
Nobuhiro Sue
Gradle handson
Gradle handson
Nemoto Yusuke
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
Akio Katayama
Introduction of Rhodes
Introduction of Rhodes
Hitoshi Kuroyanagi
AKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab Contents
Yoshio Terada
scala-kaigi1-sbt
scala-kaigi1-sbt
Kenji Yoshida
Groovy base gradle_20130309
Groovy base gradle_20130309
Nobuhiro Sue
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
Daisuke Hiraoka
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
Midori Oge
Scalaでのプログラム開発
Scalaでのプログラム開発
Kota Mizushima
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
Line Creators Studio Android With Kotlin
Line Creators Studio Android With Kotlin
LINE Corporation
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
Microsoft Corporation
Kotlinことはじめ -まずは触って動かしてみよう-
Kotlinことはじめ -まずは触って動かしてみよう-
CASAREAL, Inc.
All I learned while working on a Scala OSS project for over six years #ScalaM...
All I learned while working on a Scala OSS project for over six years #ScalaM...
Kazuhiro Sera
Driverについて
Driverについて
幸雄 村上
クラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloud
Kazuki Aranami
RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~
Kazuya Wada
Semelhante a KotlinでROSノードを書いてみた
(20)
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪
IntelliJ IDEAとKotlinで作るSpring 5アプリケーション
IntelliJ IDEAとKotlinで作るSpring 5アプリケーション
Gws 20120521 gradle
Gws 20120521 gradle
Gradle handson
Gradle handson
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
Introduction of Rhodes
Introduction of Rhodes
AKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab Contents
scala-kaigi1-sbt
scala-kaigi1-sbt
Groovy base gradle_20130309
Groovy base gradle_20130309
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
Scalaでのプログラム開発
Scalaでのプログラム開発
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
Line Creators Studio Android With Kotlin
Line Creators Studio Android With Kotlin
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
Kotlinことはじめ -まずは触って動かしてみよう-
Kotlinことはじめ -まずは触って動かしてみよう-
All I learned while working on a Scala OSS project for over six years #ScalaM...
All I learned while working on a Scala OSS project for over six years #ScalaM...
Driverについて
Driverについて
クラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloud
RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~
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
Baixar agora