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 可视化

Download history 49/week @ 2024-04-29 19/week @ 2024-05-06 48/week @ 2024-05-13 37/week @ 2024-05-20 39/week @ 2024-05-27 27/week @ 2024-06-03 33/week @ 2024-06-10 21/week @ 2024-06-17 18/week @ 2024-06-24 102/week @ 2024-07-01 35/week @ 2024-07-08 15/week @ 2024-07-15 25/week @ 2024-07-22 72/week @ 2024-07-29 157/week @ 2024-08-05 30/week @ 2024-08-12

每月286次下载
用于 3 crate

Apache-2.0

120KB
2.5K SLoC

urdf-viz

Build Status crates.io docs discord

可视化 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,你可能需要 cmakexorg-devglu 来编译 assimp-sysglfw-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 命令将被安装。它需要 rosrunrospack 来解析 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 键用于从文件重新加载 urdf
  • c 键用于切换碰撞模型或视觉模式
  • 移动关节
    • 使用 Up/Down 键设置关节的角度
    • Ctrl + 拖动以移动关节角度
    • 使用 o ([) 和 p (]) 改变要移动的关节
  • 逆运动学(仅位置)
    • Shift + 拖动以使用逆运动学(Y 和 Z 轴)
    • Shift + Ctrl + 拖动以使用逆运动学(X 和 Z 轴)
    • 使用 ,. 改变逆运动学的移动目标
  • r 键用于设置随机关节
  • z 键用于重置关节位置和原点
  • 移动视点
    • 鼠标右键拖动以平移视图相机位置
    • 鼠标左键拖动以环顾四周
    • 滚动以缩放

Web I/O 接口

您可以使用 http/JSON 设置/获取关节角度。默认端口号为 7777。您可以通过 -p 选项更改它。(以下示例中使用 jq 作为 JSON 格式化器)

设置关节角度

发送以下格式的 JSON 数据。您必须指定关节的名称和位置(角度)。namespositions 的长度必须相同。您不需要写入所有关节名称,这意味着您可以指定部分关节。

{
  "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

sawyer_1.png sawyer_2.png

nextage_1.png nextage_2.png

hsr_1.png hsr_2.png

ubr1_1.png ubr1_2.png

pepper_1.png pepper_2.png

pr2_1.png pr2_2.png

thormang3_1.png thormang3_2.png

依赖项

  • 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