ROS:Gzebo实现激光测距(激光雷达ray配置)

简介

需求:在Gazebo中实现激光测距
描述:在urdf没有找到专用激光测距传感器(只有相机carmera,激光雷达ray),这里我们将激光雷达ray配置成单线单采样的激光测距传感器

实现流程:

  1. 创建urdf激光测距传感器link物理模型;
  2. gazebo物理引擎配置及驱动实现。

urdf模型(link/joint)

照自己需求实现物理模型样式即可,这里我们直接用一个Box表示。

	  <!--激光测距传感器物理参数:长宽高质量等-->
    <xacro:property name="raydis_length" value="0.02"/>
    <xacro:property name="raydis_width" value="0.025"/>
    <xacro:property name="raydis_height" value="0.044"/>
    <xacro:property name="raydis_mass" value="0.05"/>
    <!--Box惯性矩阵xacro宏-->
    <xacro:macro name="Box_interial_matrix" params="m l w h">
    <inertial>
        <mass value="${m}"/>
        <inertia ixx="${m*(h*h+l*l)/12}" ixy="0.0" ixz="0.0" iyy="${m*(w*w+l*l)/12}" iyz="0.0" izz="${m*(w*w+h*h)/12}"/>
    </inertial>  
    </xacro:macro>
    <!--世界坐标系-->
    <link name="world"/>
    <!--激光距离传感器物理模型-->
    <link name="raydis">
        <visual>
            <geometry>
                <box size="${raydis_length} ${raydis_width} ${raydis_height}"/>
            </geometry>
            <origin xyz="0 0 0" rpy="0.0 0.0 0.0"/>
            <material name="green">
                <color rgba="0.0 1.0 0.0 0.5"/>
            </material>
        </visual>
        <collision>
            <geometry>
                <box size="${raydis_length} ${raydis_width} ${raydis_height}"/>
            </geometry>
            <origin xyz="0 0 0" rpy="0.0 0.0 0.0"/>        
        </collision>
        <xacro:Box_interial_matrix m="${raydis_mass}" l="${raydis_length}" w="${raydis_width}" h="${raydis_height}"/>
    </link>
   <!--传感器与世界坐标系位姿关系-->
    <joint name="raydis_world" type="fixed">
        <parent link="world"/>
        <child link="raydis"/>
        <origin xyz="0.5 0.5 0.0671" rpy="0.0 0.0 0.0"/>
    </joint>

gazebo物理引擎配置及驱动

要在Gazebo中实现仿真还需要配置物理引擎及驱动

<gazebo reference="raydis">
    <material>Gazebo/Yellow</material>
    <sensor name="raydisSensor" type="ray">
        <pose>0 0 0 0 1.570796 0</pose>
        <!--在Gazebo中现实激光-->
        <visualize>true</visualize>
        <update_rate>10</update_rate>
        <ray>
            <scan>
                <horizontal>
                    <samples>1</samples>
                    <resolution>1</resolution>
                    <min_angle>0</min_angle>
                    <max_angle>0</max_angle>
                </horizontal>
            </scan>
            <range>
                <min>0.0221</min>
                <max>0.20</max>
                <resolution>0.0001</resolution>
            </range>
        </ray>
        <plugin name="gazebo_raydis" filename="libgazebo_ros_laser.so">
            <topicName>/raydis</topicName>
            <frameName>raydis</frameName>
        </plugin>
    </sensor>
</gazebo>

代码说明:

  1. <pose>0 0 0 0 1.570796 0</pose>:激光位姿相对传感器物理模型绕x轴翻转90度(即让水平面变成垂直面,当然也可以修改传感器物理模型相对world坐标的位姿)。
  2. scan扫描参数配置: <samples>1</samples>激光线数;<resolution>1</resolution>每线扫描点数;min_angle/max_angle扫描角度
  3. range测距范围:min不能小于传感器物理模型尺寸(中心到外壳距离),否则传感器输出值恒为中心到外壳距离。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
    随着ICT技术不断深化和传统场景的结合,自动化、智能化相融合已经成为ICT技术的下一代浪潮,以工业机器人、服务机器人、自动驾驶等的新一代技术浪潮目前已经方兴未艾,成为又一波热点。而作为次级操作系统的ROS则提供了一系列的调试、仿真工具,能支持激光导航、视觉导航等算法,是切入机器人和自动驾驶技术的重要基础。    机器人是一个复合型的领域,涉及软件、算法、硬件、结构等诸多方向,是一个理论性和实践性并重的学科,考虑到其复杂性和讲解的循序渐进,整个系列课程将分为三个系列即入门系列、中级系列、高级系列。   在入门系列中,我们将介绍ROS的基础知识(机器人基础知识、ROS开发环境等)、ROS配置管理(系统架构、参数管理、Launch启动、编译配置以及如何基于源代码开发等)、ROS系统调试(代码调试、可视化调试、消息回放、单元测试等),获得该领域的入门券。   在中级系列中,我们将围绕机器人建模与仿真涉及的URDF机器人模型、Gazebo仿真环境、坐标变换、运动控制、环境感知等展开介绍,熟练掌握利用RVIZ、Gazebo等仿真和调试工具调试机器人程序与算法。   在高级系列中,我们将着眼于人工智能框架及算法,分享机器人开发涉及的运动控制、SLAM、语音交互、计算机视觉等。逐层递进,为大家一层层剥开机器人的神秘面纱。    本系列课程的特色在于:    1、从基础知识、建模与仿真、环境感知与智能决策、人机交互等4个方面循序渐进、逐步深化,知识覆盖全面,便于深度认知;    2、从基本理论、源码解读、工程示例等领域开展ROS系统入门知识的深度介绍和分析,源于工程实践,利于快速上手;   3、基于全新的环境Ubuntu 20.04、ROS Noetic、Gazebo 11、GMapping、Cartographer、tensorFlow 2.*、OpenCV 4.*等讲解,紧跟时代前沿。   整个系列的课程将会逐步开发并上线,三个系列是一个逐步深入、环环相扣的课程内容,感兴趣的同学可以开始学习啦。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值