78 个版本 (45 个破坏性更新)
0.45.2 | 2024年8月8日 |
---|---|
0.45.1 | 2024年4月25日 |
0.45.0 | 2024年2月19日 |
0.44.0 | 2023年11月10日 |
0.7.0 | 2017年11月23日 |
#11 in 可视化
每月286次下载
用于 3 crate
120KB
2.5K SLoC
urdf-viz
可视化 URDF(统一机器人描述格式) 文件。 urdf-viz
使用 Rust 语言编写。
安装
使用 cargo
安装
如果你已经在使用 rust-lang 并已安装 cargo
,你可以通过以下命令安装:cargo install
。
cargo install urdf-viz
如果你想使用除 .obj
、.stl
和 .dae
文件以外的网格,你需要像下面一样使用 assimp 安装。
cargo install urdf-viz --features assimp
构建前的预要求
通用
如果你想使用 --features assimp
来使用除 .obj
、.stl
和 .dae
文件以外的网格,你需要 cmake。
在 Linux 上
如果你还没有安装 ROS,你可能需要 cmake
、xorg-dev
和 glu
来编译 assimp-sys
和 glfw-sys
。
sudo apt-get install cmake xorg-dev libglu1-mesa-dev
下载二进制文件
你可以从 发布页面 下载预构建的二进制文件。预构建的二进制文件适用于 macOS、Linux 和 Windows(静态可执行文件)。
通过 Homebrew 安装
你可以在 macOS 和 Linux 上使用 Homebrew tap 安装 urdf-viz。
brew install openrr/tap/urdf-viz
如何使用
urdf-viz
命令将被安装。它需要 rosrun
和 rospack
来解析 package://
中的 <mesh>
标签,并且它使用 xacro
将 .xacro
文件转换为 urdf 文件。这意味着在使用 urdf-viz
之前,您需要 $ source ~/catkin_ws/devel/setup.bash
或其他类似操作。
urdf-viz URDF_FILE.urdf
可以直接使用 xacro 文件。它将在 urdf-viz
内部通过 rosrun xacro xacro
转换。
urdf-viz XACRO_FILE.urdf.xacro
如果您的 xacro 文件有一些参数,您可以通过 --xacro-args
选项传递它们。
urdf-viz XACRO_FILE.urdf.xacro --xacro-args arg1=value arg2=value
有关其他选项,请阅读 -h
选项的输出。
urdf-viz -h
如果 mesh 标签中没有 "package://",并且不使用 xacro,您也可以跳过安装 ROS。
如果 mesh 标签中有 "package://",但是已知包的路径或 URL 而不使用 xacro,您也可以通过将包替换为路径或 URL 来跳过安装 ROS(见链接)。
GUI 使用方法
在 GUI 中,您可以使用键盘和鼠标执行一些操作。
l
键用于从文件重新加载 urdfc
键用于切换碰撞模型或视觉模式- 移动关节
- 使用
Up
/Down
键设置关节的角度 Ctrl
+ 拖动以移动关节角度- 使用
o
([
) 和p
(]
) 改变要移动的关节
- 使用
- 逆运动学(仅位置)
Shift
+ 拖动以使用逆运动学(Y 和 Z 轴)Shift
+Ctrl
+ 拖动以使用逆运动学(X 和 Z 轴)- 使用
,
或.
改变逆运动学的移动目标
r
键用于设置随机关节z
键用于重置关节位置和原点- 移动视点
- 鼠标右键拖动以平移视图相机位置
- 鼠标左键拖动以环顾四周
- 滚动以缩放
Web I/O 接口
您可以使用 http/JSON 设置/获取关节角度。默认端口号为 7777。您可以通过 -p
选项更改它。(以下示例中使用 jq
作为 JSON 格式化器)
设置关节角度
发送以下格式的 JSON 数据。您必须指定关节的名称和位置(角度)。names
和 positions
的长度必须相同。您不需要写入所有关节名称,这意味着您可以指定部分关节。
{
"names": ["joint_name1", "joint_name2"],
"positions": [0.5, -0.1]
}
您可以使用 curl
尝试此操作。
$ curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"names": ["r_shoulder_yaw", "r_shoulder_pitch"], "positions": [0.8, -0.8]}' http://127.0.0.1:7777/set_joint_positions | jq
{
"is_ok": true,
"reason": ""
}
以 JSON 格式获取关节角度
获取关节角度的结果 JSON 格式与 设置 方法相同。
$ curl http://127.0.0.1:7777/get_joint_positions | jq
{
"names": [
"r_shoulder_yaw",
"r_shoulder_pitch",
"r_shoulder_roll",
"r_elbow_pitch",
"r_wrist_yaw",
"r_wrist_pitch",
"l_shoulder_yaw",
"l_shoulder_pitch",
"l_shoulder_roll",
"l_elbow_pitch",
"l_wrist_yaw",
"l_wrist_pitch"
],
"positions": [
0.8,
-0.8,
-1.3447506,
-1.6683152,
-1.786362,
-1.0689334,
0.11638665,
-0.5987091,
0.7868867,
-0.027412653,
0.019940138,
-0.6975361
]
}
设置机器人原点
$ curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"position":[0.2,0.0,0.0],"quaternion":[0.0,0.0,0.0,1.0]}' http://127.0.0.1:7777/set_robot_origin
{"is_ok":true,"reason":""}
四元数的元素顺序为 w, i, j, k
。
获取机器人原点
$ curl http://127.0.0.1:7777/get_robot_origin
{"position":[0.2,0.0,0.0],"quaternion":[1.0,0.0,0.0,0.0]}
获取 URDF 文本
curl http://127.0.0.1:7777/get_urdf_text
图库
依赖项
- kiss3d:
urdf-viz
强烈依赖于kiss3d
,这是一个超级容易使用的,优秀的3D图形引擎。 - nalgebra: 线性代数库。
- k: 基于 nalgebra 的运动学库。它可以使用
urdf-rs
加载 URDF 文件。 - mesh-loader: 网格文件 (
.obj
、.stl
和.dae
) 加载器。 - urdf-rs: URDF 文件加载器。
- structopt: 超级容易的命令行参数解析器。
OpenRR
社区
这里 是为 OpenRR
用户和开发者提供的 Discord 服务器。
依赖项
~19–39MB
~597K SLoC