1. 必要なプラグインをインストールする
VScode を開き、開発中にCMake、CMake Tools、ROS、catkin-toolsプラグインをインストールします。スクリーンショットは次のとおりです。インストール後、VScode プラグインを再度開くと有効になります。
2. ROS ワークスペースを作成する
選択したパスの下でターミナルを開いてワークスペースを作成します。具体的なコマンドは次のとおりです。
mkdir -p ~/ROS_Study2/src
cd ~/ROS_Study2/src
catkin_init_workspace
cd ~/ROS_Study2
catkin_make
3. VScode でワークスペースを開き、作業パッケージを作成します
VScode で上記で作成したワークスペースを開くと、ファイル ディレクトリは次のように表示されます。
を右クリックしてsrc
を選択しCreate Catkin Package
、パッケージに HelloROS という名前を付けます。
次のステップは、roscpp 兄弟 rospy 依存関係を追加することです。
次に、srcファイル内のファイルディレクトリは以下のとおりです。
.vscode で自動的に生成されc_cpp_properties.json
ますsettings.json
次に、src/helloROS/src ディレクトリに cpp ファイルを追加します。コマンドは helloros.cpp で、内容は次のとおりです。
#include <iostream>
#include <string>
#include <sstream>
#include <ros/ros.h>
#include <std_msgs/String.h>
using namespace std;
int main(int argc, char** argv)
{
ros::init(argc, argv, "helloros");
ros::NodeHandle n;
ros::Publisher pub_str = n.advertise<std_msgs::String>("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;
}
4. vscode での json ファイルの生成と設定
1. c_cpp_properties.json: C/C++ クラス ライブラリを指定し、 path を含めるのに使用されます。Fn+F1 を押したままにして検索します。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
}
2.tasks.json :コンパイル用
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})
3. launch.json、デバッグ用
ショートカット キーを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
}
]
},
]
}
5 つの実行ノード
1.ROS MASTERを実行する
执行快捷键ctrl + shfit + p,
再输入 ROS:Start
2. ノードを実行します
执行快捷键ctrl + shfit + p
输入ROS:Run a Ros executable
依次输入创建的功能包的名称以及节点名称(即编译成功后二进制文件的名称,注意不是文件名)
端末は次のように結果を出力します。
ここまでで、VScode での ROS の設定は完了しましたが、VScode での PLC と OpenCV の設定は、対応するヘッダー ファイルのパスと関連コマンドを 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" //cmake によって生成されたcompile_commands.jsonを追加します
図に示すように: