【发布时间】:2017-03-25 14:36:13
【问题描述】:
我对 ROS 节点有一点问题,即使我认为这主要是 C++ 代码问题。
我想要做的是使用在 ROS 节点内的终端(Ubuntu 14.04)中运行的脚本。
我正在使用 C++ 语言的system() 命令代码执行此操作。
该脚本必须详细说明存储在我的 PC 上本地的 .txt 文件;当我通过普通的命令行方法使用脚本时,显然我必须首先导航到我的脚本所在的目录,然后我启动脚本。
为了在我的节点上回复这个,我使用 2 个system() 实例导航到目录,然后运行脚本。
问题是节点似乎“看不到”告诉它导航到正确目录的命令,所以,我能得到的只是一条错误消息:无法读取文本文件。
正确启动脚本的唯一方法是在我手动导航到脚本所在的目录后启动节点。
我在下面发布代码,也许我写的东西不好,或者还有另一个我看不到的问题,因为我是 ROS 和一般编码领域的菜鸟。提前谢谢你,我知道这可能是一个愚蠢的问题!
马可
代码如下:
int main(int argc, char **argv)
{
ros::init(argc, argv, "heart_rate_monitor");
ros::NodeHandle n;
system("cd ~/home/marco/catkin_ws/src/heart_rate_monitor");
system("get_hrv -R test.txt");
exit(0);
return 0;
}
注意:我也试过不带 ~ 。
编辑:现在看来运行正常,这里是代码:
int main(int argc, char **argv)
{
ros::init(argc, argv, "heart_rate_monitor");
ros::NodeHandle n;
chdir("/home/marco/catkin_ws/src/heart_rate_monitor");
system("get_hrv -R test.txt >doc.txt");
exit(0);
return 0;
}
【问题讨论】:
-
请发布错误信息?
-
好的,它只是这么说:/usr/bin/get_hrv : Can't open test.txt
-
你也应该删除~。这代表您的主目录。
-
好的,我试试,报告!谢谢!编辑:我收到此错误 sh: 1: /home/marco/catkin_ws/src/heart_rate_monitor/get_hrv: not found
-
get_hrv 安装在 /usr/bin 目录中,因为它必须适用于整个系统,也适用于位于在线数据库中的文件。
标签: c++ ubuntu terminal ros gnome-terminal