打开VScode,在开展中安装CMake、CMake Tools,ROS和catkin-tools插件,截图如下,安装后重新打开VScode插件生效。
在选择的路径下,打开终端创建工作空间,具体命令如下:
- mkdir -p ~/ROS_Study2/src
- cd ~/ROS_Study2/src
- catkin_init_workspace
-
- cd ~/ROS_Study2
- catkin_make
用VScode打开上面创建的工作空间,文件目录展示如下:
右键单击src
,选择Create Catkin Package
,Package命名为HelloROS
下一步添加roscpp哥rospy依赖
接下来src文件里的文件目录如下:
在.vscode里自动生成了c_cpp_properties.json
和settings.json
接下来在src/helloROS/src目录下添加一个cpp文件,命令为helloros.cpp,内容如下:
- #include
- #include
- #include
- #include
- #include
-
- using namespace std;
-
- int main(int argc, char** argv)
- {
- ros::init(argc, argv, "helloros");
- ros::NodeHandle n;
- ros::Publisher pub_str = n.advertise
("talker", 1000); - ros::Rate loop_rate(10);
- int count = 0;
- while(ros::ok())
- {
- std_msgs::String msg;
- std::stringstream ss;
- ss << "hello ROS! " << count;
- msg.data = ss.str();
- ROS_INFO("%s", msg.data.c_str());
- pub_str .publish(msg);
- ros::spinOnce();
- loop_rate.sleep();
- count++;
- }
- return 0;
- }
C/C++:编辑配置(JSON)即可自动生成json文件(这里已经自动生成,不需要创建)
这里自动生成的c_cpp_properties.json文件,具体的内容如下:
- {
- "configurations": [
- {
- "browse": {
- "databaseFilename": "${workspaceFolder}/.vscode/browse.vc.db",
- "limitSymbolsToIncludedHeaders": false
- },
- "includePath": [
- "/opt/ros/kinetic/include/**",
- "/usr/include/**"
- //这里就可以包含ROS,PCL和OpenCV相关的头文件的路径
- ],
- "name": "ROS",
- "intelliSenseMode": "gcc-x64",
- "compilerPath": "/usr/bin/gcc",
- "cStandard": "gnu11",
- "cppStandard": "c++14"
- }
- ],
- "version": 4
- }
按下ctrl + shfit + p
输入指令tasks: configure task
,然后在下拉里选择catkin_make: build
会自动生成tasks.json
文件。生成的tasks.json
文件内容如下:
- {
- "version": "2.0.0",
- "tasks": [
- {
- "type": "catkin_make",
- "args": [
- "--directory",
- "/home/yang/Project/ROS_Study2",
- "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
- ],
- "problemMatcher": [
- "$catkin-gcc"
- ],
- "group": "build",
- "label": "catkin_make: build"
- }
- ]
- }
修改src/helloROS/CMakeLists.txt文件,添加的内容如下:
- catkin_package(
- CATKIN_DEPENDS
- )
- # 头文件路径
- include_directories(
- include
- ${catkin_INCLUDE_DIRS}
- )
- # 生成可执行文件
- add_executable( helloROS src/helloros.cpp )
- # 链接库
- target_link_libraries(helloROS ${catkin_LIBRARIES})
快捷键ctrl+shift+d
,新建launch.json文件,会自动生成如下内容:
- {
- // 使用 IntelliSense 了解相关属性。
- // 悬停以查看现有属性的描述。
- // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
- "version": "0.2.0",
- "configurations": [
- {
- "name": "(gdb) 启动",
- "type": "cppdbg",
- "request": "launch",
- "program": "${workspaceFolder}/devel/lib/helloROS/helloROS",
- "args": [],
- "stopAtEntry": false,
- "cwd": "${fileDirname}",
- "environment": [],
- "externalConsole": false,
- "MIMode": "gdb",
- "setupCommands": [
- {
- "description": "为 gdb 启用整齐打印",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- }
- ]
- },
- ]
- }
1.运行ROS MASTER
执行快捷键ctrl + shfit + p,
再输入 ROS:Start
2.运行节点
执行快捷键ctrl + shfit + p
输入ROS:Run a Ros executable
依次输入创建的功能包的名称以及节点名称(即编译成功后二进制文件的名称,注意不是文件名)
终端打印结果如下:
至此完成ROS在VScode中的配置,PLC和OpenCV在VScode配置只需要在c_cpp_properties.json和CMakeLists.txt添加相应头文件路径和相关命令即可,可实现动补全功能。
后记:VScode使用compile_commands.json配置includePath环境
1.使用cmake导出compile_commands.json
命令:cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=YES ..
2.在ROS下使用
命令:catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=YES
3.在CMakeLists.txt中添加set命令
命令:set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
4.在VScode中的compile_commands.json中添加
在中添加:
"compileCommands": "${workspaceFolder}/build/compile_commands.json" //添加cmaker生成的compile_commands.json
如图: