基于ros的机器人运动控制相关学习(二)

之前的尝试失败,也不确定是个人原因还是博客本身原因,所以进行了全代码的turtlebot3的仿真尝试,真正出图,能动之后确定博客没问题之后进行自身文件等的修改。

参考https://blog.csdn.net/u010853356/article/details/79235293

turtlebot3的仿真尝试

基于博客进行了相应的仿真分析之后,证明结果可行。
基于ros的机器人运动控制相关学习(二)_第1张图片基于ros的机器人运动控制相关学习(二)_第2张图片
但是launch文件中将gui 修改为 true 之后却出现问题。

[gazebo-1] process has died [pid 17880, exit code 255, cmd /opt/ros/melodic/

但是重启计算机之后,再次进行修改却正常启动,且看做正常情况吧。

进行了修改之后,可在gazebo中正常通过键盘控制。
基于ros的机器人运动控制相关学习(二)_第3张图片基于ros的机器人运动控制相关学习(二)_第4张图片
基于此可知,其launch文件及model正确,可运行。所以据此修改自己的文件。

第一查看模型文件,到底是xacro还是urdf

 roslaunch tb3_sim_bringup tb3_empty_world.launch

该文件运行结果是一个空的但是带有机器人模型的世界。
观看文件架构(中间删除部分内容);
首先include两个launch文件。
第一个include全是材料和颜色设置。

<?xml version="1.0" ?>

<robot name="xacro_properties" xmlns:xacro="http://ros.org/wiki/xacro">

  <!-- Init colour -->  
  <material name="black">
      <color rgba="0.0 0.0 0.0 1.0"/>
  </material>

  <material name="dark">
    <color rgba="0.3 0.3 0.3 1.0"/>
  </material>
  <material name="light_black">
    <color rgba="0.4 0.4 0.4 1.0"/>
  </material>

第二个include是sdf格式的命令和插件。
下面是正常的urdf

<?xml version="1.0" ?>
<robot name="turtlebot3_burger" xmlns:xacro="http://ros.org/wiki/xacro">
  <xacro:include filename="$(find turtlebot3_description)/urdf/common_properties.xacro"/>
  <xacro:include filename="$(find turtlebot3_description)/urdf/turtlebot3_burger.gazebo.xacro"/>

  <link name="base_footprint"/>

  <joint name="base_joint" type="fixed">
    <parent link="base_footprint"/>
    <child link="base_link"/>
    <origin xyz="0.0 0.0 0.010" rpy="0 0 0"/>
  </joint>

  <link name="base_link">
    <visual>
      <origin xyz="-0.032 0 0.0" rpy="0 0 0"/>
      <geometry>
        <mesh filename="package://turtlebot3_description/meshes/bases/burger_base.stl" scale="0.001 0.001 0.001"/>
      </geometry>
      <material name="light_black"/>
    </visual>

    <collision>
      <origin xyz="-0.032 0 0.070" rpy="0 0 0"/>
      <geometry>
        <box size="0.140 0.140 0.143"/>
      </geometry>
    </collision>

    <inertial>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <mass value="8.2573504e-01"/>
      <inertia ixx="2.2124416e-03" ixy="-1.2294101e-05" ixz="3.4938785e-05"
               iyy="2.1193702e-03" iyz="-5.0120904e-06"
               izz="2.0064271e-03" />
    </inertial>
  </link>

  <joint name="wheel_left_joint" type="continuous">
    <parent link="base_link"/>
    <child link="wheel_left_link"/>
    <origin xyz="0.0 0.08 0.023" rpy="-1.57 0 0"/>
    <axis xyz="0 0 1"/>
  </joint>

</robot>

文件修改

根据下面代码反推需要修改的内容

$ roslaunch tb3_sim_bringup tb3_empty_world.launch

基本上先是定义几个数值,然后include一个空世界,再启动节点,包括导入机器人模型、显示机器人和状态打印。
先进行模型的修改,根据下面代码进行修改

<param name="robot_description" command="$(find xacro)/xacro.py $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" />

先进行第一个include的编写。
基本不用修改。
然后进行第二个include的编写:
删除了部分传感器插件。

然后进行launch文件修改

基于ros的机器人运动控制相关学习(二)_第5张图片修改之后发现一堆问题。

再次检查后launch文件的前部内容应该没问题,继续修改xacro文件。

参考
https://answers.ros.org/question/316083/urdf-with-multiple-root-links-found/
解决了two links found 的问题

发现原来是设置parent link时将child link的leg6写错了,导致leg6无parent link。

后来是出现了问题,只显示5个腿,机身也不不显示。然后打算再弄个简单模型,看看能不能成功。

你可能感兴趣的:(gazebo,ros,运动控制)