树莓派控制无人机实现定点降落(五)——设计地标以及gazebo导入模型方法

目录

  • 树莓派控制无人机实现定点降落(五)——设计地标以及gazebo导入模型方法
    • 1、将地标图像导入gazebo中的方法:
    • 2、对于地标设计
    • 3、改进地标

树莓派控制无人机实现定点降落(五)——设计地标以及gazebo导入模型方法

1、将地标图像导入gazebo中的方法:

在~/.gazebo/model下,创建如下结构的文件

land_mark
	model.sdf	文件
	model.config	文件
	materials	文件夹
	| --scripts	文件夹
	       land_mark.material     纹理信息
	| --textures	文件夹
	       h.png	地标图像

各文件的文件格式在我的另一篇博文里有链接在此
在这里,各文件内容如下:
model.sdf文件



  
    
      0 0 0.115 0 0 0
      
        0.390
        
          0.00058
          0
          0
          0.00058
          0
          0.00019
        
      
      
        
                
                  .496 .496 .01
                
        
      

      
        
                
                  .496 .496 .01
                
        

        
          
        
      
         
  

文件model.config




  land_mark
  1.0
  model.sdf

  
    chow
  

  
    Landing Mark
  

其中land_mark即为之后在gazebo里的模型名称
文件land_mark.material

material Mark/Diffuse
{
	receive_shadows off
	technique
	{
		pass
		{
			texture_unit
			{
				
				texture ../textures/h.png
			}
		}
	}
}

之后在gazebo中insert模型即可,如下:

2、对于地标设计

我一开始准备使用二维码定位,后来觉得树莓派运行能力不足,所以使用了自己设计的地标,下面先介绍二维码定位的方法。
1、下载ar-track-alvar

sudo apt-get install ros-kinetic-ar-track-alvar

该包可以用于二维码定位
2、获得二维码

rosrun ar_track_alvar createMarker [number]

将[number]替换成你要的数字,图片就会在当前路径下生成。
3、创建gazebo二维码模型,使用上述方法。
4、ar_track_alvar下有很多功能包(官网链接)包括findMakerBundles,findMakerBundlesNoKinect,trainMakerBundle,createMarker(可以在/opt/ros/kinetic/lib/ar_track_alvar下找到)我们用到的二维码识别与定位的是individualMakersNoKinect,注意不要用成individualMakers,后者是默认摄像头为kinect,它读取图片的格式为点云。

3、改进地标

放弃上述方案后我使用的地标参照另一个人的博文链接在此
通过将它的方法改进,把矩形框设计成不均匀的,得到如下所示地标图像:
树莓派控制无人机实现定点降落(五)——设计地标以及gazebo导入模型方法_第1张图片
这样在降落过程中可以不停地进行矫正,如果使用二维码定位则只要拍不全就难以捕捉地标信息。
接下来就是识别地标和控制了,识别控制算法我将在下一篇博文里介绍。

你可能感兴趣的:(无人机)