在gazebo中搭建仿真场景需要哪些内容

本篇在gazebo中搭建可以模拟产生livox_camera_lidar_calibration功能包需要的数据的仿真场景.
场景搭建要求
下面总结下,针对livox_camera_lidar_calibration功能包仿真都需要哪些内容:
livox 激光雷达,可以产生livox激光雷达这种的固态雷达的数据
相机,生成图像
棋盘标定板
矩形标定板
激光雷达和相机可以一起改变角度和位置(世界坐标系下)
这个场景要求想起了之前搭建的一个无人机和云台,那么在上面再装一个livox avia 和 一个 carema就ok了
云台装在一个无人机上,刚好可以移动及改变 雷达和相机的姿态.
场景搭建
创建一个云台挂在无人机上
这个是之前搭建好的,不重点说了,直接上图,就是下面这个样子
其中无人机和云台的尺寸比较小,和livox和camera的比例不太一致,不过仿真就不那么追求完美了,可以用就行.
云台是这样的:
灰色的是云台的gimbal_base_link,用于与无人机的连接,连接方式是固定的,所以云台的航向是完全锁定机头方向的
<joint name=${name}_joint type=fixed>    <parent link=${parent}/>    <child link=gimbal_base_link/>    <origin xyz=0 0 -0.05 rpy=${m_pi} 0 ${m_pi/2} />    <axis xyz=0 0 1 />  </joint>  
蓝色的是link1,向下延伸杆.与gimbal_base_link为固定连接.
红色的是云台平台的主体link2 , 与link1, 连接一个joint,用于俯仰的控制
<joint name=swivel_j1 type=revolute>    <parent link=link_1/>    <child link=link_2/>    <origin xyz=0 0 ${sizegain*0.01} rpy=0 0 0 />    <axis xyz=1 0 0 />    <limit lower=-1.745 upper=2.356 effort=10       velocity=1.0 />    <joint_properties damping=0 friction=0/>  </joint> <transmission name=tran2>    <type>transmission_interface/simpletransmission</type>    <joint name=swivel_j1>      <hardwareinterface>hardware_interface/effortjointinterface</hardwareinterface>    </joint>    <actuator name=motor2>      <hardwareinterface>hardware_interface/effortjointinterface</hardwareinterface>      <mechanicalreduction>1</mechanicalreduction>    </actuator>  </transmission>  
创建一个livox 和camera 挂在云台上
上面说了尺寸问题,为了避免数据被遮挡,需要将雷达和相机往前放
雷达和相机放在 link2 上, 为了标定外参,设置两者的位置不重合,当然实际也不可能重合. 先设置一个简单的位置
雷达与x轴偏-0.1 相机与x轴偏0.1,所以两者仅在y方向上偏0.2.之后在进行外参标定的时候再把各方向的偏差加上
<joint name=camera_j2 type=fixed>    <parent link=link_2/>    <child link=camera_mount/>    <origin xyz=0.1 ${sizegain*0.01+0.29} 0 rpy=${m_pi} 0 ${m_pi/2} />    <axis xyz=1 0 0 />    <limit lower=-2.094 upper=2.670 effort=10       velocity=1.0 />    <joint_properties damping=0.0 friction=0.0/>  </joint>
<joint name=lidar_joint type=fixed>        <parent link=link_2/>        <child link=livox_lidar_link/>        <origin xyz=-0.1 ${sizegain*0.01+0.29} 0.002 rpy=${180*m_pi/180} ${0*m_pi/180} ${m_pi*0.5} />        <axis xyz=1 0 0 />    </joint>  
相机与激光雷达视野匹配
我们知道激光雷达是没有镜头的,所以激光雷达的视场角是多少就是多少,无法改变.(实际场景中)
那么想让相机与激光雷达的视野匹配,只能选择相机的镜头,让水平视场角和垂直视场角两者更为接近.
激光雷达仿真对应的具体型号是livox avia ,该雷达的视野如下:
非重复式扫描 70.4° * 77.2°
在gazebo中也是这样设置的
<xacro:property name=horizontal_fov value=70.4/>  <xacro:property name=vertical_fov value=77.2/>  
所以在gazebo中设置相机的参数如下:(水平角是70.4,像素是4096*3000)
<gazebo reference=camera_mount>            <turngravityoff>false</turngravityoff>            <sensor type=camera name=camera_node>                <update_rate>5</update_rate>                <camera name=head>                    <horizontal_fov>${70.4*m_pi/180}</horizontal_fov>                    <image>                        <width>4096</width>                        <height>3000</height>                        <format>r8g8b8</format>                    </image>                    <clip>                        <near>0.02</near>                        <far>300</far>                    </clip>                    <noise>                        <type>gaussian</type>                        <mean>0.0</mean>                        <stddev>0.007</stddev>                    </noise>                </camera>                <plugin name=gazebo_camera filename=libgazebo_ros_camera.so>                    <alwayson>true</alwayson>                    <updaterate>10</updaterate>                    <cameraname>/camera</cameraname>                    <imagetopicname>image_raw</imagetopicname>                    <camerainfotopicname>camera_info</camerainfotopicname>                    <framename>camera_link</framename>                    <hackbaseline>0.07</hackbaseline>                    <distortionk1>0.0</distortionk1>                    <distortionk2>0.0</distortionk2>                    <distortionk3>0.0</distortionk3>                    <distortiont1>0.0</distortiont1>                    <distortiont2>0.0</distortiont2>                </plugin>            </sensor>        </gazebo>  
rviz中检查成像效果
在云台前,放一个墙
看激光雷达的点云和相机的图像的墙的占幅比,如果上面调的视野一致的化,那么应该不会差太多.
墙横过来的效果
创建标定棋盘
编辑一个棋盘的sdf文件,这种文件太长了,就不在这放了. 展示下想让棋盘待在空中不掉下来的关键部分:
static 为true 则不受重力影响
pose 就是 在world 的位置 x y z 和三个姿态角
在rviz中检查下标定棋盘别太小就行.
创建标定板
标定板最好可以设置大点的,矩形板就行
<?xml version='1.0'?><sdf version=1.4><model name=board>  <pose>4 0 2 0 1.57079 0</pose>  <static>true</static>    <link name=board>      <pose>0.0 0.0 0.0 0.0 0.0 0.0</pose>      <inertial>        <mass>0.01</mass>        <inertia> <!-- interias are tricky to compute -->          <!-- http://answers.gazebosim.org/question/4372/the-inertia-matrix-explained/ -->          <ixx>0.083</ixx>       <!-- for a box: ixx = 0.083 * mass * (y*y + z*z) -->          <ixy>0.0</ixy>         <!-- for a box: ixy = 0 -->          <ixz>0.0</ixz>         <!-- for a box: ixz = 0 -->          <iyy>0.083</iyy>       <!-- for a box: iyy = 0.083 * mass * (x*x + z*z) -->          <iyz>0.0</iyz>         <!-- for a box: iyz = 0 -->          <izz>0.083</izz>       <!-- for a box: izz = 0.083 * mass * (x*x + y*y) -->        </inertia>      </inertial>      <collision name=collision>        <geometry>          <box>            <size>0.02 0.02 0.005</size>          </box>        </geometry>      </collision>      <visual name=sqr11>        <geometry>          <box>            <size>2 2.5 0.005</size>          </box>        </geometry>    <material>          <ambient>0 0 0 1</ambient>          <diffuse>0 0 0 1</diffuse>          <specular>0.1 0.1 0.1 1</specular>          <emissive>0 0 0 0</emissive>        </material>      </visual>  </model></sdf>  
场景效果检测
最后控制无人机飞起来,然后看标定板在相机和雷达里的视野情况


工业互联网信息模型基础设施 驱动制造业转型升级
装置比车还贵:谷歌无人驾驶汽车内部揭秘
工信部部长苗圩:5G最关健的是开放合作、全球统一标准
5G+AI推进工业互联网技术攻关,将为经济发展注入活力
纳米维景推出高性能ADC芯片
在gazebo中搭建仿真场景需要哪些内容
黑莓中端新机配骁龙425支持双卡双待 2017 MWC亮相
新功能发布 | TSMaster诊断功能之Diagnostic TP参数配置
新疆首个5G SA独立组网切片技术在电力行业落地
【服务器数据恢复】同友存储设备raid5数据恢复案例
HTCU12+拆解 凭什么达到IP68的防水等级
AMETEK发布VTI品牌新产品 - EX1403高速应变测试仪
英特尔联合中国移动共同演示了5G+边缘计算+工业互联网行业解决方案
语音标注平台是构建智能语音技术的重要基石
具备高温保护功能的白光LED驱动器
滑差电机的工作原理、结构及特点
ADC同步化的优化方式
湖南移动携手华为通过5G网络举办了博物馆之夜活动
油田压力变送器产品的特点是什么
科大讯飞首发 定制化多语种互动数字藏品,做世界语言的头号藏家