ubuntu20.04使用rviz可视化查看urdf机器人模型

介绍

rviz:

  • RViz 是 ROS(机器人操作系统)中的可视化工具。它就像是一个 “机器人世界的窗口”,让你能够看到机器人内部的数据和状态。在 ROS 的生态系统里,机器人的各个部分(如传感器、执行器等)通过节点(Node)来发送和接收信息。RViz 通过订阅这些节点发布的话题(Topic)来获取数据,然后将其以直观的图形化方式展示出来。
  • 例如,当机器人的激光雷达扫描周围环境后,会将扫描数据发布到一个特定的话题上。RViz 可以订阅这个话题,把激光雷达数据以点云(Point Cloud)的形式显示出来,你就能看到机器人周围物体的大致轮廓,就像你在透过机器人的 “眼睛” 观察世界一样。

URDF文件:

  • URDF(Unified Robot Description Format)即统一机器人描述格式,是一种用于描述机器人模型的 XML 文件格式。它是 ROS(机器人操作系统)中非常重要的一部分,其目的是提供一种标准化的方式来描述机器人的物理结构,包括机器人的连杆(links)、关节(joints)、视觉外观和惯性特性等诸多方面。
  • URDF 文件可以被 RViz(ROS 可视化工具)读取并可视化展示。当你在 RViz 中加载一个 URDF 文件时,它会根据文件中的描述构建出机器人的 3D 模型。这样,你可以从不同的角度直观地查看机器人的外观结构,检查关节的连接是否正确以及连杆的形状是否符合预期。

一、安装必要的软件包

一般来说,之前正常安装了ros对应的版本以下步骤都做过了,可以跳过第一步,多来一遍流程也无妨

1、ROS(机器人操作系统)安装

首先确保已经安装了 ROS Noetic(因为 Ubuntu 20.04 对应的 ROS 版本是 Noetic)。如果没有安装,可以按照以下步骤进行安装:

  • 设置软件源:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros - latest.list'
  • 添加密钥:
sudo apt - key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv - key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
  • 更新软件包列表:
sudo apt update
  • 安装ROS Noetic桌面完整版(包含rviz等工具):
sudo apt install ros - noetic - desktop - full
  • 初始化rosdep:rosdep 是一个用于安装 ROS 软件包的依赖项工具。
sudo rosdep init
rosdep update
  • 设置环境变量:

将以下内容添加到.bashrc文件中(这样每次打开终端时都会自动设置环境变量):

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc

然后在当前终端中使环境变量生效:

source ~/.bashrc

二、创建工作空间(如果没有的话)

1、打开终端

  • 创建一个新的工作空间目录(如果已经有工作空间可以跳过这一步)。例如,创建一个名为catkin_ws的工作空间:

运行以下命令:

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
  • 初始化工作空间:
cd ~/catkin_ws/src
catkin_init_workspace

 在src目录下,运行catkin_init_workspace命令。这会在src目录下创建CMakeLists.txt文件,它是构建 ROS 软件包的关键文件。

  • 编译工作空间

回到工作空间根目录(catkin_ws)并进行编译:

cd..
catkin_make
  •  设置工作空间环境变量(添加到 .bashrc 文件)
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

2、将 URDF 文件放入工作空间

  • 把 URDF 文件复制到~/catkin_ws/src目录下(你也可以根据实际情况放在工作空间的其他合适位置)。假设URDF 文件名为tinker_urdf.urdf。
  • 创建 ROS 软件包(如果还没有相关软件包)

src目录下,创建一个新的 ROS 软件包(如果已经有用于存放 URDF 模型的软件包可以跳过这一步)。运行以下命令:

例如,创建一个名为tinker_robot_description的软件包(这里以tinker机器人为例,github连接在文末)

catkin_create_pkg tinker_robot_description urdf xacro

注意:这里urdfxacro是软件包的依赖项,urdf用于处理 URDF 文件格式,xacro是一种用于简化 URDF 文件编写的工具。如果你的 URDF 文件是纯 URDF 格式,xacro依赖可以根据实际情况省略。

tinker_urdf.urdf 文件复制或移动到新创建的包目录下的 urdf 文件夹中(即 ~/catkin_ws/src/tinker_robot_description/urdf 路径下)。

3、检查 URDF 文件语法

在终端中,确保已经在 ROS 环境下(已经执行过 source /opt/ros/noetic/setup.bash ),并且位于包含 tinker_urdf.urdf 文件的目录(即 ~/catkin_ws/src/tinker_robot_description/urdf )中,然后运行:

check_urdf tinker_urdf.urdf

如果语法正确,它会输出机器人模型的结构信息,例如各个连杆(link)、关节(joint)等相关信息;如果有错误,会显示相应的错误提示,你需要根据提示对 tinker_urdf.urdf 文件进行修改,直到通过语法检查。

三、创建启动文件(launch file)

1、创建launch文件夹:

tinker_robot_description 包的根目录下创建一个 launch 文件夹

cd ~/catkin_ws/src/tinker_robot_description
mkdir launch

2、创建launch文件:

进入 launch 文件夹,使用文本编辑器(如 gedit )创建一个名为 display.launch 的文件,并添加以下内容

<launch>
  <!-- 加载 URDF 文件到 ROS 参数服务器 -->
  <param name="robot_description" command="cat /home/user(用户名)/catkin_ws/src/tinker_robot_description/urdf/tinker_urdf.urdf" />

  <!-- 启动 robot_state_publisher -->
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" output="screen">
    <param name="robot_description" command="cat /home/user(用户名)/catkin_ws/src/tinker_robot_description/urdf/tinker_urdf.urdf" />
  </node>

  <!-- 启动 RViz -->
  <node name="rviz" pkg="rviz" type="rviz" output="screen" />
</launch>

这个启动文件的作用是:

  • 通过 <param> 标签设置机器人描述参数(robot_description),它会读取指定的 URDF 文件内容。
  • 启动 joint_state_publisher 节点,用于发布机器人关节状态,这样在 rviz 中可以通过界面操作来改变关节角度等参数。
  • 启动 robot_state_publisher 节点,用于根据机器人的关节状态发布机器人的整体状态信息,确保 rviz 能正确获取模型的位姿等信息。
  • 启动 rviz 节点,并指定一个配置文件(urdf.rviz)路径,首次使用时如果这个配置文件不存在,后续可以在 rviz 中进行配置并保存下来方便后续使用。

四、启动相关节点并在 rviz 中查看模型

1、启动 ROS 核心

打开一个新的终端,输入命令:

roscore

2、编译工作空间(如果有修改或者是首次使用该包)

在另一个终端中,进入工作空间的根目录(catkin_ws),执行编译命令:

cd ~/catkin_ws
catkin_make

3、启动 joint_state_publisherrobot_state_publisher 节点,同时打开 rviz 并加载模型

执行以下命令(确保 display.launch 文件中参数传递格式正确):

roslaunch tinker_robot_description display.launch model:=$(rospack find tinker_robot_description)/urdf/tinker_urdf.urdf

这时候 rviz 窗口会自动打开,在左侧的 “Displays” 面板中,确保 “RobotModel” 选项被勾选。这样就可以在 3D 视图区域看到 tinker_urdf 机器人模型的可视化效果了。可以通过拖动滑块(如果 joint_state_publisher 提供了可调节的关节滑块)来改变机器人的关节状态,观察模型的运动情况。、

报错问题排查

1、情况1

运行后会发现报错,具体内容为

Could not load resource [../meshes/base_link.STL]: Unable to open file "../meshes/base_link.STL".

说明在 URDF 文件中指定的用于表示机器人各个连杆可视化和碰撞几何形状的 .STL 格式的网格文件无法被正确加载,很可能是文件路径设置不正确或者对应的 .STL 文件确实不存在于指定的路径下。

我们要回到下载的tinker模型包中,找到mesh文件夹

 复制内容到自己创建的tinker_robot_description包中(和launch同级目录)

并且确保 URDF 文件里 <mesh> 标签中 filename 属性指定的路径是正确的。例如在 <link> 标签内有这样的定义:

<visual>
    <geometry>
        <mesh filename="../meshes/base_link.STL" />
    </geometry>
</visual>

这里的 ../meshes/ 路径表示相对于 URDF 文件所在目录的上级目录下的 meshes 文件夹。你需要确认实际的 .STL 文件是否就在这个相对路径所指向的位置。如果路径不对,可以修改为正确的相对路径或者绝对路径(例如使用绝对路径 /home/user(根据自己名字修改)/catkin_ws/src/tinker_robot_description/meshes/base_link.STL 这种形式,要根据实际文件存放位置来写)。

这个时候再去运行

roslaunch tinker_robot_description display.launch model:=$(rospack find tinker_robot_description)/urdf/tinker_urdf.urdf

2、情况2

有可能出现以下情况

 模型全白,左侧有报错

这是因为通常意味着在导入的机器人系统里,找不到从 base_link 这个连杆到 map 坐标系的坐标变换关系,其他关节连接处也有类似情况

例如:报错内容No transform from [link_l_roll] to [map] 表明在 TF 树中没有从 maplink_l_roll 的变换。问题可能出在以下几点:

  • URDF 文件中未正确连接 link_l_roll 到机器人模型的根链接(base_link
  • 缺乏 mapbase_link 的静态变换
  • robot_state_publisher 没有正常发布 TF

需要去做相应排查

我经过排查发现是相关的静态变换未发布,有两个解决方案

1、添加静态变换

终端运行以下命令临时发布静态变换:

rosrun tf static_transform_publisher 0 0 0 0 0 0 map base_link 10

2、修改.launch文件

在启动文件中添加静态变换节点:

因此将launch文件修改为如下内容

<launch>
  <!-- 加载 URDF 文件到 ROS 参数服务器 -->
  <param name="robot_description" command="cat /home/user(用户名)/catkin_ws/src/tinker_robot_description/urdf/tinker_urdf.urdf" />

  <!-- 发布 map 到 base_link 的静态变换 -->
<node pkg="tf" type="static_transform_publisher" name="map_to_base" args="0 0 0 0 0 0 map base_link 10" />
<node pkg="tf" type="static_transform_publisher" name="base_to_l_ankle" args="0 0 0 0 0 0 base_link link_l_ankle 10" />
<node pkg="tf" type="static_transform_publisher" name="l_ankle_to_l_knee" args="0 0 0 0 0 0 link_l_ankle link_l_knee 10" />
<node pkg="tf" type="static_transform_publisher" name="l_knee_to_l_pitch" args="0 0 0 0 0 0 link_l_knee link_l_pitch 10" />
<node pkg="tf" type="static_transform_publisher" name="l_pitch_to_r_pitch" args="0 0 0 0 0 0 link_l_pitch link_r_pitch 10" />
<node pkg="tf" type="static_transform_publisher" name="base_to_l_yaw" args="0 0 0 0 0 0 base_link link_l_yaw 10" />
<node pkg="tf" type="static_transform_publisher" name="map_to_link_l_roll" args="0 0 0 0 0 0 map link_l_roll 10" />
<node pkg="tf" type="static_transform_publisher" name="map_to_link_r_ankle" args="0 0 0 0 0 0 map link_r_ankle 10" />
<node pkg="tf" type="static_transform_publisher" name="map_to_link_r_knee" args="0 0 0 0 0 0 map link_r_knee 10" />
<node pkg="tf" type="static_transform_publisher" name="map_to_link_r_roll" args="0 0 0 0 0 0 map link_r_roll 10" />
<node pkg="tf" type="static_transform_publisher" name="map_to_link_r_yaw" args="0 0 0 0 0 0 map link_r_yaw 10" />

  <!-- 启动 robot_state_publisher -->
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" output="screen">
    <param name="robot_description" command="cat /home/user(用户名)/catkin_ws/src/tinker_robot_description/urdf/tinker_urdf.urdf" />
  </node>

  <!-- 启动 RViz -->
  <node name="rviz" pkg="rviz" type="rviz" output="screen" />
</launch>

保存重新执行roslaunch

加载成功

近期在使用ros进行模拟仿真,使用rviz查看urdf机器人模型,以上是学习笔记,欢迎探讨交流

附tinker机器人urdf文件github链接:Tinker/development at main · Yuexuan9/Tinker · GitHub

<think>嗯,用户想在Ubuntu 18.04上安装RVIZ,我需要根据提供的引用内容来整理步骤。首先,RVIZ是ROS的一部分,所以应该需要先安装ROS Melodic,因为Melodic对应Ubuntu 18.04。引用3提到要更换软件源到国内源,这样下载会更快。然后按照官网的步骤安装ROS。接着,安装特定包ros-melodic-rviz,引用5中提到可能需要再次运行安装命令。安装完成后,可能还需要source环境变量,比如source /opt/ros/melodic/setup.bash,如引用4和5所示。用户可能会遇到权限问题,比如串口权限,所以需要提醒他们用chmod处理。另外,如果rviz显示有问题,可能需要删除默认配置文件重新生成,如引用5中的步骤。可能还需要安装x11-apps,引用2里提到安装xeyes,但不确定是否和RVIZ直接相关,但可以作为依赖项安装。最后,测试rviz是否正常运行,用rosrun或launch文件启动。用户的问题还可能包括安装后的常见问题,比如无法显示、依赖缺失等,需要把这些排错步骤也包含进去。</think>### 在 Ubuntu 18.04 上安装 RVIZ 的步骤 #### 1. **安装 ROS Melodic** RVIZ 是 ROS(Robot Operating System)的可视化工具,需先安装 ROS Melodic(专为 Ubuntu 18.04 设计): - **更换软件源**(加速下载): ```bash sudo sh -c 'echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt update ``` - **安装完整版 ROS Melodic**: ```bash sudo apt install ros-melodic-desktop-full ``` 完整版包含 RVIZ 及相关依赖[^3]。 #### 2. **安装 RVIZ 包** 若未自动安装,需手动安装 `ros-melodic-rviz`: ```bash sudo apt install ros-melodic-rviz ``` 若安装失败,可尝试更新后重试[^5]。 #### 3. **配置环境变量** 每次使用前需加载 ROS 环境: ```bash source /opt/ros/melodic/setup.bash ``` 可将此命令添加到 `~/.bashrc` 以自动加载[^4]。 #### 4. **测试 RVIZ** - **启动 ROS 核心服务**: ```bash roscore ``` - **新终端中启动 RVIZ**: ```bash rosrun rviz rviz ``` 若界面无显示,尝试删除配置文件后重启: ```bash rm ~/.rviz/default.rviz rosrun rviz rviz ``` 此操作会重置为默认配置。 #### 5. **处理权限问题** 若使用外部设备(如串口),需赋予权限: ```bash sudo chmod 666 /dev/ttyUSB0 # 替换为实际设备号 ``` #### 常见问题 - **依赖缺失**:安装 `x11-apps` 解决图形显示问题: ```bash sudo apt install x11-apps -y ``` - **启动失败**:确保 `ros-melodic-rviz` 安装完整,并检查 ROS 环境配置[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值