基础知识
机器人控制分层
底层包括三个级别:(1)发动机、编码器;(2)发动机控制器和驱动器;(3)驱动程序和pid控制器整合到一起的基控制器。
中间层:movebase级别,路径规划
高层:slam,语义,图像
参考https://blog.youkuaiyun.com/ktigerhero3/article/details/65443920
具体操作过程如下:
可知机器人简单控制至少
(1)编辑机器人模型
(2)编辑gazebo属性,加载连接器控制驱动插件
(3)编辑gazebo属性,加载ros控制插件
(4)编辑.launch文件
(5)安装键盘控制器包
(6)运行.launch和键盘控制器程序,让小车动起来。
首先应进行urdf和xacro的相关学习:
参考:https://blog.youkuaiyun.com/sunbibei/article/details/52297524
和https://blog.youkuaiyun.com/qingdu007/article/details/97780621
进行xacro文件编写:
比较三篇参考博客发现,一个主要不同点就是宏定义的不同,ros控制机器人运动中,仅定义了惯性,而xacro文件编写学习笔记中定义了大段的重复代码,节省了时间。但有一个疑问,就是soloworks的urdf文件中没个link位置不一样,二参考博客中则相同,所以暂时先按参考博客中走。
本文拟将大段重复代码定义,从而节省时间。
修改过程中发现SolidWorks导出的urdf文件中包含:collision,inertial,visual三个部分,而参考博客中ros控制机器人运动中则无inertial。暂时按照有inertial进行修改。
先是定义了宏,然后描述了parent link,最后定义
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro"
xmlns:sensor="http://playerstage.sourceforge.net/gazebo/xmlschema/#sensor"
xmlns:controller="http://playerstage.sourceforge.net/gazebo/xmlschema/#controller"
xmlns:interface="http://playerstage.sourceforge.net/gazebo/xmlschema/#interface"
name="smallrobot_xacro">
<xacro:macro name="default_leg" params="number">
<link name="leg_${number}">
<visual>
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0"/>
<geometry>
<mesh
filename="package://smallrobot/meshes/robot.STL"/>
</geometry>
<material name="black&#