1. ROS2安装前的准备工作
在开始安装ROS2之前,我们需要做好充分的准备工作。作为一名长期从事机器人开发的工程师,我强烈建议在虚拟机环境中进行ROS2的安装和开发,这样可以避免污染主机系统,也方便进行环境管理和备份。
1.1 虚拟机环境搭建
首先需要准备虚拟机软件和Ubuntu系统镜像。我推荐使用VMware Workstation Pro作为虚拟机平台,它提供了稳定可靠的虚拟化环境,特别适合开发工作。Ubuntu系统建议选择22.04 LTS版本,这是目前ROS2 Humble官方支持的最新长期支持版。
注意:虽然可以使用WSL2在Windows上运行Ubuntu,但对于ROS2开发,完整虚拟机环境更稳定可靠,特别是需要图形界面和硬件加速时。
安装VMware Workstation Pro后,创建新虚拟机时建议分配至少4GB内存和50GB磁盘空间。对于复杂的机器人仿真项目,可能需要更多资源。在安装Ubuntu时,选择"最小安装"即可,这样可以节省磁盘空间,后续再按需安装其他软件。
1.2 系统基础配置
安装完Ubuntu后,首先应该进行系统更新和基础工具安装:
bash复制sudo apt update && sudo apt upgrade -y
sudo apt install build-essential git curl vim -y
这些基础工具在后续开发中都会用到。build-essential包含了GCC编译器等开发工具,git用于版本控制,curl用于下载文件,vim则是强大的文本编辑器。
2. ROS2 Humble安装详细步骤
2.1 设置系统区域和编码
ROS2对系统区域设置有一定要求,正确的编码设置可以避免后续出现各种奇怪的问题。执行以下命令:
bash复制sudo apt update
sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
这里有几个关键点需要注意:
locale-gen命令生成指定的区域设置数据update-locale永久修改系统级的区域设置export命令临时设置当前终端的区域环境变量
经验分享:如果跳过这步,后续可能会遇到Python包导入错误或终端显示乱码等问题。我在多个项目中都遇到过因区域设置不正确导致的奇怪bug。
2.2 添加ROS2软件源
接下来需要将ROS2的官方软件源添加到系统中:
bash复制sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/osdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
这个步骤做了三件事:
- 安装必要的工具(curl、gnupg、lsb-release)
- 下载并添加ROS官方GPG密钥,用于验证软件包
- 将ROS2软件源添加到APT源列表中
注意事项:网络连接不稳定时,curl下载密钥可能会失败。可以多试几次,或者使用国内镜像源。
2.3 安装ROS2桌面版
现在可以正式安装ROS2了。对于大多数开发者,建议安装桌面完整版:
bash复制sudo apt update
sudo apt upgrade
sudo apt install ros-humble-desktop
这个安装过程可能会比较长,因为要下载大约1GB的软件包。ros-humble-desktop元包包含了ROS2核心、常用工具和GUI工具。
实测建议:在虚拟机中安装时,建议先做个快照。我曾经因为网络中断导致安装失败,不得不从头开始。
2.4 设置环境变量
安装完成后,需要设置环境变量才能使ROS2命令正常工作:
bash复制source /opt/ros/humble/setup.bash
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
第一行命令临时生效,第二行将其添加到bashrc中永久生效。这样每次打开新终端时都会自动加载ROS2环境。
常见问题:如果安装后输入ros2命令提示找不到,通常就是因为没有source环境变量脚本。
3. 安装后的验证与配置
3.1 验证安装
安装完成后,可以通过以下命令验证ROS2是否安装成功:
bash复制ros2 --help
如果能看到帮助信息,说明基本安装成功。进一步可以运行示例程序:
bash复制ros2 run demo_nodes_cpp talker
在另一个终端运行:
bash复制ros2 run demo_nodes_cpp listener
如果能看到talker发送消息,listener接收消息,说明ROS2核心功能工作正常。
3.2 安装额外工具包
根据开发需求,可能需要安装一些额外的工具包:
bash复制sudo apt update
sudo apt install ros-humble-ros1-bridge ros-humble-turtlebot3* ros-humble-navigation2
常用工具包包括:
- ros1-bridge:ROS1和ROS2之间的桥接
- turtlebot3:常用机器人仿真包
- navigation2:导航功能包
选型建议:不要一次性安装所有包,按需安装可以减少磁盘占用和潜在冲突。
3.3 开发工具安装
为了提高开发效率,建议安装一些开发工具:
bash复制sudo apt install python3-colcon-common-extensions python3-rosdep2
sudo rosdep init
rosdep update
colcon是ROS2的构建工具,rosdep用于解决依赖关系。这些工具在后续开发中必不可少。
4. 常见问题与解决方案
4.1 安装过程中的网络问题
在国内访问ROS官方源可能会很慢,可以使用国内镜像源加速:
bash复制sudo sed -i 's|http://packages.ros.org|https://mirrors.tuna.tsinghua.edu.cn/ros|g' /etc/apt/sources.list.d/ros2.list
sudo apt update
这个命令将官方源替换为清华镜像源。
4.2 依赖关系问题
如果遇到依赖关系错误,可以尝试:
bash复制sudo apt --fix-broken install
rosdep install --from-paths src --ignore-src -r -y
4.3 图形界面问题
在虚拟机中使用ROS2的图形工具时,确保:
- 虚拟机已安装3D加速驱动
- 分配了足够的显存(至少128MB)
- 启用了3D加速选项
如果RVIZ2等工具运行异常,可以尝试:
bash复制export LIBGL_ALWAYS_SOFTWARE=1
这个环境变量强制使用软件渲染。
5. 进阶配置与优化
5.1 工作空间创建
开始ROS2开发前,应该建立一个工作空间:
bash复制mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build
这个工作空间将用于存放自己开发的包和代码。
5.2 自动补全配置
为了提高命令行效率,可以设置自动补全:
bash复制sudo apt install python3-argcomplete
echo 'source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash' >> ~/.bashrc
5.3 性能优化
对于资源有限的虚拟机,可以进行一些优化:
- 关闭不必要的服务
- 调整swappiness值减少交换分区使用
- 使用ccache加速编译
bash复制sudo systemctl disable --now apt-daily-upgrade.timer
echo 'vm.swappiness = 10' | sudo tee -a /etc/sysctl.conf
sudo apt install ccache
经过这些步骤,你应该已经拥有了一个完整的ROS2开发环境。在实际项目中,根据具体需求可能还需要安装其他专门的ROS2包和工具。