从 Ubuntu Software Apps 安装的VSCode是 snap 软件包,也就是非 VSCode 官方编译发布的安装包(销减版),存在中文输入法bug,建议在 VSCode 官网下载安装正式版本即可。注意:已提前安装好ros-noetic版本
mkdir my_workspace
cd my_workspace && mkdir src
cd src && catkin_init_workspace
cd ..
code .
打开VSCode之后,第二步安装的ROS插件就会自动识别到这个workspace,同时会出现一个文件夹.vscode里面有两个json文件:
c_cpp_properties.json
settings.json
点击菜单栏: Terminal->Configure default build task,然后生成在.vscode的文件夹出现并同时打开一个task.json文件。
将task.json 文件内容改成如下:
{
"version": "2.0.0",
"tasks": [
{
"label": "catkin_make",
"type": "shell",
"command": "catkin_make",
"args": [
"-j4",
"-DCMAKE_BUILD_TYPE=Release",
"-DCMAKE_EXPORT_COMPILE_COMMANDS=1",
"-DCMAKE_CXX_STANDARD=14"
],
"problemMatcher": [
"$catkin-gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
cd my_workspace/src
catkin_creat_pkg hello_vscode roscpp rospy std_msgs //包名 + 依赖
在功能包hello_vscode的src目录下建立一个hello_vscode.cpp文件
输入以下的测试代码:
#include "ros/ros.h"
#include "std_msgs/String.h"
int main(int argc, char *argv[])
{
//初始化ros节点
ros::init(argc, argv, "hello");
//创建节点句柄
ros::NodeHandle n;
ros::Publisher pub_1 = n.advertise<std_msgs::String>("talking", 100);
//设置循环频率
ros::Rate loop_rate(1);
int count = 0;
//循环打印输出消息
while (ros::ok())
{
//定义消息的内容
std_msgs::String msg;
//定义字符串流
std::stringstream ss;
ss << "hello vscode!" << count;
msg.data = ss.str();
//输出消息
ROS_INFO("i am talking! %d times! %s", count, msg.data.c_str());
pub_1.publish(msg);
//循环等待回调函数
ros::spinOnce(); //本例中没有回调函数
//按循环频率延时
loop_rate.sleep();
++count;
}
return 0;
}
在CMakeLists.txt下添加执行文件和链接库:
add_executable(hello src/hello_vscode.cpp) //第一个参数可以修改节点名称
target_link_libraries(hello ${catkin_LIBRARIES})
ctrl + shift+B 自动编译并在devel/lib下面生成节点执行文件 ,在workapace下build下面会生成一个compile_commands.json的文件,该文件规定了到哪里去编译什么文件。
echo "source /my_workspace/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
在VSCode软件界面下,ctrl + shift + ~打开输入命令控制台,输入:
roscore
ctrl + shift + ~新开一个控制台窗口,输入:
rosrun hello hello