3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JuliaでROS2のPub/Subをやってみた

Last updated at Posted at 2020-05-27

はじめに

みなさん,Pythonは好きですか?
僕は好きじゃないです(嫌いとは言っていない)。
そこで,Pythonに代わる言語としてJuliaを使ってROS2のPub/Subをやってみようと思います。

追記

ROS1ではhttps://github.com/jdlangs/RobotOS.jl というライブラリが使えそうです.
また,そのうちROS2サポートもされるらしいです.

Juliaのインストール

ここからダウンロードしてインストールしてください。
https://julialang.org/downloads/

ROS2のインストール

ここが詳しいです。
https://qiita.com/k-koh/items/838c70004119c329c617

JuliaにPyCallを追加

JuliaのREPLを起動します。

$julia
              _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.4.1 (2020-04-14)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

起動したら,]キーを押します。
すると,以下のような文字列が表示されると思います。

(@v1.4) pkg>

ここで以下を入力します。

add PyCall

これでエラーが出なければパッケージの追加は完了です。

コード(Pub)

pub.jl
using PyCall
rclpy = pyimport("rclpy")
Node = pyimport("rclpy.node")
String = pyimport("std_msgs.msg")

rclpy.init()
node = Node.Node("talker")

pub = node.create_publisher(String.String, "chatter", 10)

msg = String.String()
msg.data = "Hello"

pubmsg() = pub.publish(msg) 

timer = node.create_timer(0.5, pubmsg)
rclpy.spin(node)

node.destroy_timer(timer)
node.destroy_node()
rclpy.shutdown()

コード(Sub)

sub.jl
using PyCall
rclpy = pyimport("rclpy")
Node = pyimport("rclpy.node")
String = pyimport("std_msgs.msg")

rclpy.init()
node = Node.Node("listener")

submsg(msg) = println(msg.data)

sub = node.create_subscription(String.String, "chatter", submsg, 10)

rclpy.spin(node)

node.destroy_node()
rclpy.shutdown()

動作

$julia pub.jl&
$julia sub.jl
Hello
Hello
Hello
...

まとめ

JuliaでROS2のPub/Subを動かすことができました。
これでJuliaとロボットを連携させることができるとわかりました。
とはいっても,PyCallでPythonのrclpyを呼び出して使っているだけなのでrcljl(?)が欲しいです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?