使用URDF创建机器人3D仿真模型
在一个真实的机器人上编程很让我们更好的理解机器人的控制方式,因为真实的机器人会给我们反馈。但是在没有真实机器人供我们实践的时候,ROS的仿真功能是一个不错的选择。
ROS通过URDF(UnifiedRobot Description Format) 就是描述机器人硬件尺寸布局.
一,软件环境
OS:Ubuntu 14.04
ROS:Indigo Full package
二,智能车尺寸数据
因为建立的是一个非常简单的机器人,所以我们尽量使用简单的元素:使用长方体代替车模,使用圆柱代替车轮,具体尺寸如下:
准备:
1.创建Rospackage命名为smartcar
catkin_create_pkgsmartcar std_msgs rospy roscpp urdf
2.建立文件夹launch和urdf分别用来存放.launch文件和.urdf文件
三、建立urdf文件
在smartcar文件夹下建立urdf文件夹,创建智能车的描述文件smartcar.urdf,描述代码如下:
- <?xml version="1.0"?>
- <robot name="smartcar">
- <link name="base_link">
- <visual>
- <geometry>
- <box size="0.25 .16 .05"/>
- </geometry>
- <origin rpy="0 0 1.57075" xyz="0 0 0"/>
- <material name="blue">
- <color rgba="0 0 .8 1"/>
- </material>
- </visual>
- </link>
- <link name="right_front_wheel">
- <visual>
- <geometry>
- <cylinder length=".02" radius="0.025"/>
- </geometry>
- <material name="black">
- <color rgba="0 0 0 1"/>
- </material>
- </visual>
- </link>
- <joint name="right_front_wheel_joint" type="continuous">
- <axis xyz="0 0 1"/>
- <parent link="base_link"/>
- <child link="right_front_wheel"/>
- <origin rpy="0 1.57075 0" xyz="0.08 0.1 -0.03"/>
- <limit effort="100" velocity="100"/>
- <joint_properties damping="0.0" friction="0.0"/>
- </joint>
- <link name="right_back_wheel">
- <visual>
- <geometry>
- <cylinder length=".02" radius="0.025"/>
- </geometry>
- <material name="black">
- <color rgba="0 0 0 1"/>
- </material>
- </visual>
- </link>
- <joint name="right_back_wheel_joint" type="continuous">
- <axis xyz="0 0 1"/>
- <parent link="base_link"/>
- <child link="right_back_wheel"/>
- <origin rpy="0 1.57075 0" xyz="0.08 -0.1 -0.03"/>
- <limit effort="100" velocity="100"/>
- <joint_properties damping="0.0" friction="0.0"/>
- </joint>
- <link name="left_front_wheel">
- <visual>
- <geometry>
- <cylinder length=".02" radius="0.025"/>
- </geometry>
- <material name="black">
- <color rgba="0 0 0 1"/>
- </material>
- </visual>
- </link>
- <joint name="left_front_wheel_joint" type="continuous">
- <axis xyz="0 0 1"/>
- <parent link="base_link"/>
- <child link="left_front_wheel"/>
- <origin rpy="0 1.57075 0" xyz="-0.08 0.1 -0.03"/>
- <limit effort="100" velocity="100"/>
- <joint_properties damping="0.0" friction="0.0"/>
- </joint>
- <link name="left_back_wheel">
- <visual>
- <geometry>
- <cylinder length=".02" radius="0.025"/>
- </geometry>
- <material name="black">
- <color rgba="0 0 0 1"/>
- </material>
- </visual>
- </link>
- <joint name="left_back_wheel_joint" type="continuous">
- <axis xyz="0 0 1"/>
- <parent link="base_link"/>
- <child link="left_back_wheel"/>
- <origin rpy="0 1.57075 0" xyz="-0.08 -0.1 -0.03"/>
- <limit effort="100" velocity="100"/>
- <joint_properties damping="0.0" friction="0.0"/>
- </joint>
- <link name="head">
- <visual>
- <geometry>
- <box size=".02 .03 .03"/>
- </geometry>
- <material name="white">
- <color rgba="1 1 1 1"/>
- </material>
- </visual>
- </link>
- <joint name="tobox" type="fixed">
- <parent link="base_link"/>
- <child link="head"/>
- <origin xyz="0 0.08 0.025"/>
- </joint>
- </robot>
该文件可以帮助启动RViz来观察机器人。其中有三个node,一个是rviz,另外两个joint_state_publisher robot_state_publisher是必须的node。
第一个输入参数 model 就是要启动的urdf文件路径。
第二个输入参数 gui 指定是否启用关节转动控制面板窗口。
四,创建display.launch文件
- <launch>
- <arg name="model" />
- <arg name="gui" default="False" />
- <param name="robot_description" textfile="($find smartcar)/urdf/smartcar.urdf)" />
- <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 $(find urdf_tutorial)/urdf.rviz" required="true" />
- </launch>
link可以指定许多属性:
- <inertial> 定义惯性
- <visual> 定义一个link的外观,大小,颜色和材质纹理贴图
- <collision>定义碰撞检测属性
我们详细看一下<visual>的定义:
- <geometry> 定义了几何形状为一个立方体,三个参数分别为长宽高,单位是米(m). 这里我们指定下层小车板子的板的尺寸。<geometry>可以有好几个选项:<box> 立方体 <cylinder>圆柱体 <sphere>球体
- <material> 指定颜色rgb和透明度a. 它们取值范围都是[0,1] 区间。
使用下面命令启动RViz来查看我们刚刚完成的机器人模型:
运行
roslaunch smartcar display.launch gui:=true
参考:
1.Learning ROS for Robotics Peogramming
2.ROS探索总结(五)——创建简单的机器人模型smartcar
3.ROS 学习系列 -- 使用urdf创建机器人模型在Rviz中3D观察 之一 link使用
使用URDF创建机器人3D仿真模型相关推荐
- ROS学习:创建机器人的urdf
ROS学习之路08:创建机器人的urdf(xacro)模型并通过rviz可视化_Hi, Robotics-CSDN博客_urdf可视化 1 创建工作空间 mkdir -p ~/catkin_ws/sr ...
- Ubuntu18.04 LTS Melodic ROS 教程:使用URDF创建一个虚拟机器人模型
Ubuntu18.04 LTS Melodic ROS 教程:使用URDF创建一个虚拟机器人模型 Building a Visual Robot Model with URDF from Scratc ...
- ROS机器人Diego 1#制作(十六)创建机器人的urdf模型描述文件
更多创客作品,请关注笔者网站园丁鸟,搜集全球极具创意,且有价值的创客作品 由于后续要做机械臂的控制,会用到机器人的urdf描述文件,moveit需要根据urdf中的数据进行机械臂的路径规划,这里介绍一 ...
- ROS学习笔记6 URDF建立机器人模型(以双轮差速小车为例)
URDF建立机器人模型 一.准备工作 一.搭建小车底盘模型 1.小车底盘 2.左右驱动轮 3.前后万向轮 4.launch启动文件 5.效果展示 二.摄像头仿真模型 1.添加摄像头模型 2.launc ...
- 自动驾驶系列(六)创建简单小车仿真模型
一.创建机器人模型描述包 cd ~/catkin_ws/src/ catkin_create_pkg smartcar_description urdf mkdir urdf cd urdf gedi ...
- 不需要支撑结构的3D打印技术:多轴机器人3D打印系统
为期五天的世界上最大的计算机图形和交互技术会议-SIGGRAPH 2018将于下周在温哥华启动.来自世界各地的许多研究团队在会上展示他们的最新项目成果,包括3D形状.增强现实.拓扑优化和3D扫描.今年 ...
- Unity与C#创建一个3D平台游戏 Learn to Create a 3D Platformer Game with Unity C#
游戏开发变得容易了.使用Unity学习C#并创建您自己的3D平台! 你会学到什么 学习现代通用编程语言C#. 了解Unity中3D开发的功能 发展强大的可转移的解决问题的技能 了解游戏开发过程 了解面 ...
- Maya创建科幻3D动画循环场景视频教程
Maya创建科幻3D动画循环场景视频教程 Skillshare – Create a Sci-Fi 3D Animation Loop in Autodesk Maya 持续时间3h 27m 包括项目 ...
- 基于结构光测量技术和3D物体识别技术开发的机器人3D视觉引导系统
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 基于结构光测量技术和3D物体识别技术开发的机器 ...
最新文章
- 从今天开始,我就要潜心研究软件开发技术了,不在被名利所困
- 谨慎能捕千秋蝉(二)——CSRF
- 【arduino】在Arduino上运行FreeRTOS操作系统,freeRTOS入门教程helloword
- linux 5005端口,Linux配置防火墙端口 8080端口
- Android sharedPreference设置缓存时间
- spark学习-Spark的groupByKey
- mysql使用substring_index达到splite功能
- wince -- 线程中SetEvent及WaitForSingleObject用法
- 深度学习 —— 使用 gensim 实现 word2vec
- C++智能指针的几种用法
- 快手小程序预下单 tp6 demo
- 用Qt实现一个桌面弹幕程序(六)-- -- 桌面客户端实现②
- SOFA Weekly | Committer 聊天室、SOFAJRaft 本周发布、新手任务
- 阿里云服务器怎么样?详细介绍
- CC3200学习系列--芯片简介
- 【ESP32系列开发】ESP32-PICO-D4 使用双核
- c excel连接mysql数据库_C语言连接Excel数据库
- 魅族18s有没有广告
- 飘窗到底实不实用?是留着还是砸了?
- 最近很火的斗鱼大王卡动态线路免流系统搭建教程联通电信必免