当前位置:   article > 正文

创建机器人URDF模型_5)创建机器人的urdf文件,在rviz中显示并移动机器人。vs code 详细记录移动机器人

5)创建机器人的urdf文件,在rviz中显示并移动机器人。vs code 详细记录移动机器人

古月居ROS教程笔记整理

一、创建机器人功能描述包

在工作空间下创建功能包mrobot_description

catkin_create_pkg mrobot_description urdf xacro
记得编译工作空间,设置环境变量
二、创建机器人URDF模型
模型文件 mrobot_description/urdf/mrobot_chassis.urdf:
  1. <?xml version="1.0" ?>
  2. <robot name="mrobot_chassis">
  3. #声明该文件使用XML描述,
  4. #使用<robot>根标签定义一个机器人模型,模型的名称是“mrobot_chassis”。
  5. #描述机器人的底盘link
  6. <link name="base_link">
  7. <visual> #定义底盘的外观属性
  8. <origin xyz="0 0 0" rpy="0 0 0" /> #设置起点坐标为界面的中心坐标
  9. <geometry> #几何标签
  10. <cylinder length="0.005" radius="0.13"/> #定义为圆柱且半径和高分别为
  11. </geometry>
  12. <material name="yellow"> #设置机器人底盘的颜色
  13. <color rgba="1 0.4 0 1"/>
  14. </material>
  15. </visual>
  16. </link>
  17. #定义第一个关节joint,连接机器人底盘和左边驱动电机
  18. <joint name="base_left_motor_joint" type="fixed"> #joint名字和类型
  19. <origin xyz="-0.055 0.075 0" rpy="0 0 0" /> #起点设置在需要安装电机的底盘位置。
  20. <parent link="base_link"/>
  21. <child link="left_motor" />
  22. </joint>
  23. #描述了左侧电机的模型
  24. <link name="left_motor">
  25. <visual> #定义底盘的外观属性
  26. <origin xyz="0 0 0" rpy="1.5707 0 0" /> #设置起点坐标
  27. #电机的坐标位置是相对于joint计算的,由于这个joint的坐标上述确定过,所以此处电机模
  28. #型就放置于原点
  29. #由于圆柱体默认是垂直地面创建的,需要把圆柱体围绕x轴旋转90°(使用弧度约为1.5707)
  30. <geometry>
  31. <cylinder radius="0.02" length = "0.08"/> #定义为圆柱半径和高
  32. </geometry>
  33. <material name="gray">
  34. <color rgba="0.75 0.75 0.75 1"/> #设置颜色
  35. </material>
  36. </visual>
  37. </link>
  38. #定义电机和轮子之间的joint,类型是continuous,可以绕着一个轴旋转
  39. <joint name="left_wheel_joint" type="continuous">
  40. <origin xyz="0 0.0485 0" rpy="0 0 0"/> #将起点设置到安装轮子的位置,即电机的一端
  41. <parent link="left_motor"/>
  42. <child link="left_wheel_link"/>
  43. <axis xyz="0 1 0"/> #定义该joint的旋转轴是正y轴,轮子在运动时就会围绕y轴旋转
  44. </joint>
  45. #描述了左侧轮子的模型
  46. <link name="left_wheel_link">
  47. <visual> #定义底盘的外观属性
  48. <origin xyz="0 0 0" rpy="1.5707 0 0" /> #设置起点并旋转
  49. <geometry>
  50. <cylinder radius="0.033" length = "0.017"/> #定义圆柱半径和高
  51. </geometry>
  52. <material name="white"> #设置颜色
  53. <color rgba="1 1 1 0.9"/>
  54. </material>
  55. </visual>
  56. </link>
  57. #下同左侧对称
  58. <joint name="base_right_motor_joint" type="fixed">
  59. <origin xyz="-0.055 -0.075 0" rpy="0 0 0" />
  60. <parent link="base_link"/>
  61. <child link="right_motor" />
  62. </joint>
  63. <link name="right_motor">
  64. <visual>
  65. <origin xyz="0 0 0" rpy="1.5707 0 0" />
  66. <geometry>
  67. <cylinder radius="0.02" length = "0.08" />
  68. </geometry> <material name="gray">
  69. <color rgba="0.75 0.75 0.75 1"/>
  70. </material>
  71. </visual>
  72. </link>
  73. <joint name="right_wheel_joint" type="continuous">
  74. <origin xyz="0 -0.0485 0" rpy="0 0 0"/>
  75. <parent link="right_motor"/>
  76. <child link="right_wheel_link"/>
  77. <axis xyz="0 1 0"/>
  78. </joint>
  79. <link name="right_wheel_link">
  80. <visual>
  81. <origin xyz="0 0 0" rpy="1.5707 0 0" />
  82. <geometry>
  83. <cylinder radius="0.033" length = "0.017"/>
  84. </geometry>
  85. <material name="white">
  86. <color rgba="1 1 1 0.9"/>
  87. </material>
  88. </visual>
  89. </link>
  90. <joint name="front_castor_joint" type="fixed">
  91. <origin xyz="0.1135 0 -0.0165" rpy="0 0 0"/>
  92. <parent link="base_link"/>
  93. <child link="front_castor_link"/>
  94. <axis xyz="0 1 0"/>
  95. </joint>
  96. <link name="front_castor_link">
  97. <visual>
  98. <origin xyz="0 0 0" rpy="1.5707 0 0"/>
  99. <geometry>
  100. <sphere radius="0.0165" />
  101. </geometry>
  102. <material name="black">
  103. <color rgba="0 0 0 0.95"/>
  104. </material>
  105. </visual>
  106. </link>
  107. </robot>
URDF 提供了一些命令行工具,可以帮助我们检查、梳理模型文件
sudo apt-get install liburdfdom-tools
然后使用 check_urdf 命令对 mrobot_chassis.urdf 文件进行检查(在该文件所在文件夹)
check_urdf mrobot_chassis.urdf
还可以使用 urdf_to_graphiz 命令查看 URDF 模型的整体结构:
$ urdf_to_graphiz mrobot_chassis.urdf

三、在rviz中显示模型

在mrobot_description 功能包 launch 文件夹中已经创建 launch文件display_mrobot_chassis_urdf.launch
  1. <launch>
  2. <param name="robot_description" textfile="$(find mrobot_description)/urdf/mrobot_chassis.urdf" />
  3. <!-- 设置GUI参数,显示关节控制插件 -->
  4. <param name="use_gui" value="true"/>
  5. <!-- 运行joint_state_publisher节点,发布机器人的关节状态(notic版本此处加上_gui) -->
  6. <node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher" />
  7. <!-- 运行robot_state_publisher节点,发布TF -->
  8. <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" /> <!-- 运行rviz可视化界面 -->
  9. <node name="rviz" pkg="rviz" type="rviz" args="-d $(find mrobot_description)/config/mrobot_urdf.rviz" required="true" />
  10. </launch>

运行launch文件

$ roslaunch mrobot_description display_mrobot_chassis_urdf.launch

弹出rviz窗口和轮子控制窗口

初步完成! 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/700190
推荐阅读
相关标签