我正在研究一个机器人本地化模拟器,我创建了一个名为“landmark”的类。
最终结果将是一个始终居中并始终面向屏幕顶部的机器人。随着它的转动,鸟瞰图将围绕机器人旋转。为了实现这一点,我假设我可以旋转一个类并且内部的所有元素都可以旋转。
因此,地标类具有属性x,y,标签和半径。这是为了模拟森林中的树位置。
为了测试一切,我需要“森林数据”,我写了一个脚本,在100米x 100米的区域内生成100棵树。该脚本自动生成x,y,radius可接受范围内的值。生成的数据存储在名为tempForest的对象中,为100x3。
理想情况下,我想创建一个名为“landmarks”(复数)的类,里面有100个地标实例。
如何使用随机生成的数据在一个地标实例中实例化100个地标实例?
理想情况下,我只需输入treeBeacons = landmarks();它将随机填充100(用户可定义,在配置文件中设置)实例与x,y,radius数据。
我不确定如何在另一个单一的“地标”中处理动态数组“Landmark”。
有什么想法吗?
答案 0 :(得分:1)
我创建了一个类'landmarks',它具有属性'fixedPositions',属性'viewDirection'和依赖属性'apparentPositions'。
如果您键入treeBeacons=landmarks;
,您可以让构造函数填入fixedPositions
,这是您树木的位置列表。然后将treeBeacons.facing
设置为机器人面向的任何方向,您可以将相对于机器人的森林设置为treeBeacons.apparentPositions
。
根据您的描述,我认为没有必要让您的树成为对象。但是,如果您的树确实需要是单个对象,则您可以使用标记的构造函数创建对象而不是坐标,并将它们存储在fixedPositions
(或trees
)中。我建议您不要同时使用landmarks
和landmark
作为不同的变量名。至少像我这样的普通人很难分清两人。
classdef landmarks
properties
fixedPositions %# positions in a fixed coordinate system. [ x, y, radius ]
facing = 0;%# direction in which the robot is facing
end
properties (Dependent)
apparentPositions
end
methods
function obj = landmarks(numberOfTrees)
%# set obj.fixedPositions here depending on the number of trees.
end
function out = get.apparentPositions(obj)
%# rotate obj.positions using obj.facing to generate the output
end
function plotMap(obj,fixedOrApparent)
%# plots the map, either using fixed or apparent coordinates (good for testing)
end
end
end