ROS学习(二)——URDF模型学习

从零手写移动机器人URDF模型学习记录(一)_urdf material-CSDN博客

1. ros工作空间站建立和编译

mkdir -p ~/moveit_ws/src
cd ~/moveit_ws/src
catkin_init_workspace 
cd ~/moveit_ws/
catkin_make
# echo "source ~/moveit_ws/devel/setup.bash" >> ~/.bashrc
# source ~/.bashrc 

2. 创建urdf包

cd ~/moveit_ws/src/
catkin_create_pkg mbot_description urdf xacro
# urdf和xacro都是用来解析模型的功能包依赖项。
# 创建urdf文件夹用以存放机器人模型的urdf或者xacro文件,meshes文件夹用以防止urdf中引用的模型渲染文件(如使用solidworks导出的stl文件等),launch文件夹用以保存相关launch启动文件,config文件夹用以保存rviz的配置文件。

3. 创建urdf模型

cd ~/moveit_ws/src/mbot_description/urdf/
touch mbot.urdf
gedit mbot.urdf
# 添加robot标签
# robot标签是用以描述整个机器人的。这里要注意的是xml语言中标签是要闭合的,要是不闭合的话后面是会报错误
# 使用link标签创建底盘
# link标签是用以描述机器人某个刚体部分的外观和物理属性的,其参数包括连杆尺寸(size)、颜色(color)、形状(shape)、惯性矩阵(inertial matrix)、碰撞参数(collision properties)等。
# 这里的material标签与函数功能相类似,后面在link标签中间使用material标签并赋予对应颜色的名字参数,即可将link渲染成目标颜色。color参数rgba分别代表红色、蓝色、绿色、透明度的比例,取值为0-1。
# 添加颜色参数 在两个robot标签中间添加
# 配置底盘参数 在color代码下添加
# visual标签用以描述底盘的外观状态,在visual标签中间可对link外观进行具体设置;origin标签定义底盘所处位置,其中xyz为所处空间三维坐标,rpy则是底盘在该坐标下旋转的角度;geometry标签用以定义底盘的形状,这里cylinder定义底盘形状为圆柱体,length是圆柱体的高(单位是米),radius是圆柱体的半径(单位是米),要是想使用自己所画出的几何模型stl文件,在geometry标签中也可通过格式"mesh filename=“xxx.stl”"进行导入;material标签用以对底盘颜色进行定义。
# 保存urdf文件,底盘创建完成。

"

<?xml version="1.0" ?>

<robot name="mbot">
<!-- /    COLOR    / -->
    <material name="Black">
        <color rgba="0 0 0 1"/>
    </material>
    <material name="White">
        <color rgba="1 1 1 0.95"/>
    </material>
    <material name="Blue">
        <color rgba="0 0 1 1"/>
    </material>
    <material name="Yellow">
        <color rgba="1 0.4 0 1"/>
    </material>

<!-- /    BASE    / -->
    <link name="base_link">
        <visual>
            <origin xyz=" 0 0 0" rpy="0 0 0" />
            <geometry>
                <cylinder length="0.16" radius="0.20"/>
            </geometry>
            <material name="Yellow"/>
        </visual>
    </link>

<!-- /    WHEEL    / -->
    <link name="left_wheel_link">
        <visual>
            <origin xyz="0 0 0" rpy="1.5707 0 0" />
            <geometry>
                <cylinder radius="0.06" length = "0.025"/>
            </geometry>
            <material name="White"/>
        </visual>
    </link>

    <link name="right_wheel_link">
        <visual>
            <origin xyz="0 0 0" rpy="1.5707 0 0" />
            <geometry>
                <cylinder radius="0.06" length = "0.025"/>
            </geometry>
            <material name="White"/>
        </visual>
    </link>
    
    <joint name="left_wheel_joint" type="continuous">
        <origin xyz="0 0.19 -0.05" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="left_wheel_link"/>
        <axis xyz="0 1 0"/>
    </joint>

    <joint name="right_wheel_joint" type="continuous">
        <origin xyz="0 -0.19 -0.05" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="right_wheel_link"/>
        <axis xyz="0 1 0"/>
    </joint>
    
<!-- /    CASTER    / -->
    <link name="front_caster_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <sphere radius="0.015" />
            </geometry>
            <material name="Black"/>
        </visual>
    </link>

    <joint name="front_caster_joint" type="fixed">
        <origin xyz="0.18 0 -0.095" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="front_caster_link"/>
    </joint>

    <link name="back_caster_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <sphere radius="0.015" />
            </geometry>
            <material name="Black"/>
        </visual>
    </link>

    <joint name="back_caster_joint" type="fixed">
        <origin xyz="-0.18 0 -0.095" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="back_caster_link"/>
    </joint>
    
<!-- /    LASER    / -->
    <link name="laser_link">
                <visual>
                        <origin xyz=" 0 0 0 " rpy="0 0 0" />
                        <geometry>
                                <cylinder length="0.05" radius="0.05"/>
                        </geometry>
                        <material name="Black"/>
                </visual>
    </link>

    <joint name="laser_joint" type="fixed">
        <origin xyz="0 0 0.105" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="laser_link"/>
    </joint>
<!-- /    KINECT    / -->
    <link name="kinect_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 1.5708"/>
            <geometry>
                <mesh filename="package://mbot_description/meshes/kinect.dae" />
            </geometry>
        </visual>
    </link>

    <joint name="kinect_joint" type="fixed">
        <origin xyz="0.15 0 0.11" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="kinect_link"/>
    </joint>

</robot>

"

4. 编写launch文件并查看底盘创建效果

cd ~/moveit_ws/src/mbot_description/launch/
touch display_mbot_urdf.launch
gedit display_mbot_urdf.launch 
"
<launch>
        <!-- 设置机器人模型路径参数 -->
        <param name="robot_description" textfile="$(find mbot_description)/urdf/mbot.urdf" />

        <!-- 运行joint_state_publisher节点,发布机器人的关节状态  -->
        <node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" />
        
        <!-- 运行robot_state_publisher节点,发布tf  -->
        <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
        
        <!-- 运行rviz可视化界面 -->
        <node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/mbot_urdf.rviz" required="true" />
</launch>

"

cd ~/moveit_ws/
catkin_make
roslaunch mbot_description display_mbot_urdf.launch 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值