URDF converter for Euslisp
Project description
urdfeus
URDFファイルをEusLispコードに変換するPythonライブラリ
概要
urdfeusは、ロボット記述ファイル(URDF)をEusLispのロボットモデル定義に変換するツールです。ROS環境で使用されるURDFファイルを、EusLispプログラミング環境で利用できる形式に変換できます。
インストール
pip install urdfeus
開発版をインストールする場合:
git clone https://github.com/iory/urdfeus.git
cd urdfeus
pip install -e .
使用方法
コマンドライン
# 基本的な変換
urdf2eus robot.urdf robot.l
# YAMLファイルと一緒に変換
urdf2eus robot.urdf robot.l --yaml-path robot.yaml
# メッシュ簡素化オプション付き
urdf2eus robot.urdf robot.l --voxel-size 0.01
Pythonスクリプト
from urdfeus import urdf2eus
# URDFファイルをEusLispに変換
with open('robot.l', 'w') as f:
urdf2eus('robot.urdf', fp=f)
# YAMLファイルと一緒に変換
with open('robot.l', 'w') as f:
urdf2eus('robot.urdf', 'robot.yaml', fp=f)
生成されたEusLispファイルの使用
;; EusLisp環境での使用例
(load "robot.l")
(setq *robot* (robot))
(send *robot* :angle-vector)
YAMLファイル
ロボットの関節グループ、エンドエフェクタ、初期ポーズを設定できます。
PR2ロボットの設定例
実際のPR2設定ファイルを参考にした例:
# 関節グループの定義
torso:
- torso_lift_joint : torso-waist-z
larm:
- l_shoulder_pan_joint : larm-collar-y
- l_shoulder_lift_joint : larm-shoulder-p
- l_upper_arm_roll_joint : larm-shoulder-r
- l_elbow_flex_joint : larm-elbow-p
- l_forearm_roll_joint : larm-elbow-r
- l_wrist_flex_joint : larm-wrist-p
- l_wrist_roll_joint : larm-wrist-r
rarm:
- r_shoulder_pan_joint : rarm-collar-y
- r_shoulder_lift_joint : rarm-shoulder-p
- r_upper_arm_roll_joint : rarm-shoulder-r
- r_elbow_flex_joint : rarm-elbow-p
- r_forearm_roll_joint : rarm-elbow-r
- r_wrist_flex_joint : rarm-wrist-p
- r_wrist_roll_joint : rarm-wrist-r
head:
- head_pan_joint : head-neck-y
- head_tilt_joint : head-neck-p
# エンドエフェクタ座標系
larm-end-coords:
parent : l_gripper_tool_frame
rotate : [0, 1, 0, 0]
rarm-end-coords:
parent : r_gripper_tool_frame
rotate : [0, 1, 0, 0]
head-end-coords:
translate : [0.08, 0, 0.13]
rotate : [0, 1, 0, 90]
# 事前定義ポーズ
angle-vector:
reset-manip-pose : [300.0, 75.0, 50.0, 110.0, -110.0, -20.0, -10.0, -10.0, -75.0, 50.0, -110.0, -110.0, 20.0, -10.0, -10.0, 0.0, 50.0]
reset-pose : [50.0, 60.0, 74.0, 70.0, -120.0, 20.0, -30.0, 180.0, -60.0, 74.0, -70.0, -120.0, -20.0, -30.0, 180.0, 0.0, 0.0]
グループ定義の効果
YAMLファイルでグループを定義すると、EusLispで以下のようなメソッドが使用できるようになります:
;; PR2ロボットの例
(setq *robot* (pr2))
;; 右腕の現在の関節角度を取得
(send *robot* :rarm :angle-vector)
;; => #f(-60.0 74.0 -70.0 -120.0 -20.0 -30.0 180.0)
;; 右腕の関節リストを取得
(send *robot* :rarm :joint-list)
;; => (#<rotational-joint r_shoulder_pan_joint>
;; #<rotational-joint r_shoulder_lift_joint> ...)
;; 関節名を取得
(send-all (send *robot* :rarm :joint-list) :name)
;; => ("r_shoulder_pan_joint" "r_shoulder_lift_joint"
;; "r_upper_arm_roll_joint" "r_elbow_flex_joint" ...)
;; 右腕の関節角度を設定
(send *robot* :rarm :angle-vector #f(0 0 0 -90 0 0 0))
;; 事前定義ポーズの使用
(send *robot* :reset-pose)
設定項目の詳細
関節グループ
グループ名: ロボットの部位名(rarm, larm, head など)関節名 : EusLisp関節名: URDFの関節名とEusLispでの関節名のマッピング
エンドエフェクタ座標系
parent: 座標系を取り付ける親リンク名translate: [x, y, z] 平行移動(メートル単位)rotate: [x, y, z, angle] 回転軸ベクトルと角度(度単位)
事前定義ポーズ
angle-vector: ポーズ名と対応する関節角度リスト- 関節角度は度単位で指定
- 関節の順序はYAMLファイル内の関節グループの定義順序に従う
依存関係
- Python 3.6+
- scikit-robot
- trimesh
- numpy
ライセンス
MIT License
貢献
プルリクエストやイシューの報告を歓迎します。
関連プロジェクト
- scikit-robot - Pythonロボットモデリングライブラリ
- EusLisp - Lispベースのロボットプログラミング言語
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file urdfeus-1.0.10.tar.gz.
File metadata
- Download URL: urdfeus-1.0.10.tar.gz
- Upload date:
- Size: 21.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce4a5d802d16d0f370eef05346be9f97ed7c5b2d1455acb07e0f27de94c27f41
|
|
| MD5 |
6af1f64d4d0cf16b036f12f61c96bc9e
|
|
| BLAKE2b-256 |
56c09e53431c171884398deea5c9958d0cb7818e384fa344de4945146521a750
|
File details
Details for the file urdfeus-1.0.10-py3-none-any.whl.
File metadata
- Download URL: urdfeus-1.0.10-py3-none-any.whl
- Upload date:
- Size: 21.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04a808e9abd8772dbaccbdb0fe3ea8635a8e26e9180f3000775134a970540f70
|
|
| MD5 |
7a98370aaa7aff4d4dbd8817b86a6280
|
|
| BLAKE2b-256 |
a349d1a53cfb1fbc643bb013d5c3ebcec3a5901b09328c8bc763524cea585e62
|