C++ VS Code ROS 环境搭建详细教程

文章目录

    • 环境配置
    • 打开vsc
    • 添加源代码文件
    • 自动保存文件
    • 编译helloworld.cpp
    • 运行构建
    • 构建多个C ++文件
    • launch.json (debugger settings)
    • tasks.json (build instructions)
    • c_cpp_properties.json (compiler path and IntelliSense settings)

环境配置

安装ROS
安装vsc并且安装插件:chinese、c++、ROS、Txt Syntax、Msg Language Support、

打开vsc

创建项目文件夹
终端运行code .

添加源代码文件

在文件资源管理器标题栏中,选择“ 新建文件”按钮并命名该文件helloworld.cpp。

#include 
using namespace std;

int main()
{
   {
      cout << "春秋深夜" << endl;
   }
   cout << endl;
}

自动保存文件

选中“ 文件 ”主菜单中的“ 自动保存”,启用“ 自动保存”以自动保存文件更改。

编译helloworld.cpp

从主菜单中,选择Terminal > Configure Default Build Task。在下拉列表中,将显示任务下拉列表,其中列出了C ++编译器的各种预定义构建任务。选择g ++ build active file,它将构建当前在编辑器中显示(活动)的文件。

运行构建

要运行中定义的构建任务tasks.json,按Ctrl + Shift + B或从终端主菜单中选择“ 任务:运行构建任务”。
任务开始时,“集成终端”面板出现在源代码编辑器下方。任务完成后,终端将显示编译器的输出,指示构建成功还是失败。对于成功的g ++构建,输出看起来像这样:
在这里插入图片描述
使用+按钮创建一个新终端,运行ls,看到可执行文件helloworld
终端中输入来运行./helloworld
在这里插入图片描述

构建多个C ++文件

构建多文件 可以要编写 makefile文件 然后引用脚本编译
https://blog.csdn.net/qq_34347375/article/details/81137962
https://blog.51cto.com/11672416/1981689
修改task.json
您可以tasks.json使用"*.cpp"代替的参数来修改以构建多个C ++文件 f i l e 。 您 也 可 以 通 过 替 换 " {file}。 您也可以通过替换" file"{fileDirname}/${fileBasenameNoExtension}"为硬编码的文件名(例如“ helloworld.out”)来修改输出文件名。

(compiler path and IntelliSense settings)
Ctrl+Shift+P
C/C++: Edit Configurations (UI)

ctrl + ` 打开终端 编译工做空间

在终端创建功能包

在src目录下面创建两个文件分别是talker.cpp、listener.cpp

#include 
#include "ros/ros.h"
#include "std_msgs/String.h"
int main(int argc, char **argv)
{
    //ros节点初始化 "talker"节点名称,在ROS里同一时间不允许出现两个
    ros::init(argc,argv,"talker");
    //创建节点句柄
    ros::NodeHandle h;
    //创建一个publisher, topic:chatter,消息类型std_msgs::String
    ros::Publisher chatter_pub = h.advertise<std_msgs::String>("chatter",1000); // "chatter"话题名称,消息缓存
    //设置单循环的频率
    ros::Rate looprate(10);

    while (ros::ok())
    {
        std_msgs::String msg;
        std::stringstream ss;
        ss<<"hello world";
        msg.data = ss.str();
        //发布消息
        ROS_INFO("%s",msg.data.c_str());
        chatter_pub.publish(msg);
        //等待回调函数
        ros::spinOnce();
        //按照之前设定的进行循环
        looprate.sleep();
    }
    
}

#include 
#include "ros/ros.h"
#include "std_msgs/String.h"
void chatterCallBack(const std_msgs::String::ConstPtr &msg)
{
    ROS_INFO("I get: [%s}",msg->data.c_str());
}
int main(int argc, char **argv)
{
    //ros节点初始化 "listener"节点名称,在ROS里同一时间不允许出现两个
    ros::init(argc,argv,"listener");
    //创建节点句柄
    ros::NodeHandle h;
    //创建一个subscriber, topic:chatter,消息类型std_msgs::String, 接收到消息,响应chatterCallBack
    ros::Subscriber listener_sub = h.subscribe<std_msgs::String>("chatter",1000,chatterCallBack);
    
    //循环等待回调函数
    ros::spin();
    return 0;
}

在ros_test目录下,双击"CMakeLists.txt",在文件末尾添加:

add_executable(talker src/talker.cpp) #可执行文件
target_link_libraries(talker ${catkin_LIBRARIES})#链接库
add_dependencies(talker ${PROJECT_NAME}_generate_messages_cpp) #设置依赖

add_executable(listener src/listener.cpp)
target_link_libraries(listener ${catkin_LIBRARIES})
add_dependencies(listener ${PROJECT_NAME}_generate_messages_cpp)

终端编译

终端,输入roscore,启用整个ROS总节点。
终端,输入rosrun ros_test talker,启用talker节点。
终端,输入rosrun ros_test listener,启用listener节点。

launch.json (debugger settings)

main menu, choose Debug > Add Configuration…
C++ (GDB/LLDB).
g++ build and debug active file.

tasks.json (build instructions)

Terminal > Configure Default Build Task.
g++ build active file
press Ctrl+Shift+B or from the Terminal main menu choose Tasks: Run Build Task.

c_cpp_properties.json (compiler path and IntelliSense settings)

https://code.visualstudio.com/docs/cpp/config-wsl
https://blog.csdn.net/msnh2012/category_9320482.html

你可能感兴趣的:(VScode)