# ros2-zxz **Repository Path**: panicle/ros2-zxz ## Basic Information - **Project Name**: ros2-zxz - **Description**: 【赵虚左】ROS2理论与实践 - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 6 - **Created**: 2025-08-11 - **Last Updated**: 2025-08-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ros2-zxz #### 介绍 【赵虚左】ROS2理论与实践 课程代码及相关说明 课程视频链接:【ROS2课程简介-哔哩哔哩】 https://b23.tv/8jTjFtp #### 环境说明 1. Ubuntu 22.04.1 2. VScode code_1.72.2-1665614327_amd64_20221018 #### 课程对应代码目录 《1.3.2_ROS2快速体验_HelloWorld(C++)_01基本流程》--> pkg01_helloworld_cpp 《1.3.3_ROS2快速体验_HelloWorld(Python)_01基本流程》--> pkg02_helloworld_py(老师还讲了个笑话) 《1.4.1_集成开发环境搭建_VSCode_04程序编写》--> pkg03_hellovscode_cpp hellovscode 《1.4.1_集成开发环境搭建_VSCode_05自修改配置文件》--> pkg03_hellovscode_cpp hellovscode2 《2.1_ROS2通信机制简介_04准备》--> ros2 pkg create base_interfaces_demo 《2.2.1_话题通信_案例以及案例分析》--> ros2 pkg create cpp01_topic 《2.2.2_话题通信_原生消息(C++)_01发布方01源码分析》--> cpp01_topic demo01_talker_str 《2.2.2_话题通信_原生消息(C++)_02订阅方01框架搭建》--> cpp01_topic demo02_listener_str 《2.2.3_话题通信_原生消息(Python)_01发布方实现》--> py01_topic demo01_talker_str 《2.2.3_话题通信_原生消息(Python)_02订阅方实现》--> py01_topic demo02_listener_str_py 《2.2.5_话题通信_自定义接口消息(C++)_01框架搭建》--> cpp01_topic demo03_talker_stu 《2.2.3_话题通信_原生消息(Python)_03vscode代码片段》--> cpp01_topic code.txt 《2.2.5_话题通信_自定义接口消息(C++)_03订阅方实现》--> cpp01_topic demo04_listener_stu 《2.2.6_话题通信_自定义接口消息(Python)_02发布方实现》--> py01_topic demo03_talker_str_py 《2.2.6_话题通信_自定义接口消息(Python)_03订阅方实现》--> py01_topic demo04_listener_str_py 《2.4.3_动作通信_C++实现_01框架搭建》--> cpp03_action demo01_action_server 《2.4.3_动作通信_C++实现_03客户端_01流程说明》--> cpp03_action demo02_action_client 《2.4.4_动作通信_Python实现_01框架搭建》--> py03_action demo01_action_server_py 《2.4.4_动作通信_Python实现_03客户端_01流程说明》--> py03_action demo02_action_client_py 《2.4.5_动作通信_小结》老师建议:"代码只要敲不死,就往死里敲。";代码敲一遍是绝对不行的,两三遍熟悉一下流程,四五遍差不多掌握;老师送一句话:"键盘敲栏,月薪过万。" 《2.5.2_参数服务_参数简介_01C++API》--> cpp04_param demo00_param 《2.5.2_参数服务_参数简介_02PythonAPI》--> py04_param demo00_param_py 《2.5.3_参数服务_C++实现_01框架搭建》--> cpp04_param demo01_param_server 《2.5.3_参数服务_C++实现_03客户端_01代码框架》--> cpp04_param demo02_param_client 《2.5.4_参数服务_Python实现_01框架搭建》--> py04_param demo01_param_server_py 《3.3.2_元功能包_实现 》--> tutorails_plumbing #### 课程中用到的命令 1.4 ROS2集成开发环境搭建 1.4.1 VScode_01下载安装、卸载 下载:vscode下载:https://code.visualstudio.com/Download 历史版本下载:https://code.visualstudio.com/updates 安装:sudo dpkg -i xxxx.deb 卸载:sudo dpkg --purge code 启动:code . #### 注意 1.每次新建Pkg包,编译完,执行前(ros2 run pdg01_helloworld_py helloworld), 先要执行环境变量加载 . install/setup.bash 或 将 setup.bash 绝对路径添加到当前用户的 .bashrc 文件中(但是“功能包”添加到环境变量, 谨慎使用,可能后期包增多时,出现同名覆盖,导致执行异常) 2.包目录中有 default 后缀的文件,是系统默认生成的演示文件, 为了和自定义文件分开,手动加上 default关键字 例:ws00_helloworld/src/pkg01_helloworld_cpp/src/helloworld.cpp.default 3.首次编译要使用 colcon build 命令全部编译,会生成 build、install、log这三个文件夹,其中 install文件夹中有环境变量脚本 #### 自定义脚本说明 * 要在"工作空间"执行脚本,就是脚本在哪个目录,就在哪个目录执行,不要用相对路径方法执行脚本。 * colcon_build.sh 及 colcon_build-*.sh 这些自定义脚本,是为了方便编译和执行而不需要输入很多命令,并不是ros2里必须要的,你也可以手动输入编译和执行的相关命令。 * 脚本里会自动截取部分脚本文件名,作为 编译和运行的参数,所以文件名-后和.sh 前 ,是pkg包名。 * out-colcon_build-pkg-script.sh 是生成 编译和执行 包脚本的脚本。 生成过程:out-colcon_build-pkg-script.sh 根据参数,生成 脚本 colcon_build-pkg01_helloworld_cpp.sh 根据参数,执行 colcon build --packages-select pkg01_helloworld_cpp 命令 * 在 ws00_* 目录下 colcon_build.sh 脚本是用来编译 src 目录下所有 pkg 包的。 * 在 ws00_* 目录下 colcon_build-pkg01_helloworld_cpp.sh 脚本 , 是用来编译 src 目录下 pkg01_helloworld_cpp 的 pkg 包的,就是单独编译某个包, 其他类名字也是一样作用。 #### 遇到的错误 & 问题 * 克隆代码后,执行编译,可能会报错“WARNING:colcon.colcon_ros.prefix_path.ament:The path '/home/****/ros2-zxz/ws00_helloworld/install/pkg*_helloworld_py' in the environment variable AMENT_PREFIX_PATH doesn't exist” 找不到环境变量, 先用 colcon_build.sh 脚本编译后,再编译就不会出现错误了,这是因为,你的目录和变量里的目录不一样导致的,执行 colcon build 会自动更新路径。 * 引用头文件 #include "rclcpp/rclcpp.hpp" 时显示红色波浪线。 解决方法:方式一、鼠标放在红色波浪线处,点击 “快速修复” 在文件中 “包含路径” 处,在“${workspaceFolder}/**” 行下,新起一行,输入 “/opt/ros/humble/include/**” (教程《1.4.1_集成开发环境搭建_VSCode_03includepath配置》有详细讲解) *在《2.2.6_话题通信_自定义接口消息(Python)_01框架搭建》课程 04:45 处,修改了 .vscode/settings.json 文件,编译前文本里绝对路径要设置成自己文件所在路径