# ros2_tutorial **Repository Path**: tangjianping54/ros2_tutorial ## Basic Information - **Project Name**: ros2_tutorial - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-05-19 - **Last Updated**: 2025-10-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### foxy安装 1. 参考[ros2 foxy](https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html)安装 ```bash sudo apt install software-properties-common sudo add-apt-repository universe sudo apt update && sudo apt install curl -y sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/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 $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null sudo apt update sudo apt install ros-foxy-desktop python3-argcomplete sudo apt install ros-dev-tools #调试相关工具 sudo apt install ros-foxy-turtlesim sudo apt install ~nros-foxy-rqt* ``` ### ros2的一些使用技巧 1. 常用基础命令 节点: ```bash ros2 node list ``` 话题: ```bash ros2 topic list -t #查看话题及其使用的消息类型 ros2 topic hz ros2 topic echo ros2 topic pub ``` 服务: ```bash ros2 service list ros2 service call ``` 接口(消息 服务 action): ```bash ros2 interface list ros2 interface show ``` 参数: ```bash ros2 param list ros2 param set ros2 param get ``` ### launch注意事项 用不同语言写的launch,必须跟上相应的后缀名,如python的launch文件必须以.py结尾,xml的launch文件必须以.xml结尾。不然tab不能自动补全。 ### colcon的一些使用技巧 1. 常用基础命令 编译所有包: ```bash colcon build #source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash #添加自动补全 ``` 编译并创建符号链接(避免重复安装): ```bash colcon build --symlink-install ``` 2. 选择性编译 仅编译指定包: ```bash colcon build --packages-select ``` 编译指定包及其依赖: ```bash colcon build --packages-up-to ``` 跳过某些包: ```bash colcon build --packages-skip ``` 3. 构建选项优化 并行编译(加速构建): ```bash colcon build --parallel-workers # 指定并行线程数(如 8) ``` 设置构建类型(如 Release): ```bash colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release ``` 传递 CMake 参数: ```bash colcon build --cmake-args -DCMAKE_CXX_FLAGS="-Wall" ``` 4. 清理构建结果 清理单个包的构建文件: ```bash colcon build --cmake-clean-first --packages-select ``` 删除所有构建产物: ```bash rm -rf build install log ``` 或使用 colcon clean(需安装插件): ```bash colcon clean packages # 清理所有包的构建文件 ``` 5. 调试与日志 显示详细构建日志: ```bash colcon build --event-handlers console_direct+ ``` 仅显示错误信息: ```bash colcon build --event-handlers console_cohesion+ ``` ### 踩坑记录 1. demo都是以类继承的方式使用Node,使用std::bind()可以成功传入多参数的回调函数。但当不是类成员函数作为回调函数时,使用bind的方式编译不通过,非得使用auto callback=lambda的方式,参考publish_address_book.cp里的写法。 2. 如果package里自定义了动态库,不能把它跟bin文件一样安装到lib/${PROJECT_NAME}下面,这样执行依赖它的bin文件时,报找不到动态库的错误,需要安装到lib下面。 3. 如果自定义消息里有header名字的变量,编译会报错,说是跟stamp形式的header冲突了。需要把header名字改成其他名字。