我正在研究机器人,我的目标是绘制机器人的状态。
目前,我的工作流程是:
rosrun explo explo_node > states.txt
scp states.txt my_desktop:/home/user
plot_data('states.txt')
是否有一个简单的解决方案可以将数据放在"实时"?对于八度音阶。我认为我可以毫不费力地从文件中读取输入并在添加数据时绘制数据。
问题是如何将数据发送到文件?
我对八度音阶以外的其他解决方案开放了。问题是我需要用箭头绘制2d用于机器人方向的图。
答案 0 :(得分:2)
以下是您可以通过网络发送数据的示例(如Andy建议的那样),并在生成时绘制(即实时)。我也认为这种方法最灵活/最合适。
为了演示,我将使用生成一个的bash脚本 <子> 子> 每十分之一对,为 <子> 子> 功能,在范围内 <子> 子>:
#!/bin/bash
# script: sin.sh
for i in `seq 0 0.01 31.4`;
do
printf "$i, `echo "s($i)" | bc -l`\n"
sleep 0.1
done
(别忘了让这个脚本可执行!)
准备以下八度脚本(需要sockets package!):
% in visualiseRobotData.m
pkg load sockets
s = socket();
bind(s, 9000);
listen(s, 1);
c = accept(s);
figure; hold on;
while ! isempty (a = str2num (char (recv (c, inf))))
plot (a(:,1), a(:,2), '*'); drawnow;
end
hold off;
现在按以下顺序执行:
visualiseRobotData
脚本
(注意:这将阻止,直到建立连接) ./sin.sh | nc localhost 9000
观看数据点从您的sin.sh
脚本中进行绘制。
答案 1 :(得分:0)
它有点粗糙,但您可以在循环中重新加载文件。这个运行5分钟:
for i = 1:300
load Test/sine.txt
plot (sine(:,1), sine(:,2))
sleep (1)
endfor
答案 2 :(得分:0)
您可以通过sshfs
安装远程目录:
sshfs user@remote:/path/to/remote_dir local_dir
所以你不必加载远程文件。如果未安装sshfs
,请安装它。要稍后卸载远程目录,请执行
fusermount -u local_dir
要从Octave获取机器人数据,请执行(八度代码)
system("ssh user@host 'cd remote_dir; rosrun explo explo_node > states.txt'")
%% then plot picture from the data in local_dir
%% that is defacto the directory on the remote server