我想在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。