打开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
如图: