使用xacro作出摄像头和雷达

机器人模型由多个部件组成,可以将不同组建设置进单独文件,最终通过文件包含实现组建的拼装。

一、编写摄像头和雷达的xacro文件

二、组合文件

编写一个组合文件,组合底盘、摄像头和雷达

三、启动

搭建框架,创建三个文件

摄像头文件、雷达文件、组合文件

一、在xacro文件夹中创建文件:

demo06_car_camera.urdf.xacro

demo07_car_laser.urdf.xacro

集成文件car.urdf.xacro

launch 文件car.launch

二、car.urdf.xacro文件编写

<robot name="mycar" xmlns:xacro="http://wiki.ros.org/xacro">
    <!-- 此集成文件中 包含底盘、摄像头、雷达的 xacro文件 -->
    <xacro:inlude filename="demo05_car_base.urdf.xacro">
    <xacro:inlude filename="demo06_car_camera.urdf.xacro">
    <xacro:inlude filename="demo07_car_laser.urdf.xacro">
</robot>

三、编写launch文件

<launch>
    <!-- 1、在参数服务器载入 urdf文件 -->
    <!-- <param name="robot_description" textfile="$(find urdf01_rviz)/urdf/xacro/demo05_car_base.urdf" /> -->
    <param name="robot_description" command="$(find xacro)/xacro $(find urdf01_rviz)/urdf/xacro/car.urdf.xacro" />
    <!--2、启动 riviz -->
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find urdf01_rviz)/config/show_mycar.rviz" />
    <!-- 3、添加关节状态发布节点 -->
    <node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher"/>
    <!-- 4、添加机器人状态发布节点 -->
    <node pkg="robot_state_ publisher" type="robot_state_publisher" name="robot_state_publisher" />
    <!-- 5、关节运动控制节点 -->
    <node pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" name="joint_state_publisher_gui" />
</launch>

四、demo06_car_camera.urdf.xacro文件编写

<robot name="mycar" xmlns:xacro="http://wiki.ros.org/xacro">
   <!-- 摄像头 -->
   <!-- 1、参数 -->
    <!--   参数:连杆属性: 厚度、宽度、高度
        关节属性:X Y Z 
     -->
    <xacro:property name="camera_length" value="0.02"/><!-- 厚度(x) -->
    <xacro:property name="camera_width" value="0.05"/><!-- 宽度(y) -->
    <xacro:property name="camera_height" value="0.05"/><!-- 高度(z) -->
    <xacro:property name="joint_camera_x" value="0.08"/><!-- 厚度(x) -->
    <xacro:property name="joint_camera_y" value="0"/><!-- 厚度(x) -->
    <xacro:property name="joint_camera_z" value="${base_length /2 + camera_height /2}"/><!-- 厚度(x) -->
    <!-- 2、设计连杆和关节 -->
    <link name = "camera">
        <visual>
            <geometry>
                <box size="${camera_length} ${camera_width} ${camera_height}"/>
            </geometry>

            <material name= "black">
                <color rgba="0 0 0 0.8"/>
            </material>
        </visual>
    </link>

    <joint name="camera2base" type="fixed">
        <parent link="base_link"/>
        <child link="camera"/>
        <origin xyz="${joint_camera_x} ${joint_camera_y} ${joint_camera_z}" rpy="0 0 0"/>
    </joint>
</robot>

source ./devel/setup.bash

roslaunch urdfo1_rviz car.launch

结果

五、demo07_car_laser.urdf.xacro文件编写

<robot name="mycar" xmlns:xacro="http://wiki.ros.org/xacro">
   <!-- 雷达部件 -->
   <!-- 参数:
            1、支架
                支架半径
                支架高度
                关节偏移量: x y z
            2、雷达
                雷达半径
                雷达高度
                关节偏移量:x y z
    -->
    <xacro:property name="support_radius" value="0.01"/>
    <xacro:property name="support_length" value="0.15"/>
    <xacro:property name="laser_radius" value="0.03"/>
    <xacro:property name="laser_length" value="0.05"/>

    <xacro:property name="joint_support_x" value="0"/>
    <xacro:property name="joint_support_y" value="0"/>
    <xacro:property name="joint_support_z" value="${base_length /2+ support_length /2}"/>
    <xacro:property name="joint_laser_x" value="0"/>
    <xacro:property name="joint_laser_y" value="0"/>
    <xacro:property name="joint_laser_z" value="${support_length/2+ laser_length/2}"/>

    <!-- 1、支架 -->
    <link name="support">
        <visual>
            <geometry>
                <cylinder radius="${support_radius}" length="${support_length}"/>
            </geometry>
            <material name="yellow">
                <color rgba="0.8 0.5 0.0 0.5"/>

            </material>
        </visual>
    </link>
    <joint name="support2base" type="fixed">
        <parent link="base_link"/>
        <child link="support"/>
        <origin xyz="${joint_support_x} ${joint_support_y} ${joint_support_z}" rpy="0 0 0"/>
    </joint>
    <!-- 2、雷达 -->
    <link name="laser">
        <visual>
            <geometry>
                <cylinder radius="${laser_radius}" length="${laser_length}"/>
            </geometry>
            <material name="black">
                <color rgba="0 0 0 0.5"/>
            </material>
        </visual>
    </link>
    <joint name="laser2support" type="fixed">
        <parent link="support"/>
        <child link="laser"/>
        <origin xyz="${joint_laser_x} ${joint_laser_y} ${joint_laser_z}" rpy="0 0 0"/>
    </joint>
</robot>

source ./devel/setup.bash

roslaunch urdfo1_rviz car.launch

结果

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值