ubuntu16.04下ROS操作系统学习笔记(四 )机器人系组成、URDF机器人建模、xacro模型优化

简介: ubuntu16.04下ROS操作系统学习笔记(四 )机器人系组成、URDF机器人建模、xacro模型优化
  • 机器人的定义与组成

 

  • 机器人系统构建

机器人系统的构建主要有以下几点:

  1. 执行机构的实现:轮子、电机、舵机等。
  2. 驱动系统的实现:电源子系统、电机驱动子系统、传感器接口等。
  3. 内部传感系统的实现:机器人里程计:
    通过电机带动光删计数,实现对机器人运动速度的求取,然后计算积分得到里程。惯性测量单元(IMU):测量物体速度姿态,主要包括三轴陀螺仪、三轴加速度计、磁力计等。
  4. 控制系统的实现:常用的框架如下:

  5. 外部传感系统的实现

我们接下来连接一下摄像头:

 sudo apt-get install ros-kinetic-usb-cam
 roslaunch usb_cam usb_cam-test.launch
 rqt_image_view

第一句命令是安装这个功能包。如果是使用indigo版本的话需要把kinetic改为indigo。安装完成之后我们就可以来启动这个文件。运行成功之后就可以看到调用了的一个摄像头弹出来了。

第三句命令的话就是qt当中的一个功能包,运行成功之后就会弹出这样一个窗口出来。

在弹出的左上角部位我们可以选择原始数据,或者压缩数据。ros当中有很多功能包,当我们接触一个功能包的时候我们首先需要去了解的是这个功能包的输入输出,以及一些参数是怎么样的。这个usb_cam功能包能发布的话题主要是一些图像的话题。

这样的话题和参数在ros wiki上面都可以找到。

我们接下来可以看一下我们刚才启动的launch文件:

主要的话就是节点的信息,相关参数信息的配置。第二个node节点就是弹出的可视化的界面的节点。

1.什么是URDF模型?

  1. Unified Robot Description Format,统一机器人描述格式;
  2. ROS中一个非常重要的机器人模型描述格式;
  3. 可以解析URDF文件中适用XML格式描述的机器人模型,xml能够方便地使用标签、属性来描述模型当中的相关信息;
  4. ros同时也提供URDF文件的C++解析器,能够在代码当中调用模型当中的一些信息。

一个机器人拆开的话大致上可以分为两个部分,一个是连杆、两个连杆(link)之间通过关节(joint)来连接。

link的话主要是设置连杆部分的尺寸、颜色、形状等等。Collision一般都画成矩阵,会比椭圆方便点,计算起来运算量也会比较小。

joint的话主要是连接两个关节。关节可以分为六种:无限旋转关节(如小车车轮等)、有旋转角度极限关节(手臂关节)、滑动关节(在某一个坐标系上可以滑动的关节)、平面关节、浮动关节、固定关节。用的最多的还是旋转关节。

 

还有一些其他的参数,想关节的参考位置,阻尼(物理仿真引擎里面会有),mimic描述关节与已有关节之间的关系等。

整个的机器人模型是可以采用link和joint来描述的,但是整个的标签都得在根标签(robot)里面。根标签里面指定机器人的名字是什么:

2.创建一个机器人功能包

在工作空间的src目录下面打开终端,输入以下命令:

catkin_create_pkg mbot_description urdf xacro

后面还跟了两个功能包,urdf是用于解析整个模型。后面还有一个xacro功能包。

创建成功之后里面有两个文件cmakelists.txt和package.xml。

我们需要在里面创建几个文件夹:

urdf:存放机器人模型的URDF或xacro文件。

meshes:存放URDF中引用的模型渲染文件。

launch:保存相关启动文件。

config:保存rviz的配置文件。

第一行表示的是参数的名字,然后定义文件位置。

joint_state_publisher:发布每个joint(除fixed类型)的状态,而且可以通过UI界面对joint进行控制。

robot_state_publisher:将机器人各link、joint之间的关系,通过tf的形式,整理成三维姿态信息发布。

然后还有一些文件,都可以在分享的资源里面找到,视频里面对文件的源码都做了解析,这里我就不写了。

我们运行以下命令,就可以看到机器人的模型(模型描述文件在urdf里面):

roslaunch mbot_description display_mbot_base_urdf.launch

得到结果如上图所示。

在urdf目录下面,输入以下命令:

urdf_to_graphiz mbot_with_kinect.urdf

在上一节中,我们说到了机器人模型代码冗长,内容重复过多。像左右轮的代码就有点重复。所以我们需要一种URDF模型的进化版本--xacro模型文件。这个模型文件也是基于URDF的,但是它模型的管理上面发生了一些变化,精简了模型的代码,创建了宏定义,文件的包含等等。也提供了可编程接口,使得我们能够定义常量,定义变量,能够做一些数学计算,也能够去调用条件语句等等。

我们在xacro里面通过以下方式定义并且使用常量:

在$加大括号的方式可以实现对其内部数据的计算。还有一种机制叫做宏定义,通过这种方式能够实现像c++函数那样的功能一样。

在urdf文件里面是没有办法像c++那样做文件的包含的,在xacro里面就可以。这样的话我们就可以实现文件之间的调用。

我的微信公众号名称:深度学习与先进智能决策

微信公众号ID:MultiAgent1024

公众号介绍:主要研究强化学习、计算机视觉、深度学习、机器学习等相关内容,分享学习过程中的学习笔记和心得!期待您的关注,欢迎一起学习交流进步!

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
ROS入门实践
本课程将基于基础设施即代码 IaC 的理念,介绍阿里云自动化编排服务ROS的概念、功能和使用方式,并通过实际应用场景介绍如何借助ROS实现云资源的自动化部署,使得云上资源部署和运维工作更为高效。
相关文章
|
6月前
|
机器学习/深度学习 数据采集 监控
量化交易机器人开发风控模型对比分析与落地要点
本文系统对比规则止损、统计模型、机器学习及组合式风控方案,从成本、鲁棒性、可解释性等维度评估其在合约量化场景的适用性,结合落地实操建议,为不同阶段的交易系统提供选型参考。
|
9月前
|
算法 数据可视化 机器人
机器人骑自行车过程的MATLAB建模与数值仿真模拟
本程序基于MATLAB 2022A实现机器人骑自行车过程的三维建模与仿真,通过多个函数构建机器人躯干、手臂及自行车各部件的几何模型,并利用空间变换与旋转矩阵实现动态模拟。核心代码调用多个子函数生成模型组件并绘制三维图像,结合参数设置与坐标变换,完成整体系统的可视化仿真。
|
7月前
|
机器学习/深度学习 存储 算法
【水下机器人建模】基于QLearning自适应强化学习PID控制器在AUV中的应用研究(Matlab代码实现)
【水下机器人建模】基于QLearning自适应强化学习PID控制器在AUV中的应用研究(Matlab代码实现)
450 0
|
8月前
|
传感器 算法 定位技术
KF,EKF,IEKF 算法的基本原理并构建推导出四轮前驱自主移动机器人的运动学模型和观测模型(Matlab代码实现)
KF,EKF,IEKF 算法的基本原理并构建推导出四轮前驱自主移动机器人的运动学模型和观测模型(Matlab代码实现)
246 2
|
8月前
|
Ubuntu 开发工具
Ubuntu 22.04 aarch64版本操作系统下编译ZLMediaKit教程
通过上述步骤,你可以在Ubuntu 22.04 aarch64版本上成功编译ZLMediaKit,这是一个相对简单而直接的过程,但可能会遇到一些需要根据具体系统环境和要求调整的地方。
1017 0
|
数据采集 人工智能 数据可视化
SpatialLM:手机视频秒建3D场景!开源空间认知模型颠覆机器人训练
SpatialLM 是群核科技开源的空间理解多模态模型,能够通过普通手机拍摄的视频重建 3D 场景布局,赋予机器人类似人类的空间认知能力,适用于具身智能训练、自动导航、AR/VR 等领域。
1060 5
SpatialLM:手机视频秒建3D场景!开源空间认知模型颠覆机器人训练
|
机器人 数据安全/隐私保护
基于模糊PID控制器的puma560机器人控制系统的simulink建模与仿真
本课题研究基于模糊PID控制器的PUMA 560机器人控制系统建模与仿真,对比传统PID控制器性能。通过Simulink实现系统建模,分析两种控制器的误差表现。模糊PID结合了PID的线性控制优势与模糊逻辑的灵活性,提升动态性能和抗干扰能力。以PUMA 560机器人为例,其运动学和动力学模型为基础,设计针对各关节的模糊PID控制器,包括模糊化、规则制定、推理及去模糊化等步骤,最终实现更优的控制效果。
|
数据采集 人工智能 算法
Seer:上海 AI Lab 与北大联合开源端到端操作模型,结合视觉预测与动作执行信息,使机器人任务提升成功率43%
Seer是由上海AI实验室与北大等机构联合推出的端到端操作模型,结合视觉预测与动作执行,显著提升机器人任务成功率。
691 20
Seer:上海 AI Lab 与北大联合开源端到端操作模型,结合视觉预测与动作执行信息,使机器人任务提升成功率43%
|
人工智能 自动驾驶 安全
Cosmos:英伟达生成式世界基础模型平台,加速自动驾驶与机器人开发
Cosmos 是英伟达推出的生成式世界基础模型平台,旨在加速物理人工智能系统的发展,特别是在自动驾驶和机器人领域。
1214 15
Cosmos:英伟达生成式世界基础模型平台,加速自动驾驶与机器人开发
|
算法 机器人 数据安全/隐私保护
四自由度SCARA机器人的运动学和动力学matlab建模与仿真
本课题深入研究SCARA机器人系统,提出其动力学与运动学模型,并基于MATLAB Robotics Toolbox建立四自由度SCARA机器人仿真对象。通过理论结合仿真实验,实现了运动学正解、逆解及轨迹规划等功能,完成系统实验和算法验证。SCARA机器人以其平面关节结构实现快速定位与装配,在自动生产线中广泛应用,尤其在电子和汽车行业表现优异。使用D-H参数法进行结构建模,推导末端执行器的位姿,建立了机器人的运动学方程。

热门文章

最新文章