Category Archives: Industrial Robots

Complete Coverage Path Planning(CCPP)算法总结

本文参考一下论文 On Complete Coverage Path Planning Algorithms for Non-holonomic Mobile Robots: Survey and Challenges.” Journal of Information Science & Engineering, 2017 CCPP can be achieved by using single-robot(单个机器人) or multi-robot(多个机器人) coverage according to the size of the environments. Single-robot coverage is suitable for the coverage task in small environments such as homes, workplaces, and restaurants because…

Read More

Paper(1)Perception and Motion Planning for Pick-and-Place of Dynamic Object

Cowley, A., Cohen, B., Marshall, W., Taylor, C. J., & Likhachev, M. (2013, November). Perception and motion planning for pick-and-place of dynamic objects. In 2013 IEEE/RSJ International Conference on Intelligent Robots and Systems (pp. 816-823). IEEE. PR2 被广泛应用于tabletop manipulation research。本文的系统设计是基于装有RGB-D sensor和自身姿态sensor的PR2。 The perception system The overall procedure is that table geometry is extracted to perform an initial…

Read More

HPP, FCL and Pinocchio

FCL(Flexible Collision Library) FCL是Flexible Collision Library的缩写,是A General Purpose Library for Collision and Proximity Queries,它具体的github repo在这里,相关的学术文章为FCL: A general purpose library for collision and proximity queries。 FCL is also used as the collision checking library for grasping and manipulation pipeline implemented on a PR2. In the course of the task, the overall algorithm makes multiple calls to…

Read More

xacro

本文完全照搬https://blog.csdn.net/sunbibei/article/details/52297524 Xacro (XML Macros) Xacro is an XML macro language. XACRO文件和URDF实质上是等价的. XACRO格式提供了一些更高级的方式来组织编辑机器人描述. 主要提供了三种方式来使得整个描述文件变得简单. 借用在教程中一句话来形容xacro的优势: “Fortunately, you can use the xacro package to make your life simpler”. 3.1 Constants Usage: <xacro:property name=”WIDTH” value=”2.0″/> 类似于C语言中的宏定义, 在头部定义, 如<xacro:property name=”WIDTH” value=”2.0″/>, 以${WIDTH}的方式进行使用. 经常会看到的一个常量定义, <property name=”PI” value=”3.14159265″ />. 还有定义一个前缀, 这样后面关节名都可以方便的进行修改. 比如<property name=”prefix” value=”my_”/>, 后面关节名字就可以类似的进行更新. <joint name=”${prefix}joint1″ type=”revolute”/>. 在有了上面的常量定义之后, 类似于宏定义, 完成字符串替换, 同时还可以进行一些简单的数学运算. Usage: ${1/2}, ${PI*(WIDTH*0.5)} 3.2 Macros…

Read More

urdf

本文完全照搬具体参照https://www.guyuehom e.com/372 Unified Robot Description Format,简称为URDF(标准化机器人描述格式),是一种用于描述机器人及其部分结构、关节、自由度等的XML格式文件。 一、URDF语法规范 参见:XML 基础学习 二、URDF教程 如下图所示,本节将创建一个如下图所示结构的机器人模型。 2.1 基础模型 上图所示是一个树形机器人模型,我们先从机器人的整体结构出发,不考虑过多的细节,可以将机器人通过如下的URDF表示: 上边的URDF模型定义了机器人的4个环节(link),然后定义了三个关节(joint)来描述环节之间的关联。 ROS为用户提供了一个检查URDF语法的命令: 如果一切正常,将会有如下显示: 2.2 添加机器人尺寸 在基础模型之上,我们为机器人添加尺寸大小。由于每个环节的参考系都位于该环节的底部,关节也是如此,所以在表示尺寸大小时,只需要描述其相对于连接的关节的相对位置关系即可。URDF中的<origin>域就是用来表示这种相对关系。 例如,joint2相对于连接的link1在x轴和y轴都有相对位移,而且在x轴上还有90度的旋转变换,所以表示成<origin>域的参数就如下所示: 为所有关节应用尺寸: 再次使用check_urdf检查通过后继续下一步。 2.3 添加运动学参数 如果我们为机器人的关节添加旋转轴参数,那么该机器人模型就可以具备基本的运动学参数。 例如,joint2围绕正y轴旋转,可以表示成: 同理,joint1的旋转轴是: 应用到我们的URDF中: 继续使用check_urdf检查语法错误。 2.4 图形化显示URDF模型 如果你希望以图形的方式来查看它,那么可以使用urdf_to_graphiz命令工具: 此命令将生成两个文件:my_robot.gv 和 my_robot.pdf。可以使用 evince 打开: 然后即可看到图形化的URDF:

ROS, MoveIt, and OMPL

注意注意:本文基于的版本是ROS melodic(Melodic是基于python2) 第一步:环境setup,全部follow此tutorial的步骤 创建catkin的workspace, 以及安装moveit(从源代码安装) 我们要下载两个ROS packages,剩下的tutorial全是通过启动这两个包来进行的(注意一个ROS package下面可以有多个ROS node,需要指明启动ROS的哪个package里面的哪个node) 第一个ROS包:ROBOT_moveit_config,用来定义robot的;默认的机器人是Panda arm from Franka Emika,所以默认的定义的机器人ROS包是panda_moveit_config, panda代替了ROBOT。 第二个ROS包:下载ROS包moveit_tutorials。 build一下ws_moveit(你的workspace) 第二步:创建自己的机器人config package(有自己的机器人的必要步骤) 即自己的 robot_moveit_config package, 参考the MoveIt Setup Assistant tutorial. 第三步:Visualize a robot with the interactive motion planning plugin for RViz(非必要的步骤) 可视化机器人,并在rviz上有可交互的页面。Rviz是ROS最重要的可视化工具,MoveIt通过他支持的rviz插件,可以实现交互式选取start state与goal state, 测试motion planning等等。 运行roslaunch panda_moveit_config demo.launch rviz_tutorial:=true用于启动panda_moveit_config的ROS包,里面会启动planning_context.launch(用于加载描述robot的信息),启动move_group.launch(moveit的可运行程序),启动moveit_rviz.launch(启动rviz), 如果是第一次启动panda_moveit_config的ROS包,那么你会打开rviz,并有一个空的enviroment,没有机器人。我们需要添加motion planning的插件. 加完该motion planning插件,panda机器臂就出现在环境中。同时我们要对motion planning这个插件做一些关于robot的configuration。另外关于可视化,我们可以设置哪些项目是可见的,有四个东西可以显示。 机器人周围的环境(包括障碍物什么的,scene robot) 规划的路径(planned…

Read More

Rviz,Gazebo,MoveIt区别与联系

参考:https://www.zhihu.com/question/268658280/answer/340190866来源:知乎, 作者:古月 Rviz的几个关键特性: 它是三维可视化工具,强调把已有的数据可视化显示. Rviz需要别人给它喂数据。 rviz提供了很多插件,这些插件可以显示图像、模型、路径等信息。但是前提都是这些数据已经以ROS topic、ROS parameters的形式pubilish,rviz做的事情就是subscribe这些数据,并完成可视化的渲染,让开发者直观地理解数据的意义。 Gazebo是三维物理(机器人的力学物理模型)仿真平台,强调的是创建一个虚拟的仿真环境。Gazebo不是显示工具,强调的是仿真,它不需要等着别人喂数据,而是创造数据。 如果你手上已经有机器人硬件平台,并且在上边可以完成需要的功能,用rviz应该就可以满足开发需求。如果你手上没有机器人硬件,或者想在仿真环境中做一些算法、应用的测试,gazebo+rviz应该是你需要的。另外,rviz配合其他功能包也可以建立一个简单的仿真环境,比如rviz+ArbotiX,可以参考《ROS by Example》,但是其中rviz的本质还是处理显示的部分。 那么Gazebo与MoveIt又是怎样的关系呢?两者功能不一样,不是相互替代的关系。Gazebo是一个simulator, it doesn’t do any motion planning. ROS is (in this context) the middleware that allows gazebo to talk to other software. MoveIt is a motion planning framework that uses ROS to talk to Gazebo.

如何建立和维护ROS catkin-based package

创建ROS Package 每一个ROS package都是~/catkin_ws/src路径下的一个文件夹,所以我们需要在~/catkin_ws/src路径下来创建一个ros package,命令如下: 以上命令中,beginner_tutorials是package的名字,std_msgs rospy roscpp代表了该ros package依赖这三个ros package(ROS自带的)。接下来就要build package了,我们需要回到~/catkin_ws路径下,进行build。 运行该命令之后,你就发现~/catkin_ws/src路径下多了一个文件夹beginner_tutorials,并且该文件夹下有两个文件package.xml和CMakeLists.txt,并且package.xml中自动有了build_depend的信息,即刚才的std_msgs rospy roscpp三个ros packages。 建议:除了第一次~/catkin_ws/src路径下还一个ros package都没有的时候,用catkin_make(会自动生成devel文件夹和build文件夹),后面每次有任何包括的任何文件有更新,都需要把整个src code进行build,而我们可以用更好的命令catkin build或者catkin_make_isolated,具体为什么可以看链接的解释 具体含义 每一个ROS package都是~/catkin_ws/src路径下的一个文件夹,所以通常~/catkin_ws/src路径下有好多个文件夹,每个都是一个ros package。一个ros package文件夹必须包含以下两个文件: package.xml文件: 定义package的名字,license,以及最重要的是定义本ros package的dependency。 buildtool_depend: Use this for buildtool packages,这里我们的build system用的是catkin啦 build_depend: Use this for packages you need at compile time exec_depend: Use this for packages you need at runtime build_export_depend: Use…

Read More

Catkin工作空间的机制

参考以下链接:[1]https://subscription.packtpub.com/book/hardware_and_creative/9781783554713/1/ch01lvl1sec14/setting-the-ros-workspace ROS workspace是用来keep ROS packages. 而通常我们用catkin_based的工作空间来建立和安装ROS packages. Catkin system是ROS的官方build system,帮助我们将source code弄成在ROS workspace中的a target executable 或者libraries, 具体可以看看catkin的发展历史。 A build system is responsible for generating ‘targets’ from raw source code that can be used by an end user. These targets may be in the form of libraries, executable programs, generated scripts, exported interfaces (e.g. C++ header files) or…

Read More