在VSCode中启动调试环境之前,如何设置ROS_PACKAGE_PATH环境变量



我想在ROS调试会话开始之前将/home/sanya/work/ORB_SLAM3/Examples/ROS添加到ROS_PACKAGE_PATH变量中。如果不添加,调试器将不会启动,因为它找不到包。我想在ROS调试开始之前导出变量。

我已经尝试过的:

我尝试以两种不同的方式将其添加为launch.json中的环境变量:

第一种方式:

{
"name": "ROS: Launch + build (release)",
"type": "ros",
"request": "launch",
"target": "/home/sanya/work/ORB_SLAM3/Examples/ROS/ORB_SLAM3/launch/ORB_SLAM3_bag.launch",
"env": {"ROS_PACKAGE_PATH": "/opt/ros/melodic/share:/home/sanya/work/ORB_SLAM3/Examples/ROS"}
}

第二种方式:

{
"name": "ROS: Launch + build (release)",
"type": "ros",
"request": "launch",
"target": "/home/sanya/work/ORB_SLAM3/Examples/ROS/ORB_SLAM3/launch/ORB_SLAM3_bag.launch",
"environment": [{"name": "ROS_PACKAGE_PATH", "value": "/opt/ros/melodic/share:/home/sanya/work/ORB_SLAM3/Examples/ROS"}]
}
我尝试将其添加到.env文件中,并在launch.json中设置envFile属性:

.env文件:

ROS_PACKAGE_PATH=/opt/ros/melodic/share:/home/sanya/work/ORB_SLAM3/Examples/ROS

launch.json文件:

{
"name": "ROS: Launch + build (release)",
"type": "ros",
"request": "launch",
"target": "/home/sanya/work/ORB_SLAM3/Examples/ROS/ORB_SLAM3/launch/ORB_SLAM3_bag.launch",
"envFile": "${workspaceFolder}/.env"
}
我尝试添加prelaunchTask:
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/sanya/work/ORB_SLAM3_multi/Examples/ROS

这个选项有效——export发生(我在之后运行echo $ROS_PACKAGE_PATH进行检查(——但调试会话在另一个终端开始(如果我理解正确的话(,并且变量在调试会话中不会设置为正确的值。

唯一起作用的是将其添加到.bashrc文件中。这对我来说并不太好,因为我有同一个库的修改版本,我想同时使用它们(我会将修改后的版本与原始版本进行比较(,而且我不想每次在两个版本之间切换时都修改.bashrc文件。

是否有其他选项将变量导出到VSCode调试环境?

(我维护Microsoft VSCode ROS扩展。(该扩展从其启动的ROS环境继承了大部分环境,因此如果您需要设置环境变量(或重新定位ROS(,您可以在终端中设置它们并从终端启动代码。

我创建了一个功能请求-https://github.com/ms-iot/vscode-ros/issues/646,并将其分配给我现在正在处理的0.8.0。

最新更新