一、ROS开发环境(IDE)
参考ROS官网ROS IDE 及教程eclipse ROS 配置
二、ROS编程
1.Callbacks and Spinning
2.添加第三方库(动态链接库)
编辑CMakeLists.txt文件,添加如下行:
target_link_libraries(executable_name ${catkin_LIBRARIES} lib_name)
至此可以使用库文件中的函数、类等。
三、MOVEIT
1.moveit_visual_tools
查看wiki链接moveit visual tools.
四、ROS教程
1、ROS URDF模型文件中坐标说明
在gazebo中搭建自己的机械臂模型时,对于模型文件中的坐标系建立规则理解的模糊,导致建立模型失败,故花费了一些时间来深入的了解下URDF文件中模型坐标系的建立规则。有错误之处,烦请指正、交流。
在gazebo仿真环境中,机械臂模型坐标系有三种:世界坐标系、基坐标系、连杆坐标系、连杆属性坐标系(碰撞坐标系collision、惯量坐标系inertial、视角坐标系visual)、关节坐标系。
注意:在阅读本文前,假定读者已经了解gazebo仿真环境、URDF文件创建以及为使URDF文件能被gazebo成功加载,需要在URDF文件中添加<gazebo>标签等知识。
1.1世界坐标系
在gazebo仿真环境中,存在一个表示世界的坐标系-世界坐标系,机械臂基座的位置和姿态就是相对其而确定的。
1.2基坐标系
为了固定基座,使其不在gazebo仿真环境中运动,需要固接一个坐标系在基座上-基坐标系,表示基座在仿真环境中的姿态和位置。在gazebo中,会让连杆坐标系和关节坐标系重合,要建立基坐标系(基连杆坐标系),需要建立世界与基座连接的关节坐标系,如下代码所示:
<link name="world"/>
<joint name="fixed" type="fixed">
<parent link="world"/>
<child link="base_link"/>
<origin xyz="0 0 0" rpy="0 0 0" />
<axis xyz="0 0 1" />
</joint>
然后在URDF文件中添加基座连杆标签<link>,可参考官方链接点击打开链接,来建立自己机械臂的基座。通过gazebo加载URDF文件显示,基座是的初始位姿是直立放置的,如果想要把它平放到地面,可以设置基连杆坐标系(关节坐标系)的姿态朝向,即以上代码中的RPY。那这里就有一个问题,固连于连杆的连杆坐标系如何确定其连杆在gazebo中显示的初始位姿呢?固连于连杆的连杆坐标系在连杆姿态表示上与世界坐标系(大连杆坐标系)之间有什么关系呢?首先可以把世界坐标系表示的世界看作一个大连杆,Gazebo中默认该坐标系表示的大连杆是竖直的,其他连杆的姿态可以通过该世界坐标系的旋转来确定。
1.3连杆坐标系
在这里需要强调的是在Gazebo仿真环境中,连杆坐标系与其相邻的关节坐标系重合。
1.4连杆属性坐标系
- <visual>标签中的<origin>坐标系原点xyz为可见几何体中心,其坐标系姿态rpy确定了连杆初始加载朝向。其原理与上述一致。
- <collision>标签中的<origin>坐标系原点为碰撞几何体中心,其坐标系姿态rpy确定了连杆初始加载朝向。其原理与上述一致。
- <inertial>标签中的<origin>坐标系原点为几何体的质心,其坐标系姿态rpy、<mass>和<inertia>标签共同为gazebo物理引擎计算几何体质量分布信息提供依据,以便更好的模拟真实世界中的物体。