机器人仿真——urdf

组合:

非仿真环境:使用URDF结合rviz直接显示感知的真实环境信息

仿真环境:需要使用URDF结合Gazebo搭建仿真环境,结合Rviz显示感知到的虚拟环境信息

URDF

步骤:

  1. 建立功能包,头文件包含:urdf, xacro
  2. 在src下分别建立以下层级目录
  3. 编写urdf文件
  4. 编写launch文件
  • /config(保存设置的rviz格式)
  • /launch(保存launch文件)
  • /meshes(保存皮肤)
  • /urdf/urdf(保存urdf文件,即机器人结构部分)
  • /urdf/xacro

语法:

关节:joint

属性:

name

type 关节运动形式

  • continuous 旋转关节 沿单轴无限旋转
  • revolute 旋转关节,类似于continuous 但是有角度限制
  • prismatic 滑动关节 沿着某一轴线移动的关节,有位置极限
  • planer 平面关节 允许在平面正交方向上平移或移动
  • floating 浮动关节,允许平移旋转
  • fixed- 固定关节

子标签

  • parent (设置parent link)
  • child(设置 child link)
  • orgin(xyz=偏移量,rpy=偏移弧度)
  • axis(xyz用于设置围绕哪个关节运动)
<!-- 添加机器人底盘 并添加摄像头 -->
<robot name="myrobot">
    <!-- 底盘link -->
    <link name="base_link">
        <visual>
        <!-- 形状 -->
            <geometry>
                <!-- 立方体 -->
                <box size="0.3 0.2 0.1"/>     
            </geometry>
            <!-- 偏移与倾斜弧度 -->
            <origin xyz="0 0 0" rpy="0 0 0" />
            <!-- 颜色 -->
            <material name="car_color">
                <color rgba="0.2 0.5 0.7 0.5" />
            </material>
        </visual>
    </link>
    <!-- 摄像头link -->
    <link name="camera">
        <visual>
        <!-- 形状 -->
            <geometry>
                <!-- 立方体 -->
                <box size="0.02 0.05 0.05"/>     
            </geometry>
            <!-- 偏移与倾斜弧度 -->
            <origin xyz="0.0 0 0" rpy="0 0 0" />
            <!-- 颜色 -->
            <material name="camera_color">
                <color rgba="0.7 0.5 0.2 0.5" />
            </material>
        </visual>
    </link>
    <!-- 关节 -->
    <joint name="camer_car" type="continuous">
        <!-- 父 -->
        <parent link="base_link" />
        <!-- 子 -->
        <child link="camera" />
        <!-- 设置偏移量 -->
        <origin xyz="0.15 0 0.05" rpy="0 0 0"/>
        <!-- 设置关节旋转参考的坐标轴 -->
        <axis xyz="0 0 1"/>
    </joint>
</robot>

可见摄像头嵌入到箱体里面,所以需要重新设置偏移量;

而且存在报错,显示两者没有连接No transform from [camera] to [base_link]

修改launch文件

<launch>
    <!-- 在参数服务器中载入urdf文件 -->
    <param name="robot_description" textfile="$(find urdf01)/urdf/urdf/joint.urdf" />
    <!-- 启动rviz -->
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find urdf01)/config/show_mycar.rviz"/>
    <!-- 
        显示报错 No transform from [camera] to [base_link]
        原因:rviz显示URDF时必须发布不同的部件之间的坐标系关系
        解决:ROS中提供了关于机器人模型显示的坐标发布相关节点

     -->
     <!-- 关节姿态发布 -->
     <node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher" />
     <!-- 机器人姿态发布 -->
     <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" />
</launch>

 效果图如下:

再修改偏移量

将摄像头 z轴上的偏移量从0改为0.025,这样下沉的另一半就可以恢复到箱体以上了

连杆:link

属性:name

可视化:visual

geometry 连杆的形状

  • box(盒状)(size=x,y,z)
  • cylinder(圆柱体)(radius length)
  • sphere(球体)(radius)
  • mesh(为连杆添加皮肤)(filename=资源路径)
<!-- 设置不同形状的机器人部件 -->
<robot name="mycar">
    <link name="base_link">
        <visual>
        <!-- 形状 -->
            <geometry>
                <!-- 立方体 -->
                <box size="0.3 0.2 0.1"/>     
                 <!--圆柱  -->
                <cylinder radius="0.5" length="1"/>      
                <!-- 球体 -->
                <sphere radius="0.1" /> 
                <!-- 皮肤 -->
                <mesh filename="package://urdf01/meshes/sim_demo-main/autolabor_mini.stl" />
            </geometry>
        </visual>
    </link>

</robot>

origin 设置偏移量与倾斜弧度

  • xyz = x y z的偏移
  • rpy=x翻滚 y俯仰 z偏航
<!-- 偏移与倾斜弧度 -->
            <origin xyz="0 0 0" rpy="1.57 0 0" />

metrial 设置材料属性(颜色)

 <!-- 颜色 -->
            <material name="car_color">
                <color rgba="0.2 0.5 0.7 0.5" />
            </material>

碰撞属性:collision

惯性矩阵:Inertial

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值