Skip to content

Instantly share code, notes, and snippets.

@comoc
Last active September 18, 2020 06:48
Show Gist options
  • Save comoc/e784fefea4f16186f89f16010a1e8398 to your computer and use it in GitHub Desktop.
Save comoc/e784fefea4f16186f89f16010a1e8398 to your computer and use it in GitHub Desktop.
@chikuta さんのプリメイドAIのURDFをUnity ROS#で表示する方法

準備

@chikuta さんのpremaidai_descriptionのURDFを ROS(Kinetic等)とROS#を使ってUnity上に召喚する方法

1. ROSのcatkin_ws内の作業

URDFをrosbridge websocketで送出するための作業

  1. https://github.com/siemens/ros-sharp/tree/master/ROS の file_server フォルダ以下を丸ごと catkin_ws/src 以下に置く
  2. cd catkin_ws/src そして git clone https://github.com/chikuta/premaidai_description.git
  3. premaidai_description/launch 内に以下の内容を記述した fileserver.launch という名前のファイルを作る
<?xml version="1.0"?>
<launch>
    <arg name="port" default="9090" />
    <include file="$(find rosbridge_server)/launch/rosbridge_websocket.launch">
        <arg name="port" value="9090" />
    </include>
    <node name="file_server" pkg="file_server" type="file_server" output="screen" />

    <!-- args -->
    <arg name="robot" default="premaidai" />
    <arg name="robot/name" default="premaidai" />

    <!-- load robot -->
    <param name="robot_description" command="$(find xacro)/xacro.py '$(find premaidai_description)/robots/$(arg robot).urdf.xacro'" />
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
</launch>
  1. 送出開始 roslaunch premaidai_description fileserver.launch

2. Unity上の作業

URDFを受信してシーン内に表示するための作業

  1. 適当な3Dプロジェクトを作る
  2. ここ https://github.com/siemens/ros-sharp/releases から RosSharp.unitypackage をダウンロードしてインポートする
  3. Assets/RosSharp/Scenes/UnitySimulationScene を開く。そしてHierarchy上のturtlebotを消すか無効にしておく
  4. メニューから ROSBridgeClient > Transfer URDF From ROS... を選択する
  5. 開いたウィンドウのAddressに ws://[ROS側のアドレス]:9090 を入力し Read Robot Description ボタンを押す
  6. うまく行けばROS側からURDFが取得されてHierarcyに追加される
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment