rosrun通过ssh没有正确启动节点

时间:2015-07-05 12:58:07

标签: c++ linux shell ssh ros

我们正在使用ros并尝试在shell脚本中通过SSH运行节点。 我们有一台控制(主)计算机,我们使用以下行执行脚本:

ssh user@xxx.xxx.x.x -x "/bin/bash -c 'source /etc/profile; rosrun stargazer_alter stargazer_node'"

节点正在启动(它出现在“rosnode列表”中,节点也在“rostopic info”中列为发布者)但主要方法似乎没有被执行(任何打印行都没有显示,也没有任何消息已发表)。

#include "Stargazer_listener.h"

enum STATES {config, readData};

int main(int argc, char** argv) {
   ROS_INFO("Test!!!! Stargazer starts!");
   ros::init(argc, argv, "stargazer_node");
   Stargazer_listener starG;
   int iFd = 0;
   char *rec_msg = (char*)malloc(BUFFSIZE * sizeof(char));
   iFd = starG.portSetup();
   STATES STATE = config;
   while(ros::ok()) {
     switch(STATE) {
       case config:
         starG.cmd(iFd, rec_msg, "~#CalcStop`");
         printf("CalcStop\n");
         starG.cmd(iFd, rec_msg, "~#CalcStart`");
         printf("CalcStart\n");
         STATE = readData;
         break;
       case readData:
         starG.publish_data(iFd, rec_msg);
         break;
     }
   }
   free(rec_msg);
   return 0;
}

“starG.portSetup()”行打开ttyUSB0端口,其他进程不使用该端口。

stargazer_node正在通过catkin_make进行编译。根据代码,首先应该是以下打印行:“ROS_INFO(”测试!!!! Stargazer启动!“);”。 哪个不会发生!

相同的shell脚本命令与其他节点一起正常工作。如果我们将节点添加到ros“.launch”文件中,则会发生同样的事情。

如果我通过终端(ssh user@xxx.xxx.x.x)中的ssh连接然后运行相同的行(rosrun stargazer_alter stargazer_node),一切正常!

0 个答案:

没有答案