2.2K Views
July 23, 24
スライド概要
この資料では、箱庭デジタルツインのデモ環境を構築する手順を整理しています。
- GitHubリポジトリ情報
- 具体的なインストール手順や機器構成をこちらを参照ください。
https://github.com/toppers/hakoniwa-digital-twin
- 全体構成
- デモ環境構築手順
- チェックリスト
TOPPERS/箱庭WG活動でUnityやらAthrillやらmROSやら触ってます。 最近は仕事の関係でWeb系の技術に注力しつつ、箱庭への転用を模索しています。 2023年8月1日:合同会社箱庭ラボに移動しました
箱庭(Hakoniwa) Digital-Twin 合同会社箱庭ラボ 森崇
はじめに • この資料では、箱庭デジタルツインのデモ環境を構築する手順を整理していま す。 • GitHubリポジトリ情報 • 具体的なインストール手順や機器構成をこちらを参照ください。 • https://github.com/toppers/hakoniwa-digital-twin • 全体構成 • デモ環境構築手順 • チェックリスト 2
全体構成 3
デモ環境構築手順 10. 箱庭バーチャル ロボット側 の動作チェック 1. Mac PC セットアップ (ShmProxy) 2. 箱庭ドローン シミュレータ 動作チェック 3. Linux PC セットアップ (RosProxy) 4. ネットワーク 環境構築 (有線) 8. 物理環境 セットアップ 4. ネットワーク 環境構築 (無線) 7. URG セットアップ 7. URG 動作チェック 5. TB3 セットアップ 6. TB3 動作チェック 11. 箱庭バーチャル ドローン側 のセットアップ 14. ARデバイス (iPhone) のセットアップ 9. インフラセンサ 動作チェック 12. TB3制御 プログラム セットアップ 13. TB3制御 結合チェック 15. 全体結合チェック 4
Mac PC セットアップ • ゴール • ShmProxyをインストールできていること • 作業PC:Mac • 入力 • hakoniwa-digital-twin • digital/config/real/custom.json • 手順 • ShmProxyのインストール手順 • cd hakoniwa-digital-twin/bridge/virtual • bash clean.bash • bash build.bash • 結果:shm-proxyバイナリができていること • ls ./cmake-build/shm-proxy/shm-proxy 5
箱庭ドローンシミュレータ動作チェック • ゴール • 箱庭ドローンシミュレータをPythonで動かすことができること • 箱庭ドローンシミュレータをPS4コントローラで動かすことができること • 作業PC:Mac • 入力 • hakoniwa-px4sim • hakoniwa-unity-drone-model • 対象となるUnityシーン:Assets/Scenes/DigitalTwin/Hakoniwa • 手順 • hakoniwa-unity-drone-model側: 対象シーンを開く • custom.jsonを生成する(Window/Hakoniwa/Generate) • plugin/plugin-srcs/drone-config.jsonの drones/DroneTransporter/LiDARs/LiDAR/の以下を変更する • 変更前:"X": 0.4401, "Y": 0, "Z": -0.1365, • 変更後:"X": 0.110025, "Y": 0, "Z": -0.034125, • • hakoniwa-px4sim側 Python向け: • 端末A:bash drone-app.bash ../../hakoniwa-unity-drone-model config/api_sample • 端末B:python3.12 twin.py ./custom-twin.json • PS4コントローラ向け: • 端末A:bash drone-app.bash ../../hakoniwa-unity-drone-model config/rc • 端末B:python3.12 rc.py ./custom-twin.json • 6
Linux PC のセットアップ • ゴール • RosProxyをインストールできていること • 作業PC:Linux • 入力 • hakoniwa-digital-twin • digital/config/real/custom.json • 手順 • RosProxyのインストール手順 • cd hakoniwa-digital-twin/bridge/third-party/hakoniwa-ros2pdu • bash create_proxy_ros_zenoh.bash ../../../digital/config/real/custom.json • cd workspace • colcon build --packages-select hako_ros_proxy • 結果:hako_ros_proxyができていること • ls install/hako_ros_proxy 7
ネットワーク環境構築(有線・無線) • ゴール • Wi-Fiルーターのセットアップが完了していること • Mac Pc と Linux PC/QUEST3が有線接続で互いに通信可能であること • TB3から無線アクセスポイントに接続できること • 必要となる機器 • Wi-Fiルーター • Mac PC/Linux PC/QUEST3(有線接続) • TB3(無線接続) • 有線LAN2本 • 手順 • Wi-Fiルータセットアップマニュアルを参照 8
TB3セットアップ(Wi-Fi) • ゴール • Wi-Fi設定できていること • 作業PC:TurtleBot3のラズパイ • 入力 • Wi-Fi設定 • /etc/netplan/50-cloud-init.yaml • アクセスポイントとパスワード • 手順 • 50-cloud-init.yamlを開き、アクセスポイントとパスワードを設定する • wifis: • wlan0: • dhcp4: true • dhcp6: true • access-points: • <アクセスポイント名>: • password: <パスワード> • リブートする 9
TB3セットアップ(パッチ適用) • ゴール • TB3 プログラムにパッチを適用されていること • 作業PC:LinuxとTurtleBot3のラズパイ • 入力 • hakoniwa-digital-twin/real/robot/tb3/robot.launch.py • 手順 • 対象ファイルをコピー配置する • 例: • scp robot.launch.py ubuntu@<TB3 ipaddr>:/tmp/ • TB3プログラムのパッチ適用手順を参照ください • turtlebot3_ws配下でリビルドしてください • colcon build 10
TB3のサービス自動起動 • systemd で、起動時に以下のコマンドを自動実行できるようにします。 • ros2 launch turtlebot3_bringup robot.launch.py • 起動スクリプト:実行権限をつけること • /home/ubuntu/turtlebot3_ws/boot/start_tb3.bash • systemd サービスファイル: • /etc/systemd/system/tb3_bringup.service • サービスの有効化: • sudo systemctl enable tb3_bringup.service • サービス開始:手動でやる場合 • sudo systemctl start tb3_bringup.service 11
start_tb3.bash #!/bin/bash source /opt/ros/foxy/setup.bash source /home/ubuntu/turtlebot3_ws/install/setup.bash export TURTLEBOT3_MODEL=burger ros2 launch turtlebot3_bringup robot.launch.py 12
tb3_bringup.service [Unit] Description=Start TurtleBot3 Bringup After=network.target [Service] User=ubuntu ExecStart=/home/ubuntu/turtlebot3_ws/boot/start_tb3.bash Restart=on-failure Environment="TURTLEBOT3_MODEL=burger" [Install] WantedBy=multi-user.target 13
TB3動作チェック
• ゴール
• TB3をROSトピックで制御できること
• 作業PC:LinuxとTurtleBot3のラズパイ
• 入力
• /tb3_cmd_vel
• 手順
• TB3を起動し、以下のコマンドを実行する
• ros2 launch turtlebot3_bringup robot.launch.py
• Ubuntu PCから TB3のROSトピックを参照できることを確認する
• 前進
• ros2 topic pub /tb3_cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.05, y: 0.0, z: 0.0},
angular: {x: 0.0, y: 0.0, z: 0.0}}"
• 後進
• ros2 topic pub /tb3_cmd_vel geometry_msgs/msg/Twist "{linear: {x: -0.05, y: 0.0, z: 0.0},
angular: {x: 0.0, y: 0.0, z: 0.0}}"
• 停止
• ros2 topic pub /tb3_cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.0, y: 0.0, z: 0.0},
angular: {x: 0.0, y: 0.0, z: 0.0}}"
14
URGセットアップおよび動作チェック • ゴール • /scanをRvizで参照できること • 作業PC:Linux • 入力 • /scan • 手順 • URGをLinux PCにUSB接続する • URGのROS2ドライバをインストール • sudo chmod 777 /dev/ttyACM0 • ros2 launch urg_node2 urg_node2.launch.py • Rvizで点群表示されるか確認する • rviz2 15
物理環境のセットアップ • ゴール • ダンボールで周辺環境を構築できていること • 1m x 2.0m x 0.3m • 入力 • ダンボール、留め金、セロテープ等 • 手順 • がんばれ! 1m 2.0m 0.3m 16
インフラセンサの動作チェック • ゴール • インフラセンサでロボット追跡できること 環境認識直後: ロボット追跡中: • 作業PC:Linux • 入力 • 円柱の物体(ゴミ箱とかで良い) • 手順 • UbuntuPCにインフラセンサモジュールをインストール • URGセンサを起動する • ros2 launch urg_node2 urg_node2.launch.py • Infra Sensorを起動する • ロボットを認識 ros2 run infra_sensor_urg lidar_subscriber --ros-args -p act_mode:=real • センサ起動直後は、環境を記録するのでしばらく待機 • 入力文字列が出力されたら、円柱の物体を配置して、「s」を入力してエンターキー押下 • 右上の図のように、円柱状のセグメントが見えます。 • 円柱を移動させて、セグメントが追従していたら成功です! 17
箱庭バーチャルロボット側の動作チェック • ゴール • リアル側のロボットの移動に追従してバーチャルロボットが移動すること • 作業PC:Mac & Linux 移動前: • 入力 • リアル側のロボット • hakoniwa-unity-drone-model • 対象となるUnityシーン:Assets/Scenes/Hakoniwa • 手順 • Mac PC側で、ドローンシミュレータを起動する • bash drone-app.bash ../../hakoniwa-unity-drone-model config/api_sample • Mac PC側で、ShmProxyを起動する cd hakoniwa-digital-twin/bridge/virtual • ./cmake-build/shm-proxy/shm-proxy ShmProxy ../../digital/config/real/custom.json 20 • • Mac PC側で、箱庭Unity側を起動し、シミュレーション開始する • Linux PC側で、RosProxyを起動する 移動後: cd hakoniwa-digital-twin/bridge/third-party/hakoniwa-ros2pdu/workspace/ • source install/setup.bash • ros2 run hako_ros_proxy hako_ros_proxy_node • • Linux PC側で、インフラセンサを実行する • cd hakoniwa-digital-twin/real/sensors/workspace source install/setup.bash • ros2 run infra_sensor_urg lidar_subscriber --ros-args -p act_mode:=real • • リアルロボットを移動する • 箱庭Unity側のバーチャルロボットが連動して移動することを確認する 18
箱庭バーチャルドローン側のセットアップ • ゴール • AR用のIPアドレス設定ができていること • Pythonアプリが動くこと • 作業PC:Mac クリック • 入力 • ARデバイスのIPアドレス • Mac PCのIPアドレス • hakoniwa-unity-drone-model • 対象となるUnityシーン:Assets /Scenes /Hakoniwa • 手順 • Unityシーンを開き、ヒエラルキービューのARをクリック • インスペクタビューで、IPアドレスを設定 • Server_ipaddr:Mac PCのIPアドレス • Client_ipaddr:ARデバイスのIPアドレス • 箱庭ドローンシミュレータを通常手順で実行し、 Pythonが正常に動作すること。 Mac PCの IPアドレス ARデイバスの IPアドレス • python3.12 twin.py custom-twin.json 19
TB3制御プログラムセットアップ • ゴール • Ubuntu PCにTB3の制御プログラムをインストールできること • 作業PC:Linux • 入力 • hakoniwa-digital-twin • 手順 • UbuntuPCにロボット制御プログラムをインストール • cd hakoniwa-digital-twin/real/robot/workspace/ • colcon build --packages-select tb3_controller 20
TB3制御結合チェック • ゴール • バーチャルドローンが運んだ荷物をリアルロボットが運搬できること • 入力 • hakoniwa-digital-twin • 作業PC:Mac PC, Linux PC, TurtleBot3のラズパイ • 手順 • 実行手順の1-8 • TB3 : ros2 launch turtlebot3_bringup robot.launch.py • Linux: ros2 launch urg_node2 urg_node2.launch.py • Linux: ros2 run hako_ros_proxy hako_ros_proxy_node • Linux: ros2 run infra_sensor_urg lidar_subscriber --ros-args -p act_mode:=real • Phys : TB3を配置して、s 入力 • Linux: ros2 run tb3_controller tb3_controller_node --ros-args -p act_mode:=real • Mac : bash run.bash • Mac : Unity Editor起動&スタートボタン押下 • Mac : python3.12 twin.py ./custom-twin.json 21
ARデバイス(QUEST3)のセットアップ • ゴール • ARアプリがインストールされていること • ARデバイスの初期位置設定ができていること • 入力 • ARデバイス(QUEST3) • Unityで開発したQUEST3向けUnityシーン(Quest3.unity) • 手順 • Quest3のUnityシーンをビルドし、ARデバイスにインストールします。 • 起動すると、待機状態になります。 • この後、xr_param_setting.pyを起動して、PS4コントローラで初期位置を調整します。 • python utils/xr_origin_tuning.py --input joystick ./utils/xr_config.json <QUEST3のIP>:38528 • PS4で初期位置完了したら、PS4コントローラの ボタンを押して終了します。 22
全体結合チェック • ゴール • バーチャルドローンが運んだ荷物をリアルロボットが運搬できることをARデバイスで観察できること • 入力 • hakoniwa-digital-twin • 手順 • 以下の実行手順の0-8 • 実行手順 23
チェックリスト(MacPC) 機器 チェック 備考 本体 □ ー 電源ケーブル □ ー マウス □ ー USB-ETHERNET □ ー USBハブ(Type-C) □ ー 24
チェックリスト(PS4コントローラ) 機器 チェック 備考 本体 □ ー USBケーブル □ ー 25
チェックリスト(QUEST3) 機器 チェック 備考 本体 □ ー USB-ETHERNET □ ー USBケーブル(充電用) □ ー USBコンセント(充電用) □ ー 26
チェックリスト(Wi-Fiルータ) 機器 チェック 備考 本体 □ ー 電源ケーブル □ ー LANケーブル(3本) □ QUEST3, LinuxPC, MacPC 27
チェックリスト(LiDAR: URG) 機器 チェック 備考 本体 □ ー USBケーブル □ ー URG設置箱 □ ーー 28
チェックリスト(LinuxPC) 機器 チェック 備考 本体 □ ー 電源ケーブル □ ー マウス □ ー USBハブ □ ー USB-ETHERNET □ ー 29
チェックリスト(TurtleBot3) 機器 チェック 備考 本体 □ ー ハット □ ー USBキーボード □ ー USBマウス □ ー バッテリー(2本) □ ー バッテリー充電器 □ ー 30