万博1manbetx仿真软件和ROS2——如何动态调整的模拟系统,机器人的数量

4视图(30天)
你好,
在ROS2,我有一个动态的机器人数量我想连接到控制器中运行仿真软件。万博1manbetx虽然有可能创建一个静态仿真软件模型与所需数量的系统,我想有一个MATLAB脚本动万博1manbetx态地调整系统的数量模型。
另一个选择是并行运行相同的系统参数以下列方式:
模型=“model_name”;
load_system(模型);
思敏(1:num_robots-1) = Sim万博1manbetxulink.SimulationInput(模型);
idx = 1: num_robots-1
思敏(idx) =思敏(idx) .setVariable (“var”var);
%为每一个变量
思敏(idx) =思敏(idx) .setBlockParameter([模型/用户/订阅的),“主题”,(' /机器人'num2str (idx)' / topicName ']);
%为每个发布者/订阅者块
结束
simOut = parsim(思);
然而,如果有错误的一个模型,其他模型保持运行,现在把一切工作更加困难。这也可能是因为一些当前ROS2版本之间的兼容性问题的MATLAB和ROS2-Foxy,我现在使用。另外,如果有错误,“matlabprefs。垫”文件被损坏,需要再次运行脚本之前删除。
所以,另一个想法是创建一个临时的模型和使用“参考模型”或“模型”的块添加,之后,您必须设置参数变量和用户/出版商喜欢在前面的方法。但是,我不认为这是可能改变用户和出版商块这种方式,作为主题参数时不出现在参数列表检查子系统。
我的问题是:有没有办法改变subsriber /出版商主题值在一个“模型”块或我必须使用并行计算方法来模拟系统的动态调整数量吗?

答案(1)

Alvaro
Alvaro 2022年11月28日
如果您已经设置您的系统使用 parsim ,那么你可以设置 StopOnError “在”,应该停止模拟如果遇到一个错误。
或者,你可以设置一个面具子系统促进某些块参数的引用。看到这里的例子:
//www.tianjin-qmedu.com/help/万博1manbetxsimulink/ug/parameter-promotion.html

类别

找到更多的在发布者和订阅者帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!