第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_link
        child(1):  back_wheel
        child(2):  front_wheel
        child(3):  left_wheel
        child(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 float
         at 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 float
         at 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 correctly
         at 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.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 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.雷达采样参数理解

作者:21赛项负责人许燚

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值