ROS-URDF-建立模型
前言:建立一个简单的urdf模型
教程写的非常好,这里只做最终版解析部分。
查看是否安装了joint_state_publisher功能包:
rospack find joint_state_publisher
一、基本模型
1.1 新建urdf_tutorial功能包
1.2 新建urdf文件
新建01-myfirst.urdf文件
<?xml version="1.0"?> <robot name="materials"> <material name="blue"> <color rgba="0 0 0.8 1"/> </material> <material name="white"> <color rgba="1 1 1 1"/> </material> <link name="base_link"> <visual> <geometry> <cylinder length="0.6" radius="0.2"/> </geometry> <material name="blue"/> </visual> </link> <link name="right_leg"> <visual> <geometry> <box size="0.6 0.1 0.2"/> </geometry> <origin rpy="0 1.57075 0" xyz="0 0 -0.3"/> <material name="white"/> </visual> </link> <joint name="base_to_right_leg" type="fixed"> <parent link="base_link"/> <child link="right_leg"/> <origin xyz="0 -0.22 0.25"/> </joint> <link name="left_leg"> <visual> <geometry> <box size="0.6 0.1 0.2"/> </geometry> <origin rpy="0 1.57075 0" xyz="0 0 -0.3"/> <material name="white"/> </visual> </link> <joint name="base_to_left_leg" type="fixed"> <parent link="base_link"/> <child link="left_leg"/> <origin xyz="0 0.22 0.25"/> </joint> </robot>
----------------------------------------------------------------------------------------------------------------------------
代码解释:
<robot name="materials">此文件的机器人名称 <material name="blue">定义材料属性名称为蓝色 <color rgba="0 0 0.8 1"/>材料属性为rgba值 </material> <link name="base_link">定义基本连杆 <visual>可视化属性 <geometry>几何形状 <cylinder length="0.6" radius="0.2"/>圆柱,半径0.2米,高0.6米 </geometry> <material name="blue"/>材料属性引用为蓝色 </visual> </link> <link name="right_leg">定义右腿连杆 <visual> <geometry> <box size="0.6 0.1 0.2"/>盒状,长宽高为0.6米,0.1米,0.2米 </geometry> <origin rpy="0 1.57075 0" xyz="0 0 -0.3"/>位置,位于关节点base_to_right_legz轴负方向0.3米,绕y轴旋转90°=π/2=1.57075 <material name="white"/> </visual> <joint name="base_to_right_leg" type="fixed">定义基本连杆和右腿之间的关节,属性为固定。其实就是新建了一个相对坐标系。 <parent link="base_link"/>父连杆为base_link <child link="right_leg"/>子连杆为right_leg <origin xyz="0 -0.22 0.25"/>关节位置,位于父连杆关节y轴负方向0.22米,z轴正方向0.25米 </joint>
----------------------------------------------------------------------------------------------------------------------------
1.3 新建launch文件
<launch> <arg name="model" default="$(find urdf_tutorial)/urdf/01-myfirst.urdf"/> <arg name="gui" default="true" /> <arg name="rvizconfig" default="$(find urdf_tutorial)/rviz/urdf.rviz" /> <param name="robot_description" command="$(find xacro)/xacro --inorder $(arg model)" /> <param name="use_gui" value="$(arg gui)"/> <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" /> <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" /> <node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" /> </launch>
1.4 查看模型
roslaunch urdf_tutorial display.launch
二、进阶模型
2.1 修改urdf文件
<?xml version="1.0"?> <robot name="visual"> <material name="blue"> <color rgba="0 0 0.8 1"/> </material> <material name="black"> <color rgba="0 0 0 1"/> </material> <material name="white"> <color rgba="1 1 1 1"/> </material> <link name="base_link"> <visual> <geometry> <cylinder length="0.6" radius="0.2"/> </geometry> <material name="blue"/> </visual> </link> <link name="right_leg"> <visual> <geometry> <box size="0.6 0.1 0.2"/> </geometry> <origin rpy="0 1.57075 0" xyz="0 0 -0.3"/> <material name="white"/> </visual> </link> <joint name="base_to_right_leg" type="fixed"> <parent link="base_link"/> <child link="right_leg"/> <origin xyz="0 -0.22 0.25"/> </joint> <link name="right_base"> <visual> <geometry> <box size="0.4 0.1 0.1"/> </geometry> <material name="white"/> </visual> </link> <joint name="right_base_joint" type="fixed"> <parent link="right_leg"/> <child link="right_base"/> <origin xyz="0 0 -0.6"/> </joint> <link name="right_front_wheel"> <visual> <origin rpy="1.57075 0 0" xyz="0 0 0"/> <geometry> <cylinder length="0.1" radius="0.035"/> </geometry> <material name="black"/> <origin rpy="0 0 0" xyz="0 0 0"/> </visual> </link> <joint name="right_front_wheel_joint" type="fixed"> <parent link="right_base"/> <child link="right_front_wheel"/> <origin rpy="0 0 0" xyz="0.133333333333 0 -0.085"/> </joint> <link name="right_back_wheel"> <visual> <origin rpy="1.57075 0 0" xyz="0 0 0"/> <geometry> <cylinder length="0.1" radius="0.035"/> </geometry> <material name="black"/> </visual> </link> <joint name="right_back_wheel_joint" type="fixed"> <parent link="right_base"/> <child link="right_back_wheel"/> <origin rpy="0 0 0" xyz="-0.133333333333 0 -0.085"/> </joint> <link name="left_leg"> <visual> <geometry> <box size="0.6 0.1 0.2"/> </geometry> <origin rpy="0 1.57075 0" xyz="0 0 -0.3"/> <material name="white"/> </visual> </link> <joint name="base_to_left_leg" type="fixed"> <parent link="base_link"/> <child link="left_leg"/> <origin xyz="0 0.22 0.25"/> </joint> <link name="left_base"> <visual> <geometry> <box size="0.4 0.1 0.1"/> </geometry> <material name="white"/> </visual> </link> <joint name="left_base_joint" type="fixed"> <parent link="left_leg"/> <child link="left_base"/> <origin xyz="0 0 -0.6"/> </joint> <link name="left_front_wheel"> <visual> <origin rpy="1.57075 0 0" xyz="0 0 0"/> <geometry> <cylinder length="0.1" radius="0.035"/> </geometry> <material name="black"/> </visual> </link> <joint name="left_front_wheel_joint" type="fixed"> <parent link="left_base"/> <child link="left_front_wheel"/> <origin rpy="0 0 0" xyz="0.133333333333 0 -0.085"/> </joint> <link name="left_back_wheel"> <visual> <origin rpy="1.57075 0 0" xyz="0 0 0"/> <geometry> <cylinder length="0.1" radius="0.035"/> </geometry> <material name="black"/> </visual> </link> <joint name="left_back_wheel_joint" type="fixed"> <parent link="left_base"/> <child link="left_back_wheel"/> <origin rpy="0 0 0" xyz="-0.133333333333 0 -0.085"/> </joint> <joint name="gripper_extension" type="fixed"> <parent link="base_link"/> <child link="gripper_pole"/> <origin rpy="0 0 0" xyz="0.19 0 0.2"/> </joint> <link name="gripper_pole"> <visual> <geometry> <cylinder length="0.2" radius="0.01"/> </geometry> <origin rpy="0 1.57075 0 " xyz="0.1 0 0"/> </visual> </link> <joint name="left_gripper_joint" type="fixed"> <origin rpy="0 0 0" xyz="0.2 0.01 0"/> <parent link="gripper_pole"/> <child link="left_gripper"/> </joint> <link name="left_gripper"> <visual> <origin rpy="0.0 0 0" xyz="0 0 0"/> <geometry> <mesh filename="package://urdf_tutorial/meshes/l_finger.dae"/> </geometry> </visual> </link> <joint name="left_tip_joint" type="fixed"> <parent link="left_gripper"/> <child link="left_tip"/> </joint> <link name="left_tip"> <visual> <origin rpy="0.0 0 0" xyz="0.09137 0.00495 0"/> <geometry> <mesh filename="package://urdf_tutorial/meshes/l_finger_tip.dae"/> </geometry> </visual> </link> <joint name="right_gripper_joint" type="fixed"> <origin rpy="0 0 0" xyz="0.2 -0.01 0"/> <parent link="gripper_pole"/> <child link="right_gripper"/> </joint> <link name="right_gripper"> <visual> <origin rpy="-3.1415 0 0" xyz="0 0 0"/> <geometry> <mesh filename="package://urdf_tutorial/meshes/l_finger.dae"/> </geometry> </visual> </link> <joint name="right_tip_joint" type="fixed"> <parent link="right_gripper"/> <child link="right_tip"/> </joint> <link name="right_tip"> <visual> <origin rpy="-3.1415 0 0" xyz="0.09137 0.00495 0"/> <geometry> <mesh filename="package://urdf_tutorial/meshes/l_finger_tip.dae"/> </geometry> </visual> </link> <link name="head"> <visual> <geometry> <sphere radius="0.2"/> </geometry> <material name="white"/> </visual> </link> <joint name="head_swivel" type="fixed"> <parent link="base_link"/> <child link="head"/> <origin xyz="0 0 0.3"/> </joint> <link name="box"> <visual> <geometry> <box size="0.08 0.08 0.08"/> </geometry> <material name="blue"/> </visual> </link> <joint name="tobox" type="fixed"> <parent link="head"/> <child link="box"/> <origin xyz="0.1814 0 0.1414"/> </joint> </robot>
--------------------------------------------------------------------------
部分代码解释:
<geometry > <mesh filename = “package://urdf_tutorial/meshes/l_finger.dae” /> 几何形状可以引用外部dae文件 </geometry>
2.2 运行launch文件
-END-
ROS-URDF-建立模型的更多相关文章
- 【探索之路】机器人篇(3)-给mwRobot建立模型
在创建一个mwRobot_description程序包那一节中,我们添加了依赖roscpp rospy std_msgs 和 urdf , 现在我们再添加一个xacro依赖. 如何添加依赖? 打开程 ...
- 揭秘Keras推荐系统如何建立模型、获取用户爱好
你是否有过这样的经历?当你在亚马逊商城浏览一些书籍,或者购买过一些书籍后,你的偏好就会被系统学到,系统会基于一些假设为你推荐相关书目.为什么系统会知道,在这背后又藏着哪些秘密呢? 荐系统可以从百万甚至 ...
- django模型:为已存在的表建立模型
为已经存在的表建立模型:参考https://blog.csdn.net/opera95/article/details/78200024 为已经存在的表建立模型1.python manage.py i ...
- pytorch 建立模型的几种方法
利用pytorch来构建网络模型,常用的有如下三种方式 前向传播网络具有如下结构: 卷积层-->Relu层-->池化层-->全连接层-->Relu层 对各Conv2d和Line ...
- 中文代码之Django官方入门:建立模型
参考编写你的第一个 Django 应用,第 2 部分 创建项目后,首先用中文命名应用: $ python3 manage.py startapp 投票 之后在models.py建立模型,其他各种相关配 ...
- 黑马程序员——ARC机制总结和用ARC建立模型
ARC 全称:Automatic Reference Counting 使用ARC 只需要在建立一个新的项目的时候把 下面的√打上 Xcode5以后都会默认建议开发者使用ARC机制 新的项目中如果有部 ...
- entity framework 新手入门篇(1)-建立模型
entity framework是微软官方免费提供给大家的一套ORM(Object Relational Mapping对象关系映射)解决方案.它不仅可以帮助我们解决数据缓存的问题,还能在最小的开销下 ...
- iOS开发之字典数据建立模型步骤
1. 在控制器属性的(questions)set方法中完成字典转模型的操作 - (NSArray *)questions { if (nil == _questions) { //1.加载plist文 ...
- [Kaggle] dogs-vs-cats之建立模型
建立神经网络模型,下面要建立的模型如下: (上图来源:训练网络时,打开tensorboard即可观察网络结构,在下一节模型训练的时候会讲到) 下面为具体步骤: Step 0:导入相关库 import ...
- ROS(URDF机器人建模)
新建功能包mbot_description 在功能包下新建文件config,launch,meshes,urdf. 在launch文件夹下新建文件display_mbot_base_urdf.laun ...
随机推荐
- ES6 中set的用法
- 多目标跟踪笔记二:Efficient Algorithms for Finding the K Best Paths Through a Trellis
Abstract 本文提出了一种新的方法来寻找不相交k最优路径.最坏情况下计算复杂度为N3log(N).该方法比WVD算法(https://www.cnblogs.com/walker-lin/p/1 ...
- iview中Modal弹窗做form表单验证相关问题
在modal中初始化状态,点击确定弹窗消失. 有的时候表单验证就不希望立刻消失 在iview官网中有自定义页头页脚 可以直接自定义使用 另一种验证写法 serform: { ctCatelogue: ...
- js的StringBuffer类
function StringBuffer(str){ var arr = []; str = str || ""; arr.push(str); this.append = fu ...
- net Core 中定时任务的设置
接下来的任务 采用定时任务的需求场景: 每天的数据整理,比如库存,每天的零散数据的统计,定时提醒,定时提醒到期未完成的任务-.... 1.采用的第三方类库: quartz 2文档地址:http://w ...
- “从客户端(content="XXXX")中检测到有潜在危险的 Request.Form值” 解决方案
解决方案一: 在.aspx文件头中加: <%@Page validateRequest="false" %> 解决方案二: 修改web.config文件: <co ...
- bootstrap下的双选时间插件使用方法
bootstrap画的页面很漂亮,能自动适应网页端,移动端.实现一个双选时间控件: 要得jar包自己去下 一.页面 二.JS var $createTime=$('#createTime');$cre ...
- extjs 4 chart 时间轴格式的处理
var dayStore = Ext.create('Ext.data.JsonStore', { fields: [{ name: 'name', type: 'date', dateFormat: ...
- 【ACM】NYOJ_486_Old Calculator_20130725
Old Calculator时间限制:1000 ms | 内存限制:65535 KB 难度:1描述 szhhck have an old calculator bought 5 years ago ...
- [bzoj2654]tree_二分_kruskal
tree bzoj-2654 题目大意:给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树.题目保证有解. 注释:$1\le V\le 5\cdot 10^4 ...