环境:ubuntu16.04 ros-kinetics gazebo7.16
来源:仿真有d435以及16线雷达的urdf编写
注意,urdf采用的是.xacro编写的
d435_16vel.urdf.xacro
:
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="robot">
<xacro:arg name="gpu" default="false"/>
<xacro:property name="gpu" value="$(arg gpu)"/>
......
<xacro:include filename="$(find realsense2_description)/urdf/_d435.urdf.xacro" />//把深度相机d435模型文件的存放路径包含进来(这包可以从d435官方驱动安装有下载)
<xacro:include filename="$(find velodyne_description)/urdf/VLP-16.urdf.xacro"/>//加载16线雷达的路径(这个gazebo里面自带的,不需要再次下载来使用)
......
<!--d435-->
<sensor_d435 parent="base_link" name="d435_01">//d435_01连接在base_link上面
<origin xyz="0.3 0 0" rpy="0 0 0"/>//相对与base_link坐标系的坐标定义
</sensor_d435>
......
<!--vlp-16-->
<VLP-16 parent="base_link" name="vel_16" topic="/vel_16_points" hz="10" samples="440" gpu="${gpu}"
min_range="0.1" max_range="70" min_angle="0" max_angle="3.14" noise="0.008">//依次定义,16线雷达链接的父link为base_link;自定义的名称为vel_16;
//发出的topic为/vel_16_points;更新的频率为10hz;
//每个线平面的射线条数为440;不使用gpu;量程范围0.1米到70m;
//扫射范围自身坐标系0到180度;雷达噪声为0.008
<origin xyz="0.6 0 0" rpy="0 0 0"/>//定义雷达以base_link为坐标系的定义坐标
</VLP-16>
........
</robot>
Launch文件加载注意点:
d435_16vel.launch:
<launch>
<!-- Spawn a robot into Gazebo -->
<param name="robot_description" command="$(find xacro)/xacro '$(find rpy)/urdf/d435_16vel.urdf.xacro' use_nominal_extrinsics:=true --inorder"/>//引用到上面这些模型时候,添加use_nominal_extrinsics:=true语句;
//目前测试过,d435必须添加,而16线雷达不要求,
//可能是16线雷达属于gazebo自带模型的原因
........
</launch>
如果launch文件不设置上面标签,会出现如下报错:
Undefined substitution argument use_nominal_extrinsics None
d435包下载链接:https://github.com/IntelRealSense/realsense-ros
如果想要完整测试玩玩,可以查找我的这个博客(https://blog.csdn.net/qq_45701501/article/details/107521623
),然后根据上面,补充一下里面文件,基本上就可以仿真使用了.
############
好记性不如烂笔头
–20200730