目标:模拟一个用 URDF 建模的行走机器人,并在 Rviz 中查看。
教程级别:中级
时间:15 分钟
目录
背景
先决条件
任务
1 创建一个包
2 创建 URDF 文件
3 发布状态
4 创建启动文件
5 编辑 setup.py 文件
6 安装软件包
7 查看结果
摘要
背景
本教程将向您展示如何建模一个行走机器人,将状态发布为 tf2 消息,并在 Rviz 中查看模拟。首先,我们创建描述机器人组装的 URDF 模型。接下来,我们编写一个节点来模拟运动并发布 JointState 和变换。然后我们使用 robot_state_publisher
将整个机器人状态发布到 /tf2
。
先决条件
rviz2 https://index.ros.org/p/rviz2/
始终不要忘记在您打开的每个新终端中获取 ROS 2 的源。
source /opt/ros/jazzy/setup.bash
echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
任务
1. 创建一个包
创建目录:
mkdir -p second_ros2_ws/src
然后创建包:
cd second_ros2_ws/src
ros2 pkg create --build-type ament_python --license Apache-2.0 urdf_tutorial_r2d2 --dependencies rclpy
cd urdf_tutorial_r2d2
你现在应该看到一个 urdf_tutorial_r2d2
文件夹。接下来你将对其进行一些更改。
2 创建 URDF 文件
创建我们将存储一些资产的目录:
mkdir -p urdf
下载 URDF file
并将其保存为 second_ros2_ws/src/urdf_tutorial_r2d2/urdf/r2d2.urdf.xml
。下载 Rviz configuration file
并将其保存为 second_ros2_ws/src/urdf_tutorial_r2d2/urdf/r2d2.rviz
。
https://docs.ros.org/en/jazzy/_downloads/872802005223ffdb75b1ab7b25ad445b/r2d2.urdf.xml
https://docs.ros.org/en/jazzy/_downloads/96d68aef72c4f27f32af5961ef48c475/r2d2.rviz
3 发布状态
现在我们需要一种方法来指定机器人所处的状态。为此,我们必须指定所有三个关节和整体里程计。
启动您喜欢的编辑器,并将以下代码粘贴到 second_ros2_ws/src/urdf_tutorial_r2d2/urdf_tutorial_r2d2/state_publisher.py
中
from math import sin, cos, pi # 从math模块导入sin, cos, pi函数
import rclpy # 导入rclpy库
from rclpy.node import Node # 从rclpy.node模块导入Node类
from rclpy.qos import QoSProfile # 从rclpy.qos模块导入QoSProfile类
from geometry_msgs.msg import Quaternion # 从geometry_msgs.msg模块导入Quaternion消息类型
from sensor_msgs.msg import JointState # 从sensor_msgs.msg模块导入JointState消息类型
from tf2_ros import TransformBroadcaster, TransformStamped