第6章---机器人系统仿真
1.下载仿真素材
<!-- 皮肤,这个标签可以直接让一个现实的机器人模型导入到link中来,当然要先制作相应的皮肤 -->
<mesh /> ---------------仿真素材就用在这个标签里使用
把下载好的两个.stl文件保存到对应工作空间的meshes文件夹下,然后在vscode里就能看到了
终端方式:
interest@interest:~$ cd 仿真素材
interest@interest:~/仿真素材$ git clone https://github.com/zx595306686/sim_demo.git
正克隆到 'sim_demo'...
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 10 (delta 0), reused 10 (delta 0), pack-reused 0
展开对象中: 100% (10/10), 4.76 MiB | 1.12 MiB/s, 完成.
如果报错,
(法一)http://t.csdn.cn/uQicv
(法二)更换手机热点网试试
(法三)可在自己电脑上下载再拉到虚拟机里
2.文件的作用
文件名 | 作用 |
launch | 同时启动多个节点,可看作一种整合工具 |
urdf |
机器人模型参数 urdf 基本的文件 (比较复杂) xacro 升级的文件(简化urdf) |
meshes | 机器人皮肤(只为支架?) |
config | 配置文件 |
3.urdf语法详解
机器人两大部分
连杆(link),机器人刚体部分(可见的),比如:雷达、支架(雷达和底盘连接的那个灰色的圆柱)、底盘、摄像头、车轮都可以看作单独的连杆。
collision ---> 连杆的碰撞属性;仿真环境下机器人会和周边环境产生碰撞,怎么界定与周围产生碰撞了呢? 通过碰撞参数collision,给机器人固件包裹在一个区域内,只要障碍物进入这个区域内,就会认为发生碰撞。
Inertial ---> 连杆的惯性矩阵;仿真时也会模拟我们真实世界的某些动作,比如:机器人在起步或刹车时,机器人固件可能会产生后仰或前移,这是有惯性导致的;甚至重心比较高,重量比较大的情况下可能还会产生翻车的情况;像这种物理运动可以通过惯性矩阵来设置,可以设置相应参数模拟真实世界的情况。
visual里的metrial细节:metrial是在rviz环境下生效的,为连杆设置颜色;如果是在gazebo仿真环境下还要用其他标签来设置颜色
<!-- 颜色: r=red g=green b=blue a=alpha透明度(0是透明,1是不透明);四者取值介于0-1之间 --><material name="car_color"><color rgba="0.7 0.5 0 1" /> </material>
关节(joint),机器人不可见的部分,比如:雷达和支架之间需要通过关节连接,类似于现实生活中的螺丝钉把两者钉在一起。
- 让摄像头旋转时疯狂抖动,把关节状态发布节点放在机器人状态发布节点后边和rviz启动节点放在最后一行可能会解决。
- 抖动的原因:是因为模型之间有重合,旋转碰撞后会把摄像头弹回去,调整一下相对位置就好了。
- 调整相对位置我没有解决抖动,是在网上看别人说的。
其它:
robot 根标签,类似于 launch文件中的launch标签;保证(URDF 文件是一个标准的 XML 文件)XML文件的的完整性。
gazebo标签,后期在使用 gazebo 仿真时,才需要使用到,用于配置仿真环境所需参数,比如: 机器人材料属性、gazebo插件等,但是该标签不是机器人模型必须的,只有在仿真时才需设置。
4.想要优化建好的urdf,不用每次进入rviz都要改parent link和Add
//1
<node pkg="rviz" type="rviz" name="rviz" />
//2<node pkg="rviz" type="rviz" name="rviz" args="-d $(find urdf1_rviz)/config/urdf.rviz" /> 解释:先用1启动rviz,然后添加完东西好后进行保存,保存在config目录下;再用2启动rviz就可以看到上次操作保存好的。 ---------------------但我有时成功,有时不成功保存好的放在.rviz保存在config目录下,就是机器人相关配置保存;利用args读取这里的配置就会显示默认的机器模型而不是空白。args="xxx xxx xxx" (可选)------------------将参数传递给节点
我认为在写保存的配置文件名时,后缀应为_urdf.rviz,不然会保存不成功
5.urdf查看工具
interest@interest:~/fz6/src/urdf1_rviz/urdf/urdf$ check_urdf test.urdf //检查错误
robot name is: mycar
---------- Successfully Parsed XML ---------------
root Link: base_footprint has 1 child(ren)child(1): base_linkchild(1): back_wheelchild(2): front_wheelchild(3): left_wheelchild(4): right_wheel
interest@interest:~/fz6/src/urdf1_rviz/urdf/urdf$ urdf_to_graphiz test.urdf //生成pdf
Created file mycar.gv
Created file mycar.pdf
interest@interest:~/fz6/src/urdf1_rviz/urdf/urdf$ evince mycar.pdf //查看pdf
6.roscore报错
killall -9 roscore //如果提示未找到进程不用管,继续执行下一条
killall -9 rosmaster
7.检查xacro文件是否有错,报错了,但也能把.xacro文件解析成.urdf文件,也能正常生成rviz.
interest@interest:~/fz6/src/urdf1_rviz/urdf/xacro$ check_urdf test.urdf.xacro
Error: radius [${base_footprint_radius}] is not a valid floatat line 126 in /build/urdfdom-VnCcob/urdfdom-1.0.4+ds/urdf_parser/src/link.cpp
Error: Could not parse visual element for Link [base_footprint]at line 453 in /build/urdfdom-VnCcob/urdfdom-1.0.4+ds/urdf_parser/src/link.cpp
Error: length [${base_link_length}] is not a valid floatat line 173 in /build/urdfdom-VnCcob/urdfdom-1.0.4+ds/urdf_parser/src/link.cpp
Error: Could not parse visual element for Link [base_link]at line 453 in /build/urdfdom-VnCcob/urdfdom-1.0.4+ds/urdf_parser/src/link.cpp
Error: Unable to parse component [${base_joint_z}] to a double (while parsing a vector value)at line 102 in /build/urdfdom-VnCcob/urdfdom-1.0.4+ds/urdf_parser/src/pose.cpp
Error: Malformed parent origin element for joint [base_link2base_footprint]at line 362 in /build/urdfdom-VnCcob/urdfdom-1.0.4+ds/urdf_parser/src/joint.cpp
Error: joint xml is not initialized correctlyat line 233 in /build/urdfdom-VnCcob/urdfdom-1.0.4+ds/urdf_parser/src/model.cpp
ERROR: Model Parsing the xml failed
8.在launch文件里运行.urdf.xacro文件报错
(一)还是代码写的有问题,改代码就行
<material name="black" />错
<material name="black" >对 //1<color rgba="0 0 0 0.2" /> //2
</material> //3解释/,/也代表一种结束;一个标签下面有子标签就不能加,比如1、3就自己一个标签要加,比如2可以类比C语言中,和;的用法理解
(二).xacro只启动了生成的摄像头,没有底盘支撑着,都启动了就好了
- 9.电机差速控制器
运动方式 | 左轮速度 | 右轮速度 |
直走 | V左=V右 | |
左转 | V左 < V右 | |
右转 | V左 > V右 |
- 轮间距:计算角速度时需要用到(拐弯时)
10.控制urdf在rviz中生成的机器人运动
interest@interest:~$ rostopic list
/clicked_point
/cmd_vel //被arbotix订阅
/diagnostics
/initialpose
/joint_states
/move_base_simple/goal
/odom
/rosout
/rosout_agg
/tf
/tf_static//发布速度消息/cmd_vel
interest@interest:~$ rostopic pub -r 10 /cmd_vel geometry_msgs/Twist "linear:x: 1.0y: 0.0z: 0.0
angular:x: 0.0y: 0.0z: 1.0"
11.gazebo报错
(一)一般是因为变量没有加${ } ;http://t.csdn.cn/BJEWV
(二)一般是因为launch文件里标签下面有子标签,然后“/"有没有多加的问题。
<include file="$(find gazebo_ros)/launch/empty_world.launch" >错的<include file="$(find gazebo_ros)/launch/empty_world.launch" >对的<!-- 别人写好的仿真环境放到功能包下,在launch文件里启动 --><arg name="world_name" value="$(find urdf2_gazebo)/worlds/box_house.world" /></include>
报错:
12.问题:gazebo仿真环境中没有出现已经配置好的机器人连杆
</collision>
<xacro:cylinder_inertial_matrix m="${base_link_m}" r="${base_link_radius}" h="${base_link_length}" /></link>
//惯性矩阵应放在link标签结束前collision标签结束后
13.gazebo生成的问题
- 机器人轮子下陷?,未解决
- 抖动、遗落的话,可以看一下质量是否合适,从而影响惯性矩阵
14.控制机器人运动下载arbotix时下载不了,用流量试试。
把功能包复制到所需的工作空间下,不用管里边的内容,只要Ctrl_Shift+B编译成功不报错就没问题。
15.打开gazebo是空的,也找不到自己写好的模型,还报错
结束运行终端输入:
killall gzserver
启动gazebo不再报错,问题解决。
16.雷达采样参数理解
第6章---机器人系统仿真相关推荐
- 在Jetson Nano上学习ROS的记录(版本Ubuntu18.04,课程来源赵虚左老师的《ROS理论与实践》)第十二章 机器人导航(仿真)
系列文章目录 第一章 ROS空间创建.helloworld的实现.开启多个节点 第二章 话题通信 第三章 服务通信 第四章 参数服务器 第五章 常用指令 第六章 通信机制实操 第七章 ROS通信机制进 ...
- 第六章-ROS机器人系统仿真
第六章-ROS机器人系统仿真 学习来源: 官方文档:http://wiki.ros.org/ Introduction · Autolabor-ROS机器人入门课程<ROS理论与实践>零基 ...
- 多机器人系统仿真平台(摘要与目录)
来源:http://www.robotdiy.com/article.php?sid=125 如何实现多个机器人之间的协调与协作已经成为当前机器人学研究的新课题之一.这篇论文针对多机器人系统的运动规划 ...
- ROS系列:第六章 机器人建模
文章目录 六.机器人系统仿真 1.概述 仿真优势: 仿真缺陷: 2. URDF集成Rviz基本流程 1.创建功能包,导入依赖 2.编写 URDF 文件 3.在 launch 文件中集成 URDF 与 ...
- 《机器人编程实战》一一第2章 机器人词汇
第2章 机器人词汇 机器人感受训练课程2:机器人的动作只会和描述这些动作的指令一样好. 机器人也有语言,它们讲的是微控制器语言.人类讲的是自然语言(如广东话.约鲁巴语.西班牙语).我们使用自然语言相互 ...
- [ros robot] --- 机器人系统仿真
1 机器人系统仿真概念 机器人系统仿真:是通过计算机对实体机器人系统进行模拟的技术,在 ROS 中,仿真实现涉及的内容主要有三:对机器人建模(URDF).创建仿真环境(Gazebo)以及感知环境(Rv ...
- 第四章 机器人控制方法
第四章 机器人控制方法 4.1 机器人控制概述 机器人控制任务的分类 自由运动:控制机器人末端的位置和姿态 期望位置是固定点:位置镇定 期望位置是随时间连续变化的轨迹:轨迹跟踪 运动受限:控制机器人末 ...
- 第二章 机器人系统与控制需求简介
第二章 机器人系统与控制需求简介 2.1 工业机器人的系统组成 机械本体:精密减速机.伺服电机.伺服驱动器.控制系统(核心零部件) 控制柜 示教盒 2.2 机器人本体结构与传动方式简介 四大家族:AB ...
- 《计算机科学与工程导论:基于IoT和机器人的可视化编程实践方法第2版》一第2章 机器人开发环境和VIPLE入门...
第2章 机器人开发环境和VIPLE入门 前面我们介绍了计算机领域的发展和职业选择可能,并且已经组建了团队,为我们的开发工作做好了准备.在正式开发之前,我们要先认识工作环境--VIPLE(Visual ...
最新文章
- 烂泥:ubuntu 14.04搭建Open***服务器
- python 遍历字符串的每一个字符_Python之字符串的遍历的4种方式
- bootloader详解(转载)
- 软件测试用python一般用来做什么-python能够做软件的自动化测试吗?
- 搭建QT和VS2010集成开发环境
- java静态路由_Linux添加静态路由两种实现方法解析
- ACCESS中的Update语句不支持Select的解决办法
- Viewer.js 图片预览插件
- 百度搜索关键字抓取_怎么使百度竞价的效益最大化
- 手机语音翻译的小妙招,一步一步教你!一键音频转文字
- 你了解东大六维空间嘛?
- pythoniris补全缺失值_2018-02-03-PY3下经典数据集iris的机器学习算法举例-零基础
- 【kafka】Kafka 快速入门
- ceph(2)--Ceph RBD 接口和工具
- 牛客2019湘潭大学程序竞赛
- 计算机操作及应用描述,计算机操作及应用教程
- 14.深入浅出:信号的运算——参考《模拟电子技术基础》清华大学华成英主讲
- android应用开发-从设计到实现 3-5 静态原型的Appbar
- 计算机管理在哪里管理用户密码,管理员密码,教您怎么设置管理员密码
- 5.5 Python图像处理之图像编码-位平面编码
热门文章
- echarts 图表不能占满全屏
- 基于JAVA的游戏补丁共享网站实现
- html5模仿手机音乐播放器(添加音乐进度条和时长)
- 互联网晚报 | 三星超过苹果成手机市场份额第一;特斯拉回应中国内地市场降价传闻;ChatGPT或会暴露企业机密信息...
- Hadoop HDFS启动报异常:We expected txid 130043, but got txid 229381
- java零基础多久能学会_小白学java大概需要多久 零基础学起来难么
- 如何学习手绘插画?这五点很重要!
- 计算机维修logo在线设计,硕思logo设计师电脑版
- php微信公众点歌台,PHP实现微信公众平台音乐点播功能
- 计算机杀毒有什么好处,电脑杀毒哪个最好?电脑杀毒的选择和使用