【Unitree Go1】外部PC上から無線で unitree_ros_to_real を実行する:ローレベル制御

1. はじめに

Go1をROSを用いて運動制御するために、Unitree社はunitree_ros_to_real パッケージを公開しています。

本稿は、前回の記事に引き続き、Go1に無線接続をし、外部PC上から unitree_ros_to_real のローレベル制御を実行する方法をご案内します。

Github unitree_ros_to_real: https://github.com/unitreerobotics/unitree_ros_to_real

 

2. 環境

以下の環境にて、この手順が有効であることを確認しています。

  • 機種: R&D(Edu), R&D+(Edu+)
  • 外部PC: Linux Ubuntu 20.04 (amd64)
  • ROS: Noetic
  • unitree_legged_sdk: v3.8.6

 

3. 手段

まず前回の記事に沿って、必要に応じてGo1のWi-Fiに接続し、unitree_ros_to_real のパッケージをクローンしてください。

ネットワーク設定


(Go1のシステムアーキテクチャ)

Go1をローレベルで制御するときは MCU (IP: 192.168.123.10) を使用します。そのため、外部との接続に使っているWifiモジュール (IP: 192.168.12.1) と MCU 間のルートを確立する必要があります。

(1) Raspberry Pi に ssh でログイン

$ ssh pi@192.168.12.1

(2) IPフォーワードを有効化

Raspberry Pi でのパケットの転送を可能にするために、

$ sudo vi /etc/sysctl.conf

でファイルを開き、net.ipv4.ip_forward=1の行のコメントを外してください。

ファイルを保存して閉じ、変更した設定をリロードします。

$ sudo sysctl -p

(3) iptables の設定

iptables を利用して、ルーティングとパケットフィルタリングの設定を行います。

まず、filternat テーブルの設定をすべてクリアします。

$ sudo iptables -F
$ sudo iptables -t nat -F

wlan1(IP: 192.168.12.1)、eth0(IP: 192.168.123.161) へ出ていくパケットについてIPマスカレードを有効化し、IPアドレス・ポート番号を変換するように設定します。

$ sudo iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE
$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Raspberry Pi を経由したパケットの転送を wlan1eth0 間で許可します。

$ sudo iptables -A FORWARD -i wlan1 -o eth0 -j ACCEPT
$ sudo iptables -A FORWARD -i eth0 -o wlan1 -j ACCEPT 

iptables の設定は、各テーブルについて以下のコマンドで確認できます。

外部PCのターミナルで ping 192.168.123.10 を打ち、以下のようになったらMCUに通信できることが確認できます。

必要に応じて、外部PCのデフォルトゲートウェイを192.168.12.1に設定してください。

$ sudo route add default gw 192.168.12.1

 

実行

(1) はじめにローンチファイルを実行

$ roslaunch unitree_legged_real real.launch ctrl_level:=lowlevel

(2) プログラムの実行

ローレベル制御のサンプルでは、右前脚の Calf が曲げ伸ばしされるのが確認できます。

$ rosrun unitree_legged_real example_postion

※ ローレベル制御をする際は、ジョイスティックで L2+A を押しロボットを座らせ、ハンガーキャスターでロボットを吊るしてください。

 

関連記事

【Unitree Go1】外部PC上から無線で unitree_ros_to_real を実行する:ハイレベル制御
【Unitree Go1】Low Level制御の概要について

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です