ubuntu 怎么查看版本编号:
需要用到语句:
lsb_release -a |
对应的 ROS2 版本也要确认:Ubuntu 22.04 对应 ROS 2 Humble,可以用 printenv ROS_DISTRO 或 ros2 --version 检查。ROS2 每个发行版只支持特定 Ubuntu 版本,装错版本是新手最常见的安装失败原因。
参考资料:ROS 2 Humble 官方安装文档、TurtleBot3 官方仿真教程

目前遇到了 ROS2 无法安装的问题
经过排查,发现是虚拟机没有连接网络的问题
检查过程:
1. 先通过 ping 语句,检查一下网络
比如说ping 8.8.8.8 |
linux 终端会返回
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. | |
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=187 ms | |
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=186 ms |
初步说明网络出口没问题,接下来我们进行双边通信的验证
2. 之后 ping 一个网站,例如百度网站,看看会不会有信号的回传
u@u-virtual-machine:~$ ping baidu.com | |
PING baidu.com (111.63.65.247) 56(84) bytes of data. | |
64 bytes from 111.63.65.247 (111.63.65.247): icmp_seq=1 ttl=128 time=64.5 ms | |
64 bytes from 111.63.65.247 (111.63.65.247): icmp_seq=2 ttl=128 time=98.6 ms | |
64 bytes from 111.63.65.247 (111.63.65.247): icmp_seq=3 ttl=128 time=87.9 ms | |
64 bytes from 111.63.65.247 (111.63.65.247): icmp_seq=4 ttl=128 time=90.4 ms |
也没有问题,说明网络方面的问题已经被排查完毕
export TURTLEBOT3_MODEL=waffle | |
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/opt/ros/humble/share/turtlebot3_gazebo/models |
安装 ROS2 Gazebo 集成包
# 安装完整的Gazebo ROS集成包 | |
sudo apt update | |
sudo apt install ros-humble-gazebo-ros-pkgs | |
sudo apt install ros-humble-gazebo-plugins | |
# 重新安装turtlebot3仿真包 | |
sudo apt install --reinstall ros-humble-turtlebot3-gazebo |
说明:这里的 gazebo_ros_pkgs 对应的是 Gazebo Classic(Gazebo 11),也就是 ROS 2 Humble 时期 TurtleBot3 教程使用的仿真环境。当前官方推荐的现代仿真工具是 Gazebo Sim(原 Ignition Gazebo),在 ROS 2 中通过 ros_gz 集成,两者不要混用。
参考资料:gazebo_ros_pkgs 官方文档、ros_gz 官方文档
启动 Gazebo 仿真(服务端)
# 每个终端都需要先设置环境 | |
source /opt/ros/humble/setup.bash | |
export TURTLEBOT3_MODEL=waffle | |
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/opt/ros/humble/share/turtlebot3_gazebo/models | |
# 启动Gazebo服务器(等待它完全启动) | |
gzserver --verbose |
linux 终端返回
[Msg] Waiting for master. | |
[Msg] Connected to gazebo master @ http://127.0.0.1:11345 | |
[Msg] Publicized address: 192.168.159.128 | |
[Msg] Loading world file [/usr/share/gazebo-11/worlds/empty.world] |
启用 Gazebo 仿真(客户端)
gzclient |
生成 TurtleBot3 机器人
# 生成TurtleBot3机器人 | |
ros2 run gazebo_ros spawn_entity.py \ | |
-entity turtlebot3_waffle \ | |
-file /opt/ros/humble/share/turtlebot3_gazebo/models/turtlebot3_waffle/model.sdf \ | |
-x -2.0 -y -0.5 -z 0.01 |
以上的步骤,还未实现,总是卡在 Gazebo 服务端开始之后,调用 TurtleBot3 机器人,无法生成
后来排查发现,手工 gzserver + gzclient 的方式容易因为模型路径、环境变量不一致而卡住,官方教程更推荐直接用 ros2 launch 一条命令启动,可以自行对比
# 新开一个终端 | |
source /opt/ros/humble/setup.bash | |
export TURTLEBOT3_MODEL=waffle | |
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/opt/ros/humble/share/turtlebot3_gazebo/models | |
# 启动Gazebo(包含图形界面) | |
ros2 launch turtlebot3_gazebo empty_world.launch.py |
这个可以加载空的地图,就是只有一个机器人的地图,如果你想要加载带地图边缘的,可以使用语句
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py |
键盘控制
# 键盘控制 | |
ros2 run turtlebot3_teleop teleop_keyboard |