1.创建ros工作空间
打开终端
mkdir -p xxx_ws/src //创建工作空间,记得带src
cd xxx_ws //切换到工作目录
catkin_make//进行编译
2.启动vscode
cd xxx_ws//切换到创建的工作空间目录下
code .//打开vscode 此时会跳转出vscode
3.vscode 中编译 配置ros
快捷键 ctrl + shift + B 调用编译
选择:catkin_make:build后的小齿轮
修改掉.vscode/tasks.json 文件
把下面的代码复制替换掉原本的
{
// 有关 tasks.json 格式的文档,请参见
// https://go.microsoft.com/fwlink/?LinkId=733558
"version": "2.0.0",
"tasks": [
{
"label": "catkin_make:debug", //代表提示的描述性信息
"type": "shell", //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行
"command": "catkin_make",//这个是我们需要运行的命令
"args": [],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
"group": {"kind":"build","isDefault":true},//代表ctrl + //shift + B的时候默认执行这个命令
"presentation": {
"reveal": "always"//可选always或者silence,代表是否输出信息
},
"problemMatcher": "$msCompile"
}
]
}
4.创建 ROS 功能包
选定 src 右击 —> create catkin package
录入package name(功能包名字)填入:自定义填入功能包名字
添加dependcies(依赖) 填入:roscpp rospy std_msgs
完成上述步骤后,可以ctrl + shift + B 编译一下看看是否报错
5.C++ 实现
5.1C++ 文件编写
找到功能包目录下的src ->右击 新建文件 文件名自取,以cpp结尾
附注意点:ctrl+/ 取消注释
ctrl+shift+t 删掉一行
如果没有代码提示:修改c_cpp_properties.json中"cppStandard": “c++17”(本来是c++11,改成17),cpp代码如下
/*
控制台输出 HelloVSCode !!!
*/
#include "ros/ros.h"
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"");
//执行节点初始化
ros::init(argc,argv,"HelloVSCode");
//输出日志
ROS_INFO("Hello VSCode!!!哈哈哈哈哈哈哈哈哈哈");
return 0;
}
5.2 CMakeList.txt文件修改
cpp编写完成后,编写配置文件,修改CMakeList.txt文件,其中CMakeList.txt文件是与装有cpp文件的src目录平级的。
如下图:是蓝色的不是红色的
在右下角可以改变配置纯文本或者CMake
找到CMakeList.txt文件中的add_executable和target_link_libraries
add_executable的那一行${PROJECT_NAME}_node 代表映射名称,这个是自定义的,一般也用文件名,这里用zjq_demo01
第二个参数为源文件名称,这里为src/zjq_demo01.cpp(src目录,然后接源文件名称)
target_link_libraries的那一行的${PROJECT_NAME}_node也换成映射名,和上面第一条一样,统一用文件名zjq_demo01。
结束之后可以ctrl+shift+b查看是否有问题,我遇到了一个Invoking “make -j2 -l2” failed的错误,原因是因为cpp代码写的有问题。
5.3 在终端进行编译操作
在vscode中右下方新建新终端
输入roscore,启动ros核心
再次新建一个终端
输入 source ./devel/setup.bash
在输入 rosrun zjq_demo01 zjq_demo01(启动 功能报名 文件映射名称)