简介
ROS-Moveit是ROS的一个功能包,由一系列移动操作的功能包组成。是ROS使用位居前三位的功能包。目前在ROS1已经停止更新最新版本支持到Noetic Ubuntu20,但是Moveit包的功能体验还是melodic以及之前的版本更好一些。国内外知名企业都有自己的ROS包,像ABB,发那科等也提供了机械臂的ROS接口。并且这些接口是通用的,不同厂家和版本都能控制各种机器人。
URDF是ROS中机器人模型描述文件。代码是xml格式的,包含对机器人刚体外观/物理属性/关节类型等描述(ROS中距离单位默认是米 角度默认是弧度)。其中:
<robot>为最顶层标签
<link>标签描述刚体的外观形状、碰撞几何、颜色、质量、惯性矩阵、碰撞参数等
每个link会成为一个坐标系
其又包含三个部分(想要仿真缺一不可)
{
visual 包含各种标签
collision 碰撞 为了简化计算可能会将实际形状简化为圆柱体、长方体等
inertial物理属性 惯性矩阵,质量等
}
<joint>标签描述两个link之间的关系 有六种类型。还可以描述关节的位置限制,和速度限制(运动学及动力学的相关属性)
{
parent child 关节的两个link
origin 两个link之间的坐标关系
axis 关节围绕哪个轴旋转
limit 关节限位
}
Xacro模型可理解为是对URDF的改进,使用类似于C++中的类。先定义类,再实例化。
注:Gazebo动力学仿真很弱,做轨迹规划很好
本次教程中,使用moveit配置助手通过urdf文件生成与之匹配的配置信息文件,用于rviz或gazebo的显示以及一些其它设置。如果需要修改关节限位则还是在urdf中修改。
相关链接
Moveit API:
MoveIt Tutorials — moveit_tutorials Melodic documentation
ros-melodic
安装
安装moveit
sudo apt-get install ros-melodic-moveit
安装assistant配置助手
sudo apt-get install ros-melodic-moveit-setup-assistant
启动配置助手
roslaunch moveit_setup_assistant setup_assistant.launch
SolidWorks模型导出为urdf文件
1.为sw安装对应版本的sw_urdf_exporter插件(下载exe文件双击安装即可)
网址:sw_urdf_exporter - ROS Wiki
2.在sw中绘制好自己的机器人,做好配合关系,并为每个关节设置对应的基准轴
3.在sw中找到工具-File-Export as URDF (2016版本)。工具-Tools-Export as URDF(2021版本)
4.在左侧进行配置
生成完毕后会弹出一个界面,我们先点击左下角的cancel,先对生成的关节和坐标轴方向进行检查,不然你的机器人可能会躺在基准平面上。
检查完毕后重复步骤3,再次点击生成,在弹出的界面可以配置相关参数。(点击next继续)
最后点击左下角的生成即可,(两个选项中左侧的为只生成模型),注意保存的文件的名称要符合ros包的命名规范。然后用工具将整个包传到Ubuntu中。
注:导出的包中的package.xml中email可能会有问题将2改回@即可。Display.launch 中的目录可能也会有问题 并且需要再rviz中自己增加robotmodal一项。
小技巧:Ubuntu中使用Ctrl+h显示隐藏文件
配置助手配置机械臂相关参数
1.将urdf模型包放置到ros的工作空间文件夹中(否则会无法加载)
启动配置助手
roslaunch moveit_setup_assistant setup_assistant.launch
左侧能够显示出模型即为加载成功
左侧栏目分别为:
1.Start 载入机械臂模型(urdf、xacro)
2.Self-Collisions 添加永远不会碰撞的关节矩阵
3.Virtual Joints 配置虚拟关节,将底座或某一个link固定在某个坐标系
4.Planning Groups 规划组
5.Robot Poses 设定机械臂的状态(如初始状态)(可设定多个点位)
6.End Effectors 设定末端执行器
7.Passive Joints 设置被动关节(有些我们无法控制的关节)
8.ROS Control 各个关节配置Control
9.Simulation 仿真urdf文件
10.3D Perception 摄像头
11.Author Information 作者信息
12.生成
2.添加永远不会碰撞的关节矩阵
3. 配置虚拟关节固定底座
4.配置规划组(机械臂的规划器一般用kdl,OMPL plamming一般选RRT)
或者应该点Add subgroups 添加一个关节链
将关节放入对应的规划组
为末端执行器也创建一个规划组
5.设置几个点位(注意选择所属的规划组)
6.设置末端执行器 (如果有)最后一个规划组建议不要选(图中可能是错的选法)
7.Passive Joints 设置被动关节(有些我们无法控制的关节)一般机械臂都能控制 跳过
8.ROS Control 9.Simulation 10.3D Perception 为3D传感器和姿态等 通过这个界面配置容易出问题 后面可以通过文件做配置,跳过
11.Author Information 作者信息(姓名 和邮箱)必填项
12.生成 (注意生成在ROS的工作空间下,建议和刚刚的urdf包同一级目录下)
13.测试
运行生成文件的launch目录下的demo.launch