linux下使用VSCode调试运行ROS项目

本文详细介绍如何在Linux环境下使用VSCode调试ROS项目。从创建ROS工作空间到配置、编译、运行及调试ROS节点,提供了完整的步骤和示例代码。适用于初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


linux下使用VSCode调试运行ROS项目,具体步骤如下。

1.创建工作空间

#创建空间
mkdir -p ~/test_ws/src
cd ~/test_ws/
catkin_make

echo "source ~/test_ws/devel/setup.zsh" >> ~/.zshrc#我用的zsh,bash的话就换成bash
source ~/.zshrc

2.VSCode打开工作空间

在这里插入图片描述

3.创建包

右键“src”文件夹,选择“Create Catkin Package”,输入包的名称“testPkg”,按Enter确认,输入包的依赖“std_msgs rospy roscpp”,空格隔开,按Enter确认。

4.配置

主程序以talker和listener为例。 右键testPkg下的“src”–>“新建文件”,输入talker.cpp,双击打开,粘贴以下代码。

#include <iostream>
#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();
    }

}

右键testPkg下的“src”->“新建文件”,输入listener.cpp,双击打开,粘贴以下代码。

#include <iostream>
#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;
}

打开testPkg下的“CMakeLists.txt”,文末添加如下内容。

#(可选)这几个修改如下,后俩是为了能找到自定义的头文件
add_compile_options(-std=c++11)

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)

catkin_package(
   INCLUDE_DIRS include
#  LIBRARIES vehSceNaviComm
#  CATKIN_DEPENDS roscpp rospy std_msgs
#  DEPENDS system_lib
)

#文末添加
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)

5.编译

打开终端,在工作空间目录下输入“catkin_make”。

编译完成后,在不同终端下分别输入如下命令即可完成运行。

roscore
rosrun testPkg talker
rosrun testPkg listener

6.调试ROS节点

菜单栏选择 终端-任务配置(或者按下 ctr+shift+p 进入搜索框,找到任务配置)-C/C++: g++ build active file

会自动创建tasks.json文件,修改如下。

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "shell",
            "label": "builtCpp", //自己命名
            "command": "catkin_make -DCMAKE_BUILD_TYPE=Debug",
			"args": [],
			"options": {
				"cwd": "${workspaceFolder}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": "build"
		}
	]
}

菜单栏选择 运行-添加配置(或者按F5)-C++ (GDB/LLDB)-g++ build and debug active file

会自动创建launch.json文件,修改如下。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/devel/lib/vehSceNaviComm/talker",//要调试的可执行文件
            "args": [],
            "stopAtEntry": false,//设为true则调试运行时会先停在程序开始
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "builtCpp",//要与tasks.json中label的值保持一致
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

启动roscore之后即可F5调试运行talker节点。

在这里插入图片描述

PS:如果编译出错说找不到什么_generate_messages_cpp的问题,重启一下vscode试试,我就是这样就没问题了(或者在终端的工作空间下输入source devel/setup.zsh)。

参考

https://zhuanlan.zhihu.com/p/150331361?from_voters_page=true

https://blog.youkuaiyun.com/weixin_35695879/article/details/85254422

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值