写在前面
之前写的文章都是片段式的笔记,显得很松散,这次写一篇文章,用作笔记,也用作以后创建项目的模板过程。
创建工作空间
打开终端,首先创建一个工作空间,为了以后写代码更整洁,所以先创建一个文件夹用来管理所有以后的工作空间。
mkdir -p MyRosProject/myrosp_ws/src
cd MyRosProject/myrosp_ws/src
创建功能包
ros2 pkg create --build-type ament_cmake myros_pkg
为了模板的一般性,这里没有添加依赖和创建节点。
用CLion打开文件夹
创建节点
在包目录下的src创建代码文件,并使用下面的代码做初步调试。
#include "rclcpp/rclcpp.hpp"
class MyRobotNode : public rclcpp::Node {
public:
MyRobotNode() : Node("my_robot_node") {
RCLCPP_INFO(this->get_logger(), "Hello, ROS 2 from C++!");
}
};
int main(int argc, char **argv) {
rclcpp::init(argc, argv);
rclcpp::spin(std::make_shared<MyRobotNode>());
rclcpp::shutdown();
return 0;
}
添加依赖
打开package.xml
内容,添加如下内容
<depend>rclcpp</depend>
打开CmakeLists.txt,添加如下内容
find_package(rclcpp REQUIRED)
添加节点
打开CmakeLists.txt,添加如下内容
add_executable(myros_node src/main.cpp)
ament_target_dependencies(myros_node rclcpp)
install(TARGETS
myros_node
DESTINATION lib/${PROJECT_NAME})
编译
回到工作空间目录下,进行编译
colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
重新打开项目
在CLion打开build目录下的compile_commands.json
文件,并将根目录改为工作空间:
配置项目
创建脚本文件
在工作空间目录下创建脚本文件,内容如下:
/usr/bin/cmake /home/wshang/MyRosProject/myrosp_ws/src/myros_pkg -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_INSTALL_PREFIX=/home/wshang/MyRosProject/myrosp_ws/install/myros_pkg
/usr/bin/cmake --build /home/wshang/MyRosProject/myrosp_ws/build/myros_pkg -- -j8 -l8
/usr/bin/cmake --install /home/wshang/MyRosProject/myrosp_ws/build/myros_pkg
具体格式为:
/usr/bin/cmake (功能包路径) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_INSTALL_PREFIX=(install目录下和功能包同名文件夹路径)
/usr/bin/cmake --build (build目录下和功能包同名文件夹路径) -- -j8 -l8
/usr/bin/cmake --install (build目录下和功能包同名文件夹路径)
在功能包目录下打开终端,使用以下命令修改脚本文件权限:
chmod 777 cmake_commands.bat
自定义构建目标
点击设置->构建、执行、部署->自定义构建目标
,进行如下图所示设置
程序选择刚才创建的脚本文件,工作目录选择build
目录下和功能包同名文件夹工作路径
编辑运行配置
可执行文件在install
->(和功能包同名文件夹)->lib
->(和节点同名文件)
结束
自此,所有的创建过程就都结束了,可以进行其他创作工作了。