はじめに
今回からturtlebot3実機を動かします.
このページではTurtleBot3を動かすまでの設定・接続・動作確認を行います.
環境
・OS: Windows11 Pro (64bit)
・ROS: ROS2 humble (WSL2のUbuntu22.04に)
ここまでの環境構築については下記参照
・WSL2にROS2を入れてgazeboでシミュレーションするまでの手順
https://qiita.com/pez/items/16011df0e663ceac694a
TurtleBot3実機のセットアップについては下記参照
https://qiita.com/pez/items/1251c7ad0a21fd6f0a48
1. wifiへの接続・通信
TurtleBot3と同じローカルネットワークに接続する必要があります.また,WSL上のubuntuと通信するためにファイヤーウォールの設定が必要です.
※参考にさせて頂いたページ
https://qiita.com/akinami/items/2200d2c49a43a183f14d
ファイヤーウォールの設定
「設定」→「プライバシーとセキュリティ」→「Windowsセキュリティ」→「ファイヤーウォールとネットワーク保護」→「詳細設定」を開き,「受信の規則」で「ファイルとプリンターの共有(エコー要求-ICMPv4受信)」を有効にして下さい.
ファイヤーウォールにルールを追加する
同じく,「設定」→「プライバシーとセキュリティ」→「Windowsセキュリティ」→「ファイヤーウォールとネットワーク保護」→「詳細設定」を開き,「受信の規則」で右の「新しい規則」をクリックします.
・「カスタム」を選択して「次へ」
・「全てのプログラム」を選択して「次へ」
・「プロトコルの種類」を「UDP」に設定して「次へ」
・「規則を適用するローカルIPアドレス」と,「規則を適用するリモートIPアドレス」の両方に,TurtleBot を接続している wifiルータが割り当てるIPアドレスの範囲を設定します.(例えば172.28.1.1 ~172.28.1.255 など)
WSLのubuntuのIPアドレスとwindowsのIPアドレスをミラーリングする
1. 「.wslconfig」ファイルの確認
C:\Users\【windowsログインユーザ名】 の中に「.wslconfig」ファイルがあるか確認する.ない場合は作成.中身を次のようにする.
[wsl2]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
2. IPアドレスの確認
ipconfig
ifconfig
それぞれ「IPv4アドレス」が同じになっているかを確認して下さい.
ssh のインストール
※既にインストール済みの場合は不要
sudo apt install openssh-server
起動
sudo systemctl enabel ssh
sudo service ssh restart
sshd_config の設定
※テキストエディタは各自好きなものを使用(下記はnano)
sudo nano /etc/ssh/sshd_config
~~~~~ 一部抜粋
Port 22
# AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::1
~~~~~ 一部抜粋
PasswordAuthentication yes
sshサービスを再起動
sudo service ssh restart
ssh接続の確認
次にTurtleBot3にディスプレイ・キーボードを接続して立ち上げます.
・ユーザー名:ubuntu
・パスワード:turtlebot
同様にIPアドレスを確認して下さい.
ifconfig
ここでPCとTurtlebotが同じネットワーク(同じwifiルータ)に接続されていることを確認して下さい.
ubuntu(WSL) → turtlebot ssh接続の確認
ssh ubuntu@[turtlebotのIPアドレス]
【例】
ssh ubuntu@172.28.1.11
パスワードは "turtlebot" です
2. 「.bashrc」の設定
.bashrcを編集する.下記はemacsを使う場合の例
sudo emacs ~/.bashrc
export の部分
下記は一例なので実機の設定に合わせて下さい.
実機の設定は実機で.bashrcを開いて確認します.
※設定内容については演習時に個別で確認します
export ROS_DOMAIN_ID=30
export TURTLEBOT3_MODEL=waffle_pi
export OPENCR_MODEL=waffle
export OPEN_PORT=/dev/ttyACM0
export LDS_MODEL=LDS-02
有効化
source ~/.bashrc
3. 動作確認
teleopの確認
ros2 launch turtlebot3_bringup robot.launch.py
ros2 run turtlebot3_teleop teleop_keyboard
リモートPCからキーボード操作でTurtleBotが動かせたら成功
4. 演習
動作確認中(bringupノードとteleopノードを立ち上げている時)に下記コマンドで表示されるトピックの送受信関係の図を添付して提出して下さい.
rqt_graph

