BARN_dataset的生成代码jackal-map-creation-master的使用说明:

主要代码是gen_world_ca.py,其中有各个参数来调节,来生成适合自己机器人的gazebo环境,顺带着还会生成路径等等(没有具体研究),具体参数如下:

jackal takes up 2 extra grid squares on each side in addition to center square

jackal_radius = 3

pgm file resolution

pgm_res = 0.15 # meters per pixel

inflation radius found in planner params

infl_rad = 0.15 # meters

radius of cylinders in the .world file

cyl_radius = 0.075

length of containment wall, in meters

contain_wall_length = 5

原先的jackal机器人的半径是2格,pgm_res是一个格子代表几米,也就是分辨率,cyl_radius是圆柱体的半径,那么也就是一个圆柱体占一个格子,contain_wall_length 是开头的空余长度也就是5个圆柱体,这个不是障碍物的长度。
infl_rad = 0.15 # meters是生成路径时的膨胀半径,如果生成不了路径,则这个环境不行要抛弃,重新生成,直到成功为止。

具体障碍物的长宽度在gen_world_ca.py中的这个
def main(iteration=0, seed=0, smooth_iter=4, fill_pct=.27, rows=100, cols=100, show_metrics=1):函数中定义,原先的给的代码是rows和cols都是30。

接着还有generator.py这个文件, result = gen_world_ca.main(total_counter, hash(datetime.datetime.now()), smooths, fill_pct, show_metrics=0)这里生成环境,smooths是生成环境时候的平滑次数, fill_pct是障碍物的占比在这个rows=100, cols=100长宽的空间里面,具体原理是利用random判断这个格子要不要放入障碍物。运行generator.py进行生成环境。

c_lower = self.cyl_radius-5
c_upper = self.cyl_radius + self.contain_wall_length-5
r_lower = -self.cyl_radius+2.5
r_upper = self.r_shift - self.cyl_radius+2.5

这几个是控制整个环境的临界的,想要改变起始位置和终止位置就从这改

源代码不能运行: def regions_connected(self, regionA, regionB):

for r in range(len(regionA)):
    for c in range(len(regionA[0])):
        # 避免访问越界
        
        if r >= len(regionB) or c >= len(regionB[0]):
          continue
        if regionA[r][c] != regionB[r][c]:
                return False

            # 如果两个区域有共同的空间,那么认为它们是连接的
        elif regionA[r][c] == 1 and regionB[r][c] == 1:
                return True
return False这个函数要改成上面这样

你可能感兴趣的:(研究生,机器人,python)