7
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.

Turtlebot3(Burger)をROS BridgeしてRustで動かす準備

Last updated at Posted at 2020-08-07

はじめに

株式会社Ristのロボットチームの原山です。

Ristは画像認識AIの会社ですが、その他にも色々とやっております。
その中にロボット事業もあり、私はその一員です。

今回はROSとRustについて書いていきます。

記事について

社内では、Rustの勉強会があります。
なのでTurtlebot3 BurgerをRustで動かすための準備をしてみたいと思います。

Rustについて

RustのROSクライアントライブラリーはrosrustまたはrclrustです。
今回は、rosrustを使用
Rustを使えるようにするにはここから。

また、ビルドはcatkin_makeを使用します。

環境

Turtlebot3 Burger: Ubuntu 18.04, Dashing(ROS2), ROS Bridge
RemotePC: Ubuntu 18.04, Melodic(ROS1)

実機

Turtlebot 3 Burger: Raspberry pi 4 , OpenCR

TurtleBot3 セットアップ

Raspberry pi 4 用のSDカード

  • ここからダンロード。
  • EtcherなどでSDカードに書き込み。
  • SDカードをRaspberry pi 4に挿入
  • usernameはubuntu, passwordはubuntu

Raspberry pi 4のネットワーク設定

  • ターミナルを開く
  • ネットワーク設定用のファイルを作成する
$ sudo touch /etc/netplan/99-netcfg.yaml
$ sudo nano /etc/netplan/99-netcfg.yaml
  • 下記を記載する
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes
      dhcp6: yes
      optional: true
  wifis:
    wlan0:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.0.XXX/24, ] -> IPは適切なのに変更してください。
      gateway4: 192.168.0.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
      access-points:
        Your wifi access point name:
          password: "Your wifi access point password"
  • Raspberry pi 4を再起動
$ sudo netplan apply
$ reboot
  • サービスの起動
systemctl mask systemd-networkd-wait-online.service

Remote PCからRaspberry pi 4に接続

  • Raspberry pi 4に接続
$ ssh ubuntu@<YOUR NETWORK IP of Raspberry PI>

ROS 2 (Dashing Diademata) をインストール

$ sudo apt update && sudo apt upgrade
  • ロケールの設定
$ sudo locale-gen en_US en_US.UTF-8
$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
$ export LANG=en_US.UTF-8
  • 必要なパッケージをインストールとソースリストの更新
$ sudo apt update && sudo apt install curl gnupg2 lsb-release
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
$ sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'
  • ROS2をインストール
$ sudo apt update
$ sudo apt install ros-dashing-ros-base
  • Turtlebot3パッケージをクローン、各種設定

$ sudo apt install python3-argcomplete python3-colcon-common-extensions libboost-system-dev build-essential
$ mkdir -p ~/turtlebot3_ws/src && cd ~/turtlebot3_ws/src
$ git clone -b ros2 https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git
$ git clone -b ros2 https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ git clone -b ros2 https://github.com/ROBOTIS-GIT/turtlebot3.git
$ git clone -b ros2 https://github.com/ROBOTIS-GIT/DynamixelSDK.git
$ cd ~/turtlebot3_ws/src/turtlebot3
$ rm -r turtlebot3_cartographer turtlebot3_navigation2
$ cd ~/turtlebot3_ws/
$ echo 'source /opt/ros/dashing/setup.bash' >> ~/.bashrc
$ source ~/.bashrc
$ colcon build --symlink-install --parallel-workers 1
  • .bashrcに下記を記載
export ROS_DOMAIN_ID=30
export TURTLEBOT3_MODEL=burger
export ROS_MASTER_URI=http://192.168.0.204:11311
export ROS_HOSTNAME=192.168.0.217
  • OpenCRの設定

OpenCRの設定方法

ROS Bridge

同僚のサルバトーレさんnのROS Bridge記事を参考にします。

$ sudo apt install ros-dashing-ros1-bridge

Remote PCセットアップ

MelodicのROS1環境をRemote PCにセットアップします。

rosrustのセットアップ

  • プレーンなパッケージを作成する
$ cd ~/catkin_ws/src
$ catkin_create_pkg turtlebot3_rust_controller

turtlebot3_rust_controllerとつけてますが、何でもいいです。

  • rustプロジェクトを作成する
$ cargo new --bin rust_controller
  • package.xmlとCMakeLists.txtをturtlebot3_rust_controller内からコピーしてくる。

  • package.xml

    • turtlebot3_rust_controllerってところをrust_controllerに変更する

<?xml version="1.0"?>
<package format="2">
  <name>rust_controller</name>
  <version>0.0.0</version>
  <description>The rust_controller package</description>

  <!-- One maintainer tag required, multiple allowed, one person per tag -->
  <!-- Example:  -->
  <!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
  <maintainer email="kazuyuki-harayama@todo.todo">kazuyuki-harayama</maintainer>


  <!-- One license tag required, multiple allowed, one license per tag -->
  <!-- Commonly used license strings: -->
  <!--   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
  <license>TODO</license>


 ...省略

  <buildtool_depend>catkin</buildtool_depend>


  <!-- The export tag contains other, unspecified, tags -->
  <export>
    <!-- Other tools can request additional information be placed here -->

  </export>
</package>

  • CMakeLists.txt
    • turtlebot3_rust_controllerってところをrust_controllerに変更する
cmake_minimum_required(VERSION 3.0.2)
project(rust_controller)

## Compile as C++11, supported in ROS Kinetic and newer
# add_compile_options(-std=c++11)

## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED)

...省略

###################################
## catkin specific configuration ##
###################################
## The catkin_package macro generates cmake config files for your package
## Declare things to be passed to dependent projects
## INCLUDE_DIRS: uncomment this if your package contains header files
## LIBRARIES: libraries you create in this project that dependent projects also need
## CATKIN_DEPENDS: catkin_packages dependent projects also need
## DEPENDS: system dependencies of this project that dependent projects also need
catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES turtlebot3_rust_controller2
#  CATKIN_DEPENDS other_catkin_pkg
#  DEPENDS system_lib
)

...省略

add_custom_target(rust_controller
    ALL
    COMMAND cargo build --release -p rust_controller
    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/cargo/release/rust_controller ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/rust_controller
    COMMENT "Building my Rust library"
)

  • ~/catkin_ws/Cargo.tomlを作って下記を記載

[workspace]
members = [ "src/rust_test" ]
  • ~/catkin_ws/.cargo/configを作って下記を記載
[build]
target-dir = "build/cargo"

次はセットアップができたので次は、実行するを書く。

参考

[ROS2]
Raspberry Pi 4 にROS 2をインストールする
Raspberry Pi 4 + ROS2 で、最低限のロボットプログラムを作る準備

[rosrust]
ROSのnodeをRustで書いてcatkinで管理する

7
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
7
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?