戸惑ったのでメモを残します。
全体の流れは、下記のページを参考にしました。
rosのチュートリアル
Building a Visual Robot Model with URDF from Scratch
オープンソースのROS解説本 11章ROSによるロボットアームの制御
詳説 ROSロボットプログラミング
全体像
- 事前条件
- パッケージの作成
- urdfファイルの作成
- urdf.rvizのコピー
- launchファイルの作成
- launchの実施
事前条件
- ros-indigoがインストールされていること。
- ~/catkin_ws/srcでcakin_init_workspaceが実施され、~/cation_ws/srcが作業フォルダとして認識されていること。
パッケージを作成
urdf確認のためのテスト用パッケージ(my_urdf_test_pkg)を作成します。cd ~/catkin_ws/src catkin_create_pkg my_urdf_test_pkg urdf
urdfファイルを作成
円柱2本で出来た腕を作ります。roscd my_urdf_test_pkg mkdir urdf gedit urdf/my_simple_model.urdf
my_urdf_test_pkg/urdf/my_simple_model.urdf
<?xml version="1.0"?> <robot name="my_simple_model">
<link name="world"/> <link name="base_link"> <inertial> <origin rpy="0 0 0" xyz="0 0 0.5"/> <mass value="0.1"/> <inertia ixx="0.1" ixy="0" ixz="0" iyy="0.1" iyz="0" izz="0.1"/> </inertial> <visual> <origin xyz="0 0 0.3" rpy="0 0 0"/> <geometry> <cylinder length="0.6" radius="0.2"/> </geometry> </visual> </link> <link name="l1"> <inertial> <origin rpy="0 0 0" xyz="0 0 0.5"/> <mass value="0.1"/> <inertia ixx="0.1" ixy="0" ixz="0" iyy="0.1" iyz="0" izz="0.1"/> </inertial> <visual> <origin xyz="0 0 0.3" rpy="0 0 0"/> <geometry> <cylinder length="0.6" radius="0.2"/> </geometry> </visual> </link> <joint name="base_joint" type="fixed"> <parent link="world"/> <child link="base_link"/> </joint> <joint name="j1" type="revolute"> <axis xyz="0 1 0"/> <origin rpy="0 0 0" xyz="0 0 0.6"/> <parent link="base_link"/> <child link="l1"/> <dynamics damping="0.01" friction="0.0"/> <limit effort="100" lower="-1.57" upper="1.57" velocity="100.0"/> </joint> </robot>
urdfのチェックツールをインストールします。
sudo apt install liburdfdom-tools
インストールしたツールでurdfを確認します。
roscd my_urdf_test_pkg check_urdf urdf/my_simple_model.urdf
launchファイルの自作をせずにモデルだけ確認したい場合は、urdf_tutorialを使うとrvizで確認できます。
roslaunch urdf_tutorial display.launch model:=urdf/my_simple_model.urdf
rvizで確認できるurdfファイルができました。
urdf_tutorialでrvizを起動したことをベースに、カスタマイズ出来る環境を作ります。
urdf.rvizをコピー
launchファイルを自作してrvizを起動するために。urdf_tutorialが使っているrvizの設定ファイルを「my_urdf_test_pkg/urdf.rviz」にコピーします。roscd my_urdf_test_pkg roscp urdf_tutorial urdf.rviz ./
urdf.rvizを利用せずにrvizを実行すると、Global Statusに「Fixed Frame [map] does not exist」というwarningかErrorが出て、モデルが表示されません。
launchファイルを作成
rvizやアームの操作に必要なguiなどを実行するlaunchファイルを作ります。roscd my_urdf_test_pkg mkdir launch gedit launch/my_simple_model.launch
my_urdf_test_pkg/launch/my_simple_model.launch
<launch> <arg name="model" default="$(find my_urdf_test_pkg)/urdf/my_simple_model.urdf" /> <arg name="gui" default="true" /> <param name="robot_description" textfile="$(arg model)" /> <param name="use_gui" value="$(arg gui)"/> <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" /> <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" /> <node name="rviz" pkg="rviz" type="rviz" args="-d $(find my_urdf_test_pkg)/urdf.rviz" required="true" /> </launch>
launchを実施
launchして動作を確認します。roscd my_urdf_test_pkg roslaunch launch/my_simple_model.launch
角度を変えられるguiとロボットが表示されたrvizが起動します。
guiでjointの角度を変えられます。
これは…楽しい。
共有したい内容は以上です。
タイヤを付けたり色を変えたりとかは、本家のドキュメント(Building a Visual Robot Model with URDF from Scratch)が参考になると思います。
間違いがありましたら、ご指摘ください。
参考になれば嬉しいです。
0 件のコメント :
コメントを投稿