ROS工具
Rviz2
常见问题说明
1. 时间同步
仿真时间和系统时间需要保持同步,否则无法正常初始化。
2. Displays 显示各种模块
当模块订阅的内容冲突时,会报错并关闭程序。
- 冲突情况:
- 定义的数据类型与传入的数据类型不同。
- 同时存在两个接收同一个话题的模块。
- 解决办法: 先删除错误的模块,再点击 Add 重新添加正确的模块。
3. 图层显示
点击菜单栏的 Panels,勾选 Views。然后在右侧方框的 Type 中选择 Orbit,即可看到三维图层。
4. 提高画面流畅程度
处理 DDS 通信(建议切换到 CycloneDDS):
在 ~/.bashrc 文件末尾添加以下环境变量:
手动配置流程
第一步:修改 Launch 文件 (禁止自动启动)
我们需要修改启动脚本,注释掉自动打开 RViz 的节点。
- 编辑文件:
fishbot_navigation2/launch/navigation2.launch.py - 操作:找到
return launch.LaunchDescription([...])列表末尾的rviz2节点配置,并在每行前添加#将其注释掉。
# 注释掉下面这一段,不让它自动启动 RViz
# launch_ros.actions.Node(
# package='rviz2',
# executable='rviz2',
# name='rviz2',
# arguments=['-d', rviz_config_dir],
# parameters=[{'use_sim_time': use_sim_time}],
# output='screen'
# ),
第二步:启动仿真与导航系统
保存文件后,分别在两个终端中启动仿真环境和导航节点(此时不会自动弹出 RViz 窗口)。
- 终端 1 (启动 Gazebo 仿真):
- 终端 2 (启动 Nav2 导航栈):
第三步:手动启动纯净版 RViz
在新的终端中,启动一个不带任何默认配置的空白 RViz。
- 终端 3:
第四步:正确配置显示项 (关键步骤)
RViz 打开后默认为黑色背景。请按照以下顺序依次添加和配置显示项,注意话题名称的选择:
- 基础设置
- Global Options: 将
Fixed Frame修改为odom或map。
- Global Options: 将
- 添加 2D 激光 (用于导航避障)
- 操作: 点击左下角 Add -> 选择 LaserScan。
- 配置:
- Topic: 必须手动改为
/scan_2d(关键!)。 - Color: 建议设为红色,方便观察。
- Topic: 必须手动改为
- 现象: 此时应该能看到红色的激光扫描线。
- 添加 3D 点云 (用于视觉效果)
- 操作: 点击左下角 Add -> 选择 PointCloud2。
- 配置:
- Topic: 选择
/scan(这是 Gazebo 原始的 3D 数据)。 - Style: 建议改为
Points。 - Size: 建议改为
0.05(像素单位),以便看清点云。
- Topic: 选择
- 现象: 此时应该能看到立体的 3D 点云图像。
- 添加地图与路径 (用于导航监控)
- 地图: 点击 Add -> Map -> Topic 选择
/map。 - 路径: 点击 Add -> Path -> Topic 选择
/plan(全局路径) 或/local_plan(局部路径)。
- 地图: 点击 Add -> Map -> Topic 选择
第五步:保存配置 (一劳永逸)
为了避免下次还要重复配置,建议将当前的完美配置保存下来。
- 操作: 点击 RViz 左上角的 File -> Save Config As...
Gazebo
1. 启动后一直“卡住”
通常是因为正在尝试下载标准模型(网络问题导致的阻塞)。可以直接将模型下载到本地解决:
cd ~
git clone https://github.com/osrf/gazebo_models.git
# 创建目录(如果不存在的话)
mkdir -p ~/.gazebo/models
# 将下载的各种模型(sun, ground_plane 等)全部复制进去
# 注意:这里是把 gazebo_models 文件夹里面的“内容”拷进去
cp -r ~/gazebo_models/* ~/.gazebo/models/
2. Gazebo 目录的标准结构
推荐的模型和世界文件放置结构如下:
~/gazebo_project/
├── my_scene.world <-- (原 text-cd-1/urdf/my_scene.world)
└── models/ <-- 创建这个文件夹存放模型
└── text_cd_1/ <-- 你的机器人模型文件夹
├── model.config <-- (新建文件,步骤三中创建)
├── model.sdf <-- (原 text-cd-1/urdf/text-cd-1.sdf,重命名为 model.sdf)
└── meshes/ <-- 存放 STL 文件
└── base-point.STL <-- (原 text-cd-1/meshes/base-point.STL)
加载命令:
3. 相对位置调整
- 通过 UI 调整:左上角的两个按键可以直接对模块进行 x、y、z、roll, pitch, yaw 的位置调节。
- 获取并应用坐标:在 Gazebo 左侧的 World 标签页下,找到 Models 列表,选中对应模块名称,查看 Pose 属性,最后将参数写入 Launch 文件的节点参数中:
arguments=['-topic', '/robot_description',
'-entity', robot_name_in_model,
'-x', '-5.380453', # X坐标,根据需要修改
'-y', '1.839768', # Y坐标,根据需要修改
'-z', '0.050971',
'-Y', '0.004870' # Z坐标,抬高机器人 (例如0.2米),防止卡在地下
]
4. 进程阻塞
如果 Gazebo 卡死或无法正常关闭,使用以下命令强制清理进程:
5. 同步问题
- RViz 和 Gazebo 没有同步。
- 仿真时间和系统时间问题。
6. 话题重映射问题
键盘控制的话题重映射示例:
