ROS开发环境搭建(2024.8.4)
随着机器人技术的迅猛发展,机器人操作系统(ROS, Robot Operating System)作为一种开源的机器人中间件,已成为开发和实现机器人应用的重要工具。在这篇文章中,我将介绍如何在Ubuntu上搭建ROS开发环境,尤其是ROS 2的安装和基本配置,使读者能够顺利开始他们的ROS之旅。
安装前准备
在开始之前,请确保你的系统是Ubuntu 20.04或更高版本。如果你还没有安装Ubuntu,可以选择使用双系统或虚拟机。安装完成后,确保操作系统已更新:
sudo apt update
sudo apt upgrade
安装ROS 2
- 设置ROS 2存储库
首先,确保你已经安装了curl工具,以帮助我们设置ROS 2的APT源。
sudo apt install curl
接下来,添加ROS 2的APT源:
sudo sh -c 'echo "deb [arch=amd64] http://packages.ros.org/ros2/ubuntu main" > /etc/apt/sources.list.d/ros2-latest.list'
然后,添加ROS 2的密钥:
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
- 更新APT索引并安装ROS 2
运行以下命令更新APT索引并安装ROS 2:
sudo apt update
sudo apt install ros-humble-desktop
安装完成后,还需要初始化rosdep工具:
sudo rosdep init
rosdep update
- 环境配置
将ROS 2的环境变量添加到bashrc文件中,以便每次启动终端时自动加载:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
创建工作空间
在ROS中,工作空间是用于存放代码和资源的地方。接下来,我们将创建一个工作空间:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/
colcon build
上面的指令将创建一个名为ros2_ws
的工作空间,并在其下创建一个src
目录,用于存放源代码。colcon build
命令会构建工作空间中的所有包。
创建第一个ROS 2包
现在,我们可以创建一个简单的ROS 2包来验证环境是否搭建成功:
- 创建包
在src
目录下运行以下命令创建一个新包:
cd ~/ros2_ws/src
ros2 pkg create my_first_package
- 编写示例代码
接着,我们可以在my_first_package
包中创建一个简单的“Hello World”节点。打开my_first_package
目录下的my_first_package
文件夹,再创建一个hello.py
文件:
# hello.py
import rclpy
from rclpy.node import Node
class HelloWorldNode(Node):
def __init__(self):
super().__init__('hello_world_node')
self.get_logger().info('Hello, ROS 2!')
def main(args=None):
rclpy.init(args=args)
node = HelloWorldNode()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
- 修改
setup.py
确保在setup.py
中添加hello.py
的入口点,以便可以通过命令行启动该节点:
entry_points={
'console_scripts': [
'hello = my_first_package.hello:main'
],
},
- 构建包
在工作空间根目录下,运行以下命令以构建代码:
cd ~/ros2_ws/
colcon build
构建完成后,别忘了重新加载环境变量:
source ~/ros2_ws/install/setup.bash
运行节点
最后,运行我们的节点以查看结果:
ros2 run my_first_package hello
你应该能在终端中看到类似“Hello, ROS 2!”的输出。
总结
通过以上步骤,你成功在Ubuntu上搭建了一个ROS 2的开发环境,并创建了一个基础的ROS 2包与示例节点。这为进一步探索和开发更复杂的机器人应用打下了基础。希望这篇文章能帮助你顺利入门,开启属于你的机器人开发之旅!