上篇文章我们介绍了URDF文件的导出,本文将继上文介绍安装完导出URDF文件后,如何在机器人操作系统(ROS)中显示,并且让它动起来。
目录
前言
RViz机器人模型可视化
launch启动RViz配置文件
Arbotix控制机器人模型运动
ROS中提供了Gazebo与RViz两种仿真软件,本文将机器人模型在RViz仿真环境中可视化,同时利用Arbotix功能包使机器人完成圆周运动。
Ctrl+Alt+T打开终端分别输入:
mkdir -p helloworld/src
cd helloworld
catkin_make
其中robot_ws为我们命名的工作空间名称,catkin_make是一个编译命令,该编译命令会帮我们创建好我们所需的文件并输出若干日志,成功结果如下:

继续在该终端输入:【启动VS Code】
code .
右键一级src目录选择Create Catkin Package【创建功能包】

输入功能包名称【robot】再输入依赖【urdf xacro】创建结果如下

step1~2若出现问题请学习参考ROS入门教程(三)—— 用C++实现Hello world
将刚新建的robot功能包删除,替换为我们利用sw2urdf插件导出的robot功能包,如下所示:
成功结果如下,功能包中包含display.launch文件与robot.urdf文件:
为了美观可以将base_link ,left_wheel_link 与right_wheel_link的color标签进行修改,即将34行改为"1 1 1 1",将74行与132行改为"0.412 0.412 0.412 1",结果如下所示:【Ctrl+S保存】
按Ctrl+Shift+B执行编译命令,结果如下:
按Ctrl+Shift+~启动命令行分别输入:
source ./devel/setup.bash
roslaunch robot display.launch
结果如下所示:
这样我们就成功的在RViz中显示了我们的机器人模型,实现了机器人模型的可视化。
读者可以发现,每次打开RViz都需要添加机器人模型,重新设置大地坐标系这实在是过于复杂,RViz提供了配置文件以适用于不必每次打开都要重新配置RVi:
按Ctrl+Shift+S保存文件至robot功能包中的config文件夹中,命名为robot.rviz,如下所示:
将display.launch修改为以下:
<launch>
<arg
name="model" />
<param
name="robot_description"
textfile="$(find robot)/urdf/robot.urdf" />
<node
name="joint_state_publisher_gui"
pkg="joint_state_publisher_gui"
type="joint_state_publisher_gui" />
<node
name="robot_state_publisher"
pkg="robot_state_publisher"
type="robot_state_publisher" />
<node
name="rviz"
pkg="rviz"
type="rviz"
args="-d $(find robot)/config/robot.rviz" />
</launch>
这样每次运行该launch文件去启动RViz时就无需添加机器人模型与修改大地坐标了。
按Ctrl+Alt+T打开终端输入:
sudo apt install ros-melodic-arbotix
在robot功能包下config文件夹中新建文件robot.yaml输入以下:
# 该文件是控制器配置,一个机器人模型可能有多个控制器,比如: 底盘、机械臂、夹持器(机械手)....
# 因此,根 name 是 controller
controllers: {
# 单控制器设置
base_controller: {
#类型: 差速控制器
type: diff_controller,
#参考坐标
base_frame_id: base_footprint,
#两个轮子之间的间距
base_width: 0.2,
#控制频率
ticks_meter: 2000,
#PID控制参数,使机器人车轮快速达到预期速度
Kp: 12,
Kd: 12,
Ki: 0,
Ko: 50,
#加速限制
accel_limit: 1.0
}
}
结果如下所示:
将robot功能包下urdf文件夹中的robot.urdf修改为以下:
<?xml version="1.0" encoding="utf-8"?>
<!-- This URDF was automatically created by SolidWorks to URDF Exporter! Originally created by Stephen Brawner (brawner@gmail.com)
Commit Version: 1.6.0-4-g7f85cfe Build Version: 1.6.7995.38578
For more information, please see http://wiki.ros.org/sw_urdf_exporter -->
<robot
name="robot">
<link
name="base_footprint">
<visual>
<geometry>
<sphere
radius="0.001" />
</geometry>
<material
name="">
<color
rgba="0 0 0 0" />
</material>
</visual>
</link>
<link
name="base_link">
<inertial>
<origin
xyz="0.00274864430655652 -2.24752503383601E-12 -0.000346282886867658"
rpy="0 0 0" />
<mass
value="0.778495474667087" />
<inertia
ixx="0.00463138328383945"
ixy="1.02152303406231E-11"
ixz="1.71833341358258E-06"
iyy="0.00512425828608217"
iyz="4.71562842897777E-15"
izz="0.00973908576728839" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://robot/meshes/base_link.STL" />
</geometry>
<material
name="">
<color
rgba="1 1 1 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://robot/meshes/base_link.STL" />
</geometry>
</collision>
</link>
<joint
name="base_link2base_footprint"
type="fixed">
<parent
link="base_footprint" />
<child
link="base_link" />
<origin
xyz="0 0 0.035" />
</joint>
<link
name="right_wheel_link">
<inertial>
<origin
xyz="-4.81191200834309E-07 0.000476524651415774 1.07685290749495E-07"
rpy="0 0 0" />
<mass
value="0.0474080147774195" />
<inertia
ixx="1.81764508915246E-05"
ixy="1.12230898220564E-10"
ixz="9.35470362535892E-11"
iyy="3.36082622230467E-05"
iyz="-1.04867422246077E-10"
izz="1.81763222441443E-05" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://robot/meshes/right_wheel_link.STL" />
</geometry>
<material
name="">
<color
rgba="0.412 0.412 0.412 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://robot/meshes/right_wheel_link.STL" />
</geometry>
</collision>
</link>
<joint
name="right_wheel_joint"
type="continuous">
<origin
xyz="0 0.09545 0"
rpy="0 0 0" />
<parent
link="base_link" />
<child
link="right_wheel_link" />
<axis
xyz="0 1 0" />
<limit
lower="-3.14"
upper="3.14"
effort="0"
velocity="0" />
</joint>
<link
name="left_wheel_link">
<inertial>
<origin
xyz="4.90089018379602E-07 -0.000476524651415788 5.43493115676996E-08"
rpy="0 0 0" />
<mass
value="0.0474080147774195" />
<inertia
ixx="1.81764289862563E-05"
ixy="1.23038640102816E-10"
ixz="-1.05305567709027E-10"
iyy="3.36082622230468E-05"
iyz="9.19480494971147E-11"
izz="1.81763441494127E-05" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://robot/meshes/left_wheel_link.STL" />
</geometry>
<material
name="">
<color
rgba="0.412 0.412 0.412 1" />
</material>
</visual>
<collision>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://robot/meshes/left_wheel_link.STL" />
</geometry>
</collision>
</link>
<joint
name="left_wheel_joint"
type="continuous">
<origin
xyz="0 -0.09545 0"
rpy="0 0 0" />
<parent
link="base_link" />
<child
link="left_wheel_link" />
<axis
xyz="0 1 0" />
<limit
lower="-3.14"
upper="3.14"
effort="0"
velocity="0" />
</joint>
</robot>
其中与之前的URDF文件相比,增加了部件base_footprint,将其与base_link连接,读者可以发现,增加base_footprint后机器人正好基于地面了,相比与之前更加的合理,同时也为后续的里程计提供了便利,对比结果如下:
在此建议读者以后每次建立URDF文件都添加部件base_footprint。
将robot功能包下launch文件夹中的display.launch修改为以下:
<launch>
<arg
name="model" />
<param
name="robot_description"
textfile="$(find robot)/urdf/robot.urdf" />
<node
name="joint_state_publisher_gui"
pkg="joint_state_publisher_gui"
type="joint_state_publisher_gui" />
<node
name="robot_state_publisher"
pkg="robot_state_publisher"
type="robot_state_publisher" />
<node
name="rviz"
pkg="rviz"
type="rviz"
args="-d $(find robot)/config/robot.rviz" />
<node name="arbotix" pkg="arbotix_python" type="arbotix_driver" output="screen">
<rosparam file="$(find robot)/config/robot.yaml" command="load" />
<param name="sim" value="true" />
</node>
</launch>
在VS Code集成命令行输入:
source ./devel/setup.bash
roslaunch robot display.launch
修改大地坐标为odom并添加odom里程计至RViz中:
按Ctrl+Alt+T打开终端输入:
rostopic pub -r 10 /cmd_vel geometry_msgs/Twist "linear:
x: 1.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 1.0"
该代码段的旨在10HZ 的频率循环发送运动信息至订阅者,成功结果如下:
到这里我们就完成了通过Arbotix功能包实现了机器人模型的运动。
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
我是Ruby新手,并被要求在我们的新项目中使用它。我们还被要求使用Padrino(Sinatra)作为后端/框架。我们被要求使用Rspec进行测试。我一直在寻找可以指导在Padrino上使用RspecforRuby的教程。我得到的主要是引用RoR。但是,我需要RubyonPadrino。请在任何入门/指南/引用/讨论等方面指导我。如有不妥之处请指正。可能是我没有针对我的问题搜索正确的词/短语组合。我正在使用Ruby1.9.3和Padrinov.0.10.6。注意:我还提到了SOquestion,但它没有帮助。 最佳答案 我没用过Pa
目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标
文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定