ROS / Open RTM / ORiN / Orocos /YARP /Player
很好的机器人
YARP和Player都是偏向于硬件抽象的中间件,打破机器人软件(控制/应用层)对底层硬件的依赖和对一些过时的库的依赖,即使sensor,actuator, processor, networks这些东西换掉,机器人软件模块也不用跟着变化, 就是software modules and devices cleanly decoupled. 另外,数据流动与底层网络和网络协议解耦,所以各软件模块对network也是解耦的)
2. 运动规划库:
OMPL / Reflexxes
记得是一名德国KIT 教授(不擅长记外国人名字,自己可以查一下)当年的博士论文。部分开源,部分不开源。V-REP机器人仿真平台使用了这个库。instantaneous on-line motion planning, can be done within one control cycle,这样允许开发在线感知-反应:sensing and reaction.) OMPL集成在ROS里头,Moveit模块。
3. 机器人运动动力学库from Orocos
KDL (from OROCOS)/ Fast IK (from OpenRave)
4. 三维造景及可视化库
OpenGL / VTK / OSG / Java3D / OGRE / Coin3D / 3D rendering engine
可以用来做机器人仿真环境开发,常见的机器人仿真软件有:
1) 机器人厂家
ABB:RobotStudio
Kuka:Kuka.Sim
Fanuc:RobotGuide
Motoman:MotoSim
Nachi:AX On Desk
... ...
2) 开源和商业
有些开源的也提供商业版,如V-REP,和Webots
瑞士: Webots,V-REP
加拿大:RobotMaster, RoboDK, Octopuz, RobotSim, Workspace
德国: 西门子 RobotCAD 偏向于汽车行业应用仿真
(德国有一家做得不错的,记得不清楚,国内总部在南京,One什么的记不清了,展会上遇见过,想起的小伙伴可以补充一下。)
法国: DELMIA Robotics。
中国台湾: RoboMove
中国: RobotArt (配天机器人基于RobotArt二次开发自己的机器人仿真平台)
HydraSim (名字好像不对,大概这么写的,base在南京的一家公司)
俄罗斯: SprutCAM
以色列: RobotWorks
美国: RoboWorks
还有其他如:Eureka, Morse, AristoSim, Lpzrobots, Simbad, SimplyCube, RobotLogix, Anykode, RoKiSim
机器人仿真软件一些特征(不是同时都具备,不同平台有其侧重点):
1) 集成了多种机器人产品,包括商业的,也包括开源的机器人平台
2)机器人模型的导入导出,支持与3D建模软件的接口
3) 现实级仿真: 物理引擎与逼真环境渲染
4) 快速原型与仿真
5)支持多种传感器模拟:如相机,测距,位置,力,惯性类,GPS等。
6) 支持多种伺服和电机模拟: 支持对应关节位置,速度,力控制模式,电机参数可修改
7)离线编程
8) 支持从仿真环境到真实物理平台的程序部署
9) 支持后置代码,且有样例,可自己定义:解释器,把仿真平台语言翻译到机器人语 言,因为各家机器人的语言是不同的,所以把代码从仿真环境部署到真实机器人平台前需要“转译”,这样就实现对不同厂家机器人控制器的支持。
10)编程接口多元: C/C++/Java/Python /Matlab /Urbi
11) CAM功能,从CAD设计直接生成加工轨迹,即机器人路径和轨迹。
12) 支持基本功能:运动,碰撞检测,多机器人,外部轴管理,可视化数据
5. 物理引擎
ODE / Bullet / Vortex / Newton / PhysX / Simbody / DART
(机器人仿真环境的物理引擎)
6. 机器视觉:
OpenCV
7. 点云及三维重建
PCL (Point Cloud Lib)
8. 地图构建与定位
OpenSlam/GMapping
9. 自然交互
OpenNI
如果对机器人软件系统开发感兴趣除了1,2,3,还可以参考一下xBotCore和OpenSoT,读一读源码,收获一定满满,学习一下机器人软件架构,组件设计,实时与非实时模块交互,设计模块插件及如何动态装载与卸载插件,数据交互及数据流设计,硬件驱动接口设计,还有EtherCAT master模块开发集成。
了解更多:ABB机器人