设置机器人模拟(Gazebo)
目标: 使用 Gazebo 和 ROS 2 启动模拟
教程级别: 高级
时间: 20 分钟
先决条件
首先,您应该安装 ROS 2 和 Gazebo。 您有两个选择:
从 deb 包安装。要检查 deb 包中有哪些版本可用,请查看此 table。
从源代码编译:
任务
1 启动模拟
在此演示中,您将在 Gazebo 中模拟一个简单的差速驱动机器人。 您将使用 Gazebo 示例中定义的一个世界,名为 visualize_lidar.sdf。 要运行此示例,您应该在终端中执行以下命令:
ign gazebo -v 4 -r visualize_lidar.sdf
当模拟运行时,您可以使用“ign”命令行工具检查Gazebo 提供的主题:
ign topic -l
Which should show:
/clock
/gazebo/resource_paths
/gui/camera/pose
/gui/record_video/stats
/model/vehicle_blue/odometry
/model/vehicle_blue/tf
/stats
/world/visualize_lidar_world/clock
/world/visualize_lidar_world/dynamic_pose/info
/world/visualize_lidar_world/pose/info
/world/visualize_lidar_world/scene/deletion
/world/visualize_lidar_world/scene/info
/world/visualize_lidar_world/state
/world/visualize_lidar_world/stats
由于您尚未启动 ROS 2 节点,因此“ros2 主题列表”的输出应该不包含任何机器人主题:
ros2 topic list
Which should show:
/parameter_events
/rosout
2 配置 ROS 2
为了能够将我们的模拟与 ROS 2 进行通信,您需要使用一个名为“ros_gz_bridge”的包。 此包提供了一个网络桥,可实现 ROS 2 和 Gazebo Transport 之间的消息交换。 您可以通过键入以下内容来安装此包:
sudo apt-get install ros-rolling-ros-ign-bridge
此时,您已准备好启动从 ROS 到 Gazebo 的桥梁。 具体来说,您将为主题“/model/vehicle_blue/cmd_vel”创建一个桥梁:
source /opt/ros/rolling/setup.bash
ros2 run ros_gz_bridge parameter_bridge /model/vehicle_blue/cmd_vel@geometry_msgs/msg/Twist]ignition.msgs.Twist
有关“ros_gz_bridge”的更多详细信息,请查看此“README <https://github.com/gazebosim/ros_gz/tree/ros2/ros_gz_bridge>” 。
一旦桥梁运行,机器人就能够遵循您的电机命令。 有两个选项:
使用“ros2 topic pub”向主题发送命令
ros2 topic pub /model/vehicle_blue/cmd_vel geometry_msgs/Twist "linear: { x: 0.1 }"
teleop_twist_keyboard
包。此节点从键盘获取按键并将其发布为 Twist 消息。您可以输入以下命令安装它:
sudo apt-get install ros-rolling-teleop-twist-keyboard
teleop_twist_keyboard
发布 Twist 消息的默认主题是 /cmd_vel
,但您可以重新映射此
主题以使用桥接中使用的主题:
source /opt/ros/rolling/setup.bash ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r /cmd_vel:=/model/vehicle_blue/cmd_velWhich will show:
This node takes keypresses from the keyboard and publishes them as Twist messages. It works best with a US keyboard layout. --------------------------- Moving around: u i o j k l m , . For Holonomic mode (strafing), hold down the shift key: --------------------------- U I O J K L M < > t : up (+z) b : down (-z) anything else : stop q/z : increase/decrease max speeds by 10% w/x : increase/decrease only linear speed by 10% e/c : increase/decrease only angular speed by 10% CTRL-C to quit currently: speed 0.5 turn 1.0
3 在 ROS 2 中可视化激光雷达数据
差速驱动机器人有一个激光雷达。 要将 Gazebo 生成的数据发送到 ROS 2,您需要启动另一个桥接器。 在这种情况下,来自激光雷达的数据在 Gazebo Transport 主题“/lidar2”中提供,您将在桥接器中重新映射该主题。 此主题将在主题“/lidar_scan”下可用:
source /opt/ros/rolling/setup.bash
ros2 run ros_gz_bridge parameter_bridge /lidar2@sensor_msgs/msg/LaserScan[ignition.msgs.LaserScan --ros-args -r /lidar2:=/laser_scan
要在 ROS 2 中可视化来自激光雷达的数据,您可以使用 Rviz2:
source /opt/ros/rolling/setup.bash
rviz2
然后需要配置``固定框架``:
然后单击“添加”按钮以添加可视化激光雷达的显示:
现在您应该可以在 Rviz2 中看到来自激光雷达的数据:
摘要
在本教程中,您使用 Gazebo 启动了机器人模拟,启动了带有执行器和传感器的桥梁,可视化了来自传感器的数据,并移动了差速驱动机器人。