用python规模化生成gazebo中 .world .png 和 .yaml文件

用python规模化生成gazebo中 .world  .png 和 .yaml文件

首先,我们需要知道gazebo中基本的 .world  文件组成

然后我们将.world文件中的模型与 .png中的灰度图像进行对应,同时在 .yaml文件中进行坐标、分辨率等参数的对应。

最后我们开始生成  .world  .png  .yaml文件

一、三种文件的格式

    1、.world文件(http://gazebosim.org/tutorials?cat=tools_utilities&tut=logging_playback

<sdf version ='1.6'>
<world name='default'>
  (...)
  <light name='sun' type='directional'>
    (...)
  </light>
  <model name='ground_plane'>
    (...)
  </model>
  <model name='double_pendulum_with_base'>
    (...)
  </model>
</world>
</sdf>

    其中我们一般只需要修改 < model >标签就够了,以下是我的一个循环插入圆柱体作为障碍物的代码。分别是模型申明调用和模型定义,首先是申明,然后是模型的定义。

        1.cylinder_number是指圆柱体的个数,而  c_value_list['c_value_x_list'][i]  代表了第 i 个障碍物的 x 坐标,y同理。

        2.<pose frame=''>表示相对于某个frame的tf转换,这里为空,也就是默认使用基于源坐标系。

        3.<link>标签的学习(http://wiki.ros.org/urdf/XML/link),第二个for循环是对模型的定义

        4.<scale> 是使用在当前.world文件中的模型是否进行缩放,分别对应 x y z 三个坐标方向

for i in range(cylinder_number):
        model_msg_0 =  " <model name='c"+ str(i)+"'>\n\
          <pose frame=''>" + str(c_value_list['c_value_x_list'][i]) + " "+ str(c_value_list['c_value_y_list'][i]) + " 0 0 -0 0</pose>\n\
          <scale>1 1 1</scale>\n\
          <link name='link'>\n\
            <pose frame=''>" + str(c_value_list['c_value_x_list'][i]) + " "+ str(c_value_list['c_value_y_list'][i]) + " 0 0 -0 0</pose>\n\
            <velocity>0 0 0 0 -0 0</velocity>\n\
            <acceleration>0 0 0 0 -0 0</acceleration>\n\
            <wrench>0 0 0 0 -0 0</wrench>\n\
          </link>\n\
        </model>\n"
        msg_1 = msg_1 + model_msg_0

  

for i in range(cylinder_numbe
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值