【ROS 机器人快速入门】
在使用 ROS 时,一般开发流程可以分为以下几个主要步骤:
1. 安装和环境配置
- 安装 ROS:通过官方教程安装适合的 ROS 版本(如 ROS Noetic、ROS2 Humble)。
- 设置环境变量:
- 在
~/.bashrc
中添加:source /opt/ros/<distro>/setup.bash
- 替换
<distro>
为对应版本,如noetic
或humble
。
- 在
2. 创建工作空间
ROS 使用工作空间(workspace)管理代码。常用的工作空间管理工具是 catkin
(ROS1)或 colcon
(ROS2)。
-
ROS1:
mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin_make # 或者使用 catkin build
-
ROS2:
mkdir -p ~/ros2_ws/src cd ~/ros2_ws colcon build
-
配置工作空间环境(在
~/.bashrc
中添加):source ~/catkin_ws/devel/setup.bash # ROS1 source ~/ros2_ws/install/setup.bash # ROS2
3. 开发 ROS 包
ROS 项目通过包(package)组织。以下是创建和开发包的基本步骤:
创建 ROS 包
- ROS1:
cd ~/catkin_ws/src catkin_create_pkg <package_name> [dependencies]
- ROS2:
cd ~/ros2_ws/src ros2 pkg create <package_name> --dependencies [dependencies]
开发代码
-
编辑源代码: 在
src
目录中编写节点(Node)代码,通常使用 C++ 或 Python。- C++:放在
src/
文件夹。 - Python:放在
scripts/
文件夹,并赋予可执行权限:chmod +x scripts/<your_script>.py
- C++:放在
-
编辑
CMakeLists.txt
或package.xml
:- 添加依赖项、设置构建规则。
4. 构建工作空间
- ROS1:
cd ~/catkin_ws catkin_make # 或者 catkin build
- ROS2:
cd ~/ros2_ws colcon build
5. 运行 ROS
启动 ROS 主节点
- ROS1:
roscore
- ROS2(不需要显式启动,DDS 通信中会自动启动类似功能)。
运行节点
- ROS1:
rosrun <package_name> <node_name>
- ROS2:
ros2 run <package_name> <node_name>
启动文件(launch files)
如果有多个节点需要同时启动,使用 launch
文件:
- ROS1:
roslaunch <package_name> <launch_file.launch>
- ROS2:
ros2 launch <package_name> <launch_file.launch>
6. 调试和工具使用
-
调试工具:
rostopic
:查看和发布话题消息。rostopic list # 列出所有话题 rostopic echo /topic_name # 查看某个话题的数据
rosservice
:管理服务(ROS1)。rqt
:图形化工具查看节点、话题关系。rqt_graph
- ROS2 等效命令:
ros2 topic list
ros2 topic echo
ros2 node list
-
日志查看:
- ROS1:
roslog
- ROS2:
ros2 log
- ROS1:
7. 运行结果验证
- 测试节点是否正确发布/订阅消息,使用
rostopic
或rqt_graph
。 - 测试服务是否正常响应,使用
rosservice
或ros2 service
。
8. 高级开发
- 编写自定义消息和服务:
- 定义
.msg
和.srv
文件,运行catkin_make
或colcon build
生成对应的代码。
- 定义
- 多工作空间叠加:
- 使用多个工作空间时,依次
source
各个工作空间的setup.bash
。
- 使用多个工作空间时,依次
- 集成传感器和硬件:
- 使用现成的驱动包(如激光雷达、摄像头)。
- 仿真环境:
- 使用 Gazebo 或 RViz 进行仿真和可视化。
9. 部署和测试
- 在真实机器人或目标平台上部署节点。
- 配置启动文件和参数,确保系统按预期工作。
总结
- 创建工作空间和包。
- 编写和编译代码。
- 运行节点和调试。
- 仿真或真实硬件部署。
- 优化和测试系统。
这是一个典型的 ROS 开发流程。通过熟悉这些步骤,你可以有效地完成机器人系统的开发与调试。