ROS-URDF-活动关节
前言:介绍活动关节,并使机器人活动起来。
参考自:http://wiki.ros.org/urdf/Tutorials/Building%20a%20Movable%20Robot%20Model%20with%20URDF
一、修改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="continuous"> <axis rpy="0 0 0" xyz="0 1 0"/> <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="continuous"> <axis rpy="0 0 0" xyz="0 1 0"/> <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="continuous"> <axis rpy="0 0 0" xyz="0 1 0"/> <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="continuous"> <axis rpy="0 0 0" xyz="0 1 0"/> <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="prismatic"> <parent link="base_link"/> <child link="gripper_pole"/> <limit effort="1000.0" lower="-0.38" upper="0" velocity="0.5"/> <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="revolute"> <axis xyz="0 0 1"/> <limit effort="1000.0" lower="0.0" upper="0.548" velocity="0.5"/> <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="revolute"> <axis xyz="0 0 -1"/> <limit effort="1000.0" lower="0.0" upper="0.548" velocity="0.5"/> <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="continuous"> <parent link="base_link"/> <child link="head"/> <axis xyz="0 0 1"/> <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>
----------------------------------------------------------
代码解析:
<joint name="head_swivel" type="continuous">关节为连续型 <parent link="base_link"/> <child link="head"/> <axis xyz="0 0 1"/>限制只绕z轴旋转 <origin xyz="0 0 0.3"/> </joint> <joint name="left_gripper_joint" type="revolute">关节为旋转型 <axis xyz="0 0 1"/> <limit effort="1000.0" lower="0.0" upper="0.548" velocity="0.5"/>限定最大力度1000N,绕z周旋转弧度为0弧度-0.548弧度,最大速度为0.5m/s <origin rpy="0 0 0" xyz="0.2 0.01 0"/> <parent link="gripper_pole"/> <child link="left_gripper"/> </joint> <joint name="gripper_extension" type="prismatic">关节类型为棱柱型,只能沿着轴移动,不能沿着轴转动。 <parent link="base_link"/> <child link="gripper_pole"/> <limit effort="1000.0" lower="-0.38" upper="0" velocity="0.5"/> <origin rpy="0 0 0" xyz="0.19 0 0.2"/> </joint>
二、运行launch文件
当您在GUI中移动滑块时,模型将在Rviz中移动。这是怎么做到的?首先,GUI解析URDF并找到所有非固定关节及其限制。然后,它使用滑块的值来发布sensor_msgs / JointState消息。然后robot_state_publisher使用它们来计算不同部分之间的所有变换。然后,生成的变换树用于显示Rviz中的所有形状。
-END-
ROS-URDF-活动关节的更多相关文章
- ROS(URDF机器人建模)
新建功能包mbot_description 在功能包下新建文件config,launch,meshes,urdf. 在launch文件夹下新建文件display_mbot_base_urdf.laun ...
- ROS urdf和xacro文件详解
视觉标签:visual <visual> <origin xyz="0.0 0.0 0.0" /> <geometry> <box siz ...
- 2017~ROS暑期学校~分享
http://www.robotics.sei.ecnu.edu.cn/ROS2017/ ---- 往年暑期学校活动:2015年,2016年 报名开始时间7月2日晚10点:暑期学校报名,机器人挑战赛报 ...
- Gazebo機器人仿真學習探索筆記(七)连接ROS
中文稍后补充,先上官方原版教程.ROS Kinetic 搭配 Gazebo 7 附件----官方教程 Tutorial: ROS integration overview As of Gazebo 1 ...
- 【探索之路】机器人篇(3)-给mwRobot建立模型
在创建一个mwRobot_description程序包那一节中,我们添加了依赖roscpp rospy std_msgs 和 urdf , 现在我们再添加一个xacro依赖. 如何添加依赖? 打开程 ...
- 多指灵巧手MoveIt!与Gazebo联合仿真框架搭建
至于为什么叫框架,一是因为灵巧手的3维模型没有按照基本的设计要求画,正常来说,设计机器人机构之前应该设计好机构需要多少个自由度/DOF,每个自由度是旋转/revolute类型还是滑移/prismati ...
- 软件篇-02-基于ZED 2和ORB_SLAM2的SLAM实践
时隔两周,我又回来了. 本期内容如题,ZED 2的SDK功能还是挺多的,包括轨迹跟踪,实时建图等等.虽然由于是商业产品,我看不到他们的源代码,但是根据使用情况来看,ZED 2内部是采用了IMU和光 ...
- <ROS> 机器人描述--URDF和XACRO
文章转自 https://blog.csdn.net/sunbibei/article/details/52297524 特此鸣谢原创作者的辛勤付出 1 URDF 文件 1.1 link和joint ...
- ROS(机器人URDF模型优化)
URDF模型 xacro优化后的URDF模型 1.精简模型代码(创建宏定义,文件包含) 2.提供可编程接口(常量,变量,数学计算,条件语句) 常量定义: name:base_length的值value ...
随机推荐
- CAD绘制一个半径标注(com接口VB语言)
主要用到函数说明: _DMxDrawX::DrawDimRadial 绘制一个半径标注.详细说明如下: 参数 说明 DOUBLE dCenterX 被标注的曲线的中点X值 DOUBLE dCenter ...
- hdu 4870
Rating Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- 57 和为S的数字
题目一:和为S的两个数字 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小 ...
- SQL上门2
SQL高级教程学习 MySQL的字符匹配和其他数据库不同,一下语句查找(第一个字符不是h,第三个字符是m)不能用“!” select * from country where countryname ...
- linux中的umask命令
转载:http://blog.51cto.com/1123697506/882064 一 权限掩码umask umask是chmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不 ...
- 4.bool组合查询
主要知识: 学习bool组合查询 bool嵌套 1.搜索发帖日期为2017-01-01,或者帖子ID为XHDK-A-1293-#fJ3的帖子,同时要求帖子的发帖日期绝对不为2017-01-02 ...
- 第十三节:pandas之groupby()分组
1.Series()对象分组 1.1.单级索引 1.2.多级索引 2.DataFrame()对象分组 3.获取一个分组,遍历分组,filter过滤.
- 【MFC Programming】 Using Dialog To Set A Correlate Menu
This blog will show how to display a menu we designed in a dialog. 1.Insert a new dialog& a new ...
- mac上常用的命令
平时会经常遇到的问题做一个总结
- BUPT2017 wintertraining(16) #9
龟速补题.目前基本弃坑.已暂时放弃 D.I 两题. 下面不再写题意了直接说解法注意事项之类,直接放contest链接. https://vjudge.net/contest/151537 A.The ...